diff --git a/common/src/main/java/com/craisinlord/antarchy/content/AntarchyTags.java b/common/src/main/java/com/craisinlord/antarchy/content/AntarchyTags.java index 356b94b3..358600a8 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/AntarchyTags.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/AntarchyTags.java @@ -32,6 +32,7 @@ public final class AntarchyTags { public static final TagKey TERMITE_FOODS = TagKey.create(Registries.BLOCK, id("termite_foods")); public static final TagKey UMBRAL_MOSS_REPLACEABLE = TagKey.create(Registries.BLOCK, id("umbral_moss_replaceable")); public static final TagKey BLUSH_MOSS_REPLACEABLE = TagKey.create(Registries.BLOCK, id("blush_moss_replaceable")); + public static final TagKey BIOWART_REPLACEABLE = TagKey.create(Registries.BLOCK, id("biowart_replaceable")); public static final TagKey HERCULES_BEETLE_CHARGE_IMMUNE_BLOCKS = TagKey.create(Registries.BLOCK, id("hercules_beetle_charge_immune_blocks")); public static final TagKey ELYTHIA_PORTAL_FRAMES = TagKey.create(Registries.BLOCK, id("elythia_portal_frames")); public static final TagKey THORAXIS_PORTAL_FRAMES = TagKey.create(Registries.BLOCK, id("thoraxis_portal_frames")); @@ -125,6 +126,7 @@ public final class AntarchyTags { public static final TagKey MANTIS_OVERWORLD_SPAWN_BIOMES = TagKey.create(Registries.BIOME, id("mantis_overworld_spawn_biomes")); public static final TagKey ELYTHIA_FIREFLY_PARTICLE_BIOMES = TagKey.create(Registries.BIOME, id("elythia_firefly_particle_biomes")); public static final TagKey WILD_CORN_SPAWN_BIOMES = TagKey.create(Registries.BIOME, id("wild_corn_spawn_biomes")); + public static final TagKey USES_HORDE_SYSTEM = TagKey.create(Registries.BIOME, id("uses_horde_system")); private Biomes() { } diff --git a/common/src/main/java/com/craisinlord/antarchy/content/CreativeTabOrder.java b/common/src/main/java/com/craisinlord/antarchy/content/CreativeTabOrder.java index c5e0ca33..3b85d77f 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/CreativeTabOrder.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/CreativeTabOrder.java @@ -58,7 +58,8 @@ public final class CreativeTabOrder { "raw_uranium_block", "raw_titanium_block" -> 7; case "blood_crystal_block", "small_blood_crystal_bud", "medium_blood_crystal_bud", "large_blood_crystal_bud", "budding_blood_crystal", "blood_crystal_cluster", - "myrmite", "broodstone", "polished_broodstone", "chiseled_broodstone", "broodstone_bricks", + "myrmite", "biomite", "biomite_turf", "biowart", "biowart_tendrils", + "broodstone", "polished_broodstone", "chiseled_broodstone", "broodstone_bricks", "broodstone_stairs", "broodstone_slab", "broodstone_wall", "polished_broodstone_stairs", "polished_broodstone_slab", "polished_broodstone_wall", "broodstone_brick_stairs", "broodstone_brick_slab", "broodstone_brick_wall", @@ -73,7 +74,7 @@ public final class CreativeTabOrder { "dead_star_coral", "dead_star_coral_fan", "dead_star_coral_block" -> 11; case "dream_torch", "dream_lantern", "dream_campfire", "dream_fire", "dream_fire_ceiling" -> 12; case "antimetal_scaffolding" -> 13; - case "infested_rooted_dirt", "infested_coarse_dirt", "bed_bug_egg", "creeping_horror_egg", "lurking_terror_egg", "jumpy_bug_egg" -> 14; + case "infested_rooted_dirt", "infested_coarse_dirt", "bed_bug_egg", "creeping_horror_egg", "lurking_terror_egg", "jumpy_bug_egg", "spit_bug_egg", "metroid_egg" -> 14; case "ultimate_pickaxe", "ultimate_axe", "ultimate_shovel", "ultimate_hoe", "duct_tape", "diamond_minecart", "critter_cage", "gravity_sculk_sensor", "miners_dream" -> 15; case "bile_bucket", "ichor_bucket", "antiwater_bucket", "cloud_bucket", "lumen_bucket" -> 16; diff --git a/common/src/main/java/com/craisinlord/antarchy/content/GoopedEffectHooks.java b/common/src/main/java/com/craisinlord/antarchy/content/GoopedEffectHooks.java new file mode 100644 index 00000000..ff72291d --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/GoopedEffectHooks.java @@ -0,0 +1,26 @@ +package com.craisinlord.antarchy.content; + +import com.craisinlord.antarchy.Antarchy; +import net.minecraft.core.Holder; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.core.registries.Registries; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.effect.MobEffect; +import org.jetbrains.annotations.Nullable; + +public final class GoopedEffectHooks { + public static final int PROJECTILE_DURATION_TICKS = 20 * 8; + private static final ResourceKey GOOPED_KEY = ResourceKey.create( + Registries.MOB_EFFECT, + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "gooped") + ); + + private GoopedEffectHooks() { + } + + @Nullable + public static Holder holder() { + return BuiltInRegistries.MOB_EFFECT.getHolder(GOOPED_KEY).orElse(null); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/StinkyBehavior.java b/common/src/main/java/com/craisinlord/antarchy/content/StinkyBehavior.java index bd386b45..6c0e5d35 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/StinkyBehavior.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/StinkyBehavior.java @@ -29,7 +29,10 @@ public final class StinkyBehavior { if (!(entity.level() instanceof ServerLevel serverLevel)) { return; } - if (!entity.isAlive() || entity.tickCount % TRAIL_INTERVAL_TICKS != 0 || !entity.hasEffect(AntarchyObjects.STINKY_EFFECT.get())) { + if (!entity.isAlive() || !entity.hasEffect(AntarchyObjects.STINKY_EFFECT.get())) { + return; + } + if (entity.tickCount % TRAIL_INTERVAL_TICKS != 0) { return; } diff --git a/common/src/main/java/com/craisinlord/antarchy/content/block/BiowartBlock.java b/common/src/main/java/com/craisinlord/antarchy/content/block/BiowartBlock.java new file mode 100644 index 00000000..5c533cae --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/block/BiowartBlock.java @@ -0,0 +1,83 @@ +package com.craisinlord.antarchy.content.block; + +import com.craisinlord.antarchy.content.AntarchyTags; +import com.mojang.serialization.MapCodec; +import net.minecraft.core.BlockPos; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.util.RandomSource; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.BonemealableBlock; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.state.BlockState; + +import java.util.function.Supplier; + +public class BiowartBlock extends Block implements BonemealableBlock { + public static final MapCodec CODEC = Block.simpleCodec(BiowartBlock::new); + private static Supplier biowartTendrils; + + public BiowartBlock(BlockBehaviour.Properties properties) { + super(properties); + } + + public static void bindTendrils(Supplier tendrilsSupplier) { + biowartTendrils = tendrilsSupplier; + } + + @Override + public MapCodec codec() { + return CODEC; + } + + @Override + public boolean isValidBonemealTarget(LevelReader level, BlockPos pos, BlockState state) { + return level.getBlockState(pos.above()).isAir() || hasSpreadTarget(level, pos); + } + + @Override + public boolean isBonemealSuccess(Level level, RandomSource random, BlockPos pos, BlockState state) { + return true; + } + + @Override + public void performBonemeal(ServerLevel level, RandomSource random, BlockPos pos, BlockState state) { + placeTendrils(level, pos); + + BlockPos.MutableBlockPos cursor = new BlockPos.MutableBlockPos(); + for (int i = 0; i < 28; i++) { + cursor.setWithOffset(pos, random.nextInt(9) - 4, random.nextInt(3) - 1, random.nextInt(9) - 4); + BlockState target = level.getBlockState(cursor); + if (isBiomite(target)) { + level.setBlock(cursor, this.defaultBlockState(), 3); + placeTendrils(level, cursor); + } + } + } + + private static boolean hasSpreadTarget(LevelReader level, BlockPos pos) { + BlockPos.MutableBlockPos cursor = new BlockPos.MutableBlockPos(); + for (int x = -3; x <= 3; x++) { + for (int y = -1; y <= 1; y++) { + for (int z = -3; z <= 3; z++) { + cursor.setWithOffset(pos, x, y, z); + if (isBiomite(level.getBlockState(cursor))) { + return true; + } + } + } + } + return false; + } + + private static boolean isBiomite(BlockState state) { + return state.is(AntarchyTags.Blocks.BIOWART_REPLACEABLE); + } + + private static void placeTendrils(ServerLevel level, BlockPos pos) { + if (biowartTendrils != null && level.isEmptyBlock(pos.above())) { + level.setBlock(pos.above(), biowartTendrils.get().defaultBlockState(), 3); + } + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/block/BiowartTendrilsBlock.java b/common/src/main/java/com/craisinlord/antarchy/content/block/BiowartTendrilsBlock.java new file mode 100644 index 00000000..ca57f6b8 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/block/BiowartTendrilsBlock.java @@ -0,0 +1,41 @@ +package com.craisinlord.antarchy.content.block; + +import com.mojang.serialization.MapCodec; +import net.minecraft.core.BlockPos; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.BushBlock; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.shapes.CollisionContext; +import net.minecraft.world.phys.shapes.VoxelShape; + +public class BiowartTendrilsBlock extends BushBlock { + public static final MapCodec CODEC = Block.simpleCodec(BiowartTendrilsBlock::new); + private static final VoxelShape SHAPE = Block.box(2.0D, 0.0D, 2.0D, 14.0D, 10.0D, 14.0D); + + public BiowartTendrilsBlock(BlockBehaviour.Properties properties) { + super(properties); + } + + @Override + public MapCodec codec() { + return CODEC; + } + + @Override + protected boolean mayPlaceOn(BlockState state, BlockGetter level, BlockPos pos) { + return state.getBlock() instanceof BiowartBlock; + } + + @Override + protected boolean canSurvive(BlockState state, LevelReader level, BlockPos pos) { + return this.mayPlaceOn(level.getBlockState(pos.below()), level, pos.below()); + } + + @Override + protected VoxelShape getShape(BlockState state, BlockGetter level, BlockPos pos, CollisionContext context) { + return SHAPE; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/block/MetroidEggBlock.java b/common/src/main/java/com/craisinlord/antarchy/content/block/MetroidEggBlock.java new file mode 100644 index 00000000..1ad663d8 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/block/MetroidEggBlock.java @@ -0,0 +1,72 @@ +package com.craisinlord.antarchy.content.block; + +import com.mojang.serialization.MapCodec; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.world.item.context.BlockPlaceContext; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.Mirror; +import net.minecraft.world.level.block.Rotation; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.StateDefinition; +import net.minecraft.world.level.block.state.properties.BooleanProperty; +import net.minecraft.world.phys.shapes.CollisionContext; +import net.minecraft.world.phys.shapes.VoxelShape; + +public class MetroidEggBlock extends Block { + public static final MapCodec CODEC = Block.simpleCodec(MetroidEggBlock::new); + public static final BooleanProperty ROTATED = BooleanProperty.create("rotated"); + private static final VoxelShape SHAPE = Block.box(1.0D, 0.0D, 0.0D, 15.0D, 16.0D, 16.0D); + + public MetroidEggBlock(BlockBehaviour.Properties properties) { + super(properties); + this.registerDefaultState(this.stateDefinition.any().setValue(ROTATED, false)); + } + + @Override + public MapCodec codec() { + return CODEC; + } + + @Override + protected VoxelShape getShape(BlockState state, BlockGetter level, BlockPos pos, CollisionContext context) { + return SHAPE; + } + + @Override + public BlockState getStateForPlacement(BlockPlaceContext context) { + return this.defaultBlockState().setValue(ROTATED, context.getHorizontalDirection().getAxis() == Direction.Axis.X); + } + + @Override + protected BlockState rotate(BlockState state, Rotation rotation) { + return rotation == Rotation.CLOCKWISE_90 || rotation == Rotation.COUNTERCLOCKWISE_90 + ? state.setValue(ROTATED, !state.getValue(ROTATED)) + : state; + } + + @Override + protected BlockState mirror(BlockState state, Mirror mirror) { + return state; + } + + @Override + protected boolean canSurvive(BlockState state, LevelReader level, BlockPos pos) { + return level.getBlockState(pos.below()).isFaceSturdy(level, pos.below(), Direction.UP); + } + + @Override + protected BlockState updateShape(BlockState state, Direction direction, BlockState neighborState, LevelAccessor level, BlockPos pos, BlockPos neighborPos) { + return state.canSurvive(level, pos) ? super.updateShape(state, direction, neighborState, level, pos, neighborPos) : Blocks.AIR.defaultBlockState(); + } + + @Override + protected void createBlockStateDefinition(StateDefinition.Builder builder) { + builder.add(ROTATED); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/block/SpitBugEggBlock.java b/common/src/main/java/com/craisinlord/antarchy/content/block/SpitBugEggBlock.java new file mode 100644 index 00000000..65c676b1 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/block/SpitBugEggBlock.java @@ -0,0 +1,142 @@ +package com.craisinlord.antarchy.content.block; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.content.entity.SpitBugEntity; +import com.mojang.serialization.MapCodec; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.sounds.SoundSource; +import net.minecraft.util.RandomSource; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.context.BlockPlaceContext; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.Mirror; +import net.minecraft.world.level.block.Rotation; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.StateDefinition; +import net.minecraft.world.level.block.state.properties.BlockStateProperties; +import net.minecraft.world.level.block.state.properties.BooleanProperty; +import net.minecraft.world.level.block.state.properties.IntegerProperty; +import net.minecraft.world.phys.shapes.CollisionContext; +import net.minecraft.world.phys.shapes.VoxelShape; + +public class SpitBugEggBlock extends Block { + public static final MapCodec CODEC = Block.simpleCodec(SpitBugEggBlock::new); + public static final IntegerProperty HATCH = BlockStateProperties.HATCH; + public static final BooleanProperty ROTATED = BooleanProperty.create("rotated"); + private static final int MAX_HATCH = 2; + private static final double PLAYER_PROXIMITY_RADIUS = 12.0D; + private static final float PLAYER_PROXIMITY_HATCH_CHANCE = 0.25F; + private static final int PLAYER_PROXIMITY_CHECK_INTERVAL = 200; + private static final VoxelShape SHAPE = Block.box(1.0D, 0.0D, 1.0D, 15.0D, 16.0D, 15.0D); + private static final ResourceLocation SPIT_BUG_ID = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "spit_bug"); + + public SpitBugEggBlock(BlockBehaviour.Properties properties) { + super(properties); + this.registerDefaultState(this.stateDefinition.any().setValue(HATCH, 0).setValue(ROTATED, false)); + } + + @Override + public MapCodec codec() { + return CODEC; + } + + @Override + protected VoxelShape getShape(BlockState state, BlockGetter level, BlockPos pos, CollisionContext context) { + return SHAPE; + } + + @Override + public BlockState getStateForPlacement(BlockPlaceContext context) { + return this.defaultBlockState().setValue(ROTATED, context.getHorizontalDirection().getAxis() == Direction.Axis.X); + } + + @Override + protected BlockState rotate(BlockState state, Rotation rotation) { + return rotation == Rotation.CLOCKWISE_90 || rotation == Rotation.COUNTERCLOCKWISE_90 + ? state.setValue(ROTATED, !state.getValue(ROTATED)) + : state; + } + + @Override + protected BlockState mirror(BlockState state, Mirror mirror) { + return state; + } + + @Override + protected boolean canSurvive(BlockState state, LevelReader level, BlockPos pos) { + return level.getBlockState(pos.below()).isFaceSturdy(level, pos.below(), Direction.UP); + } + + @Override + protected BlockState updateShape(BlockState state, Direction direction, BlockState neighborState, LevelAccessor level, BlockPos pos, BlockPos neighborPos) { + return state.canSurvive(level, pos) ? super.updateShape(state, direction, neighborState, level, pos, neighborPos) : Blocks.AIR.defaultBlockState(); + } + + @Override + protected boolean isRandomlyTicking(BlockState state) { + return true; + } + + @Override + protected void randomTick(BlockState state, ServerLevel level, BlockPos pos, RandomSource random) { + if (!this.shouldUpdateHatchLevel(level, pos)) { + return; + } + + int hatch = state.getValue(HATCH); + if (hatch < MAX_HATCH) { + level.setBlock(pos, state.setValue(HATCH, hatch + 1), 2); + level.playSound(null, pos, SoundEvents.TURTLE_EGG_CRACK, SoundSource.BLOCKS, 0.7F, 0.95F + random.nextFloat() * 0.1F); + return; + } + + this.hatch(level, pos, random); + } + + private boolean shouldUpdateHatchLevel(Level level, BlockPos pos) { + if (level.random.nextInt(PLAYER_PROXIMITY_CHECK_INTERVAL) == 0) { + Player nearbyPlayer = level.getNearestPlayer(pos.getX() + 0.5D, pos.getY() + 0.5D, pos.getZ() + 0.5D, PLAYER_PROXIMITY_RADIUS, false); + if (nearbyPlayer != null && level.random.nextFloat() < PLAYER_PROXIMITY_HATCH_CHANCE) { + return true; + } + } + + boolean onAmberMoss = level.getBlockState(pos.below()).getBlock() instanceof AmberMossBlock; + return level.random.nextInt(onAmberMoss ? 150 : 500) == 0; + } + + private void hatch(ServerLevel level, BlockPos pos, RandomSource random) { + level.removeBlock(pos, false); + level.playSound(null, pos, SoundEvents.TURTLE_EGG_HATCH, SoundSource.BLOCKS, 0.75F, 0.95F + random.nextFloat() * 0.1F); + @SuppressWarnings("unchecked") + EntityType spitBugType = (EntityType) (EntityType) BuiltInRegistries.ENTITY_TYPE.getOptional(SPIT_BUG_ID).orElse(null); + if (spitBugType == null) { + return; + } + SpitBugEntity entity = spitBugType.create(level); + if (entity == null) { + return; + } + double spawnX = pos.getX() + 0.25D + random.nextDouble() * 0.5D; + double spawnZ = pos.getZ() + 0.25D + random.nextDouble() * 0.5D; + entity.moveTo(spawnX, pos.getY() + 0.1D, spawnZ, random.nextFloat() * 360.0F, 0.0F); + level.addFreshEntity(entity); + } + + @Override + protected void createBlockStateDefinition(StateDefinition.Builder builder) { + builder.add(HATCH, ROTATED); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/GoopedHudRenderer.java b/common/src/main/java/com/craisinlord/antarchy/content/client/GoopedHudRenderer.java new file mode 100644 index 00000000..4e8a6e36 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/GoopedHudRenderer.java @@ -0,0 +1,38 @@ +package com.craisinlord.antarchy.content.client; + +import com.craisinlord.antarchy.content.GoopedEffectHooks; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.core.Holder; +import net.minecraft.util.Mth; +import net.minecraft.world.effect.MobEffect; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.entity.player.Player; + +public final class GoopedHudRenderer { + private GoopedHudRenderer() { + } + + public static void render(GuiGraphics guiGraphics) { + Minecraft minecraft = Minecraft.getInstance(); + Player player = minecraft.player; + Holder gooped = GoopedEffectHooks.holder(); + if (player == null || player.isDeadOrDying() || gooped == null) { + return; + } + + MobEffectInstance effect = player.getEffect(gooped); + if (effect == null) { + return; + } + + float durationFade = effect.isInfiniteDuration() + ? 1.0F + : Mth.clamp(effect.getDuration() / 40.0F, 0.25F, 1.0F); + float strength = Mth.clamp((effect.getAmplifier() + 1) / 3.0F, 0.0F, 1.0F); + int alpha = Mth.clamp((int) ((0x38 + 0x20 * strength) * durationFade), 0, 0x70); + int width = minecraft.getWindow().getGuiScaledWidth(); + int height = minecraft.getWindow().getGuiScaledHeight(); + guiGraphics.fill(0, 0, width, height, (alpha << 24) | 0x16B846); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/HordeClientState.java b/common/src/main/java/com/craisinlord/antarchy/content/client/HordeClientState.java new file mode 100644 index 00000000..87405147 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/HordeClientState.java @@ -0,0 +1,46 @@ +package com.craisinlord.antarchy.content.client; + +import net.minecraft.client.Minecraft; +import net.minecraft.core.particles.ParticleTypes; +import net.minecraft.util.Mth; +import net.minecraft.world.phys.Vec3; + +public final class HordeClientState { + private static float targetIntensity; + private static float intensity; + + private HordeClientState() { + } + + public static void update(float syncedIntensity) { + targetIntensity = Mth.clamp(syncedIntensity, 0.0F, 1.0F); + } + + public static float intensity() { + return intensity; + } + + public static void tick() { + Minecraft minecraft = Minecraft.getInstance(); + if (minecraft.level == null || minecraft.player == null) { + targetIntensity = 0.0F; + } + + intensity += (targetIntensity - intensity) * 0.08F; + if (intensity < 0.01F) { + return; + } + if (minecraft.level == null || minecraft.player == null || minecraft.isPaused()) { + return; + } + + int count = Math.max(1, (int) (intensity * 5.0F)); + Vec3 center = minecraft.player.position(); + for (int i = 0; i < count; i++) { + double x = center.x + (minecraft.level.random.nextDouble() - 0.5D) * 18.0D; + double y = center.y + minecraft.level.random.nextDouble() * 5.0D; + double z = center.z + (minecraft.level.random.nextDouble() - 0.5D) * 18.0D; + minecraft.level.addParticle(ParticleTypes.MYCELIUM, x, y, z, 0.0D, 0.015D + intensity * 0.025D, 0.0D); + } + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/HordeHudRenderer.java b/common/src/main/java/com/craisinlord/antarchy/content/client/HordeHudRenderer.java new file mode 100644 index 00000000..b3c7629b --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/HordeHudRenderer.java @@ -0,0 +1,28 @@ +package com.craisinlord.antarchy.content.client; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.util.Mth; + +public final class HordeHudRenderer { + private HordeHudRenderer() { + } + + public static void render(GuiGraphics guiGraphics) { + Minecraft minecraft = Minecraft.getInstance(); + if (minecraft.player == null || minecraft.player.isDeadOrDying()) { + return; + } + + float intensity = HordeClientState.intensity(); + if (intensity <= 0.01F) { + return; + } + + float pulse = 0.9F + 0.1F * Mth.sin(minecraft.player.tickCount * ((float) Math.PI * 2.0F / 90.0F)); + int alpha = Mth.clamp((int) (intensity * pulse * 0x78), 0, 0x78); + int width = minecraft.getWindow().getGuiScaledWidth(); + int height = minecraft.getWindow().getGuiScaledHeight(); + guiGraphics.fill(0, 0, width, height, (alpha << 24) | 0xD84A16); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/CavarynSkyRenderer.java b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/CavarynSkyRenderer.java index e0bed5f3..a5197cac 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/CavarynSkyRenderer.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/CavarynSkyRenderer.java @@ -1,6 +1,7 @@ package com.craisinlord.antarchy.content.client.renderer; import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.content.client.HordeClientState; import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.BufferBuilder; import com.mojang.blaze3d.vertex.BufferUploader; @@ -53,9 +54,10 @@ public final class CavarynSkyRenderer { return; } - float red = 0.015F; - float green = 0.085F; - float blue = 0.035F; + float intensity = HordeClientState.intensity(); + float red = 0.015F + 0.28F * intensity; + float green = 0.085F + 0.18F * intensity; + float blue = 0.035F + 0.02F * intensity; RenderSystem.depthMask(false); RenderSystem.setShaderColor(red, green, blue, 1.0F); @@ -64,7 +66,7 @@ public final class CavarynSkyRenderer { VertexBuffer.unbind(); RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F); - float starBrightness = 0.8F; + float starBrightness = 0.8F + 0.45F * intensity; if (orangeStarBuffer == null) { orangeStarBuffer = buildOrangeStarBuffer(); } diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/GoopedGeoLayer.java b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/GoopedGeoLayer.java new file mode 100644 index 00000000..d316413e --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/GoopedGeoLayer.java @@ -0,0 +1,56 @@ +package com.craisinlord.antarchy.content.client.renderer; + +import com.craisinlord.antarchy.content.GoopedEffectHooks; +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.core.Holder; +import net.minecraft.world.effect.MobEffect; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.LivingEntity; +import org.jetbrains.annotations.Nullable; +import software.bernie.geckolib.animatable.GeoAnimatable; +import software.bernie.geckolib.cache.object.BakedGeoModel; +import software.bernie.geckolib.renderer.GeoRenderer; +import software.bernie.geckolib.renderer.layer.GeoRenderLayer; + +public final class GoopedGeoLayer extends GeoRenderLayer { + private static final int GOOPED_TINT = 0x6632FF55; + + public GoopedGeoLayer(GeoRenderer renderer) { + super(renderer); + } + + @Override + public void render(PoseStack poseStack, T animatable, BakedGeoModel bakedModel, @Nullable RenderType renderType, + MultiBufferSource bufferSource, @Nullable VertexConsumer buffer, float partialTick, + int packedLight, int packedOverlay) { + if (!(animatable instanceof Entity entity) || !(entity instanceof LivingEntity livingEntity)) { + return; + } + + Holder gooped = GoopedEffectHooks.holder(); + if (gooped == null || !livingEntity.hasEffect(gooped)) { + return; + } + + poseStack.pushPose(); + poseStack.scale(1.018F, 1.018F, 1.018F); + RenderType goopedRenderType = RenderType.entityTranslucent(this.getRenderer().getTextureLocation(animatable)); + VertexConsumer goopedBuffer = bufferSource.getBuffer(goopedRenderType); + this.getRenderer().reRender( + bakedModel, + poseStack, + bufferSource, + animatable, + goopedRenderType, + goopedBuffer, + partialTick, + packedLight, + packedOverlay, + GOOPED_TINT + ); + poseStack.popPose(); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/GoopedLivingLayer.java b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/GoopedLivingLayer.java new file mode 100644 index 00000000..4c05dc9f --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/GoopedLivingLayer.java @@ -0,0 +1,44 @@ +package com.craisinlord.antarchy.content.client.renderer; + +import com.craisinlord.antarchy.content.GoopedEffectHooks; +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import net.minecraft.client.model.EntityModel; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.entity.LivingEntityRenderer; +import net.minecraft.client.renderer.entity.RenderLayerParent; +import net.minecraft.client.renderer.entity.layers.RenderLayer; +import net.minecraft.core.Holder; +import net.minecraft.world.effect.MobEffect; +import net.minecraft.world.entity.LivingEntity; + +public final class GoopedLivingLayer> extends RenderLayer { + private static final int GOOPED_TINT = 0x6632FF55; + + public GoopedLivingLayer(RenderLayerParent renderer) { + super(renderer); + } + + @Override + public void render(PoseStack poseStack, MultiBufferSource buffer, int packedLight, T entity, + float limbSwing, float limbSwingAmount, float partialTick, float ageInTicks, + float netHeadYaw, float headPitch) { + Holder gooped = GoopedEffectHooks.holder(); + if (gooped == null || !entity.hasEffect(gooped)) { + return; + } + + poseStack.pushPose(); + poseStack.scale(1.018F, 1.018F, 1.018F); + VertexConsumer vertexConsumer = buffer.getBuffer(RenderType.entityTranslucent(this.getTextureLocation(entity))); + this.getParentModel().renderToBuffer( + poseStack, + vertexConsumer, + packedLight, + LivingEntityRenderer.getOverlayCoords(entity, 0.0F), + GOOPED_TINT + ); + poseStack.popPose(); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/command/CavarynCommand.java b/common/src/main/java/com/craisinlord/antarchy/content/command/CavarynCommand.java new file mode 100644 index 00000000..239e313b --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/command/CavarynCommand.java @@ -0,0 +1,71 @@ +package com.craisinlord.antarchy.content.command; + +import com.craisinlord.antarchy.content.horde.CavarynHordeManager; +import com.mojang.brigadier.CommandDispatcher; +import com.mojang.brigadier.arguments.IntegerArgumentType; +import com.mojang.brigadier.context.CommandContext; +import java.util.Collection; +import net.minecraft.commands.CommandSourceStack; +import net.minecraft.commands.Commands; +import net.minecraft.commands.arguments.EntityArgument; +import net.minecraft.network.chat.Component; +import net.minecraft.server.level.ServerPlayer; + +public final class CavarynCommand { + private CavarynCommand() { + } + + public static void register(CommandDispatcher dispatcher) { + dispatcher.register( + Commands.literal("cavaryn") + .requires(source -> source.hasPermission(2)) + .then(Commands.literal("horde") + .then(Commands.literal("get") + .executes(context -> getHordeLevel(context, java.util.List.of(context.getSource().getPlayerOrException()))) + .then(Commands.argument("targets", EntityArgument.players()) + .executes(context -> getHordeLevel(context, EntityArgument.getPlayers(context, "targets"))))) + .then(Commands.literal("set") + .then(Commands.argument("level", IntegerArgumentType.integer(0, CavarynHordeManager.maxHordeLevel())) + .executes(context -> setHordeLevel(context, IntegerArgumentType.getInteger(context, "level"), java.util.List.of(context.getSource().getPlayerOrException()))) + .then(Commands.argument("targets", EntityArgument.players()) + .executes(context -> setHordeLevel(context, IntegerArgumentType.getInteger(context, "level"), EntityArgument.getPlayers(context, "targets"))))))) + ); + } + + private static int getHordeLevel(CommandContext context, Collection targets) { + int found = 0; + for (ServerPlayer target : targets) { + int levelValue = CavarynHordeManager.getHordeLevel(target); + if (levelValue < 0) { + context.getSource().sendSuccess( + () -> Component.literal(target.getName().getString() + ": not in Cavaryn"), + false + ); + continue; + } + + found++; + context.getSource().sendSuccess( + () -> Component.literal(target.getName().getString() + ": Cavaryn horde level " + levelValue + "/" + CavarynHordeManager.maxHordeLevel()), + false + ); + } + return found; + } + + private static int setHordeLevel(CommandContext context, int levelValue, Collection targets) { + int changed = 0; + for (ServerPlayer target : targets) { + if (CavarynHordeManager.setHordeLevel(target, levelValue) >= 0) { + changed++; + } + } + + int finalChanged = changed; + context.getSource().sendSuccess( + () -> Component.literal("Set Cavaryn horde level to " + levelValue + " for " + finalChanged + " player(s) in Cavaryn"), + true + ); + return changed; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/effect/GoopedMobEffect.java b/common/src/main/java/com/craisinlord/antarchy/content/effect/GoopedMobEffect.java new file mode 100644 index 00000000..cfc5a5fd --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/effect/GoopedMobEffect.java @@ -0,0 +1,26 @@ +package com.craisinlord.antarchy.content.effect; + +import com.craisinlord.antarchy.Antarchy; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.effect.MobEffect; +import net.minecraft.world.effect.MobEffectCategory; +import net.minecraft.world.entity.ai.attributes.AttributeModifier; +import net.minecraft.world.entity.ai.attributes.Attributes; + +public final class GoopedMobEffect extends MobEffect { + public GoopedMobEffect() { + super(MobEffectCategory.HARMFUL, 0x32B84E); + this.addAttributeModifier( + Attributes.ATTACK_SPEED, + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "gooped_attack_speed"), + -0.3D, + AttributeModifier.Operation.ADD_MULTIPLIED_TOTAL + ); + this.addAttributeModifier( + Attributes.MOVEMENT_SPEED, + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "gooped_movement_speed"), + -0.3D, + AttributeModifier.Operation.ADD_MULTIPLIED_TOTAL + ); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/CreepingHorrorEntity.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/CreepingHorrorEntity.java index 0f5cea08..70a7e795 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/entity/CreepingHorrorEntity.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/CreepingHorrorEntity.java @@ -78,7 +78,6 @@ public class CreepingHorrorEntity extends Monster implements GeoEntity { if (spawnReason == MobSpawnType.SPAWN_EGG || spawnReason == MobSpawnType.SPAWNER || spawnReason == MobSpawnType.COMMAND) { return true; } - BlockPos belowPos = pos.below(); BlockState belowState = level.getBlockState(belowPos); boolean validSupport = !belowState.is(Blocks.BEDROCK) diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/JumpyBugEntity.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/JumpyBugEntity.java index 86584316..edf3f967 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/entity/JumpyBugEntity.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/JumpyBugEntity.java @@ -121,7 +121,6 @@ public class JumpyBugEntity extends Monster implements GeoEntity { if (spawnReason == MobSpawnType.SPAWN_EGG || spawnReason == MobSpawnType.SPAWNER || spawnReason == MobSpawnType.COMMAND) { return true; } - return level.getDifficulty() != Difficulty.PEACEFUL && Monster.checkMonsterSpawnRules(entityType, level, spawnReason, pos, random); } @@ -281,7 +280,7 @@ public class JumpyBugEntity extends Monster implements GeoEntity { @Override protected SoundEvent getDeathSound() { - return SoundEvents.SPIDER_DEATH; + return AntarchySoundEvents.JUMPY_BUG_HURT.get(); } @Override diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/LurkingTerrorEntity.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/LurkingTerrorEntity.java index 71b029de..991110c4 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/entity/LurkingTerrorEntity.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/LurkingTerrorEntity.java @@ -66,7 +66,6 @@ public class LurkingTerrorEntity extends Monster implements GeoEntity { if (spawnReason == MobSpawnType.SPAWN_EGG || spawnReason == MobSpawnType.SPAWNER || spawnReason == MobSpawnType.COMMAND) { return true; } - BlockPos belowPos = pos.below(); BlockState belowState = level.getBlockState(belowPos); boolean validSupport = !belowState.is(Blocks.BEDROCK) diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/SpitBugEntity.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/SpitBugEntity.java index 8950d5b9..71d47806 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/entity/SpitBugEntity.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/SpitBugEntity.java @@ -89,7 +89,6 @@ public class SpitBugEntity extends Monster implements GeoEntity { if (spawnReason == MobSpawnType.SPAWN_EGG || spawnReason == MobSpawnType.SPAWNER || spawnReason == MobSpawnType.COMMAND) { return true; } - return level.getDifficulty() != Difficulty.PEACEFUL && level.isEmptyBlock(pos) && level.isEmptyBlock(pos.above()) @@ -167,7 +166,7 @@ public class SpitBugEntity extends Monster implements GeoEntity { @Override protected SoundEvent getDeathSound() { - return SoundEvents.SPIDER_DEATH; + return AntarchySoundEvents.SPIT_BUG_HURT.get(); } @Override diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/SpitBugProjectileEntity.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/SpitBugProjectileEntity.java index cb4fc77e..2970bf44 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/entity/SpitBugProjectileEntity.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/SpitBugProjectileEntity.java @@ -1,13 +1,15 @@ package com.craisinlord.antarchy.content.entity; +import com.craisinlord.antarchy.content.GoopedEffectHooks; import com.craisinlord.antarchy.content.damage.AntarchyDamageSources; +import net.minecraft.core.Holder; import net.minecraft.core.particles.ParticleTypes; 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.world.effect.MobEffectInstance; -import net.minecraft.world.effect.MobEffects; +import net.minecraft.world.effect.MobEffect; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.LivingEntity; @@ -128,7 +130,7 @@ public class SpitBugProjectileEntity extends ThrowableItemProjectile { this.getBoundingBox().inflate(LINGER_RADIUS, 0.6D, LINGER_RADIUS), entity -> entity.isAlive() && entity != this.getOwner() )) { - target.addEffect(new MobEffectInstance(MobEffects.MOVEMENT_SLOWDOWN, 30, 3, false, true, true)); + applyGooped(target, 30); target.makeStuckInBlock(Blocks.HONEY_BLOCK.defaultBlockState(), new Vec3(0.2D, 0.0D, 0.2D)); } @@ -148,7 +150,7 @@ public class SpitBugProjectileEntity extends ThrowableItemProjectile { } else { livingTarget.hurt(this.damageSources().magic(), DIRECT_HIT_DAMAGE); } - livingTarget.addEffect(new MobEffectInstance(MobEffects.MOVEMENT_SLOWDOWN, 80, 3, false, true, true)); + applyGooped(livingTarget, GoopedEffectHooks.PROJECTILE_DURATION_TICKS); livingTarget.makeStuckInBlock(Blocks.HONEY_BLOCK.defaultBlockState(), new Vec3(0.25D, 0.0D, 0.25D)); } @@ -172,4 +174,11 @@ public class SpitBugProjectileEntity extends ThrowableItemProjectile { this.setPos(location.x, location.y + 0.05D, location.z); this.setDeltaMovement(Vec3.ZERO); } + + private static void applyGooped(LivingEntity target, int durationTicks) { + Holder gooped = GoopedEffectHooks.holder(); + if (gooped != null) { + target.addEffect(new MobEffectInstance(gooped, durationTicks, 0, false, true, true)); + } + } } diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/kraken/TentacleEntity.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/kraken/TentacleEntity.java index fd0f692e..15e842c3 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/entity/kraken/TentacleEntity.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/kraken/TentacleEntity.java @@ -50,6 +50,15 @@ public class TentacleEntity extends Mob implements GeoEntity { return true; } + @Override + public boolean fireImmune() { + return true; + } + + @Override + public void lavaHurt() { + } + @Override public void push(net.minecraft.world.entity.Entity entity) { } diff --git a/common/src/main/java/com/craisinlord/antarchy/content/horde/CavarynHordeManager.java b/common/src/main/java/com/craisinlord/antarchy/content/horde/CavarynHordeManager.java new file mode 100644 index 00000000..edc88e4c --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/horde/CavarynHordeManager.java @@ -0,0 +1,816 @@ +package com.craisinlord.antarchy.content.horde; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.content.AntarchySoundEvents; +import com.craisinlord.antarchy.content.AntarchyTags; +import com.craisinlord.antarchy.content.network.HerculesBeetleImpactShakeSync; +import com.craisinlord.antarchy.content.network.HordeIntensitySync; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.UUID; +import net.minecraft.core.BlockPos; +import net.minecraft.core.HolderLookup; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.core.registries.Registries; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.ListTag; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.sounds.SoundSource; +import net.minecraft.util.Mth; +import net.minecraft.util.RandomSource; +import net.minecraft.world.Difficulty; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.Mob; +import net.minecraft.world.entity.MobCategory; +import net.minecraft.world.entity.MobSpawnType; +import net.minecraft.world.entity.monster.Enemy; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.ServerLevelAccessor; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.saveddata.SavedData; +import net.minecraft.world.phys.AABB; +import org.jetbrains.annotations.Nullable; + +public final class CavarynHordeManager { + private static final ResourceKey CAVARYN = ResourceKey.create( + Registries.DIMENSION, + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "cavaryn") + ); + private static final ResourceLocation JUMPY_BUG_ID = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "jumpy_bug"); + private static final ResourceLocation SPIT_BUG_ID = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "spit_bug"); + private static final ResourceLocation CREEPING_HORROR_ID = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "creeping_horror"); + private static final ResourceLocation LURKING_TERROR_ID = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "lurking_terror"); + private static final ResourceLocation HERCULES_BEETLE_ID = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "hercules_beetle"); + private static final String DATA_ID = "antarchy_cavaryn_hordes"; + + private static final int GROUP_RADIUS_BLOCKS = 128; + private static final int ATTENTION_THRESHOLD = 100; + private static final int STALE_ATTENTION_PRUNE_TICKS = 20 * 60 * 20; + private static final int PLAYER_CHECK_INTERVAL = 20; + private static final int AREA_ATTENTION_INTERVAL = 20 * 45; + private static final int DORMANT_MIN_SPAWN_INTERVAL = 20 * 50; + private static final int DORMANT_RANDOM_SPAWN_INTERVAL = 20 * 35; + private static final int AWAKENING_SKIRMISH_INTERVAL = 20 * 8; + private static final int AWAKENING_TICKS = 20 * 25; + private static final int PULSE_INTERVAL_TICKS = 20 * 18; + private static final int RECOVERY_TICKS = 20 * 60; + private static final int ABANDON_TIMEOUT_TICKS = 20 * 20; + private static final int HERCULES_TIMEOUT_TICKS = 20 * 180; + private static final int MAX_HORDE_MOBS_PER_ENCOUNTER = 48; + private static final int MAX_DORMANT_MOBS_PER_AREA = 8; + private static final int MAX_SPAWN_ATTEMPTS_PER_MOB = 18; + private static final double MIN_SPAWN_DISTANCE = 18.0D; + private static final double MAX_SPAWN_DISTANCE = 36.0D; + + private CavarynHordeManager() { + } + + public static void tick(ServerLevel level) { + if (!level.dimension().equals(CAVARYN)) { + return; + } + + HordeData data = get(level); + long gameTime = level.getGameTime(); + if (gameTime % PLAYER_CHECK_INTERVAL == 0L) { + tickPlayers(level, data, gameTime); + } + tickEncounters(level, data, gameTime); + if (gameTime % 100L == 0L) { + data.prune(level, gameTime); + } + } + + public static void recordMobKill(ServerPlayer player, LivingEntity killed) { + if (!(player.level() instanceof ServerLevel level) || !level.dimension().equals(CAVARYN)) { + return; + } + if (!isHordeBiome(level, player.blockPosition())) { + return; + } + if (isPlayerInActiveEncounter(level, player)) { + return; + } + addAttention(level, player, killed instanceof Enemy || killed.getType().getCategory() == MobCategory.MONSTER ? 18 : 8); + } + + public static void recordBlockBreak(ServerPlayer player, BlockState brokenState, BlockPos pos) { + if (!(player.level() instanceof ServerLevel level) || !level.dimension().equals(CAVARYN)) { + return; + } + if (!isHordeBiome(level, pos) || isPlayerInActiveEncounter(level, player)) { + return; + } + addAttention(level, player, isEggOrNest(brokenState) ? 22 : 2); + } + + public static boolean isHordeBiome(ServerLevelAccessor level, BlockPos pos) { + return level.getBiome(pos).is(AntarchyTags.Biomes.USES_HORDE_SYSTEM); + } + + public static int maxHordeLevel() { + return ATTENTION_THRESHOLD; + } + + public static int getHordeLevel(ServerPlayer player) { + if (!(player.level() instanceof ServerLevel level) || !level.dimension().equals(CAVARYN)) { + return -1; + } + + PlayerAttention attention = get(level).players.get(player.getUUID()); + return attention != null ? attention.attention : 0; + } + + public static int setHordeLevel(ServerPlayer player, int levelValue) { + if (!(player.level() instanceof ServerLevel level) || !level.dimension().equals(CAVARYN)) { + return -1; + } + + HordeData data = get(level); + PlayerAttention attention = data.players.computeIfAbsent(player.getUUID(), ignored -> new PlayerAttention()); + attention.attention = Mth.clamp(levelValue, 0, ATTENTION_THRESHOLD); + attention.areaKey = areaKey(player.blockPosition()); + attention.areaTicks = 0; + attention.lastSeenGameTime = level.getGameTime(); + if (attention.attention < ATTENTION_THRESHOLD) { + data.encounters.removeIf(encounter -> encounter.center.distSqr(player.blockPosition()) <= GROUP_RADIUS_BLOCKS * GROUP_RADIUS_BLOCKS); + } + data.setDirty(); + HordeIntensitySync.send(player, attention.attention / (float) ATTENTION_THRESHOLD); + return attention.attention; + } + + private static void tickPlayers(ServerLevel level, HordeData data, long gameTime) { + Set seen = new HashSet<>(); + for (ServerPlayer player : level.players()) { + if (player.isSpectator()) { + continue; + } + + UUID uuid = player.getUUID(); + seen.add(uuid); + PlayerAttention attention = data.players.computeIfAbsent(uuid, ignored -> new PlayerAttention()); + boolean inHordeBiome = isHordeBiome(level, player.blockPosition()); + if (!inHordeBiome) { + attention.fade(6); + data.setDirty(); + HordeIntensitySync.send(player, 0.0F); + continue; + } + + attention.lastSeenGameTime = gameTime; + BlockPos pos = player.blockPosition(); + long currentArea = areaKey(pos); + if (attention.areaKey != currentArea) { + attention.areaKey = currentArea; + attention.areaTicks = 0; + attention.fade(4); + data.setDirty(); + } else if (!isPlayerInActiveEncounter(level, player)) { + attention.areaTicks += PLAYER_CHECK_INTERVAL; + if (attention.areaTicks >= AREA_ATTENTION_INTERVAL) { + attention.areaTicks = 0; + attention.add(6); + data.setDirty(); + } + } + + Encounter encounter = findNearbyEncounter(data, player.blockPosition()); + if (encounter == null && attention.attention >= ATTENTION_THRESHOLD) { + startEncounter(level, data, player); + encounter = findNearbyEncounter(data, player.blockPosition()); + } + if (encounter == null) { + tickDormantPressure(level, data, player, attention, currentArea, gameTime); + } + HordeIntensitySync.send(player, encounter != null ? encounter.intensity(gameTime) : attention.attention / (float) ATTENTION_THRESHOLD); + } + + for (Map.Entry entry : data.players.entrySet()) { + if (!seen.contains(entry.getKey())) { + entry.getValue().fade(2); + } + } + } + + private static void tickEncounters(ServerLevel level, HordeData data, long gameTime) { + Iterator iterator = data.encounters.iterator(); + while (iterator.hasNext()) { + Encounter encounter = iterator.next(); + List targets = targetsFor(level, encounter); + if (targets.isEmpty()) { + if (encounter.abandonedSince < 0L) { + encounter.abandonedSince = gameTime; + } + if (gameTime - encounter.abandonedSince >= ABANDON_TIMEOUT_TICKS) { + iterator.remove(); + data.setDirty(); + } + continue; + } + encounter.abandonedSince = -1L; + encounter.center = averageBlockPos(targets); + + if (encounter.phase == Phase.AWAKENING && gameTime >= encounter.nextSkirmishTime) { + spawnAwakeningSkirmish(level, encounter, targets); + encounter.nextSkirmishTime = gameTime + AWAKENING_SKIRMISH_INTERVAL; + data.setDirty(); + } + if (encounter.phase == Phase.AWAKENING && gameTime >= encounter.nextPulseTime) { + encounter.phase = Phase.SWARMING; + encounter.nextPulseTime = gameTime; + } + if (encounter.phase == Phase.SWARMING && gameTime >= encounter.nextPulseTime) { + spawnPulse(level, encounter, targets); + encounter.wave++; + encounter.nextPulseTime = gameTime + PULSE_INTERVAL_TICKS; + if (encounter.wave >= 4) { + encounter.phase = Phase.HERCULES; + } + data.setDirty(); + } + if (encounter.phase == Phase.HERCULES && herculesCleared(level, encounter, gameTime)) { + encounter.phase = Phase.RECOVERY; + encounter.recoveryEndsAt = gameTime + RECOVERY_TICKS; + data.setDirty(); + } + if (encounter.phase == Phase.RECOVERY && gameTime >= encounter.recoveryEndsAt) { + fadeAttentionNear(data, encounter.center, 70); + iterator.remove(); + data.setDirty(); + } + } + } + + private static void tickDormantPressure(ServerLevel level, HordeData data, ServerPlayer player, PlayerAttention attention, long areaKey, long gameTime) { + long nextSpawnTime = data.areaSpawnCooldowns.getOrDefault(areaKey, 0L); + if (gameTime < nextSpawnTime || level.getDifficulty() == Difficulty.PEACEFUL) { + return; + } + + int existing = countNearbyDirectHordeMobs(level, player.blockPosition(), 48.0D); + if (existing >= scaleSpawnCount(level, MAX_DORMANT_MOBS_PER_AREA)) { + data.areaSpawnCooldowns.put(areaKey, gameTime + DORMANT_MIN_SPAWN_INTERVAL); + data.setDirty(); + return; + } + + int count = scaleSpawnCount(level, attention.attention >= ATTENTION_THRESHOLD * 2 / 3 ? 2 : 1); + for (int i = 0; i < count; i++) { + EntityType type = level.random.nextBoolean() ? creepingHorrorType() : lurkingTerrorType(); + if (type != null) { + spawnDirectMob(level, null, type, player); + } + } + data.areaSpawnCooldowns.put(areaKey, gameTime + DORMANT_MIN_SPAWN_INTERVAL + level.random.nextInt(DORMANT_RANDOM_SPAWN_INTERVAL)); + data.setDirty(); + } + + private static boolean herculesCleared(ServerLevel level, Encounter encounter, long gameTime) { + if (encounter.herculesIds.isEmpty() || gameTime >= encounter.herculesTimeoutAt) { + return true; + } + for (UUID uuid : encounter.herculesIds) { + Entity entity = level.getEntity(uuid); + if (entity instanceof LivingEntity living && living.isAlive() && !living.isRemoved()) { + return false; + } + } + return true; + } + + private static void addAttention(ServerLevel level, ServerPlayer player, int amount) { + HordeData data = get(level); + PlayerAttention attention = data.players.computeIfAbsent(player.getUUID(), ignored -> new PlayerAttention()); + attention.lastSeenGameTime = level.getGameTime(); + attention.areaKey = areaKey(player.blockPosition()); + attention.add(amount); + data.setDirty(); + } + + private static void startEncounter(ServerLevel level, HordeData data, ServerPlayer seedPlayer) { + Encounter existing = findNearbyEncounter(data, seedPlayer.blockPosition()); + if (existing != null) { + return; + } + + Encounter encounter = new Encounter(); + encounter.id = UUID.randomUUID(); + encounter.center = seedPlayer.blockPosition(); + encounter.phase = Phase.AWAKENING; + encounter.startedAt = level.getGameTime(); + encounter.nextPulseTime = level.getGameTime() + AWAKENING_TICKS; + encounter.nextSkirmishTime = level.getGameTime() + AWAKENING_SKIRMISH_INTERVAL; + encounter.recoveryEndsAt = -1L; + encounter.abandonedSince = -1L; + encounter.herculesTimeoutAt = level.getGameTime() + AWAKENING_TICKS + PULSE_INTERVAL_TICKS * 4L + HERCULES_TIMEOUT_TICKS; + for (ServerPlayer player : targetsFor(level, encounter)) { + encounter.targets.add(player.getUUID()); + } + if (encounter.targets.isEmpty()) { + encounter.targets.add(seedPlayer.getUUID()); + } + data.encounters.add(encounter); + data.setDirty(); + } + + private static void spawnAwakeningSkirmish(ServerLevel level, Encounter encounter, List targets) { + if (level.getDifficulty() == Difficulty.PEACEFUL) { + return; + } + int players = Math.max(1, targets.size()); + int capacity = Math.max(0, scaleSpawnCount(level, MAX_HORDE_MOBS_PER_ENCOUNTER) - encounter.hordeMobIds.size()); + if (capacity <= 0) { + return; + } + + List> types = new ArrayList<>(); + addCommon(types, scaleSpawnCount(level, 2 + players)); + addRepeated(types, spitBugType(), scaleSpawnCount(level, Math.max(1, players))); + int spawned = 0; + for (EntityType type : types) { + if (spawned >= capacity || type == null) { + break; + } + ServerPlayer target = targets.get(level.random.nextInt(targets.size())); + if (spawnDirectMob(level, encounter, type, target)) { + spawned++; + } + } + } + + private static void spawnPulse(ServerLevel level, Encounter encounter, List targets) { + if (level.getDifficulty() == Difficulty.PEACEFUL) { + return; + } + + int players = Math.max(1, targets.size()); + int capacity = Math.max(0, scaleSpawnCount(level, MAX_HORDE_MOBS_PER_ENCOUNTER) - encounter.hordeMobIds.size()); + if (capacity <= 0) { + return; + } + + List> types = new ArrayList<>(); + switch (encounter.wave) { + case 0 -> addCommon(types, scaleSpawnCount(level, 12 + players * 3)); + case 1 -> { + addCommon(types, scaleSpawnCount(level, 14 + players * 3)); + addRepeated(types, spitBugType(), scaleSpawnCount(level, 2 + players)); + } + case 2 -> { + addCommon(types, scaleSpawnCount(level, 16 + players * 4)); + addRepeated(types, spitBugType(), scaleSpawnCount(level, 3 + players)); + addRepeated(types, jumpyBugType(), scaleSpawnCount(level, 1 + players)); + } + default -> { + int beetles = Math.min(scaleSpawnCount(level, 1 + players / 3), 3); + addRepeated(types, herculesBeetleType(), beetles); + addCommon(types, scaleSpawnCount(level, 8 + players * 2)); + warnHercules(level, encounter.center, targets); + } + } + + int spawned = 0; + for (EntityType type : types) { + if (spawned >= capacity || type == null) { + break; + } + ServerPlayer target = targets.get(level.random.nextInt(targets.size())); + if (spawnDirectMob(level, encounter, type, target)) { + spawned++; + } + } + } + + private static boolean spawnDirectMob(ServerLevel level, @Nullable Encounter encounter, EntityType type, ServerPlayer target) { + BlockPos spawnPos = findSpawnPos(level, target, type, level.random); + if (spawnPos == null) { + return false; + } + Entity entity = type.create(level); + if (!(entity instanceof Mob mob)) { + return false; + } + mob.moveTo(spawnPos.getX() + 0.5D, spawnPos.getY(), spawnPos.getZ() + 0.5D, level.random.nextFloat() * 360.0F, 0.0F); + mob.finalizeSpawn(level, level.getCurrentDifficultyAt(spawnPos), MobSpawnType.EVENT, null); + mob.setTarget(target); + if (!level.addFreshEntity(mob)) { + return false; + } + if (encounter != null) { + encounter.hordeMobIds.add(mob.getUUID()); + } + if (type == herculesBeetleType()) { + if (encounter != null) { + encounter.herculesIds.add(mob.getUUID()); + } + level.playSound(null, spawnPos, SoundEvents.GENERIC_EXPLODE.value(), SoundSource.HOSTILE, 1.5F, 0.65F); + HerculesBeetleImpactShakeSync.send(target, 28); + } else { + level.playSound(null, spawnPos, SoundEvents.GRAVEL_BREAK, SoundSource.HOSTILE, 0.7F, 0.75F + level.random.nextFloat() * 0.25F); + } + level.sendParticles(net.minecraft.core.particles.ParticleTypes.POOF, spawnPos.getX() + 0.5D, spawnPos.getY() + 0.2D, spawnPos.getZ() + 0.5D, 8, 0.4D, 0.2D, 0.4D, 0.03D); + return true; + } + + private static int countNearbyDirectHordeMobs(ServerLevel level, BlockPos center, double radius) { + AABB box = new AABB(center).inflate(radius); + EntityType creepingHorror = creepingHorrorType(); + EntityType lurkingTerror = lurkingTerrorType(); + EntityType spitBug = spitBugType(); + EntityType jumpyBug = jumpyBugType(); + return level.getEntitiesOfClass(Mob.class, box, mob -> + mob.getType() == creepingHorror + || mob.getType() == lurkingTerror + || mob.getType() == spitBug + || mob.getType() == jumpyBug + ).size(); + } + + @Nullable + private static BlockPos findSpawnPos(ServerLevel level, ServerPlayer target, EntityType type, RandomSource random) { + BlockPos origin = target.blockPosition(); + for (int attempt = 0; attempt < MAX_SPAWN_ATTEMPTS_PER_MOB; attempt++) { + double angle = random.nextDouble() * Math.PI * 2.0D; + double distance = MIN_SPAWN_DISTANCE + random.nextDouble() * (MAX_SPAWN_DISTANCE - MIN_SPAWN_DISTANCE); + BlockPos base = origin.offset(Mth.floor(Math.cos(angle) * distance), random.nextInt(13) - 6, Mth.floor(Math.sin(angle) * distance)); + if (!level.hasChunkAt(base) || !isHordeBiome(level, base)) { + continue; + } + BlockPos candidate = findFloor(level, base); + if (candidate == null || !level.hasChunkAt(candidate) || !isHordeBiome(level, candidate)) { + continue; + } + if (candidate.distSqr(target.blockPosition()) < MIN_SPAWN_DISTANCE * MIN_SPAWN_DISTANCE) { + continue; + } + if (!level.noCollision(type.getSpawnAABB(candidate.getX() + 0.5D, candidate.getY(), candidate.getZ() + 0.5D))) { + continue; + } + if (target.hasLineOfSight(new net.minecraft.world.entity.item.ItemEntity(level, candidate.getX() + 0.5D, candidate.getY(), candidate.getZ() + 0.5D, net.minecraft.world.item.ItemStack.EMPTY))) { + continue; + } + return candidate; + } + return null; + } + + @Nullable + private static BlockPos findFloor(ServerLevel level, BlockPos start) { + BlockPos.MutableBlockPos cursor = start.mutable(); + for (int dy = 0; dy <= 8; dy++) { + cursor.set(start.getX(), start.getY() - dy, start.getZ()); + if (isValidFloorSpawn(level, cursor)) { + return cursor.immutable(); + } + cursor.set(start.getX(), start.getY() + dy, start.getZ()); + if (isValidFloorSpawn(level, cursor)) { + return cursor.immutable(); + } + } + return null; + } + + private static boolean isValidFloorSpawn(ServerLevel level, BlockPos pos) { + BlockPos below = pos.below(); + return level.getBlockState(below).isFaceSturdy(level, below, net.minecraft.core.Direction.UP) + && level.isEmptyBlock(pos) + && level.isEmptyBlock(pos.above()); + } + + private static void addCommon(List> types, int count) { + EntityType creepingHorror = creepingHorrorType(); + EntityType lurkingTerror = lurkingTerrorType(); + for (int i = 0; i < count; i++) { + EntityType type = i % 2 == 0 ? creepingHorror : lurkingTerror; + if (type != null) { + types.add(type); + } + } + } + + private static void addRepeated(List> types, @Nullable EntityType type, int count) { + if (type == null) { + return; + } + for (int i = 0; i < count; i++) { + types.add(type); + } + } + + private static int scaleSpawnCount(ServerLevel level, int baseCount) { + if (baseCount <= 0 || level.getDifficulty() == Difficulty.PEACEFUL) { + return 0; + } + float multiplier = switch (level.getDifficulty()) { + case PEACEFUL -> 0.0F; + case EASY -> 0.65F; + case NORMAL -> 1.0F; + case HARD -> 1.35F; + }; + return Math.max(1, Mth.ceil(baseCount * multiplier)); + } + + @Nullable + private static EntityType spitBugType() { + return BuiltInRegistries.ENTITY_TYPE.getOptional(SPIT_BUG_ID).orElse(null); + } + + @Nullable + private static EntityType jumpyBugType() { + return BuiltInRegistries.ENTITY_TYPE.getOptional(JUMPY_BUG_ID).orElse(null); + } + + @Nullable + private static EntityType creepingHorrorType() { + return BuiltInRegistries.ENTITY_TYPE.getOptional(CREEPING_HORROR_ID).orElse(null); + } + + @Nullable + private static EntityType lurkingTerrorType() { + return BuiltInRegistries.ENTITY_TYPE.getOptional(LURKING_TERROR_ID).orElse(null); + } + + @Nullable + private static EntityType herculesBeetleType() { + return BuiltInRegistries.ENTITY_TYPE.getOptional(HERCULES_BEETLE_ID).orElse(null); + } + + private static void warnHercules(ServerLevel level, BlockPos center, List targets) { + level.playSound(null, center, AntarchySoundEvents.HERCULES_BEETLE_CRY.get(), SoundSource.HOSTILE, 2.0F, 0.65F); + for (ServerPlayer player : targets) { + HerculesBeetleImpactShakeSync.send(player, 35); + } + } + + private static boolean isPlayerInActiveEncounter(ServerLevel level, ServerPlayer player) { + HordeData data = get(level); + Encounter encounter = findNearbyEncounter(data, player.blockPosition()); + return encounter != null && encounter.phase != Phase.RECOVERY; + } + + @Nullable + private static Encounter findNearbyEncounter(HordeData data, BlockPos pos) { + for (Encounter encounter : data.encounters) { + if (encounter.center.distSqr(pos) <= GROUP_RADIUS_BLOCKS * GROUP_RADIUS_BLOCKS) { + return encounter; + } + } + return null; + } + + private static List targetsFor(ServerLevel level, Encounter encounter) { + List targets = new ArrayList<>(); + for (ServerPlayer player : level.players()) { + if (player.isSpectator() || !isHordeBiome(level, player.blockPosition())) { + continue; + } + if (player.blockPosition().distSqr(encounter.center) <= GROUP_RADIUS_BLOCKS * GROUP_RADIUS_BLOCKS) { + targets.add(player); + encounter.targets.add(player.getUUID()); + } + } + return targets; + } + + private static BlockPos averageBlockPos(List players) { + int x = 0; + int y = 0; + int z = 0; + for (ServerPlayer player : players) { + x += player.blockPosition().getX(); + y += player.blockPosition().getY(); + z += player.blockPosition().getZ(); + } + int count = Math.max(1, players.size()); + return new BlockPos(x / count, y / count, z / count); + } + + private static void fadeAttentionNear(HordeData data, BlockPos center, int amount) { + for (PlayerAttention attention : data.players.values()) { + if (BlockPos.of(attention.areaKey).distSqr(center) <= GROUP_RADIUS_BLOCKS * GROUP_RADIUS_BLOCKS) { + attention.attention = Math.max(0, attention.attention - amount); + attention.areaTicks = 0; + } + } + } + + private static long areaKey(BlockPos pos) { + return BlockPos.asLong( + Math.floorDiv(pos.getX(), GROUP_RADIUS_BLOCKS) * GROUP_RADIUS_BLOCKS, + Math.floorDiv(pos.getY(), GROUP_RADIUS_BLOCKS) * GROUP_RADIUS_BLOCKS, + Math.floorDiv(pos.getZ(), GROUP_RADIUS_BLOCKS) * GROUP_RADIUS_BLOCKS + ); + } + + private static boolean isEggOrNest(BlockState state) { + ResourceLocation id = BuiltInRegistries.BLOCK.getKey(state.getBlock()); + String path = id.getPath(); + return id.getNamespace().equals(Antarchy.MODID) && (path.contains("egg") || path.contains("nest")); + } + + private static HordeData get(ServerLevel level) { + return level.getDataStorage().computeIfAbsent( + new SavedData.Factory(HordeData::create, HordeData::load, null), + DATA_ID + ); + } + + private enum Phase { + AWAKENING, + SWARMING, + HERCULES, + RECOVERY + } + + public static final class HordeData extends SavedData { + private static final String PLAYERS_KEY = "Players"; + private static final String ENCOUNTERS_KEY = "Encounters"; + private static final String AREA_SPAWN_COOLDOWNS_KEY = "AreaSpawnCooldowns"; + + private final Map players = new HashMap<>(); + private final List encounters = new ArrayList<>(); + private final Map areaSpawnCooldowns = new HashMap<>(); + + static HordeData create() { + return new HordeData(); + } + + static HordeData load(CompoundTag tag, HolderLookup.Provider registries) { + HordeData data = new HordeData(); + for (net.minecraft.nbt.Tag rawEntry : tag.getList(PLAYERS_KEY, net.minecraft.nbt.Tag.TAG_COMPOUND)) { + CompoundTag entry = (CompoundTag) rawEntry; + data.players.put(entry.getUUID("Player"), PlayerAttention.load(entry)); + } + for (net.minecraft.nbt.Tag rawEntry : tag.getList(ENCOUNTERS_KEY, net.minecraft.nbt.Tag.TAG_COMPOUND)) { + data.encounters.add(Encounter.load((CompoundTag) rawEntry)); + } + for (net.minecraft.nbt.Tag rawEntry : tag.getList(AREA_SPAWN_COOLDOWNS_KEY, net.minecraft.nbt.Tag.TAG_COMPOUND)) { + CompoundTag entry = (CompoundTag) rawEntry; + data.areaSpawnCooldowns.put(entry.getLong("Area"), entry.getLong("NextSpawnTime")); + } + return data; + } + + @Override + public CompoundTag save(CompoundTag tag, HolderLookup.Provider registries) { + ListTag playerList = new ListTag(); + for (Map.Entry entry : this.players.entrySet()) { + CompoundTag playerTag = entry.getValue().save(); + playerTag.putUUID("Player", entry.getKey()); + playerList.add(playerTag); + } + tag.put(PLAYERS_KEY, playerList); + + ListTag encounterList = new ListTag(); + for (Encounter encounter : this.encounters) { + encounterList.add(encounter.save()); + } + tag.put(ENCOUNTERS_KEY, encounterList); + + ListTag areaCooldownList = new ListTag(); + for (Map.Entry entry : this.areaSpawnCooldowns.entrySet()) { + CompoundTag areaTag = new CompoundTag(); + areaTag.putLong("Area", entry.getKey()); + areaTag.putLong("NextSpawnTime", entry.getValue()); + areaCooldownList.add(areaTag); + } + tag.put(AREA_SPAWN_COOLDOWNS_KEY, areaCooldownList); + return tag; + } + + private void prune(ServerLevel level, long gameTime) { + this.players.values().removeIf(attention -> attention.attention <= 0 && gameTime - attention.lastSeenGameTime > STALE_ATTENTION_PRUNE_TICKS); + this.areaSpawnCooldowns.entrySet().removeIf(entry -> gameTime - entry.getValue() > STALE_ATTENTION_PRUNE_TICKS); + for (Encounter encounter : this.encounters) { + encounter.hordeMobIds.removeIf(uuid -> { + Entity entity = level.getEntity(uuid); + return entity == null || entity.isRemoved(); + }); + } + this.setDirty(); + } + } + + private static final class PlayerAttention { + private int attention; + private int areaTicks; + private long areaKey; + private long lastSeenGameTime; + + private void add(int amount) { + this.attention = Mth.clamp(this.attention + amount, 0, ATTENTION_THRESHOLD); + } + + private void fade(int amount) { + this.attention = Math.max(0, this.attention - amount); + this.areaTicks = Math.max(0, this.areaTicks - PLAYER_CHECK_INTERVAL); + } + + private CompoundTag save() { + CompoundTag tag = new CompoundTag(); + tag.putInt("Attention", this.attention); + tag.putInt("AreaTicks", this.areaTicks); + tag.putLong("AreaKey", this.areaKey); + tag.putLong("LastSeenGameTime", this.lastSeenGameTime); + return tag; + } + + private static PlayerAttention load(CompoundTag tag) { + PlayerAttention attention = new PlayerAttention(); + attention.attention = tag.getInt("Attention"); + attention.areaTicks = tag.getInt("AreaTicks"); + attention.areaKey = tag.getLong("AreaKey"); + attention.lastSeenGameTime = tag.getLong("LastSeenGameTime"); + return attention; + } + } + + private static final class Encounter { + private UUID id = UUID.randomUUID(); + private Phase phase = Phase.AWAKENING; + private BlockPos center = BlockPos.ZERO; + private int wave; + private long startedAt; + private long nextPulseTime; + private long recoveryEndsAt; + private long abandonedSince; + private long herculesTimeoutAt; + private long nextSkirmishTime; + private final Set targets = new HashSet<>(); + private final Set hordeMobIds = new HashSet<>(); + private final Set herculesIds = new HashSet<>(); + + private float intensity(long gameTime) { + return switch (this.phase) { + case AWAKENING -> Mth.clamp((gameTime - this.startedAt) / (float) AWAKENING_TICKS, 0.25F, 1.0F); + case SWARMING, HERCULES -> 1.0F; + case RECOVERY -> Mth.clamp((this.recoveryEndsAt - gameTime) / (float) RECOVERY_TICKS, 0.0F, 0.75F); + }; + } + + private CompoundTag save() { + CompoundTag tag = new CompoundTag(); + tag.putUUID("Id", this.id); + tag.putString("Phase", this.phase.name()); + tag.putLong("Center", this.center.asLong()); + tag.putInt("Wave", this.wave); + tag.putLong("StartedAt", this.startedAt); + tag.putLong("NextPulseTime", this.nextPulseTime); + tag.putLong("RecoveryEndsAt", this.recoveryEndsAt); + tag.putLong("AbandonedSince", this.abandonedSince); + tag.putLong("HerculesTimeoutAt", this.herculesTimeoutAt); + tag.putLong("NextSkirmishTime", this.nextSkirmishTime); + tag.put("Targets", uuidList(this.targets)); + tag.put("HordeMobs", uuidList(this.hordeMobIds)); + tag.put("Hercules", uuidList(this.herculesIds)); + return tag; + } + + private static Encounter load(CompoundTag tag) { + Encounter encounter = new Encounter(); + encounter.id = tag.getUUID("Id"); + encounter.phase = Phase.valueOf(tag.getString("Phase")); + encounter.center = BlockPos.of(tag.getLong("Center")); + encounter.wave = tag.getInt("Wave"); + encounter.startedAt = tag.getLong("StartedAt"); + encounter.nextPulseTime = tag.getLong("NextPulseTime"); + encounter.recoveryEndsAt = tag.getLong("RecoveryEndsAt"); + encounter.abandonedSince = tag.getLong("AbandonedSince"); + encounter.herculesTimeoutAt = tag.getLong("HerculesTimeoutAt"); + encounter.nextSkirmishTime = tag.getLong("NextSkirmishTime"); + readUuidList(tag.getList("Targets", net.minecraft.nbt.Tag.TAG_COMPOUND), encounter.targets); + readUuidList(tag.getList("HordeMobs", net.minecraft.nbt.Tag.TAG_COMPOUND), encounter.hordeMobIds); + readUuidList(tag.getList("Hercules", net.minecraft.nbt.Tag.TAG_COMPOUND), encounter.herculesIds); + return encounter; + } + + private static ListTag uuidList(Set uuids) { + ListTag list = new ListTag(); + for (UUID uuid : uuids) { + CompoundTag tag = new CompoundTag(); + tag.putUUID("Id", uuid); + list.add(tag); + } + return list; + } + + private static void readUuidList(ListTag list, Set uuids) { + for (net.minecraft.nbt.Tag rawEntry : list) { + uuids.add(((CompoundTag) rawEntry).getUUID("Id")); + } + } + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/item/AttitudeAdjusterSlamManager.java b/common/src/main/java/com/craisinlord/antarchy/content/item/AttitudeAdjusterSlamManager.java index 68a9201b..2fab071b 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/item/AttitudeAdjusterSlamManager.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/item/AttitudeAdjusterSlamManager.java @@ -1,6 +1,8 @@ package com.craisinlord.antarchy.content.item; import com.craisinlord.antarchy.config.AntarchySettings; +import com.craisinlord.antarchy.content.gravity.AntarchyGravityDirection; +import com.craisinlord.antarchy.content.gravity.AntarchyGravityRotationUtil; import com.craisinlord.antarchy.content.network.ImpactShakePayload; import com.craisinlord.antarchy.content.network.ImpactShakeSync; import java.util.HashMap; @@ -103,8 +105,10 @@ public final class AttitudeAdjusterSlamManager { return false; } PLAYER_SLAMS.put(player.getUUID(), new PlayerSlamState(player.getUUID(), player.serverLevel().dimension().location().toString(), player.serverLevel().getGameTime() + SLAM_TIMEOUT_TICKS, player.fallDistance)); + AntarchyGravityDirection gravityDirection = AntarchyGravityRotationUtil.getGravityDownDirection(player) == Direction.UP ? AntarchyGravityDirection.UP : AntarchyGravityDirection.DOWN; Vec3 motion = player.getDeltaMovement(); - player.setDeltaMovement(motion.x * 0.25D, PLAYER_SLAM_START_VELOCITY, motion.z * 0.25D); + Vec3 localMotion = AntarchyGravityRotationUtil.vecWorldToPlayer(motion, gravityDirection); + player.setDeltaMovement(AntarchyGravityRotationUtil.vecPlayerToWorld(new Vec3(localMotion.x * 0.25D, PLAYER_SLAM_START_VELOCITY, localMotion.z * 0.25D), gravityDirection)); player.hurtMarked = true; player.fallDistance = 0.0F; player.swing(hand, true); @@ -164,23 +168,31 @@ public final class AttitudeAdjusterSlamManager { if (!player.onGround()) { continue; } + Direction gravityDown = AntarchyGravityRotationUtil.getGravityDownDirection(player); Vec3 impactPos = player.position(); - BlockPos groundPos = player.getOnPosLegacy(); - double impactStrength = Math.max(Math.abs(Math.min(player.getDeltaMovement().y, PLAYER_SLAM_START_VELOCITY)), Math.max(state.startFallDistance, player.fallDistance) * 0.15D); + BlockPos groundPos = getSlamSurfacePos(player, gravityDown); + double localVerticalSpeed = AntarchyGravityRotationUtil.vecWorldToPlayer(player.getDeltaMovement(), gravityDown == Direction.UP ? AntarchyGravityDirection.UP : AntarchyGravityDirection.DOWN).y; + double impactStrength = Math.max(Math.abs(Math.min(localVerticalSpeed, PLAYER_SLAM_START_VELOCITY)), Math.max(state.startFallDistance, player.fallDistance) * 0.15D); float damage = (float) Mth.clamp(PLAYER_SLAM_BASE_DAMAGE + impactStrength * PLAYER_SLAM_DAMAGE_SCALE * 10.0D, PLAYER_SLAM_BASE_DAMAGE, PLAYER_SLAM_MAX_DAMAGE); AABB area = new AABB(impactPos.x - PLAYER_SLAM_RADIUS, impactPos.y - 1.5D, impactPos.z - PLAYER_SLAM_RADIUS, impactPos.x + PLAYER_SLAM_RADIUS, impactPos.y + 2.5D, impactPos.z + PLAYER_SLAM_RADIUS); + Vec3 awayFromSurface = new Vec3(-gravityDown.getStepX(), -gravityDown.getStepY(), -gravityDown.getStepZ()); for (LivingEntity target : level.getEntitiesOfClass(LivingEntity.class, area, candidate -> candidate.isAlive() && candidate != player)) { if (!target.hurt(level.damageSources().playerAttack(player), damage)) { continue; } Vec3 away = horizontalAway(impactPos, target.position(), player.getLookAngle()).scale(PLAYER_SLAM_HORIZONTAL_KNOCKBACK); double resistanceScale = resistanceScale(target); - target.setDeltaMovement(target.getDeltaMovement().add(away.x * resistanceScale, Math.max(PLAYER_SLAM_UPWARD_KNOCKBACK * resistanceScale, 0.35D), away.z * resistanceScale)); + double surfaceKnockback = Math.max(PLAYER_SLAM_UPWARD_KNOCKBACK * resistanceScale, 0.35D); + target.setDeltaMovement(target.getDeltaMovement().add( + away.x * resistanceScale + awayFromSurface.x * surfaceKnockback, + away.y * resistanceScale + awayFromSurface.y * surfaceKnockback, + away.z * resistanceScale + awayFromSurface.z * surfaceKnockback + )); target.hurtMarked = true; } playSlamImpact(level, impactPos, groundPos, false); if (AntarchySettings.attitudeAdjusterBreaksBlocks()) { - breakBlocks(level, player, groundPos); + breakBlocks(level, player, groundPos, gravityDown); } if (player.getMainHandItem().getItem() instanceof AttitudeAdjusterItem item) { player.getCooldowns().addCooldown(item, PLAYER_SLAM_COOLDOWN_TICKS); @@ -189,9 +201,19 @@ public final class AttitudeAdjusterSlamManager { } } - private static void breakBlocks(ServerLevel level, ServerPlayer player, BlockPos center) { + private static BlockPos getSlamSurfacePos(Entity entity, Direction gravityDown) { + if (gravityDown == Direction.UP) { + return BlockPos.containing(entity.getX(), entity.getBoundingBox().maxY + 0.05D, entity.getZ()); + } + return entity.getOnPosLegacy(); + } + + private static void breakBlocks(ServerLevel level, ServerPlayer player, BlockPos center, Direction gravityDown) { int broken = 0; - for (int y = -1; y <= 0 && broken < MAX_BROKEN_BLOCKS; y++) { + int minY = gravityDown == Direction.UP ? 0 : -1; + int maxY = gravityDown == Direction.UP ? 1 : 0; + Direction supportFace = gravityDown.getOpposite(); + for (int y = minY; y <= maxY && broken < MAX_BROKEN_BLOCKS; y++) { for (int x = -1; x <= 1 && broken < MAX_BROKEN_BLOCKS; x++) { for (int z = -1; z <= 1 && broken < MAX_BROKEN_BLOCKS; z++) { BlockPos pos = center.offset(x, y, z); @@ -200,7 +222,7 @@ public final class AttitudeAdjusterSlamManager { if (state.isAir() || blockEntity != null || state.getDestroySpeed(level, pos) < 0.0F || state.getDestroySpeed(level, pos) > NORMAL_BREAK_HARDNESS_LIMIT) { continue; } - if (!state.isFaceSturdy(level, pos, Direction.UP) && pos.getY() < center.getY()) { + if (!state.isFaceSturdy(level, pos, supportFace) && pos.getY() != center.getY()) { continue; } if (player.gameMode.destroyBlock(pos)) { diff --git a/common/src/main/java/com/craisinlord/antarchy/content/network/HordeIntensityPayload.java b/common/src/main/java/com/craisinlord/antarchy/content/network/HordeIntensityPayload.java new file mode 100644 index 00000000..60ef4b1d --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/network/HordeIntensityPayload.java @@ -0,0 +1,20 @@ +package com.craisinlord.antarchy.content.network; + +import com.craisinlord.antarchy.Antarchy; +import io.netty.buffer.ByteBuf; +import net.minecraft.network.codec.ByteBufCodecs; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.network.protocol.common.custom.CustomPacketPayload; +import net.minecraft.resources.ResourceLocation; + +public record HordeIntensityPayload(float intensity) implements CustomPacketPayload { + public static final Type TYPE = + new Type<>(ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "horde_intensity")); + public static final StreamCodec STREAM_CODEC = + ByteBufCodecs.FLOAT.map(HordeIntensityPayload::new, HordeIntensityPayload::intensity); + + @Override + public Type type() { + return TYPE; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/network/HordeIntensitySync.java b/common/src/main/java/com/craisinlord/antarchy/content/network/HordeIntensitySync.java new file mode 100644 index 00000000..cfe66219 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/network/HordeIntensitySync.java @@ -0,0 +1,22 @@ +package com.craisinlord.antarchy.content.network; + +import java.util.function.BiConsumer; +import net.minecraft.server.level.ServerPlayer; + +public final class HordeIntensitySync { + private static final BiConsumer NOOP = (player, payload) -> { + }; + + private static volatile BiConsumer sink = NOOP; + + private HordeIntensitySync() { + } + + public static void setSink(BiConsumer sink) { + HordeIntensitySync.sink = sink == null ? NOOP : sink; + } + + public static void send(ServerPlayer player, float intensity) { + sink.accept(player, new HordeIntensityPayload(intensity)); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/worldgen/cavaryn/SpitBugEggPatchFeature.java b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/cavaryn/SpitBugEggPatchFeature.java new file mode 100644 index 00000000..8e88b200 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/cavaryn/SpitBugEggPatchFeature.java @@ -0,0 +1,90 @@ +package com.craisinlord.antarchy.content.worldgen.cavaryn; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.content.block.SpitBugEggBlock; +import com.mojang.serialization.Codec; +import java.util.Optional; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.RandomSource; +import net.minecraft.world.level.WorldGenLevel; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.levelgen.feature.Feature; +import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext; +import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; + +public final class SpitBugEggPatchFeature extends Feature { + private static final ResourceLocation SPIT_BUG_EGG_ID = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "spit_bug_egg"); + private static final int SEARCH_RADIUS = 7; + private static final int VERTICAL_SCAN = 18; + private static final int SEARCH_ATTEMPTS = 32; + private static final int MIN_PLACEMENTS = 2; + private static final int MAX_PLACEMENTS = 5; + + public SpitBugEggPatchFeature(Codec codec) { + super(codec); + } + + @Override + public boolean place(FeaturePlaceContext context) { + Block eggBlock = getBlock(SPIT_BUG_EGG_ID); + if (eggBlock == null) { + return false; + } + + WorldGenLevel level = context.level(); + RandomSource random = context.random(); + BlockPos origin = context.origin(); + + boolean placedAny = false; + int placements = 0; + int targetPlacements = MIN_PLACEMENTS + random.nextInt(MAX_PLACEMENTS - MIN_PLACEMENTS + 1); + BlockPos.MutableBlockPos mutable = new BlockPos.MutableBlockPos(); + for (int attempt = 0; attempt < SEARCH_ATTEMPTS && placements < targetPlacements; attempt++) { + int x = origin.getX() + random.nextInt(SEARCH_RADIUS * 2 + 1) - SEARCH_RADIUS; + int z = origin.getZ() + random.nextInt(SEARCH_RADIUS * 2 + 1) - SEARCH_RADIUS; + int startY = origin.getY() + random.nextInt(VERTICAL_SCAN * 2 + 1) - VERTICAL_SCAN; + int minY = Math.max(level.getMinBuildHeight() + 1, startY - VERTICAL_SCAN); + int maxY = Math.min(level.getMaxBuildHeight() - 1, startY + VERTICAL_SCAN); + + BlockPos spot = null; + for (int y = minY; y <= maxY; y++) { + mutable.set(x, y, z); + if (isValidFloorSpot(level, mutable)) { + spot = mutable.immutable(); + break; + } + } + + if (spot == null) { + continue; + } + BlockState eggState = eggBlock.defaultBlockState() + .setValue(SpitBugEggBlock.ROTATED, random.nextBoolean()); + level.setBlock(spot, eggState, 3); + placedAny = true; + placements++; + } + + return placedAny; + } + + private static boolean isValidFloorSpot(WorldGenLevel level, BlockPos pos) { + BlockState state = level.getBlockState(pos); + if (!state.isAir()) { + return false; + } + + BlockPos belowPos = pos.below(); + BlockState belowState = level.getBlockState(belowPos); + return belowState.isFaceSturdy(level, belowPos, Direction.UP); + } + + private static Block getBlock(ResourceLocation id) { + Optional block = BuiltInRegistries.BLOCK.getOptional(id); + return block.orElse(null); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/mixins/GoopedStepSoundMixin.java b/common/src/main/java/com/craisinlord/antarchy/mixins/GoopedStepSoundMixin.java new file mode 100644 index 00000000..d384ce8f --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/mixins/GoopedStepSoundMixin.java @@ -0,0 +1,32 @@ +package com.craisinlord.antarchy.mixins; + +import com.craisinlord.antarchy.content.GoopedEffectHooks; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Holder; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.world.effect.MobEffect; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.level.block.state.BlockState; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(Entity.class) +public abstract class GoopedStepSoundMixin { + @Inject(method = "playStepSound", at = @At("HEAD"), cancellable = true) + private void antarchy$goopedStepSound(BlockPos pos, BlockState state, CallbackInfo ci) { + if (!((Object) this instanceof LivingEntity livingEntity)) { + return; + } + + Holder gooped = GoopedEffectHooks.holder(); + if (gooped == null || !livingEntity.hasEffect(gooped)) { + return; + } + + livingEntity.playSound(SoundEvents.SLIME_BLOCK_STEP, 0.15F, 1.0F); + ci.cancel(); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/mixins/StinkyCrouchMixin.java b/common/src/main/java/com/craisinlord/antarchy/mixins/StinkyCrouchMixin.java new file mode 100644 index 00000000..2fbf2d71 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/mixins/StinkyCrouchMixin.java @@ -0,0 +1,35 @@ +package com.craisinlord.antarchy.mixins; + +import com.craisinlord.antarchy.content.AntarchyObjects; +import com.craisinlord.antarchy.content.AntarchySoundEvents; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.sounds.SoundSource; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.player.Player; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(Entity.class) +public abstract class StinkyCrouchMixin { + @Inject(method = "setShiftKeyDown", at = @At("HEAD")) + private void antarchy$playStinkyCrouchSound(boolean crouching, CallbackInfo ci) { + Entity entity = (Entity) (Object) this; + if (!crouching || entity.isShiftKeyDown() || !(entity instanceof Player player) || player.isSpectator() + || !(player.level() instanceof ServerLevel level) || !player.hasEffect(AntarchyObjects.STINKY_EFFECT.get())) { + return; + } + + level.playSound( + null, + player.getX(), + player.getY(), + player.getZ(), + AntarchySoundEvents.STINK_BUG_FART.get(), + SoundSource.PLAYERS, + 0.85F, + 0.9F + level.random.nextFloat() * 0.2F + ); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/mixins/client/CavarynHordeFogMixin.java b/common/src/main/java/com/craisinlord/antarchy/mixins/client/CavarynHordeFogMixin.java new file mode 100644 index 00000000..f9003619 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/mixins/client/CavarynHordeFogMixin.java @@ -0,0 +1,39 @@ +package com.craisinlord.antarchy.mixins.client; + +import com.craisinlord.antarchy.content.client.HordeClientState; +import com.mojang.blaze3d.shaders.FogShape; +import com.mojang.blaze3d.systems.RenderSystem; +import net.minecraft.client.Camera; +import net.minecraft.client.renderer.FogRenderer; +import net.minecraft.util.Mth; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.core.registries.Registries; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.material.FogType; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(FogRenderer.class) +public abstract class CavarynHordeFogMixin { + private static final ResourceKey CAVARYN = ResourceKey.create( + Registries.DIMENSION, + ResourceLocation.fromNamespaceAndPath("antarchy", "cavaryn") + ); + + @Inject(method = "setupFog", at = @At("TAIL")) + private static void antarchy$hordeFogDistance(Camera camera, FogRenderer.FogMode mode, float renderDistance, boolean thickFog, float partialTick, CallbackInfo ci) { + float intensity = HordeClientState.intensity(); + if (intensity <= 0.01F || camera.getEntity() == null || !camera.getEntity().level().dimension().equals(CAVARYN) || camera.getFluidInCamera() != FogType.NONE) { + return; + } + + float fogStart = Mth.lerp(intensity, Math.min(renderDistance * 0.55F, 48.0F), 3.5F); + float fogEnd = Mth.lerp(intensity, Math.min(renderDistance, 128.0F), 36.0F); + RenderSystem.setShaderFogStart(Math.min(fogStart, fogEnd * 0.65F)); + RenderSystem.setShaderFogEnd(fogEnd); + RenderSystem.setShaderFogShape(FogShape.SPHERE); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/mixins/client/CavarynHordeLightTextureMixin.java b/common/src/main/java/com/craisinlord/antarchy/mixins/client/CavarynHordeLightTextureMixin.java new file mode 100644 index 00000000..8ec8a98d --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/mixins/client/CavarynHordeLightTextureMixin.java @@ -0,0 +1,37 @@ +package com.craisinlord.antarchy.mixins.client; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.content.client.HordeClientState; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.LightTexture; +import net.minecraft.core.registries.Registries; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.Mth; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.dimension.DimensionType; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(LightTexture.class) +public abstract class CavarynHordeLightTextureMixin { + private static final ResourceKey CAVARYN = ResourceKey.create( + Registries.DIMENSION, + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "cavaryn") + ); + + @Inject(method = "getBrightness", at = @At("RETURN"), cancellable = true) + private static void antarchy$hordeAmbientBrightness(DimensionType dimensionType, int lightLevel, CallbackInfoReturnable cir) { + Minecraft minecraft = Minecraft.getInstance(); + float intensity = HordeClientState.intensity(); + if (intensity <= 0.01F || minecraft.level == null || !minecraft.level.dimension().equals(CAVARYN)) { + return; + } + + float original = cir.getReturnValue(); + float hordeAmbient = 0.015F + 0.55F * intensity; + cir.setReturnValue(Mth.clamp(original + hordeAmbient * (1.0F - original), 0.0F, 1.0F)); + } +} diff --git a/common/src/main/resources/antarchy-common.mixins.json b/common/src/main/resources/antarchy-common.mixins.json index e0632c81..837d5aad 100644 --- a/common/src/main/resources/antarchy-common.mixins.json +++ b/common/src/main/resources/antarchy-common.mixins.json @@ -19,9 +19,11 @@ "FrogVariantBootstrapMixin", "GlowSquidLumenSpawnMixin", "GlowVinesUnderLeavesMixin", + "GoopedStepSoundMixin", "ExperimentalSettingsLevelSummaryMixin", "NightmareSwordDamageMixin", "PotionBrewingMixin", + "StinkyCrouchMixin", "VillagerTradesMixin", "WaterlilyLumenMixin", "ServerPlayerGameModeMixin", @@ -60,6 +62,8 @@ ], "client": [ "client.CavarynSkyMixin", + "client.CavarynHordeFogMixin", + "client.CavarynHordeLightTextureMixin", "client.ElythiaSkyMixin", "client.ElytraModelAccessor", "client.FrogRendererElythiaMixin", diff --git a/common/src/main/resources/assets/antarchy/animations/alpha_metroid.animation.json b/common/src/main/resources/assets/antarchy/animations/alpha_metroid.animation.json new file mode 100644 index 00000000..32e3803e --- /dev/null +++ b/common/src/main/resources/assets/antarchy/animations/alpha_metroid.animation.json @@ -0,0 +1,6469 @@ +{ + "format_version": "1.8.0", + "animations": { + "idle": { + "loop": true, + "animation_length": 3, + "bones": { + "body": { + "rotation": { + "0.0": { + "vector": [-2.5, 0, 0] + }, + "0.0417": { + "vector": [-2.48, 0, 0.15] + }, + "0.0833": { + "vector": [-2.44, 0, 0.31] + }, + "0.125": { + "vector": [-2.37, 0, 0.47] + }, + "0.1667": { + "vector": [-2.28, 0, 0.65] + }, + "0.2083": { + "vector": [-2.17, 0, 0.83] + }, + "0.25": { + "vector": [-2.04, 0, 1.02] + }, + "0.2917": { + "vector": [-1.89, 0, 1.2] + }, + "0.3333": { + "vector": [-1.73, 0, 1.39] + }, + "0.375": { + "vector": [-1.56, 0, 1.56] + }, + "0.4167": { + "vector": [-1.39, 0, 1.73] + }, + "0.4583": { + "vector": [-1.2, 0, 1.89] + }, + "0.5": { + "vector": [-1.02, 0, 2.04] + }, + "0.5417": { + "vector": [-0.83, 0, 2.17] + }, + "0.5833": { + "vector": [-0.65, 0, 2.28] + }, + "0.625": { + "vector": [-0.47, 0, 2.37] + }, + "0.6667": { + "vector": [-0.31, 0, 2.44] + }, + "0.7083": { + "vector": [-0.15, 0, 2.48] + }, + "0.75": { + "vector": [0, 0, 2.5] + }, + "0.7917": { + "vector": [0.15, 0, 2.48] + }, + "0.8333": { + "vector": [0.31, 0, 2.44] + }, + "0.875": { + "vector": [0.47, 0, 2.37] + }, + "0.9167": { + "vector": [0.65, 0, 2.28] + }, + "0.9583": { + "vector": [0.83, 0, 2.17] + }, + "1.0": { + "vector": [1.02, 0, 2.04] + }, + "1.0417": { + "vector": [1.2, 0, 1.89] + }, + "1.0833": { + "vector": [1.39, 0, 1.73] + }, + "1.125": { + "vector": [1.56, 0, 1.56] + }, + "1.1667": { + "vector": [1.73, 0, 1.39] + }, + "1.2083": { + "vector": [1.89, 0, 1.2] + }, + "1.25": { + "vector": [2.04, 0, 1.02] + }, + "1.2917": { + "vector": [2.17, 0, 0.83] + }, + "1.3333": { + "vector": [2.28, 0, 0.65] + }, + "1.375": { + "vector": [2.37, 0, 0.47] + }, + "1.4167": { + "vector": [2.44, 0, 0.31] + }, + "1.4583": { + "vector": [2.48, 0, 0.15] + }, + "1.5": { + "vector": [2.5, 0, 0] + }, + "1.5417": { + "vector": [2.48, 0, -0.15] + }, + "1.5833": { + "vector": [2.44, 0, -0.31] + }, + "1.625": { + "vector": [2.37, 0, -0.47] + }, + "1.6667": { + "vector": [2.28, 0, -0.65] + }, + "1.7083": { + "vector": [2.17, 0, -0.83] + }, + "1.75": { + "vector": [2.04, 0, -1.02] + }, + "1.7917": { + "vector": [1.89, 0, -1.2] + }, + "1.8333": { + "vector": [1.73, 0, -1.39] + }, + "1.875": { + "vector": [1.56, 0, -1.56] + }, + "1.9167": { + "vector": [1.39, 0, -1.73] + }, + "1.9583": { + "vector": [1.2, 0, -1.89] + }, + "2.0": { + "vector": [1.02, 0, -2.04] + }, + "2.0417": { + "vector": [0.83, 0, -2.17] + }, + "2.0833": { + "vector": [0.65, 0, -2.28] + }, + "2.125": { + "vector": [0.47, 0, -2.37] + }, + "2.1667": { + "vector": [0.31, 0, -2.44] + }, + "2.2083": { + "vector": [0.15, 0, -2.48] + }, + "2.25": { + "vector": [0, 0, -2.5] + }, + "2.2917": { + "vector": [-0.15, 0, -2.48] + }, + "2.3333": { + "vector": [-0.31, 0, -2.44] + }, + "2.375": { + "vector": [-0.47, 0, -2.37] + }, + "2.4167": { + "vector": [-0.65, 0, -2.28] + }, + "2.4583": { + "vector": [-0.83, 0, -2.17] + }, + "2.5": { + "vector": [-1.02, 0, -2.04] + }, + "2.5417": { + "vector": [-1.2, 0, -1.89] + }, + "2.5833": { + "vector": [-1.39, 0, -1.73] + }, + "2.625": { + "vector": [-1.56, 0, -1.56] + }, + "2.6667": { + "vector": [-1.73, 0, -1.39] + }, + "2.7083": { + "vector": [-1.89, 0, -1.2] + }, + "2.75": { + "vector": [-2.04, 0, -1.02] + }, + "2.7917": { + "vector": [-2.17, 0, -0.83] + }, + "2.8333": { + "vector": [-2.28, 0, -0.65] + }, + "2.875": { + "vector": [-2.37, 0, -0.47] + }, + "2.9167": { + "vector": [-2.44, 0, -0.31] + }, + "2.9583": { + "vector": [-2.48, 0, -0.15] + }, + "3.0": { + "vector": [-2.5, 0, 0] + } + } + }, + "topHeadClawThing": { + "rotation": { + "0.0": { + "vector": [35, 0, 0] + }, + "0.0417": { + "vector": [34.98, 0, 0] + }, + "0.0833": { + "vector": [34.91, 0, 0] + }, + "0.125": { + "vector": [34.8, 0, 0] + }, + "0.1667": { + "vector": [34.66, 0, 0] + }, + "0.2083": { + "vector": [34.47, 0, 0] + }, + "0.25": { + "vector": [34.26, 0, 0] + }, + "0.2917": { + "vector": [34.01, 0, 0] + }, + "0.3333": { + "vector": [33.74, 0, 0] + }, + "0.375": { + "vector": [33.44, 0, 0] + }, + "0.4167": { + "vector": [33.11, 0, 0] + }, + "0.4583": { + "vector": [32.77, 0, 0] + }, + "0.5": { + "vector": [32.41, 0, 0] + }, + "0.5417": { + "vector": [32.03, 0, 0] + }, + "0.5833": { + "vector": [31.64, 0, 0] + }, + "0.625": { + "vector": [31.24, 0, 0] + }, + "0.6667": { + "vector": [30.83, 0, 0] + }, + "0.7083": { + "vector": [30.42, 0, 0] + }, + "0.75": { + "vector": [30, 0, 0] + }, + "0.7917": { + "vector": [29.58, 0, 0] + }, + "0.8333": { + "vector": [29.17, 0, 0] + }, + "0.875": { + "vector": [28.76, 0, 0] + }, + "0.9167": { + "vector": [28.36, 0, 0] + }, + "0.9583": { + "vector": [27.97, 0, 0] + }, + "1.0": { + "vector": [27.59, 0, 0] + }, + "1.0417": { + "vector": [27.23, 0, 0] + }, + "1.0833": { + "vector": [26.89, 0, 0] + }, + "1.125": { + "vector": [26.56, 0, 0] + }, + "1.1667": { + "vector": [26.26, 0, 0] + }, + "1.2083": { + "vector": [25.99, 0, 0] + }, + "1.25": { + "vector": [25.74, 0, 0] + }, + "1.2917": { + "vector": [25.53, 0, 0] + }, + "1.3333": { + "vector": [25.34, 0, 0] + }, + "1.375": { + "vector": [25.2, 0, 0] + }, + "1.4167": { + "vector": [25.09, 0, 0] + }, + "1.4583": { + "vector": [25.02, 0, 0] + }, + "1.5": { + "vector": [25, 0, 0] + }, + "1.5417": { + "vector": [25.02, 0, 0] + }, + "1.5833": { + "vector": [25.09, 0, 0] + }, + "1.625": { + "vector": [25.2, 0, 0] + }, + "1.6667": { + "vector": [25.34, 0, 0] + }, + "1.7083": { + "vector": [25.53, 0, 0] + }, + "1.75": { + "vector": [25.74, 0, 0] + }, + "1.7917": { + "vector": [25.99, 0, 0] + }, + "1.8333": { + "vector": [26.26, 0, 0] + }, + "1.875": { + "vector": [26.56, 0, 0] + }, + "1.9167": { + "vector": [26.89, 0, 0] + }, + "1.9583": { + "vector": [27.23, 0, 0] + }, + "2.0": { + "vector": [27.59, 0, 0] + }, + "2.0417": { + "vector": [27.97, 0, 0] + }, + "2.0833": { + "vector": [28.36, 0, 0] + }, + "2.125": { + "vector": [28.76, 0, 0] + }, + "2.1667": { + "vector": [29.17, 0, 0] + }, + "2.2083": { + "vector": [29.58, 0, 0] + }, + "2.25": { + "vector": [30, 0, 0] + }, + "2.2917": { + "vector": [30.42, 0, 0] + }, + "2.3333": { + "vector": [30.83, 0, 0] + }, + "2.375": { + "vector": [31.24, 0, 0] + }, + "2.4167": { + "vector": [31.64, 0, 0] + }, + "2.4583": { + "vector": [32.03, 0, 0] + }, + "2.5": { + "vector": [32.41, 0, 0] + }, + "2.5417": { + "vector": [32.77, 0, 0] + }, + "2.5833": { + "vector": [33.11, 0, 0] + }, + "2.625": { + "vector": [33.44, 0, 0] + }, + "2.6667": { + "vector": [33.74, 0, 0] + }, + "2.7083": { + "vector": [34.01, 0, 0] + }, + "2.75": { + "vector": [34.26, 0, 0] + }, + "2.7917": { + "vector": [34.47, 0, 0] + }, + "2.8333": { + "vector": [34.66, 0, 0] + }, + "2.875": { + "vector": [34.8, 0, 0] + }, + "2.9167": { + "vector": [34.91, 0, 0] + }, + "2.9583": { + "vector": [34.98, 0, 0] + }, + "3.0": { + "vector": [35, 0, 0] + } + } + }, + "rightFrontThigh": { + "rotation": { + "0.0": { + "vector": [0, -15, -5] + }, + "0.0417": { + "vector": [-0.22, -14.99, -4.14] + }, + "0.0833": { + "vector": [-0.49, -14.98, -3.1] + }, + "0.125": { + "vector": [-0.79, -14.96, -1.93] + }, + "0.1667": { + "vector": [-1.11, -14.94, -0.69] + }, + "0.2083": { + "vector": [-1.43, -14.91, 0.57] + }, + "0.25": { + "vector": [-1.75, -14.89, 1.79] + }, + "0.2917": { + "vector": [-2.04, -14.86, 2.92] + }, + "0.3333": { + "vector": [-2.29, -14.83, 3.91] + }, + "0.375": { + "vector": [-2.5, -14.81, 4.7] + }, + "0.4167": { + "vector": [-2.64, -14.79, 5.24] + }, + "0.4583": { + "vector": [-2.7, -14.78, 5.47] + }, + "0.5": { + "vector": [-2.66, -14.77, 5.35] + }, + "0.5417": { + "vector": [-2.51, -14.76, 4.75] + }, + "0.5833": { + "vector": [-2.23, -14.76, 3.67] + }, + "0.625": { + "vector": [-1.86, -14.77, 2.21] + }, + "0.6667": { + "vector": [-1.4, -14.77, 0.46] + }, + "0.7083": { + "vector": [-0.9, -14.78, -1.49] + }, + "0.75": { + "vector": [-0.37, -14.8, -3.55] + }, + "0.7917": { + "vector": [0.16, -14.81, -5.61] + }, + "0.8333": { + "vector": [0.67, -14.82, -7.59] + }, + "0.875": { + "vector": [1.13, -14.83, -9.39] + }, + "0.9167": { + "vector": [1.53, -14.85, -10.91] + }, + "0.9583": { + "vector": [1.82, -14.86, -12.07] + }, + "1.0": { + "vector": [2, -14.87, -12.76] + }, + "1.0417": { + "vector": [2.07, -14.88, -13.03] + }, + "1.0833": { + "vector": [2.06, -14.89, -12.99] + }, + "1.125": { + "vector": [1.99, -14.91, -12.7] + }, + "1.1667": { + "vector": [1.85, -14.92, -12.19] + }, + "1.2083": { + "vector": [1.67, -14.94, -11.49] + }, + "1.25": { + "vector": [1.46, -14.96, -10.66] + }, + "1.2917": { + "vector": [1.22, -14.97, -9.73] + }, + "1.3333": { + "vector": [0.96, -14.98, -8.74] + }, + "1.375": { + "vector": [0.7, -14.99, -7.73] + }, + "1.4167": { + "vector": [0.45, -15, -6.74] + }, + "1.4583": { + "vector": [0.21, -15, -5.82] + }, + "1.5": { + "vector": [0, -15, -5] + }, + "1.5417": { + "vector": [-0.22, -14.99, -4.14] + }, + "1.5833": { + "vector": [-0.49, -14.98, -3.1] + }, + "1.625": { + "vector": [-0.79, -14.96, -1.93] + }, + "1.6667": { + "vector": [-1.11, -14.94, -0.69] + }, + "1.7083": { + "vector": [-1.43, -14.91, 0.57] + }, + "1.75": { + "vector": [-1.75, -14.89, 1.79] + }, + "1.7917": { + "vector": [-2.04, -14.86, 2.92] + }, + "1.8333": { + "vector": [-2.29, -14.83, 3.91] + }, + "1.875": { + "vector": [-2.5, -14.81, 4.7] + }, + "1.9167": { + "vector": [-2.64, -14.79, 5.24] + }, + "1.9583": { + "vector": [-2.7, -14.78, 5.47] + }, + "2.0": { + "vector": [-2.66, -14.77, 5.35] + }, + "2.0417": { + "vector": [-2.51, -14.76, 4.75] + }, + "2.0833": { + "vector": [-2.23, -14.76, 3.67] + }, + "2.125": { + "vector": [-1.86, -14.77, 2.21] + }, + "2.1667": { + "vector": [-1.4, -14.77, 0.46] + }, + "2.2083": { + "vector": [-0.9, -14.78, -1.49] + }, + "2.25": { + "vector": [-0.37, -14.8, -3.55] + }, + "2.2917": { + "vector": [0.16, -14.81, -5.61] + }, + "2.3333": { + "vector": [0.67, -14.82, -7.59] + }, + "2.375": { + "vector": [1.13, -14.83, -9.39] + }, + "2.4167": { + "vector": [1.53, -14.85, -10.91] + }, + "2.4583": { + "vector": [1.82, -14.86, -12.07] + }, + "2.5": { + "vector": [2, -14.87, -12.76] + }, + "2.5417": { + "vector": [2.07, -14.88, -13.03] + }, + "2.5833": { + "vector": [2.06, -14.89, -12.99] + }, + "2.625": { + "vector": [1.99, -14.91, -12.7] + }, + "2.6667": { + "vector": [1.85, -14.92, -12.19] + }, + "2.7083": { + "vector": [1.67, -14.94, -11.49] + }, + "2.75": { + "vector": [1.46, -14.96, -10.66] + }, + "2.7917": { + "vector": [1.22, -14.97, -9.73] + }, + "2.8333": { + "vector": [0.96, -14.98, -8.74] + }, + "2.875": { + "vector": [0.7, -14.99, -7.73] + }, + "2.9167": { + "vector": [0.45, -15, -6.74] + }, + "2.9583": { + "vector": [0.21, -15, -5.82] + }, + "3.0": { + "vector": [0, -15, -5] + } + } + }, + "rightFrontLeg": { + "rotation": { + "0.0": { + "vector": [0, 0, -35] + }, + "0.0417": { + "vector": [0, 0, -34.87] + }, + "0.0833": { + "vector": [0, 0, -34.49] + }, + "0.125": { + "vector": [0, 0, -33.89] + }, + "0.1667": { + "vector": [0, 0, -33.11] + }, + "0.2083": { + "vector": [0, 0, -32.17] + }, + "0.25": { + "vector": [0, 0, -31.11] + }, + "0.2917": { + "vector": [0, 0, -29.96] + }, + "0.3333": { + "vector": [0, 0, -28.74] + }, + "0.375": { + "vector": [0, 0, -27.5] + }, + "0.4167": { + "vector": [0, 0, -26.26] + }, + "0.4583": { + "vector": [0, 0, -25.04] + }, + "0.5": { + "vector": [0, 0, -23.89] + }, + "0.5417": { + "vector": [0, 0, -22.83] + }, + "0.5833": { + "vector": [0, 0, -21.89] + }, + "0.625": { + "vector": [0, 0, -21.11] + }, + "0.6667": { + "vector": [0, 0, -20.51] + }, + "0.7083": { + "vector": [0, 0, -20.13] + }, + "0.75": { + "vector": [0, 0, -20] + }, + "0.7917": { + "vector": [0, 0, -20.13] + }, + "0.8333": { + "vector": [0, 0, -20.51] + }, + "0.875": { + "vector": [0, 0, -21.11] + }, + "0.9167": { + "vector": [0, 0, -21.89] + }, + "0.9583": { + "vector": [0, 0, -22.83] + }, + "1.0": { + "vector": [0, 0, -23.89] + }, + "1.0417": { + "vector": [0, 0, -25.04] + }, + "1.0833": { + "vector": [0, 0, -26.26] + }, + "1.125": { + "vector": [0, 0, -27.5] + }, + "1.1667": { + "vector": [0, 0, -28.74] + }, + "1.2083": { + "vector": [0, 0, -29.96] + }, + "1.25": { + "vector": [0, 0, -31.11] + }, + "1.2917": { + "vector": [0, 0, -32.17] + }, + "1.3333": { + "vector": [0, 0, -33.11] + }, + "1.375": { + "vector": [0, 0, -33.89] + }, + "1.4167": { + "vector": [0, 0, -34.49] + }, + "1.4583": { + "vector": [0, 0, -34.87] + }, + "1.5": { + "vector": [0, 0, -35] + }, + "1.5417": { + "vector": [0, 0, -34.87] + }, + "1.5833": { + "vector": [0, 0, -34.49] + }, + "1.625": { + "vector": [0, 0, -33.89] + }, + "1.6667": { + "vector": [0, 0, -33.11] + }, + "1.7083": { + "vector": [0, 0, -32.17] + }, + "1.75": { + "vector": [0, 0, -31.11] + }, + "1.7917": { + "vector": [0, 0, -29.96] + }, + "1.8333": { + "vector": [0, 0, -28.74] + }, + "1.875": { + "vector": [0, 0, -27.5] + }, + "1.9167": { + "vector": [0, 0, -26.26] + }, + "1.9583": { + "vector": [0, 0, -25.04] + }, + "2.0": { + "vector": [0, 0, -23.89] + }, + "2.0417": { + "vector": [0, 0, -22.83] + }, + "2.0833": { + "vector": [0, 0, -21.89] + }, + "2.125": { + "vector": [0, 0, -21.11] + }, + "2.1667": { + "vector": [0, 0, -20.51] + }, + "2.2083": { + "vector": [0, 0, -20.13] + }, + "2.25": { + "vector": [0, 0, -20] + }, + "2.2917": { + "vector": [0, 0, -20.13] + }, + "2.3333": { + "vector": [0, 0, -20.51] + }, + "2.375": { + "vector": [0, 0, -21.11] + }, + "2.4167": { + "vector": [0, 0, -21.89] + }, + "2.4583": { + "vector": [0, 0, -22.83] + }, + "2.5": { + "vector": [0, 0, -23.89] + }, + "2.5417": { + "vector": [0, 0, -25.04] + }, + "2.5833": { + "vector": [0, 0, -26.26] + }, + "2.625": { + "vector": [0, 0, -27.5] + }, + "2.6667": { + "vector": [0, 0, -28.74] + }, + "2.7083": { + "vector": [0, 0, -29.96] + }, + "2.75": { + "vector": [0, 0, -31.11] + }, + "2.7917": { + "vector": [0, 0, -32.17] + }, + "2.8333": { + "vector": [0, 0, -33.11] + }, + "2.875": { + "vector": [0, 0, -33.89] + }, + "2.9167": { + "vector": [0, 0, -34.49] + }, + "2.9583": { + "vector": [0, 0, -34.87] + }, + "3.0": { + "vector": [0, 0, -35] + } + } + }, + "rightFrontFoot": { + "rotation": { + "0.0": { + "vector": [0, 0, 10] + }, + "0.0417": { + "vector": [0, 0, 8.88] + }, + "0.0833": { + "vector": [0, 0, 7.64] + }, + "0.125": { + "vector": [0, 0, 6.33] + }, + "0.1667": { + "vector": [0, 0, 5] + }, + "0.2083": { + "vector": [0, 0, 3.71] + }, + "0.25": { + "vector": [0, 0, 2.5] + }, + "0.2917": { + "vector": [0, 0, 1.43] + }, + "0.3333": { + "vector": [0, 0, 0.56] + }, + "0.375": { + "vector": [0, 0, -0.08] + }, + "0.4167": { + "vector": [0, 0, -0.42] + }, + "0.4583": { + "vector": [0, 0, -0.41] + }, + "0.5": { + "vector": [0, 0, 0] + }, + "0.5417": { + "vector": [0, 0, 0.99] + }, + "0.5833": { + "vector": [0, 0, 2.6] + }, + "0.625": { + "vector": [0, 0, 4.73] + }, + "0.6667": { + "vector": [0, 0, 7.22] + }, + "0.7083": { + "vector": [0, 0, 9.96] + }, + "0.75": { + "vector": [0, 0, 12.81] + }, + "0.7917": { + "vector": [0, 0, 15.65] + }, + "0.8333": { + "vector": [0, 0, 18.33] + }, + "0.875": { + "vector": [0, 0, 20.74] + }, + "0.9167": { + "vector": [0, 0, 22.74] + }, + "0.9583": { + "vector": [0, 0, 24.21] + }, + "1.0": { + "vector": [0, 0, 25] + }, + "1.0417": { + "vector": [0, 0, 25.13] + }, + "1.0833": { + "vector": [0, 0, 24.76] + }, + "1.125": { + "vector": [0, 0, 23.95] + }, + "1.1667": { + "vector": [0, 0, 22.78] + }, + "1.2083": { + "vector": [0, 0, 21.33] + }, + "1.25": { + "vector": [0, 0, 19.69] + }, + "1.2917": { + "vector": [0, 0, 17.92] + }, + "1.3333": { + "vector": [0, 0, 16.11] + }, + "1.375": { + "vector": [0, 0, 14.34] + }, + "1.4167": { + "vector": [0, 0, 12.67] + }, + "1.4583": { + "vector": [0, 0, 11.2] + }, + "1.5": { + "vector": [0, 0, 10] + }, + "1.5417": { + "vector": [0, 0, 8.88] + }, + "1.5833": { + "vector": [0, 0, 7.64] + }, + "1.625": { + "vector": [0, 0, 6.33] + }, + "1.6667": { + "vector": [0, 0, 5] + }, + "1.7083": { + "vector": [0, 0, 3.71] + }, + "1.75": { + "vector": [0, 0, 2.5] + }, + "1.7917": { + "vector": [0, 0, 1.43] + }, + "1.8333": { + "vector": [0, 0, 0.56] + }, + "1.875": { + "vector": [0, 0, -0.08] + }, + "1.9167": { + "vector": [0, 0, -0.42] + }, + "1.9583": { + "vector": [0, 0, -0.41] + }, + "2.0": { + "vector": [0, 0, 0] + }, + "2.0417": { + "vector": [0, 0, 0.99] + }, + "2.0833": { + "vector": [0, 0, 2.6] + }, + "2.125": { + "vector": [0, 0, 4.73] + }, + "2.1667": { + "vector": [0, 0, 7.22] + }, + "2.2083": { + "vector": [0, 0, 9.96] + }, + "2.25": { + "vector": [0, 0, 12.81] + }, + "2.2917": { + "vector": [0, 0, 15.65] + }, + "2.3333": { + "vector": [0, 0, 18.33] + }, + "2.375": { + "vector": [0, 0, 20.74] + }, + "2.4167": { + "vector": [0, 0, 22.74] + }, + "2.4583": { + "vector": [0, 0, 24.21] + }, + "2.5": { + "vector": [0, 0, 25] + }, + "2.5417": { + "vector": [0, 0, 25.13] + }, + "2.5833": { + "vector": [0, 0, 24.76] + }, + "2.625": { + "vector": [0, 0, 23.95] + }, + "2.6667": { + "vector": [0, 0, 22.78] + }, + "2.7083": { + "vector": [0, 0, 21.33] + }, + "2.75": { + "vector": [0, 0, 19.69] + }, + "2.7917": { + "vector": [0, 0, 17.92] + }, + "2.8333": { + "vector": [0, 0, 16.11] + }, + "2.875": { + "vector": [0, 0, 14.34] + }, + "2.9167": { + "vector": [0, 0, 12.67] + }, + "2.9583": { + "vector": [0, 0, 11.2] + }, + "3.0": { + "vector": [0, 0, 10] + } + } + }, + "rightBackThigh": { + "rotation": { + "0.0": { + "vector": [0, 15, -5] + }, + "0.0417": { + "vector": [0.24, 14.97, -4.05] + }, + "0.0833": { + "vector": [0.58, 14.93, -2.74] + }, + "0.125": { + "vector": [0.98, 14.88, -1.18] + }, + "0.1667": { + "vector": [1.42, 14.83, 0.55] + }, + "0.2083": { + "vector": [1.89, 14.77, 2.38] + }, + "0.25": { + "vector": [2.36, 14.71, 4.21] + }, + "0.2917": { + "vector": [2.8, 14.65, 5.96] + }, + "0.3333": { + "vector": [3.21, 14.6, 7.54] + }, + "0.375": { + "vector": [3.55, 14.55, 8.87] + }, + "0.4167": { + "vector": [3.8, 14.51, 9.86] + }, + "0.4583": { + "vector": [3.95, 14.49, 10.44] + }, + "0.5": { + "vector": [3.97, 14.48, 10.5] + }, + "0.5417": { + "vector": [3.83, 14.48, 9.97] + }, + "0.5833": { + "vector": [3.54, 14.5, 8.85] + }, + "0.625": { + "vector": [3.14, 14.53, 7.27] + }, + "0.6667": { + "vector": [2.64, 14.57, 5.33] + }, + "0.7083": { + "vector": [2.08, 14.62, 3.14] + }, + "0.75": { + "vector": [1.48, 14.67, 0.81] + }, + "0.7917": { + "vector": [0.87, 14.73, -1.56] + }, + "0.8333": { + "vector": [0.28, 14.78, -3.86] + }, + "0.875": { + "vector": [-0.26, 14.83, -5.98] + }, + "0.9167": { + "vector": [-0.73, 14.88, -7.81] + }, + "0.9583": { + "vector": [-1.1, 14.91, -9.24] + }, + "1.0": { + "vector": [-1.34, 14.94, -10.18] + }, + "1.0417": { + "vector": [-1.46, 14.96, -10.67] + }, + "1.0833": { + "vector": [-1.51, 14.98, -10.87] + }, + "1.125": { + "vector": [-1.5, 14.99, -10.82] + }, + "1.1667": { + "vector": [-1.43, 15, -10.56] + }, + "1.2083": { + "vector": [-1.32, 15.01, -10.11] + }, + "1.25": { + "vector": [-1.17, 15.01, -9.53] + }, + "1.2917": { + "vector": [-0.99, 15.02, -8.83] + }, + "1.3333": { + "vector": [-0.79, 15.02, -8.07] + }, + "1.375": { + "vector": [-0.58, 15.02, -7.26] + }, + "1.4167": { + "vector": [-0.38, 15.01, -6.46] + }, + "1.4583": { + "vector": [-0.18, 15.01, -5.69] + }, + "1.5": { + "vector": [0, 15, -5] + }, + "1.5417": { + "vector": [0.19, 14.99, -4.24] + }, + "1.5833": { + "vector": [0.44, 14.97, -3.31] + }, + "1.625": { + "vector": [0.71, 14.95, -2.23] + }, + "1.6667": { + "vector": [1.01, 14.93, -1.07] + }, + "1.7083": { + "vector": [1.32, 14.9, 0.12] + }, + "1.75": { + "vector": [1.62, 14.87, 1.3] + }, + "1.7917": { + "vector": [1.91, 14.85, 2.42] + }, + "1.8333": { + "vector": [2.17, 14.82, 3.43] + }, + "1.875": { + "vector": [2.39, 14.8, 4.27] + }, + "1.9167": { + "vector": [2.55, 14.78, 4.91] + }, + "1.9583": { + "vector": [2.65, 14.77, 5.28] + }, + "2.0": { + "vector": [2.66, 14.77, 5.35] + }, + "2.0417": { + "vector": [2.58, 14.77, 5.03] + }, + "2.0833": { + "vector": [2.41, 14.78, 4.36] + }, + "2.125": { + "vector": [2.16, 14.79, 3.39] + }, + "2.1667": { + "vector": [1.85, 14.81, 2.18] + }, + "2.2083": { + "vector": [1.5, 14.84, 0.82] + }, + "2.25": { + "vector": [1.12, 14.86, -0.64] + }, + "2.2917": { + "vector": [0.74, 14.89, -2.12] + }, + "2.3333": { + "vector": [0.37, 14.91, -3.56] + }, + "2.375": { + "vector": [0.02, 14.93, -4.9] + }, + "2.4167": { + "vector": [-0.28, 14.96, -6.06] + }, + "2.4583": { + "vector": [-0.51, 14.97, -6.98] + }, + "2.5": { + "vector": [-0.67, 14.99, -7.59] + }, + "2.5417": { + "vector": [-0.76, 15, -7.96] + }, + "2.5833": { + "vector": [-0.83, 15.01, -8.2] + }, + "2.625": { + "vector": [-0.86, 15.02, -8.34] + }, + "2.6667": { + "vector": [-0.87, 15.03, -8.35] + }, + "2.7083": { + "vector": [-0.84, 15.03, -8.26] + }, + "2.75": { + "vector": [-0.79, 15.04, -8.07] + }, + "2.7917": { + "vector": [-0.72, 15.04, -7.78] + }, + "2.8333": { + "vector": [-0.62, 15.04, -7.39] + }, + "2.875": { + "vector": [-0.49, 15.04, -6.92] + }, + "2.9167": { + "vector": [-0.35, 15.03, -6.36] + }, + "2.9583": { + "vector": [-0.18, 15.02, -5.72] + }, + "3.0": { + "vector": [0, 15, -5] + } + } + }, + "rightBackLeg": { + "rotation": { + "0.0": { + "vector": [0, 0, -5] + }, + "0.0417": { + "vector": [0, 0, -5.57] + }, + "0.0833": { + "vector": [0, 0, -6.24] + }, + "0.125": { + "vector": [0, 0, -6.95] + }, + "0.1667": { + "vector": [0, 0, -7.64] + }, + "0.2083": { + "vector": [0, 0, -8.28] + }, + "0.25": { + "vector": [0, 0, -8.8] + }, + "0.2917": { + "vector": [0, 0, -9.16] + }, + "0.3333": { + "vector": [0, 0, -9.3] + }, + "0.375": { + "vector": [0, 0, -9.17] + }, + "0.4167": { + "vector": [0, 0, -8.66] + }, + "0.4583": { + "vector": [0, 0, -7.76] + }, + "0.5": { + "vector": [0, 0, -6.58] + }, + "0.5417": { + "vector": [0, 0, -5.23] + }, + "0.5833": { + "vector": [0, 0, -3.84] + }, + "0.625": { + "vector": [0, 0, -2.5] + }, + "0.6667": { + "vector": [0, 0, -1.34] + }, + "0.7083": { + "vector": [0, 0, -0.47] + }, + "0.75": { + "vector": [0, 0, 0] + }, + "0.7917": { + "vector": [0, 0, 0.08] + }, + "0.8333": { + "vector": [0, 0, 0.09] + }, + "0.875": { + "vector": [0, 0, 0.03] + }, + "0.9167": { + "vector": [0, 0, -0.08] + }, + "0.9583": { + "vector": [0, 0, -0.25] + }, + "1.0": { + "vector": [0, 0, -0.46] + }, + "1.0417": { + "vector": [0, 0, -0.72] + }, + "1.0833": { + "vector": [0, 0, -1.02] + }, + "1.125": { + "vector": [0, 0, -1.35] + }, + "1.1667": { + "vector": [0, 0, -1.71] + }, + "1.2083": { + "vector": [0, 0, -2.1] + }, + "1.25": { + "vector": [0, 0, -2.5] + }, + "1.2917": { + "vector": [0, 0, -2.91] + }, + "1.3333": { + "vector": [0, 0, -3.34] + }, + "1.375": { + "vector": [0, 0, -3.76] + }, + "1.4167": { + "vector": [0, 0, -4.18] + }, + "1.4583": { + "vector": [0, 0, -4.6] + }, + "1.5": { + "vector": [0, 0, -5] + }, + "1.5417": { + "vector": [0, 0, -5.96] + }, + "1.5833": { + "vector": [0, 0, -7.21] + }, + "1.625": { + "vector": [0, 0, -8.61] + }, + "1.6667": { + "vector": [0, 0, -10.07] + }, + "1.7083": { + "vector": [0, 0, -11.47] + }, + "1.75": { + "vector": [0, 0, -12.69] + }, + "1.7917": { + "vector": [0, 0, -13.62] + }, + "1.8333": { + "vector": [0, 0, -14.15] + }, + "1.875": { + "vector": [0, 0, -14.17] + }, + "1.9167": { + "vector": [0, 0, -13.51] + }, + "1.9583": { + "vector": [0, 0, -12.22] + }, + "2.0": { + "vector": [0, 0, -10.47] + }, + "2.0417": { + "vector": [0, 0, -8.42] + }, + "2.0833": { + "vector": [0, 0, -6.26] + }, + "2.125": { + "vector": [0, 0, -4.17] + }, + "2.1667": { + "vector": [0, 0, -2.31] + }, + "2.2083": { + "vector": [0, 0, -0.86] + }, + "2.25": { + "vector": [0, 0, 0] + }, + "2.2917": { + "vector": [0, 0, 0.2] + }, + "2.3333": { + "vector": [0, 0, 0.28] + }, + "2.375": { + "vector": [0, 0, 0.27] + }, + "2.4167": { + "vector": [0, 0, 0.16] + }, + "2.4583": { + "vector": [0, 0, -0.02] + }, + "2.5": { + "vector": [0, 0, -0.28] + }, + "2.5417": { + "vector": [0, 0, -0.59] + }, + "2.5833": { + "vector": [0, 0, -0.95] + }, + "2.625": { + "vector": [0, 0, -1.35] + }, + "2.6667": { + "vector": [0, 0, -1.78] + }, + "2.7083": { + "vector": [0, 0, -2.23] + }, + "2.75": { + "vector": [0, 0, -2.68] + }, + "2.7917": { + "vector": [0, 0, -3.14] + }, + "2.8333": { + "vector": [0, 0, -3.58] + }, + "2.875": { + "vector": [0, 0, -3.99] + }, + "2.9167": { + "vector": [0, 0, -4.38] + }, + "2.9583": { + "vector": [0, 0, -4.71] + }, + "3.0": { + "vector": [0, 0, -5] + } + } + }, + "rightBackFoot": { + "rotation": { + "0.0": { + "vector": [0, 0, 30] + }, + "0.0417": { + "vector": [0, 0, 31.54] + }, + "0.0833": { + "vector": [0, 0, 33.21] + }, + "0.125": { + "vector": [0, 0, 34.94] + }, + "0.1667": { + "vector": [0, 0, 36.67] + }, + "0.2083": { + "vector": [0, 0, 38.32] + }, + "0.25": { + "vector": [0, 0, 39.84] + }, + "0.2917": { + "vector": [0, 0, 41.17] + }, + "0.3333": { + "vector": [0, 0, 42.22] + }, + "0.375": { + "vector": [0, 0, 42.95] + }, + "0.4167": { + "vector": [0, 0, 43.28] + }, + "0.4583": { + "vector": [0, 0, 43.15] + }, + "0.5": { + "vector": [0, 0, 42.5] + }, + "0.5417": { + "vector": [0, 0, 41.06] + }, + "0.5833": { + "vector": [0, 0, 38.75] + }, + "0.625": { + "vector": [0, 0, 35.74] + }, + "0.6667": { + "vector": [0, 0, 32.22] + }, + "0.7083": { + "vector": [0, 0, 28.37] + }, + "0.75": { + "vector": [0, 0, 24.38] + }, + "0.7917": { + "vector": [0, 0, 20.41] + }, + "0.8333": { + "vector": [0, 0, 16.67] + }, + "0.875": { + "vector": [0, 0, 13.32] + }, + "0.9167": { + "vector": [0, 0, 10.56] + }, + "0.9583": { + "vector": [0, 0, 8.55] + }, + "1.0": { + "vector": [0, 0, 7.5] + }, + "1.0417": { + "vector": [0, 0, 7.39] + }, + "1.0833": { + "vector": [0, 0, 8.04] + }, + "1.125": { + "vector": [0, 0, 9.32] + }, + "1.1667": { + "vector": [0, 0, 11.11] + }, + "1.2083": { + "vector": [0, 0, 13.31] + }, + "1.25": { + "vector": [0, 0, 15.78] + }, + "1.2917": { + "vector": [0, 0, 18.42] + }, + "1.3333": { + "vector": [0, 0, 21.11] + }, + "1.375": { + "vector": [0, 0, 23.73] + }, + "1.4167": { + "vector": [0, 0, 26.16] + }, + "1.4583": { + "vector": [0, 0, 28.29] + }, + "1.5": { + "vector": [0, 0, 30] + }, + "1.5417": { + "vector": [0, 0, 31.54] + }, + "1.5833": { + "vector": [0, 0, 33.21] + }, + "1.625": { + "vector": [0, 0, 34.94] + }, + "1.6667": { + "vector": [0, 0, 36.67] + }, + "1.7083": { + "vector": [0, 0, 38.32] + }, + "1.75": { + "vector": [0, 0, 39.84] + }, + "1.7917": { + "vector": [0, 0, 41.17] + }, + "1.8333": { + "vector": [0, 0, 42.22] + }, + "1.875": { + "vector": [0, 0, 42.95] + }, + "1.9167": { + "vector": [0, 0, 43.28] + }, + "1.9583": { + "vector": [0, 0, 43.15] + }, + "2.0": { + "vector": [0, 0, 42.5] + }, + "2.0417": { + "vector": [0, 0, 41.06] + }, + "2.0833": { + "vector": [0, 0, 38.75] + }, + "2.125": { + "vector": [0, 0, 35.74] + }, + "2.1667": { + "vector": [0, 0, 32.22] + }, + "2.2083": { + "vector": [0, 0, 28.37] + }, + "2.25": { + "vector": [0, 0, 24.38] + }, + "2.2917": { + "vector": [0, 0, 20.41] + }, + "2.3333": { + "vector": [0, 0, 16.67] + }, + "2.375": { + "vector": [0, 0, 13.32] + }, + "2.4167": { + "vector": [0, 0, 10.56] + }, + "2.4583": { + "vector": [0, 0, 8.55] + }, + "2.5": { + "vector": [0, 0, 7.5] + }, + "2.5417": { + "vector": [0, 0, 7.39] + }, + "2.5833": { + "vector": [0, 0, 8.04] + }, + "2.625": { + "vector": [0, 0, 9.32] + }, + "2.6667": { + "vector": [0, 0, 11.11] + }, + "2.7083": { + "vector": [0, 0, 13.31] + }, + "2.75": { + "vector": [0, 0, 15.78] + }, + "2.7917": { + "vector": [0, 0, 18.42] + }, + "2.8333": { + "vector": [0, 0, 21.11] + }, + "2.875": { + "vector": [0, 0, 23.73] + }, + "2.9167": { + "vector": [0, 0, 26.16] + }, + "2.9583": { + "vector": [0, 0, 28.29] + }, + "3.0": { + "vector": [0, 0, 30] + } + } + }, + "leftHeadClawThing": { + "rotation": { + "0.0": { + "vector": [-35, 0, -25] + }, + "0.0417": { + "vector": [-34.98, 0, -25] + }, + "0.0833": { + "vector": [-34.91, 0, -25] + }, + "0.125": { + "vector": [-34.8, 0, -25] + }, + "0.1667": { + "vector": [-34.66, 0, -25] + }, + "0.2083": { + "vector": [-34.47, 0, -25] + }, + "0.25": { + "vector": [-34.26, 0, -25] + }, + "0.2917": { + "vector": [-34.01, 0, -25] + }, + "0.3333": { + "vector": [-33.74, 0, -25] + }, + "0.375": { + "vector": [-33.44, 0, -25] + }, + "0.4167": { + "vector": [-33.11, 0, -25] + }, + "0.4583": { + "vector": [-32.77, 0, -25] + }, + "0.5": { + "vector": [-32.41, 0, -25] + }, + "0.5417": { + "vector": [-32.03, 0, -25] + }, + "0.5833": { + "vector": [-31.64, 0, -25] + }, + "0.625": { + "vector": [-31.24, 0, -25] + }, + "0.6667": { + "vector": [-30.83, 0, -25] + }, + "0.7083": { + "vector": [-30.42, 0, -25] + }, + "0.75": { + "vector": [-30, 0, -25] + }, + "0.7917": { + "vector": [-29.58, 0, -25] + }, + "0.8333": { + "vector": [-29.17, 0, -25] + }, + "0.875": { + "vector": [-28.76, 0, -25] + }, + "0.9167": { + "vector": [-28.36, 0, -25] + }, + "0.9583": { + "vector": [-27.97, 0, -25] + }, + "1.0": { + "vector": [-27.59, 0, -25] + }, + "1.0417": { + "vector": [-27.23, 0, -25] + }, + "1.0833": { + "vector": [-26.89, 0, -25] + }, + "1.125": { + "vector": [-26.56, 0, -25] + }, + "1.1667": { + "vector": [-26.26, 0, -25] + }, + "1.2083": { + "vector": [-25.99, 0, -25] + }, + "1.25": { + "vector": [-25.74, 0, -25] + }, + "1.2917": { + "vector": [-25.53, 0, -25] + }, + "1.3333": { + "vector": [-25.34, 0, -25] + }, + "1.375": { + "vector": [-25.2, 0, -25] + }, + "1.4167": { + "vector": [-25.09, 0, -25] + }, + "1.4583": { + "vector": [-25.02, 0, -25] + }, + "1.5": { + "vector": [-25, 0, -25] + }, + "1.5417": { + "vector": [-25.02, 0, -25] + }, + "1.5833": { + "vector": [-25.09, 0, -25] + }, + "1.625": { + "vector": [-25.2, 0, -25] + }, + "1.6667": { + "vector": [-25.34, 0, -25] + }, + "1.7083": { + "vector": [-25.53, 0, -25] + }, + "1.75": { + "vector": [-25.74, 0, -25] + }, + "1.7917": { + "vector": [-25.99, 0, -25] + }, + "1.8333": { + "vector": [-26.26, 0, -25] + }, + "1.875": { + "vector": [-26.56, 0, -25] + }, + "1.9167": { + "vector": [-26.89, 0, -25] + }, + "1.9583": { + "vector": [-27.23, 0, -25] + }, + "2.0": { + "vector": [-27.59, 0, -25] + }, + "2.0417": { + "vector": [-27.97, 0, -25] + }, + "2.0833": { + "vector": [-28.36, 0, -25] + }, + "2.125": { + "vector": [-28.76, 0, -25] + }, + "2.1667": { + "vector": [-29.17, 0, -25] + }, + "2.2083": { + "vector": [-29.58, 0, -25] + }, + "2.25": { + "vector": [-30, 0, -25] + }, + "2.2917": { + "vector": [-30.42, 0, -25] + }, + "2.3333": { + "vector": [-30.83, 0, -25] + }, + "2.375": { + "vector": [-31.24, 0, -25] + }, + "2.4167": { + "vector": [-31.64, 0, -25] + }, + "2.4583": { + "vector": [-32.03, 0, -25] + }, + "2.5": { + "vector": [-32.41, 0, -25] + }, + "2.5417": { + "vector": [-32.77, 0, -25] + }, + "2.5833": { + "vector": [-33.11, 0, -25] + }, + "2.625": { + "vector": [-33.44, 0, -25] + }, + "2.6667": { + "vector": [-33.74, 0, -25] + }, + "2.7083": { + "vector": [-34.01, 0, -25] + }, + "2.75": { + "vector": [-34.26, 0, -25] + }, + "2.7917": { + "vector": [-34.47, 0, -25] + }, + "2.8333": { + "vector": [-34.66, 0, -25] + }, + "2.875": { + "vector": [-34.8, 0, -25] + }, + "2.9167": { + "vector": [-34.91, 0, -25] + }, + "2.9583": { + "vector": [-34.98, 0, -25] + }, + "3.0": { + "vector": [-35, 0, -25] + } + } + }, + "rightHeadClawThing": { + "rotation": { + "0.0": { + "vector": [-35, 0, 25] + }, + "0.0417": { + "vector": [-34.98, 0, 25] + }, + "0.0833": { + "vector": [-34.91, 0, 25] + }, + "0.125": { + "vector": [-34.8, 0, 25] + }, + "0.1667": { + "vector": [-34.66, 0, 25] + }, + "0.2083": { + "vector": [-34.47, 0, 25] + }, + "0.25": { + "vector": [-34.26, 0, 25] + }, + "0.2917": { + "vector": [-34.01, 0, 25] + }, + "0.3333": { + "vector": [-33.74, 0, 25] + }, + "0.375": { + "vector": [-33.44, 0, 25] + }, + "0.4167": { + "vector": [-33.11, 0, 25] + }, + "0.4583": { + "vector": [-32.77, 0, 25] + }, + "0.5": { + "vector": [-32.41, 0, 25] + }, + "0.5417": { + "vector": [-32.03, 0, 25] + }, + "0.5833": { + "vector": [-31.64, 0, 25] + }, + "0.625": { + "vector": [-31.24, 0, 25] + }, + "0.6667": { + "vector": [-30.83, 0, 25] + }, + "0.7083": { + "vector": [-30.42, 0, 25] + }, + "0.75": { + "vector": [-30, 0, 25] + }, + "0.7917": { + "vector": [-29.58, 0, 25] + }, + "0.8333": { + "vector": [-29.17, 0, 25] + }, + "0.875": { + "vector": [-28.76, 0, 25] + }, + "0.9167": { + "vector": [-28.36, 0, 25] + }, + "0.9583": { + "vector": [-27.97, 0, 25] + }, + "1.0": { + "vector": [-27.59, 0, 25] + }, + "1.0417": { + "vector": [-27.23, 0, 25] + }, + "1.0833": { + "vector": [-26.89, 0, 25] + }, + "1.125": { + "vector": [-26.56, 0, 25] + }, + "1.1667": { + "vector": [-26.26, 0, 25] + }, + "1.2083": { + "vector": [-25.99, 0, 25] + }, + "1.25": { + "vector": [-25.74, 0, 25] + }, + "1.2917": { + "vector": [-25.53, 0, 25] + }, + "1.3333": { + "vector": [-25.34, 0, 25] + }, + "1.375": { + "vector": [-25.2, 0, 25] + }, + "1.4167": { + "vector": [-25.09, 0, 25] + }, + "1.4583": { + "vector": [-25.02, 0, 25] + }, + "1.5": { + "vector": [-25, 0, 25] + }, + "1.5417": { + "vector": [-25.02, 0, 25] + }, + "1.5833": { + "vector": [-25.09, 0, 25] + }, + "1.625": { + "vector": [-25.2, 0, 25] + }, + "1.6667": { + "vector": [-25.34, 0, 25] + }, + "1.7083": { + "vector": [-25.53, 0, 25] + }, + "1.75": { + "vector": [-25.74, 0, 25] + }, + "1.7917": { + "vector": [-25.99, 0, 25] + }, + "1.8333": { + "vector": [-26.26, 0, 25] + }, + "1.875": { + "vector": [-26.56, 0, 25] + }, + "1.9167": { + "vector": [-26.89, 0, 25] + }, + "1.9583": { + "vector": [-27.23, 0, 25] + }, + "2.0": { + "vector": [-27.59, 0, 25] + }, + "2.0417": { + "vector": [-27.97, 0, 25] + }, + "2.0833": { + "vector": [-28.36, 0, 25] + }, + "2.125": { + "vector": [-28.76, 0, 25] + }, + "2.1667": { + "vector": [-29.17, 0, 25] + }, + "2.2083": { + "vector": [-29.58, 0, 25] + }, + "2.25": { + "vector": [-30, 0, 25] + }, + "2.2917": { + "vector": [-30.42, 0, 25] + }, + "2.3333": { + "vector": [-30.83, 0, 25] + }, + "2.375": { + "vector": [-31.24, 0, 25] + }, + "2.4167": { + "vector": [-31.64, 0, 25] + }, + "2.4583": { + "vector": [-32.03, 0, 25] + }, + "2.5": { + "vector": [-32.41, 0, 25] + }, + "2.5417": { + "vector": [-32.77, 0, 25] + }, + "2.5833": { + "vector": [-33.11, 0, 25] + }, + "2.625": { + "vector": [-33.44, 0, 25] + }, + "2.6667": { + "vector": [-33.74, 0, 25] + }, + "2.7083": { + "vector": [-34.01, 0, 25] + }, + "2.75": { + "vector": [-34.26, 0, 25] + }, + "2.7917": { + "vector": [-34.47, 0, 25] + }, + "2.8333": { + "vector": [-34.66, 0, 25] + }, + "2.875": { + "vector": [-34.8, 0, 25] + }, + "2.9167": { + "vector": [-34.91, 0, 25] + }, + "2.9583": { + "vector": [-34.98, 0, 25] + }, + "3.0": { + "vector": [-35, 0, 25] + } + } + }, + "leftFrontThigh": { + "rotation": { + "0.0": { + "vector": [0, 15, 5] + }, + "0.0417": { + "vector": [-0.22, 14.99, 4.14] + }, + "0.0833": { + "vector": [-0.49, 14.98, 3.1] + }, + "0.125": { + "vector": [-0.79, 14.96, 1.93] + }, + "0.1667": { + "vector": [-1.11, 14.94, 0.69] + }, + "0.2083": { + "vector": [-1.43, 14.91, -0.57] + }, + "0.25": { + "vector": [-1.75, 14.89, -1.79] + }, + "0.2917": { + "vector": [-2.04, 14.86, -2.92] + }, + "0.3333": { + "vector": [-2.29, 14.83, -3.91] + }, + "0.375": { + "vector": [-2.5, 14.81, -4.7] + }, + "0.4167": { + "vector": [-2.64, 14.79, -5.24] + }, + "0.4583": { + "vector": [-2.7, 14.78, -5.47] + }, + "0.5": { + "vector": [-2.66, 14.77, -5.35] + }, + "0.5417": { + "vector": [-2.51, 14.76, -4.75] + }, + "0.5833": { + "vector": [-2.23, 14.76, -3.67] + }, + "0.625": { + "vector": [-1.86, 14.77, -2.21] + }, + "0.6667": { + "vector": [-1.4, 14.77, -0.46] + }, + "0.7083": { + "vector": [-0.9, 14.78, 1.49] + }, + "0.75": { + "vector": [-0.37, 14.8, 3.55] + }, + "0.7917": { + "vector": [0.16, 14.81, 5.61] + }, + "0.8333": { + "vector": [0.67, 14.82, 7.59] + }, + "0.875": { + "vector": [1.13, 14.83, 9.39] + }, + "0.9167": { + "vector": [1.53, 14.85, 10.91] + }, + "0.9583": { + "vector": [1.82, 14.86, 12.07] + }, + "1.0": { + "vector": [2, 14.87, 12.76] + }, + "1.0417": { + "vector": [2.07, 14.88, 13.03] + }, + "1.0833": { + "vector": [2.06, 14.89, 12.99] + }, + "1.125": { + "vector": [1.99, 14.91, 12.7] + }, + "1.1667": { + "vector": [1.85, 14.92, 12.19] + }, + "1.2083": { + "vector": [1.67, 14.94, 11.49] + }, + "1.25": { + "vector": [1.46, 14.96, 10.66] + }, + "1.2917": { + "vector": [1.22, 14.97, 9.73] + }, + "1.3333": { + "vector": [0.96, 14.98, 8.74] + }, + "1.375": { + "vector": [0.7, 14.99, 7.73] + }, + "1.4167": { + "vector": [0.45, 15, 6.74] + }, + "1.4583": { + "vector": [0.21, 15, 5.82] + }, + "1.5": { + "vector": [0, 15, 5] + }, + "1.5417": { + "vector": [-0.22, 14.99, 4.14] + }, + "1.5833": { + "vector": [-0.49, 14.98, 3.1] + }, + "1.625": { + "vector": [-0.79, 14.96, 1.93] + }, + "1.6667": { + "vector": [-1.11, 14.94, 0.69] + }, + "1.7083": { + "vector": [-1.43, 14.91, -0.57] + }, + "1.75": { + "vector": [-1.75, 14.89, -1.79] + }, + "1.7917": { + "vector": [-2.04, 14.86, -2.92] + }, + "1.8333": { + "vector": [-2.29, 14.83, -3.91] + }, + "1.875": { + "vector": [-2.5, 14.81, -4.7] + }, + "1.9167": { + "vector": [-2.64, 14.79, -5.24] + }, + "1.9583": { + "vector": [-2.7, 14.78, -5.47] + }, + "2.0": { + "vector": [-2.66, 14.77, -5.35] + }, + "2.0417": { + "vector": [-2.51, 14.76, -4.75] + }, + "2.0833": { + "vector": [-2.23, 14.76, -3.67] + }, + "2.125": { + "vector": [-1.86, 14.77, -2.21] + }, + "2.1667": { + "vector": [-1.4, 14.77, -0.46] + }, + "2.2083": { + "vector": [-0.9, 14.78, 1.49] + }, + "2.25": { + "vector": [-0.37, 14.8, 3.55] + }, + "2.2917": { + "vector": [0.16, 14.81, 5.61] + }, + "2.3333": { + "vector": [0.67, 14.82, 7.59] + }, + "2.375": { + "vector": [1.13, 14.83, 9.39] + }, + "2.4167": { + "vector": [1.53, 14.85, 10.91] + }, + "2.4583": { + "vector": [1.82, 14.86, 12.07] + }, + "2.5": { + "vector": [2, 14.87, 12.76] + }, + "2.5417": { + "vector": [2.07, 14.88, 13.03] + }, + "2.5833": { + "vector": [2.06, 14.89, 12.99] + }, + "2.625": { + "vector": [1.99, 14.91, 12.7] + }, + "2.6667": { + "vector": [1.85, 14.92, 12.19] + }, + "2.7083": { + "vector": [1.67, 14.94, 11.49] + }, + "2.75": { + "vector": [1.46, 14.96, 10.66] + }, + "2.7917": { + "vector": [1.22, 14.97, 9.73] + }, + "2.8333": { + "vector": [0.96, 14.98, 8.74] + }, + "2.875": { + "vector": [0.7, 14.99, 7.73] + }, + "2.9167": { + "vector": [0.45, 15, 6.74] + }, + "2.9583": { + "vector": [0.21, 15, 5.82] + }, + "3.0": { + "vector": [0, 15, 5] + } + } + }, + "leftBackThigh": { + "rotation": { + "0.0": { + "vector": [0, -15, 5] + }, + "0.0417": { + "vector": [0.24, -14.97, 4.05] + }, + "0.0833": { + "vector": [0.58, -14.93, 2.74] + }, + "0.125": { + "vector": [0.98, -14.88, 1.18] + }, + "0.1667": { + "vector": [1.42, -14.83, -0.55] + }, + "0.2083": { + "vector": [1.89, -14.77, -2.38] + }, + "0.25": { + "vector": [2.36, -14.71, -4.21] + }, + "0.2917": { + "vector": [2.8, -14.65, -5.96] + }, + "0.3333": { + "vector": [3.21, -14.6, -7.54] + }, + "0.375": { + "vector": [3.55, -14.55, -8.87] + }, + "0.4167": { + "vector": [3.8, -14.51, -9.86] + }, + "0.4583": { + "vector": [3.95, -14.49, -10.44] + }, + "0.5": { + "vector": [3.97, -14.48, -10.5] + }, + "0.5417": { + "vector": [3.83, -14.48, -9.97] + }, + "0.5833": { + "vector": [3.54, -14.5, -8.85] + }, + "0.625": { + "vector": [3.14, -14.53, -7.27] + }, + "0.6667": { + "vector": [2.64, -14.57, -5.33] + }, + "0.7083": { + "vector": [2.08, -14.62, -3.14] + }, + "0.75": { + "vector": [1.48, -14.67, -0.81] + }, + "0.7917": { + "vector": [0.87, -14.73, 1.56] + }, + "0.8333": { + "vector": [0.28, -14.78, 3.86] + }, + "0.875": { + "vector": [-0.26, -14.83, 5.98] + }, + "0.9167": { + "vector": [-0.73, -14.88, 7.81] + }, + "0.9583": { + "vector": [-1.1, -14.91, 9.24] + }, + "1.0": { + "vector": [-1.34, -14.94, 10.18] + }, + "1.0417": { + "vector": [-1.46, -14.96, 10.67] + }, + "1.0833": { + "vector": [-1.51, -14.98, 10.87] + }, + "1.125": { + "vector": [-1.5, -14.99, 10.82] + }, + "1.1667": { + "vector": [-1.43, -15, 10.56] + }, + "1.2083": { + "vector": [-1.32, -15.01, 10.11] + }, + "1.25": { + "vector": [-1.17, -15.01, 9.53] + }, + "1.2917": { + "vector": [-0.99, -15.02, 8.83] + }, + "1.3333": { + "vector": [-0.79, -15.02, 8.07] + }, + "1.375": { + "vector": [-0.58, -15.02, 7.26] + }, + "1.4167": { + "vector": [-0.38, -15.01, 6.46] + }, + "1.4583": { + "vector": [-0.18, -15.01, 5.69] + }, + "1.5": { + "vector": [0, -15, 5] + }, + "1.5417": { + "vector": [0.19, -14.99, 4.24] + }, + "1.5833": { + "vector": [0.44, -14.97, 3.31] + }, + "1.625": { + "vector": [0.71, -14.95, 2.23] + }, + "1.6667": { + "vector": [1.01, -14.93, 1.07] + }, + "1.7083": { + "vector": [1.32, -14.9, -0.12] + }, + "1.75": { + "vector": [1.62, -14.87, -1.3] + }, + "1.7917": { + "vector": [1.91, -14.85, -2.42] + }, + "1.8333": { + "vector": [2.17, -14.82, -3.43] + }, + "1.875": { + "vector": [2.39, -14.8, -4.27] + }, + "1.9167": { + "vector": [2.55, -14.78, -4.91] + }, + "1.9583": { + "vector": [2.65, -14.77, -5.28] + }, + "2.0": { + "vector": [2.66, -14.77, -5.35] + }, + "2.0417": { + "vector": [2.58, -14.77, -5.03] + }, + "2.0833": { + "vector": [2.41, -14.78, -4.36] + }, + "2.125": { + "vector": [2.16, -14.79, -3.39] + }, + "2.1667": { + "vector": [1.85, -14.81, -2.18] + }, + "2.2083": { + "vector": [1.5, -14.84, -0.82] + }, + "2.25": { + "vector": [1.12, -14.86, 0.64] + }, + "2.2917": { + "vector": [0.74, -14.89, 2.12] + }, + "2.3333": { + "vector": [0.37, -14.91, 3.56] + }, + "2.375": { + "vector": [0.02, -14.93, 4.9] + }, + "2.4167": { + "vector": [-0.28, -14.96, 6.06] + }, + "2.4583": { + "vector": [-0.51, -14.97, 6.98] + }, + "2.5": { + "vector": [-0.67, -14.99, 7.59] + }, + "2.5417": { + "vector": [-0.76, -15, 7.96] + }, + "2.5833": { + "vector": [-0.83, -15.01, 8.2] + }, + "2.625": { + "vector": [-0.86, -15.02, 8.34] + }, + "2.6667": { + "vector": [-0.87, -15.03, 8.35] + }, + "2.7083": { + "vector": [-0.84, -15.03, 8.26] + }, + "2.75": { + "vector": [-0.79, -15.04, 8.07] + }, + "2.7917": { + "vector": [-0.72, -15.04, 7.78] + }, + "2.8333": { + "vector": [-0.62, -15.04, 7.39] + }, + "2.875": { + "vector": [-0.49, -15.04, 6.92] + }, + "2.9167": { + "vector": [-0.35, -15.03, 6.36] + }, + "2.9583": { + "vector": [-0.18, -15.02, 5.72] + }, + "3.0": { + "vector": [0, -15, 5] + } + } + }, + "leftBackLeg": { + "rotation": { + "0.0": { + "vector": [0, 0, 5] + }, + "0.0417": { + "vector": [0, 0, 5.57] + }, + "0.0833": { + "vector": [0, 0, 6.24] + }, + "0.125": { + "vector": [0, 0, 6.95] + }, + "0.1667": { + "vector": [0, 0, 7.64] + }, + "0.2083": { + "vector": [0, 0, 8.28] + }, + "0.25": { + "vector": [0, 0, 8.8] + }, + "0.2917": { + "vector": [0, 0, 9.16] + }, + "0.3333": { + "vector": [0, 0, 9.3] + }, + "0.375": { + "vector": [0, 0, 9.17] + }, + "0.4167": { + "vector": [0, 0, 8.66] + }, + "0.4583": { + "vector": [0, 0, 7.76] + }, + "0.5": { + "vector": [0, 0, 6.58] + }, + "0.5417": { + "vector": [0, 0, 5.23] + }, + "0.5833": { + "vector": [0, 0, 3.84] + }, + "0.625": { + "vector": [0, 0, 2.5] + }, + "0.6667": { + "vector": [0, 0, 1.34] + }, + "0.7083": { + "vector": [0, 0, 0.47] + }, + "0.75": { + "vector": [0, 0, 0] + }, + "0.7917": { + "vector": [0, 0, -0.08] + }, + "0.8333": { + "vector": [0, 0, -0.09] + }, + "0.875": { + "vector": [0, 0, -0.03] + }, + "0.9167": { + "vector": [0, 0, 0.08] + }, + "0.9583": { + "vector": [0, 0, 0.25] + }, + "1.0": { + "vector": [0, 0, 0.46] + }, + "1.0417": { + "vector": [0, 0, 0.72] + }, + "1.0833": { + "vector": [0, 0, 1.02] + }, + "1.125": { + "vector": [0, 0, 1.35] + }, + "1.1667": { + "vector": [0, 0, 1.71] + }, + "1.2083": { + "vector": [0, 0, 2.1] + }, + "1.25": { + "vector": [0, 0, 2.5] + }, + "1.2917": { + "vector": [0, 0, 2.91] + }, + "1.3333": { + "vector": [0, 0, 3.34] + }, + "1.375": { + "vector": [0, 0, 3.76] + }, + "1.4167": { + "vector": [0, 0, 4.18] + }, + "1.4583": { + "vector": [0, 0, 4.6] + }, + "1.5": { + "vector": [0, 0, 5] + }, + "1.5417": { + "vector": [0, 0, 5.96] + }, + "1.5833": { + "vector": [0, 0, 7.21] + }, + "1.625": { + "vector": [0, 0, 8.61] + }, + "1.6667": { + "vector": [0, 0, 10.07] + }, + "1.7083": { + "vector": [0, 0, 11.47] + }, + "1.75": { + "vector": [0, 0, 12.69] + }, + "1.7917": { + "vector": [0, 0, 13.62] + }, + "1.8333": { + "vector": [0, 0, 14.15] + }, + "1.875": { + "vector": [0, 0, 14.17] + }, + "1.9167": { + "vector": [0, 0, 13.51] + }, + "1.9583": { + "vector": [0, 0, 12.22] + }, + "2.0": { + "vector": [0, 0, 10.47] + }, + "2.0417": { + "vector": [0, 0, 8.42] + }, + "2.0833": { + "vector": [0, 0, 6.26] + }, + "2.125": { + "vector": [0, 0, 4.17] + }, + "2.1667": { + "vector": [0, 0, 2.31] + }, + "2.2083": { + "vector": [0, 0, 0.86] + }, + "2.25": { + "vector": [0, 0, 0] + }, + "2.2917": { + "vector": [0, 0, -0.2] + }, + "2.3333": { + "vector": [0, 0, -0.28] + }, + "2.375": { + "vector": [0, 0, -0.27] + }, + "2.4167": { + "vector": [0, 0, -0.16] + }, + "2.4583": { + "vector": [0, 0, 0.02] + }, + "2.5": { + "vector": [0, 0, 0.28] + }, + "2.5417": { + "vector": [0, 0, 0.59] + }, + "2.5833": { + "vector": [0, 0, 0.95] + }, + "2.625": { + "vector": [0, 0, 1.35] + }, + "2.6667": { + "vector": [0, 0, 1.78] + }, + "2.7083": { + "vector": [0, 0, 2.23] + }, + "2.75": { + "vector": [0, 0, 2.68] + }, + "2.7917": { + "vector": [0, 0, 3.14] + }, + "2.8333": { + "vector": [0, 0, 3.58] + }, + "2.875": { + "vector": [0, 0, 3.99] + }, + "2.9167": { + "vector": [0, 0, 4.38] + }, + "2.9583": { + "vector": [0, 0, 4.71] + }, + "3.0": { + "vector": [0, 0, 5] + } + } + }, + "leftBackFoot": { + "rotation": { + "0.0": { + "vector": [0, 0, -30] + }, + "0.0417": { + "vector": [0, 0, -31.54] + }, + "0.0833": { + "vector": [0, 0, -33.21] + }, + "0.125": { + "vector": [0, 0, -34.94] + }, + "0.1667": { + "vector": [0, 0, -36.67] + }, + "0.2083": { + "vector": [0, 0, -38.32] + }, + "0.25": { + "vector": [0, 0, -39.84] + }, + "0.2917": { + "vector": [0, 0, -41.17] + }, + "0.3333": { + "vector": [0, 0, -42.22] + }, + "0.375": { + "vector": [0, 0, -42.95] + }, + "0.4167": { + "vector": [0, 0, -43.28] + }, + "0.4583": { + "vector": [0, 0, -43.15] + }, + "0.5": { + "vector": [0, 0, -42.5] + }, + "0.5417": { + "vector": [0, 0, -41.06] + }, + "0.5833": { + "vector": [0, 0, -38.75] + }, + "0.625": { + "vector": [0, 0, -35.74] + }, + "0.6667": { + "vector": [0, 0, -32.22] + }, + "0.7083": { + "vector": [0, 0, -28.37] + }, + "0.75": { + "vector": [0, 0, -24.37] + }, + "0.7917": { + "vector": [0, 0, -20.41] + }, + "0.8333": { + "vector": [0, 0, -16.67] + }, + "0.875": { + "vector": [0, 0, -13.32] + }, + "0.9167": { + "vector": [0, 0, -10.56] + }, + "0.9583": { + "vector": [0, 0, -8.55] + }, + "1.0": { + "vector": [0, 0, -7.5] + }, + "1.0417": { + "vector": [0, 0, -7.39] + }, + "1.0833": { + "vector": [0, 0, -8.04] + }, + "1.125": { + "vector": [0, 0, -9.32] + }, + "1.1667": { + "vector": [0, 0, -11.11] + }, + "1.2083": { + "vector": [0, 0, -13.31] + }, + "1.25": { + "vector": [0, 0, -15.78] + }, + "1.2917": { + "vector": [0, 0, -18.42] + }, + "1.3333": { + "vector": [0, 0, -21.11] + }, + "1.375": { + "vector": [0, 0, -23.73] + }, + "1.4167": { + "vector": [0, 0, -26.16] + }, + "1.4583": { + "vector": [0, 0, -28.29] + }, + "1.5": { + "vector": [0, 0, -30] + }, + "1.5417": { + "vector": [0, 0, -31.54] + }, + "1.5833": { + "vector": [0, 0, -33.21] + }, + "1.625": { + "vector": [0, 0, -34.94] + }, + "1.6667": { + "vector": [0, 0, -36.67] + }, + "1.7083": { + "vector": [0, 0, -38.32] + }, + "1.75": { + "vector": [0, 0, -39.84] + }, + "1.7917": { + "vector": [0, 0, -41.17] + }, + "1.8333": { + "vector": [0, 0, -42.22] + }, + "1.875": { + "vector": [0, 0, -42.95] + }, + "1.9167": { + "vector": [0, 0, -43.28] + }, + "1.9583": { + "vector": [0, 0, -43.15] + }, + "2.0": { + "vector": [0, 0, -42.5] + }, + "2.0417": { + "vector": [0, 0, -41.06] + }, + "2.0833": { + "vector": [0, 0, -38.75] + }, + "2.125": { + "vector": [0, 0, -35.74] + }, + "2.1667": { + "vector": [0, 0, -32.22] + }, + "2.2083": { + "vector": [0, 0, -28.37] + }, + "2.25": { + "vector": [0, 0, -24.37] + }, + "2.2917": { + "vector": [0, 0, -20.41] + }, + "2.3333": { + "vector": [0, 0, -16.67] + }, + "2.375": { + "vector": [0, 0, -13.32] + }, + "2.4167": { + "vector": [0, 0, -10.56] + }, + "2.4583": { + "vector": [0, 0, -8.55] + }, + "2.5": { + "vector": [0, 0, -7.5] + }, + "2.5417": { + "vector": [0, 0, -7.39] + }, + "2.5833": { + "vector": [0, 0, -8.04] + }, + "2.625": { + "vector": [0, 0, -9.32] + }, + "2.6667": { + "vector": [0, 0, -11.11] + }, + "2.7083": { + "vector": [0, 0, -13.31] + }, + "2.75": { + "vector": [0, 0, -15.78] + }, + "2.7917": { + "vector": [0, 0, -18.42] + }, + "2.8333": { + "vector": [0, 0, -21.11] + }, + "2.875": { + "vector": [0, 0, -23.73] + }, + "2.9167": { + "vector": [0, 0, -26.16] + }, + "2.9583": { + "vector": [0, 0, -28.29] + }, + "3.0": { + "vector": [0, 0, -30] + } + } + }, + "leftFrontLeg": { + "rotation": { + "0.0": { + "vector": [0, 0, 35] + }, + "0.0417": { + "vector": [0, 0, 34.87] + }, + "0.0833": { + "vector": [0, 0, 34.49] + }, + "0.125": { + "vector": [0, 0, 33.89] + }, + "0.1667": { + "vector": [0, 0, 33.11] + }, + "0.2083": { + "vector": [0, 0, 32.17] + }, + "0.25": { + "vector": [0, 0, 31.11] + }, + "0.2917": { + "vector": [0, 0, 29.96] + }, + "0.3333": { + "vector": [0, 0, 28.74] + }, + "0.375": { + "vector": [0, 0, 27.5] + }, + "0.4167": { + "vector": [0, 0, 26.26] + }, + "0.4583": { + "vector": [0, 0, 25.04] + }, + "0.5": { + "vector": [0, 0, 23.89] + }, + "0.5417": { + "vector": [0, 0, 22.83] + }, + "0.5833": { + "vector": [0, 0, 21.89] + }, + "0.625": { + "vector": [0, 0, 21.11] + }, + "0.6667": { + "vector": [0, 0, 20.51] + }, + "0.7083": { + "vector": [0, 0, 20.13] + }, + "0.75": { + "vector": [0, 0, 20] + }, + "0.7917": { + "vector": [0, 0, 20.13] + }, + "0.8333": { + "vector": [0, 0, 20.51] + }, + "0.875": { + "vector": [0, 0, 21.11] + }, + "0.9167": { + "vector": [0, 0, 21.89] + }, + "0.9583": { + "vector": [0, 0, 22.83] + }, + "1.0": { + "vector": [0, 0, 23.89] + }, + "1.0417": { + "vector": [0, 0, 25.04] + }, + "1.0833": { + "vector": [0, 0, 26.26] + }, + "1.125": { + "vector": [0, 0, 27.5] + }, + "1.1667": { + "vector": [0, 0, 28.74] + }, + "1.2083": { + "vector": [0, 0, 29.96] + }, + "1.25": { + "vector": [0, 0, 31.11] + }, + "1.2917": { + "vector": [0, 0, 32.17] + }, + "1.3333": { + "vector": [0, 0, 33.11] + }, + "1.375": { + "vector": [0, 0, 33.89] + }, + "1.4167": { + "vector": [0, 0, 34.49] + }, + "1.4583": { + "vector": [0, 0, 34.87] + }, + "1.5": { + "vector": [0, 0, 35] + }, + "1.5417": { + "vector": [0, 0, 34.87] + }, + "1.5833": { + "vector": [0, 0, 34.49] + }, + "1.625": { + "vector": [0, 0, 33.89] + }, + "1.6667": { + "vector": [0, 0, 33.11] + }, + "1.7083": { + "vector": [0, 0, 32.17] + }, + "1.75": { + "vector": [0, 0, 31.11] + }, + "1.7917": { + "vector": [0, 0, 29.96] + }, + "1.8333": { + "vector": [0, 0, 28.74] + }, + "1.875": { + "vector": [0, 0, 27.5] + }, + "1.9167": { + "vector": [0, 0, 26.26] + }, + "1.9583": { + "vector": [0, 0, 25.04] + }, + "2.0": { + "vector": [0, 0, 23.89] + }, + "2.0417": { + "vector": [0, 0, 22.83] + }, + "2.0833": { + "vector": [0, 0, 21.89] + }, + "2.125": { + "vector": [0, 0, 21.11] + }, + "2.1667": { + "vector": [0, 0, 20.51] + }, + "2.2083": { + "vector": [0, 0, 20.13] + }, + "2.25": { + "vector": [0, 0, 20] + }, + "2.2917": { + "vector": [0, 0, 20.13] + }, + "2.3333": { + "vector": [0, 0, 20.51] + }, + "2.375": { + "vector": [0, 0, 21.11] + }, + "2.4167": { + "vector": [0, 0, 21.89] + }, + "2.4583": { + "vector": [0, 0, 22.83] + }, + "2.5": { + "vector": [0, 0, 23.89] + }, + "2.5417": { + "vector": [0, 0, 25.04] + }, + "2.5833": { + "vector": [0, 0, 26.26] + }, + "2.625": { + "vector": [0, 0, 27.5] + }, + "2.6667": { + "vector": [0, 0, 28.74] + }, + "2.7083": { + "vector": [0, 0, 29.96] + }, + "2.75": { + "vector": [0, 0, 31.11] + }, + "2.7917": { + "vector": [0, 0, 32.17] + }, + "2.8333": { + "vector": [0, 0, 33.11] + }, + "2.875": { + "vector": [0, 0, 33.89] + }, + "2.9167": { + "vector": [0, 0, 34.49] + }, + "2.9583": { + "vector": [0, 0, 34.87] + }, + "3.0": { + "vector": [0, 0, 35] + } + } + }, + "leftFrontFoot": { + "rotation": { + "0.0": { + "vector": [0, 0, -10] + }, + "0.0417": { + "vector": [0, 0, -8.88] + }, + "0.0833": { + "vector": [0, 0, -7.64] + }, + "0.125": { + "vector": [0, 0, -6.33] + }, + "0.1667": { + "vector": [0, 0, -5] + }, + "0.2083": { + "vector": [0, 0, -3.71] + }, + "0.25": { + "vector": [0, 0, -2.5] + }, + "0.2917": { + "vector": [0, 0, -1.43] + }, + "0.3333": { + "vector": [0, 0, -0.56] + }, + "0.375": { + "vector": [0, 0, 0.08] + }, + "0.4167": { + "vector": [0, 0, 0.42] + }, + "0.4583": { + "vector": [0, 0, 0.41] + }, + "0.5": { + "vector": [0, 0, 0] + }, + "0.5417": { + "vector": [0, 0, -0.99] + }, + "0.5833": { + "vector": [0, 0, -2.6] + }, + "0.625": { + "vector": [0, 0, -4.73] + }, + "0.6667": { + "vector": [0, 0, -7.22] + }, + "0.7083": { + "vector": [0, 0, -9.96] + }, + "0.75": { + "vector": [0, 0, -12.81] + }, + "0.7917": { + "vector": [0, 0, -15.65] + }, + "0.8333": { + "vector": [0, 0, -18.33] + }, + "0.875": { + "vector": [0, 0, -20.74] + }, + "0.9167": { + "vector": [0, 0, -22.74] + }, + "0.9583": { + "vector": [0, 0, -24.21] + }, + "1.0": { + "vector": [0, 0, -25] + }, + "1.0417": { + "vector": [0, 0, -25.13] + }, + "1.0833": { + "vector": [0, 0, -24.76] + }, + "1.125": { + "vector": [0, 0, -23.95] + }, + "1.1667": { + "vector": [0, 0, -22.78] + }, + "1.2083": { + "vector": [0, 0, -21.33] + }, + "1.25": { + "vector": [0, 0, -19.69] + }, + "1.2917": { + "vector": [0, 0, -17.92] + }, + "1.3333": { + "vector": [0, 0, -16.11] + }, + "1.375": { + "vector": [0, 0, -14.34] + }, + "1.4167": { + "vector": [0, 0, -12.67] + }, + "1.4583": { + "vector": [0, 0, -11.2] + }, + "1.5": { + "vector": [0, 0, -10] + }, + "1.5417": { + "vector": [0, 0, -8.88] + }, + "1.5833": { + "vector": [0, 0, -7.64] + }, + "1.625": { + "vector": [0, 0, -6.33] + }, + "1.6667": { + "vector": [0, 0, -5] + }, + "1.7083": { + "vector": [0, 0, -3.71] + }, + "1.75": { + "vector": [0, 0, -2.5] + }, + "1.7917": { + "vector": [0, 0, -1.43] + }, + "1.8333": { + "vector": [0, 0, -0.56] + }, + "1.875": { + "vector": [0, 0, 0.08] + }, + "1.9167": { + "vector": [0, 0, 0.42] + }, + "1.9583": { + "vector": [0, 0, 0.41] + }, + "2.0": { + "vector": [0, 0, 0] + }, + "2.0417": { + "vector": [0, 0, -0.99] + }, + "2.0833": { + "vector": [0, 0, -2.6] + }, + "2.125": { + "vector": [0, 0, -4.73] + }, + "2.1667": { + "vector": [0, 0, -7.22] + }, + "2.2083": { + "vector": [0, 0, -9.96] + }, + "2.25": { + "vector": [0, 0, -12.81] + }, + "2.2917": { + "vector": [0, 0, -15.65] + }, + "2.3333": { + "vector": [0, 0, -18.33] + }, + "2.375": { + "vector": [0, 0, -20.74] + }, + "2.4167": { + "vector": [0, 0, -22.74] + }, + "2.4583": { + "vector": [0, 0, -24.21] + }, + "2.5": { + "vector": [0, 0, -25] + }, + "2.5417": { + "vector": [0, 0, -25.13] + }, + "2.5833": { + "vector": [0, 0, -24.76] + }, + "2.625": { + "vector": [0, 0, -23.95] + }, + "2.6667": { + "vector": [0, 0, -22.78] + }, + "2.7083": { + "vector": [0, 0, -21.33] + }, + "2.75": { + "vector": [0, 0, -19.69] + }, + "2.7917": { + "vector": [0, 0, -17.92] + }, + "2.8333": { + "vector": [0, 0, -16.11] + }, + "2.875": { + "vector": [0, 0, -14.34] + }, + "2.9167": { + "vector": [0, 0, -12.67] + }, + "2.9583": { + "vector": [0, 0, -11.2] + }, + "3.0": { + "vector": [0, 0, -10] + } + } + } + } + }, + "float": { + "loop": true, + "animation_length": 1.5, + "bones": { + "body": { + "rotation": { + "vector": [5, 0, 0] + }, + "position": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.0417": { + "vector": [0, 0.01, 0] + }, + "0.0833": { + "vector": [0, 0.03, 0] + }, + "0.125": { + "vector": [0, 0.07, 0] + }, + "0.1667": { + "vector": [0, 0.13, 0] + }, + "0.2083": { + "vector": [0, 0.19, 0] + }, + "0.25": { + "vector": [0, 0.26, 0] + }, + "0.2917": { + "vector": [0, 0.34, 0] + }, + "0.3333": { + "vector": [0, 0.42, 0] + }, + "0.375": { + "vector": [0, 0.5, 0] + }, + "0.4167": { + "vector": [0, 0.58, 0] + }, + "0.4583": { + "vector": [0, 0.66, 0] + }, + "0.5": { + "vector": [0, 0.74, 0] + }, + "0.5417": { + "vector": [0, 0.81, 0] + }, + "0.5833": { + "vector": [0, 0.87, 0] + }, + "0.625": { + "vector": [0, 0.93, 0] + }, + "0.6667": { + "vector": [0, 0.97, 0] + }, + "0.7083": { + "vector": [0, 0.99, 0] + }, + "0.75": { + "vector": [0, 1, 0] + }, + "0.7917": { + "vector": [0, 0.99, 0] + }, + "0.8333": { + "vector": [0, 0.97, 0] + }, + "0.875": { + "vector": [0, 0.93, 0] + }, + "0.9167": { + "vector": [0, 0.87, 0] + }, + "0.9583": { + "vector": [0, 0.81, 0] + }, + "1.0": { + "vector": [0, 0.74, 0] + }, + "1.0417": { + "vector": [0, 0.66, 0] + }, + "1.0833": { + "vector": [0, 0.58, 0] + }, + "1.125": { + "vector": [0, 0.5, 0] + }, + "1.1667": { + "vector": [0, 0.42, 0] + }, + "1.2083": { + "vector": [0, 0.34, 0] + }, + "1.25": { + "vector": [0, 0.26, 0] + }, + "1.2917": { + "vector": [0, 0.19, 0] + }, + "1.3333": { + "vector": [0, 0.13, 0] + }, + "1.375": { + "vector": [0, 0.07, 0] + }, + "1.4167": { + "vector": [0, 0.03, 0] + }, + "1.4583": { + "vector": [0, 0.01, 0] + }, + "1.5": { + "vector": [0, 0, 0] + } + } + }, + "topHeadClawThing": { + "rotation": { + "0.0": { + "vector": [35, 0, 0] + }, + "0.0417": { + "vector": [34.91, 0, 0] + }, + "0.0833": { + "vector": [34.66, 0, 0] + }, + "0.125": { + "vector": [34.26, 0, 0] + }, + "0.1667": { + "vector": [33.74, 0, 0] + }, + "0.2083": { + "vector": [33.11, 0, 0] + }, + "0.25": { + "vector": [32.41, 0, 0] + }, + "0.2917": { + "vector": [31.64, 0, 0] + }, + "0.3333": { + "vector": [30.83, 0, 0] + }, + "0.375": { + "vector": [30, 0, 0] + }, + "0.4167": { + "vector": [29.17, 0, 0] + }, + "0.4583": { + "vector": [28.36, 0, 0] + }, + "0.5": { + "vector": [27.59, 0, 0] + }, + "0.5417": { + "vector": [26.89, 0, 0] + }, + "0.5833": { + "vector": [26.26, 0, 0] + }, + "0.625": { + "vector": [25.74, 0, 0] + }, + "0.6667": { + "vector": [25.34, 0, 0] + }, + "0.7083": { + "vector": [25.09, 0, 0] + }, + "0.75": { + "vector": [25, 0, 0] + }, + "0.7917": { + "vector": [25.09, 0, 0] + }, + "0.8333": { + "vector": [25.34, 0, 0] + }, + "0.875": { + "vector": [25.74, 0, 0] + }, + "0.9167": { + "vector": [26.26, 0, 0] + }, + "0.9583": { + "vector": [26.89, 0, 0] + }, + "1.0": { + "vector": [27.59, 0, 0] + }, + "1.0417": { + "vector": [28.36, 0, 0] + }, + "1.0833": { + "vector": [29.17, 0, 0] + }, + "1.125": { + "vector": [30, 0, 0] + }, + "1.1667": { + "vector": [30.83, 0, 0] + }, + "1.2083": { + "vector": [31.64, 0, 0] + }, + "1.25": { + "vector": [32.41, 0, 0] + }, + "1.2917": { + "vector": [33.11, 0, 0] + }, + "1.3333": { + "vector": [33.74, 0, 0] + }, + "1.375": { + "vector": [34.26, 0, 0] + }, + "1.4167": { + "vector": [34.66, 0, 0] + }, + "1.4583": { + "vector": [34.91, 0, 0] + }, + "1.5": { + "vector": [35, 0, 0] + } + } + }, + "rightFrontThigh": { + "rotation": { + "0.0": { + "vector": [0, -15, -5] + }, + "0.0417": { + "vector": [-0.49, -14.98, -3.1] + }, + "0.0833": { + "vector": [-1.11, -14.94, -0.69] + }, + "0.125": { + "vector": [-1.75, -14.89, 1.79] + }, + "0.1667": { + "vector": [-2.29, -14.83, 3.91] + }, + "0.2083": { + "vector": [-2.64, -14.79, 5.24] + }, + "0.25": { + "vector": [-2.66, -14.77, 5.35] + }, + "0.2917": { + "vector": [-2.23, -14.76, 3.67] + }, + "0.3333": { + "vector": [-1.4, -14.77, 0.46] + }, + "0.375": { + "vector": [-0.37, -14.8, -3.55] + }, + "0.4167": { + "vector": [0.67, -14.82, -7.59] + }, + "0.4583": { + "vector": [1.53, -14.85, -10.91] + }, + "0.5": { + "vector": [2, -14.87, -12.76] + }, + "0.5417": { + "vector": [2.06, -14.89, -12.99] + }, + "0.5833": { + "vector": [1.85, -14.92, -12.19] + }, + "0.625": { + "vector": [1.46, -14.96, -10.66] + }, + "0.6667": { + "vector": [0.96, -14.98, -8.74] + }, + "0.7083": { + "vector": [0.45, -15, -6.74] + }, + "0.75": { + "vector": [0, -15, -5] + }, + "0.7917": { + "vector": [-0.49, -14.98, -3.1] + }, + "0.8333": { + "vector": [-1.11, -14.94, -0.69] + }, + "0.875": { + "vector": [-1.75, -14.89, 1.79] + }, + "0.9167": { + "vector": [-2.29, -14.83, 3.91] + }, + "0.9583": { + "vector": [-2.64, -14.79, 5.24] + }, + "1.0": { + "vector": [-2.66, -14.77, 5.35] + }, + "1.0417": { + "vector": [-2.23, -14.76, 3.67] + }, + "1.0833": { + "vector": [-1.4, -14.77, 0.46] + }, + "1.125": { + "vector": [-0.37, -14.8, -3.55] + }, + "1.1667": { + "vector": [0.67, -14.82, -7.59] + }, + "1.2083": { + "vector": [1.53, -14.85, -10.91] + }, + "1.25": { + "vector": [2, -14.87, -12.76] + }, + "1.2917": { + "vector": [2.06, -14.89, -12.99] + }, + "1.3333": { + "vector": [1.85, -14.92, -12.19] + }, + "1.375": { + "vector": [1.46, -14.96, -10.66] + }, + "1.4167": { + "vector": [0.96, -14.98, -8.74] + }, + "1.4583": { + "vector": [0.45, -15, -6.74] + }, + "1.5": { + "vector": [0, -15, -5] + } + } + }, + "rightFrontLeg": { + "rotation": { + "0.0": { + "vector": [0, 0, -35] + }, + "0.0417": { + "vector": [0, 0, -34.49] + }, + "0.0833": { + "vector": [0, 0, -33.11] + }, + "0.125": { + "vector": [0, 0, -31.11] + }, + "0.1667": { + "vector": [0, 0, -28.74] + }, + "0.2083": { + "vector": [0, 0, -26.26] + }, + "0.25": { + "vector": [0, 0, -23.89] + }, + "0.2917": { + "vector": [0, 0, -21.89] + }, + "0.3333": { + "vector": [0, 0, -20.51] + }, + "0.375": { + "vector": [0, 0, -20] + }, + "0.4167": { + "vector": [0, 0, -20.51] + }, + "0.4583": { + "vector": [0, 0, -21.89] + }, + "0.5": { + "vector": [0, 0, -23.89] + }, + "0.5417": { + "vector": [0, 0, -26.26] + }, + "0.5833": { + "vector": [0, 0, -28.74] + }, + "0.625": { + "vector": [0, 0, -31.11] + }, + "0.6667": { + "vector": [0, 0, -33.11] + }, + "0.7083": { + "vector": [0, 0, -34.49] + }, + "0.75": { + "vector": [0, 0, -35] + }, + "0.7917": { + "vector": [0, 0, -34.49] + }, + "0.8333": { + "vector": [0, 0, -33.11] + }, + "0.875": { + "vector": [0, 0, -31.11] + }, + "0.9167": { + "vector": [0, 0, -28.74] + }, + "0.9583": { + "vector": [0, 0, -26.26] + }, + "1.0": { + "vector": [0, 0, -23.89] + }, + "1.0417": { + "vector": [0, 0, -21.89] + }, + "1.0833": { + "vector": [0, 0, -20.51] + }, + "1.125": { + "vector": [0, 0, -20] + }, + "1.1667": { + "vector": [0, 0, -20.51] + }, + "1.2083": { + "vector": [0, 0, -21.89] + }, + "1.25": { + "vector": [0, 0, -23.89] + }, + "1.2917": { + "vector": [0, 0, -26.26] + }, + "1.3333": { + "vector": [0, 0, -28.74] + }, + "1.375": { + "vector": [0, 0, -31.11] + }, + "1.4167": { + "vector": [0, 0, -33.11] + }, + "1.4583": { + "vector": [0, 0, -34.49] + }, + "1.5": { + "vector": [0, 0, -35] + } + } + }, + "rightFrontFoot": { + "rotation": { + "0.0": { + "vector": [0, 0, 10] + }, + "0.0417": { + "vector": [0, 0, 7.64] + }, + "0.0833": { + "vector": [0, 0, 5] + }, + "0.125": { + "vector": [0, 0, 2.5] + }, + "0.1667": { + "vector": [0, 0, 0.56] + }, + "0.2083": { + "vector": [0, 0, -0.42] + }, + "0.25": { + "vector": [0, 0, 0] + }, + "0.2917": { + "vector": [0, 0, 2.6] + }, + "0.3333": { + "vector": [0, 0, 7.22] + }, + "0.375": { + "vector": [0, 0, 12.81] + }, + "0.4167": { + "vector": [0, 0, 18.33] + }, + "0.4583": { + "vector": [0, 0, 22.74] + }, + "0.5": { + "vector": [0, 0, 25] + }, + "0.5417": { + "vector": [0, 0, 24.76] + }, + "0.5833": { + "vector": [0, 0, 22.78] + }, + "0.625": { + "vector": [0, 0, 19.69] + }, + "0.6667": { + "vector": [0, 0, 16.11] + }, + "0.7083": { + "vector": [0, 0, 12.67] + }, + "0.75": { + "vector": [0, 0, 10] + }, + "0.7917": { + "vector": [0, 0, 7.64] + }, + "0.8333": { + "vector": [0, 0, 5] + }, + "0.875": { + "vector": [0, 0, 2.5] + }, + "0.9167": { + "vector": [0, 0, 0.56] + }, + "0.9583": { + "vector": [0, 0, -0.42] + }, + "1.0": { + "vector": [0, 0, 0] + }, + "1.0417": { + "vector": [0, 0, 2.6] + }, + "1.0833": { + "vector": [0, 0, 7.22] + }, + "1.125": { + "vector": [0, 0, 12.81] + }, + "1.1667": { + "vector": [0, 0, 18.33] + }, + "1.2083": { + "vector": [0, 0, 22.74] + }, + "1.25": { + "vector": [0, 0, 25] + }, + "1.2917": { + "vector": [0, 0, 24.76] + }, + "1.3333": { + "vector": [0, 0, 22.78] + }, + "1.375": { + "vector": [0, 0, 19.69] + }, + "1.4167": { + "vector": [0, 0, 16.11] + }, + "1.4583": { + "vector": [0, 0, 12.67] + }, + "1.5": { + "vector": [0, 0, 10] + } + } + }, + "rightBackThigh": { + "rotation": { + "0.0": { + "vector": [0, 15, -5] + }, + "0.0417": { + "vector": [0.58, 14.93, -2.74] + }, + "0.0833": { + "vector": [1.42, 14.83, 0.55] + }, + "0.125": { + "vector": [2.36, 14.71, 4.21] + }, + "0.1667": { + "vector": [3.21, 14.6, 7.54] + }, + "0.2083": { + "vector": [3.8, 14.51, 9.86] + }, + "0.25": { + "vector": [3.97, 14.48, 10.5] + }, + "0.2917": { + "vector": [3.54, 14.5, 8.85] + }, + "0.3333": { + "vector": [2.64, 14.57, 5.33] + }, + "0.375": { + "vector": [1.48, 14.67, 0.81] + }, + "0.4167": { + "vector": [0.28, 14.78, -3.86] + }, + "0.4583": { + "vector": [-0.73, 14.88, -7.81] + }, + "0.5": { + "vector": [-1.34, 14.94, -10.18] + }, + "0.5417": { + "vector": [-1.51, 14.98, -10.87] + }, + "0.5833": { + "vector": [-1.43, 15, -10.56] + }, + "0.625": { + "vector": [-1.17, 15.01, -9.53] + }, + "0.6667": { + "vector": [-0.79, 15.02, -8.07] + }, + "0.7083": { + "vector": [-0.38, 15.01, -6.46] + }, + "0.75": { + "vector": [0, 15, -5] + }, + "0.7917": { + "vector": [0.44, 14.97, -3.31] + }, + "0.8333": { + "vector": [1.01, 14.93, -1.07] + }, + "0.875": { + "vector": [1.62, 14.87, 1.3] + }, + "0.9167": { + "vector": [2.17, 14.82, 3.43] + }, + "0.9583": { + "vector": [2.55, 14.78, 4.91] + }, + "1.0": { + "vector": [2.66, 14.77, 5.35] + }, + "1.0417": { + "vector": [2.41, 14.78, 4.36] + }, + "1.0833": { + "vector": [1.85, 14.81, 2.18] + }, + "1.125": { + "vector": [1.12, 14.86, -0.64] + }, + "1.1667": { + "vector": [0.37, 14.91, -3.56] + }, + "1.2083": { + "vector": [-0.28, 14.96, -6.06] + }, + "1.25": { + "vector": [-0.67, 14.99, -7.59] + }, + "1.2917": { + "vector": [-0.83, 15.01, -8.2] + }, + "1.3333": { + "vector": [-0.87, 15.03, -8.35] + }, + "1.375": { + "vector": [-0.79, 15.04, -8.07] + }, + "1.4167": { + "vector": [-0.62, 15.04, -7.39] + }, + "1.4583": { + "vector": [-0.35, 15.03, -6.36] + }, + "1.5": { + "vector": [0, 15, -5] + } + } + }, + "rightBackLeg": { + "rotation": { + "0.0": { + "vector": [0, 0, -5] + }, + "0.0417": { + "vector": [0, 0, -6.1] + }, + "0.0833": { + "vector": [0, 0, -7.37] + }, + "0.125": { + "vector": [0, 0, -8.5] + }, + "0.1667": { + "vector": [0, 0, -9.2] + }, + "0.2083": { + "vector": [0, 0, -9.17] + }, + "0.25": { + "vector": [0, 0, -7.48] + }, + "0.2917": { + "vector": [0, 0, -4.53] + }, + "0.3333": { + "vector": [0, 0, -1.61] + }, + "0.375": { + "vector": [0, 0, 0] + }, + "0.4167": { + "vector": [0, 0, 0.09] + }, + "0.4583": { + "vector": [0, 0, -0.08] + }, + "0.5": { + "vector": [0, 0, -0.46] + }, + "0.5417": { + "vector": [0, 0, -1.02] + }, + "0.5833": { + "vector": [0, 0, -1.71] + }, + "0.625": { + "vector": [0, 0, -2.5] + }, + "0.6667": { + "vector": [0, 0, -3.34] + }, + "0.7083": { + "vector": [0, 0, -4.18] + }, + "0.75": { + "vector": [0, 0, -5] + }, + "0.7917": { + "vector": [0, 0, -6.94] + }, + "0.8333": { + "vector": [0, 0, -9.49] + }, + "0.875": { + "vector": [0, 0, -11.98] + }, + "0.9167": { + "vector": [0, 0, -13.76] + }, + "0.9583": { + "vector": [0, 0, -14.17] + }, + "1.0": { + "vector": [0, 0, -11.82] + }, + "1.0417": { + "vector": [0, 0, -7.35] + }, + "1.0833": { + "vector": [0, 0, -2.74] + }, + "1.125": { + "vector": [0, 0, 0] + }, + "1.1667": { + "vector": [0, 0, 0.28] + }, + "1.2083": { + "vector": [0, 0, 0.16] + }, + "1.25": { + "vector": [0, 0, -0.28] + }, + "1.2917": { + "vector": [0, 0, -0.95] + }, + "1.3333": { + "vector": [0, 0, -1.78] + }, + "1.375": { + "vector": [0, 0, -2.68] + }, + "1.4167": { + "vector": [0, 0, -3.58] + }, + "1.4583": { + "vector": [0, 0, -4.38] + }, + "1.5": { + "vector": [0, 0, -5] + } + } + }, + "rightBackFoot": { + "rotation": { + "0.0": { + "vector": [0, 0, 30] + }, + "0.0417": { + "vector": [0, 0, 33.21] + }, + "0.0833": { + "vector": [0, 0, 36.67] + }, + "0.125": { + "vector": [0, 0, 39.84] + }, + "0.1667": { + "vector": [0, 0, 42.22] + }, + "0.2083": { + "vector": [0, 0, 43.28] + }, + "0.25": { + "vector": [0, 0, 42.5] + }, + "0.2917": { + "vector": [0, 0, 38.75] + }, + "0.3333": { + "vector": [0, 0, 32.22] + }, + "0.375": { + "vector": [0, 0, 24.38] + }, + "0.4167": { + "vector": [0, 0, 16.67] + }, + "0.4583": { + "vector": [0, 0, 10.56] + }, + "0.5": { + "vector": [0, 0, 7.5] + }, + "0.5417": { + "vector": [0, 0, 8.04] + }, + "0.5833": { + "vector": [0, 0, 11.11] + }, + "0.625": { + "vector": [0, 0, 15.78] + }, + "0.6667": { + "vector": [0, 0, 21.11] + }, + "0.7083": { + "vector": [0, 0, 26.16] + }, + "0.75": { + "vector": [0, 0, 30] + }, + "0.7917": { + "vector": [0, 0, 33.21] + }, + "0.8333": { + "vector": [0, 0, 36.67] + }, + "0.875": { + "vector": [0, 0, 39.84] + }, + "0.9167": { + "vector": [0, 0, 42.22] + }, + "0.9583": { + "vector": [0, 0, 43.28] + }, + "1.0": { + "vector": [0, 0, 42.5] + }, + "1.0417": { + "vector": [0, 0, 38.75] + }, + "1.0833": { + "vector": [0, 0, 32.22] + }, + "1.125": { + "vector": [0, 0, 24.38] + }, + "1.1667": { + "vector": [0, 0, 16.67] + }, + "1.2083": { + "vector": [0, 0, 10.56] + }, + "1.25": { + "vector": [0, 0, 7.5] + }, + "1.2917": { + "vector": [0, 0, 8.04] + }, + "1.3333": { + "vector": [0, 0, 11.11] + }, + "1.375": { + "vector": [0, 0, 15.78] + }, + "1.4167": { + "vector": [0, 0, 21.11] + }, + "1.4583": { + "vector": [0, 0, 26.16] + }, + "1.5": { + "vector": [0, 0, 30] + } + } + }, + "leftHeadClawThing": { + "rotation": { + "0.0": { + "vector": [-35, 0, -25] + }, + "0.0417": { + "vector": [-34.91, 0, -25] + }, + "0.0833": { + "vector": [-34.66, 0, -25] + }, + "0.125": { + "vector": [-34.26, 0, -25] + }, + "0.1667": { + "vector": [-33.74, 0, -25] + }, + "0.2083": { + "vector": [-33.11, 0, -25] + }, + "0.25": { + "vector": [-32.41, 0, -25] + }, + "0.2917": { + "vector": [-31.64, 0, -25] + }, + "0.3333": { + "vector": [-30.83, 0, -25] + }, + "0.375": { + "vector": [-30, 0, -25] + }, + "0.4167": { + "vector": [-29.17, 0, -25] + }, + "0.4583": { + "vector": [-28.36, 0, -25] + }, + "0.5": { + "vector": [-27.59, 0, -25] + }, + "0.5417": { + "vector": [-26.89, 0, -25] + }, + "0.5833": { + "vector": [-26.26, 0, -25] + }, + "0.625": { + "vector": [-25.74, 0, -25] + }, + "0.6667": { + "vector": [-25.34, 0, -25] + }, + "0.7083": { + "vector": [-25.09, 0, -25] + }, + "0.75": { + "vector": [-25, 0, -25] + }, + "0.7917": { + "vector": [-25.09, 0, -25] + }, + "0.8333": { + "vector": [-25.34, 0, -25] + }, + "0.875": { + "vector": [-25.74, 0, -25] + }, + "0.9167": { + "vector": [-26.26, 0, -25] + }, + "0.9583": { + "vector": [-26.89, 0, -25] + }, + "1.0": { + "vector": [-27.59, 0, -25] + }, + "1.0417": { + "vector": [-28.36, 0, -25] + }, + "1.0833": { + "vector": [-29.17, 0, -25] + }, + "1.125": { + "vector": [-30, 0, -25] + }, + "1.1667": { + "vector": [-30.83, 0, -25] + }, + "1.2083": { + "vector": [-31.64, 0, -25] + }, + "1.25": { + "vector": [-32.41, 0, -25] + }, + "1.2917": { + "vector": [-33.11, 0, -25] + }, + "1.3333": { + "vector": [-33.74, 0, -25] + }, + "1.375": { + "vector": [-34.26, 0, -25] + }, + "1.4167": { + "vector": [-34.66, 0, -25] + }, + "1.4583": { + "vector": [-34.91, 0, -25] + }, + "1.5": { + "vector": [-35, 0, -25] + } + } + }, + "rightHeadClawThing": { + "rotation": { + "0.0": { + "vector": [-35, 0, 25] + }, + "0.0417": { + "vector": [-34.91, 0, 25] + }, + "0.0833": { + "vector": [-34.66, 0, 25] + }, + "0.125": { + "vector": [-34.26, 0, 25] + }, + "0.1667": { + "vector": [-33.74, 0, 25] + }, + "0.2083": { + "vector": [-33.11, 0, 25] + }, + "0.25": { + "vector": [-32.41, 0, 25] + }, + "0.2917": { + "vector": [-31.64, 0, 25] + }, + "0.3333": { + "vector": [-30.83, 0, 25] + }, + "0.375": { + "vector": [-30, 0, 25] + }, + "0.4167": { + "vector": [-29.17, 0, 25] + }, + "0.4583": { + "vector": [-28.36, 0, 25] + }, + "0.5": { + "vector": [-27.59, 0, 25] + }, + "0.5417": { + "vector": [-26.89, 0, 25] + }, + "0.5833": { + "vector": [-26.26, 0, 25] + }, + "0.625": { + "vector": [-25.74, 0, 25] + }, + "0.6667": { + "vector": [-25.34, 0, 25] + }, + "0.7083": { + "vector": [-25.09, 0, 25] + }, + "0.75": { + "vector": [-25, 0, 25] + }, + "0.7917": { + "vector": [-25.09, 0, 25] + }, + "0.8333": { + "vector": [-25.34, 0, 25] + }, + "0.875": { + "vector": [-25.74, 0, 25] + }, + "0.9167": { + "vector": [-26.26, 0, 25] + }, + "0.9583": { + "vector": [-26.89, 0, 25] + }, + "1.0": { + "vector": [-27.59, 0, 25] + }, + "1.0417": { + "vector": [-28.36, 0, 25] + }, + "1.0833": { + "vector": [-29.17, 0, 25] + }, + "1.125": { + "vector": [-30, 0, 25] + }, + "1.1667": { + "vector": [-30.83, 0, 25] + }, + "1.2083": { + "vector": [-31.64, 0, 25] + }, + "1.25": { + "vector": [-32.41, 0, 25] + }, + "1.2917": { + "vector": [-33.11, 0, 25] + }, + "1.3333": { + "vector": [-33.74, 0, 25] + }, + "1.375": { + "vector": [-34.26, 0, 25] + }, + "1.4167": { + "vector": [-34.66, 0, 25] + }, + "1.4583": { + "vector": [-34.91, 0, 25] + }, + "1.5": { + "vector": [-35, 0, 25] + } + } + }, + "leftFrontThigh": { + "rotation": { + "0.0": { + "vector": [0, 15, 5] + }, + "0.0417": { + "vector": [-0.49, 14.98, 3.1] + }, + "0.0833": { + "vector": [-1.11, 14.94, 0.69] + }, + "0.125": { + "vector": [-1.75, 14.89, -1.79] + }, + "0.1667": { + "vector": [-2.29, 14.83, -3.91] + }, + "0.2083": { + "vector": [-2.64, 14.79, -5.24] + }, + "0.25": { + "vector": [-2.66, 14.77, -5.35] + }, + "0.2917": { + "vector": [-2.23, 14.76, -3.67] + }, + "0.3333": { + "vector": [-1.4, 14.77, -0.46] + }, + "0.375": { + "vector": [-0.37, 14.8, 3.55] + }, + "0.4167": { + "vector": [0.67, 14.82, 7.59] + }, + "0.4583": { + "vector": [1.53, 14.85, 10.91] + }, + "0.5": { + "vector": [2, 14.87, 12.76] + }, + "0.5417": { + "vector": [2.06, 14.89, 12.99] + }, + "0.5833": { + "vector": [1.85, 14.92, 12.19] + }, + "0.625": { + "vector": [1.46, 14.96, 10.66] + }, + "0.6667": { + "vector": [0.96, 14.98, 8.74] + }, + "0.7083": { + "vector": [0.45, 15, 6.74] + }, + "0.75": { + "vector": [0, 15, 5] + }, + "0.7917": { + "vector": [-0.49, 14.98, 3.1] + }, + "0.8333": { + "vector": [-1.11, 14.94, 0.69] + }, + "0.875": { + "vector": [-1.75, 14.89, -1.79] + }, + "0.9167": { + "vector": [-2.29, 14.83, -3.91] + }, + "0.9583": { + "vector": [-2.64, 14.79, -5.24] + }, + "1.0": { + "vector": [-2.66, 14.77, -5.35] + }, + "1.0417": { + "vector": [-2.23, 14.76, -3.67] + }, + "1.0833": { + "vector": [-1.4, 14.77, -0.46] + }, + "1.125": { + "vector": [-0.37, 14.8, 3.55] + }, + "1.1667": { + "vector": [0.67, 14.82, 7.59] + }, + "1.2083": { + "vector": [1.53, 14.85, 10.91] + }, + "1.25": { + "vector": [2, 14.87, 12.76] + }, + "1.2917": { + "vector": [2.06, 14.89, 12.99] + }, + "1.3333": { + "vector": [1.85, 14.92, 12.19] + }, + "1.375": { + "vector": [1.46, 14.96, 10.66] + }, + "1.4167": { + "vector": [0.96, 14.98, 8.74] + }, + "1.4583": { + "vector": [0.45, 15, 6.74] + }, + "1.5": { + "vector": [0, 15, 5] + } + } + }, + "leftBackThigh": { + "rotation": { + "0.0": { + "vector": [0, -15, 5] + }, + "0.0417": { + "vector": [0.58, -14.93, 2.74] + }, + "0.0833": { + "vector": [1.42, -14.83, -0.55] + }, + "0.125": { + "vector": [2.36, -14.71, -4.21] + }, + "0.1667": { + "vector": [3.21, -14.6, -7.54] + }, + "0.2083": { + "vector": [3.8, -14.51, -9.86] + }, + "0.25": { + "vector": [3.97, -14.48, -10.5] + }, + "0.2917": { + "vector": [3.54, -14.5, -8.85] + }, + "0.3333": { + "vector": [2.64, -14.57, -5.33] + }, + "0.375": { + "vector": [1.48, -14.67, -0.81] + }, + "0.4167": { + "vector": [0.28, -14.78, 3.86] + }, + "0.4583": { + "vector": [-0.73, -14.88, 7.81] + }, + "0.5": { + "vector": [-1.34, -14.94, 10.18] + }, + "0.5417": { + "vector": [-1.51, -14.98, 10.87] + }, + "0.5833": { + "vector": [-1.43, -15, 10.56] + }, + "0.625": { + "vector": [-1.17, -15.01, 9.53] + }, + "0.6667": { + "vector": [-0.79, -15.02, 8.07] + }, + "0.7083": { + "vector": [-0.38, -15.01, 6.46] + }, + "0.75": { + "vector": [0, -15, 5] + }, + "0.7917": { + "vector": [0.44, -14.97, 3.31] + }, + "0.8333": { + "vector": [1.01, -14.93, 1.07] + }, + "0.875": { + "vector": [1.62, -14.87, -1.3] + }, + "0.9167": { + "vector": [2.17, -14.82, -3.43] + }, + "0.9583": { + "vector": [2.55, -14.78, -4.91] + }, + "1.0": { + "vector": [2.66, -14.77, -5.35] + }, + "1.0417": { + "vector": [2.41, -14.78, -4.36] + }, + "1.0833": { + "vector": [1.85, -14.81, -2.18] + }, + "1.125": { + "vector": [1.12, -14.86, 0.64] + }, + "1.1667": { + "vector": [0.37, -14.91, 3.56] + }, + "1.2083": { + "vector": [-0.28, -14.96, 6.06] + }, + "1.25": { + "vector": [-0.67, -14.99, 7.59] + }, + "1.2917": { + "vector": [-0.83, -15.01, 8.2] + }, + "1.3333": { + "vector": [-0.87, -15.03, 8.35] + }, + "1.375": { + "vector": [-0.79, -15.04, 8.07] + }, + "1.4167": { + "vector": [-0.62, -15.04, 7.39] + }, + "1.4583": { + "vector": [-0.35, -15.03, 6.36] + }, + "1.5": { + "vector": [0, -15, 5] + } + } + }, + "leftBackLeg": { + "rotation": { + "0.0": { + "vector": [0, 0, 5] + }, + "0.0417": { + "vector": [0, 0, 6.1] + }, + "0.0833": { + "vector": [0, 0, 7.37] + }, + "0.125": { + "vector": [0, 0, 8.5] + }, + "0.1667": { + "vector": [0, 0, 9.2] + }, + "0.2083": { + "vector": [0, 0, 9.17] + }, + "0.25": { + "vector": [0, 0, 7.48] + }, + "0.2917": { + "vector": [0, 0, 4.53] + }, + "0.3333": { + "vector": [0, 0, 1.61] + }, + "0.375": { + "vector": [0, 0, 0] + }, + "0.4167": { + "vector": [0, 0, -0.09] + }, + "0.4583": { + "vector": [0, 0, 0.08] + }, + "0.5": { + "vector": [0, 0, 0.46] + }, + "0.5417": { + "vector": [0, 0, 1.02] + }, + "0.5833": { + "vector": [0, 0, 1.71] + }, + "0.625": { + "vector": [0, 0, 2.5] + }, + "0.6667": { + "vector": [0, 0, 3.34] + }, + "0.7083": { + "vector": [0, 0, 4.18] + }, + "0.75": { + "vector": [0, 0, 5] + }, + "0.7917": { + "vector": [0, 0, 6.94] + }, + "0.8333": { + "vector": [0, 0, 9.49] + }, + "0.875": { + "vector": [0, 0, 11.98] + }, + "0.9167": { + "vector": [0, 0, 13.76] + }, + "0.9583": { + "vector": [0, 0, 14.17] + }, + "1.0": { + "vector": [0, 0, 11.82] + }, + "1.0417": { + "vector": [0, 0, 7.35] + }, + "1.0833": { + "vector": [0, 0, 2.74] + }, + "1.125": { + "vector": [0, 0, 0] + }, + "1.1667": { + "vector": [0, 0, -0.28] + }, + "1.2083": { + "vector": [0, 0, -0.16] + }, + "1.25": { + "vector": [0, 0, 0.28] + }, + "1.2917": { + "vector": [0, 0, 0.95] + }, + "1.3333": { + "vector": [0, 0, 1.78] + }, + "1.375": { + "vector": [0, 0, 2.68] + }, + "1.4167": { + "vector": [0, 0, 3.58] + }, + "1.4583": { + "vector": [0, 0, 4.38] + }, + "1.5": { + "vector": [0, 0, 5] + } + } + }, + "leftBackFoot": { + "rotation": { + "0.0": { + "vector": [0, 0, -30] + }, + "0.0417": { + "vector": [0, 0, -33.21] + }, + "0.0833": { + "vector": [0, 0, -36.67] + }, + "0.125": { + "vector": [0, 0, -39.84] + }, + "0.1667": { + "vector": [0, 0, -42.22] + }, + "0.2083": { + "vector": [0, 0, -43.28] + }, + "0.25": { + "vector": [0, 0, -42.5] + }, + "0.2917": { + "vector": [0, 0, -38.75] + }, + "0.3333": { + "vector": [0, 0, -32.22] + }, + "0.375": { + "vector": [0, 0, -24.37] + }, + "0.4167": { + "vector": [0, 0, -16.67] + }, + "0.4583": { + "vector": [0, 0, -10.56] + }, + "0.5": { + "vector": [0, 0, -7.5] + }, + "0.5417": { + "vector": [0, 0, -8.04] + }, + "0.5833": { + "vector": [0, 0, -11.11] + }, + "0.625": { + "vector": [0, 0, -15.78] + }, + "0.6667": { + "vector": [0, 0, -21.11] + }, + "0.7083": { + "vector": [0, 0, -26.16] + }, + "0.75": { + "vector": [0, 0, -30] + }, + "0.7917": { + "vector": [0, 0, -33.21] + }, + "0.8333": { + "vector": [0, 0, -36.67] + }, + "0.875": { + "vector": [0, 0, -39.84] + }, + "0.9167": { + "vector": [0, 0, -42.22] + }, + "0.9583": { + "vector": [0, 0, -43.28] + }, + "1.0": { + "vector": [0, 0, -42.5] + }, + "1.0417": { + "vector": [0, 0, -38.75] + }, + "1.0833": { + "vector": [0, 0, -32.22] + }, + "1.125": { + "vector": [0, 0, -24.37] + }, + "1.1667": { + "vector": [0, 0, -16.67] + }, + "1.2083": { + "vector": [0, 0, -10.56] + }, + "1.25": { + "vector": [0, 0, -7.5] + }, + "1.2917": { + "vector": [0, 0, -8.04] + }, + "1.3333": { + "vector": [0, 0, -11.11] + }, + "1.375": { + "vector": [0, 0, -15.78] + }, + "1.4167": { + "vector": [0, 0, -21.11] + }, + "1.4583": { + "vector": [0, 0, -26.16] + }, + "1.5": { + "vector": [0, 0, -30] + } + } + }, + "leftFrontLeg": { + "rotation": { + "0.0": { + "vector": [0, 0, 35] + }, + "0.0417": { + "vector": [0, 0, 34.49] + }, + "0.0833": { + "vector": [0, 0, 33.11] + }, + "0.125": { + "vector": [0, 0, 31.11] + }, + "0.1667": { + "vector": [0, 0, 28.74] + }, + "0.2083": { + "vector": [0, 0, 26.26] + }, + "0.25": { + "vector": [0, 0, 23.89] + }, + "0.2917": { + "vector": [0, 0, 21.89] + }, + "0.3333": { + "vector": [0, 0, 20.51] + }, + "0.375": { + "vector": [0, 0, 20] + }, + "0.4167": { + "vector": [0, 0, 20.51] + }, + "0.4583": { + "vector": [0, 0, 21.89] + }, + "0.5": { + "vector": [0, 0, 23.89] + }, + "0.5417": { + "vector": [0, 0, 26.26] + }, + "0.5833": { + "vector": [0, 0, 28.74] + }, + "0.625": { + "vector": [0, 0, 31.11] + }, + "0.6667": { + "vector": [0, 0, 33.11] + }, + "0.7083": { + "vector": [0, 0, 34.49] + }, + "0.75": { + "vector": [0, 0, 35] + }, + "0.7917": { + "vector": [0, 0, 34.49] + }, + "0.8333": { + "vector": [0, 0, 33.11] + }, + "0.875": { + "vector": [0, 0, 31.11] + }, + "0.9167": { + "vector": [0, 0, 28.74] + }, + "0.9583": { + "vector": [0, 0, 26.26] + }, + "1.0": { + "vector": [0, 0, 23.89] + }, + "1.0417": { + "vector": [0, 0, 21.89] + }, + "1.0833": { + "vector": [0, 0, 20.51] + }, + "1.125": { + "vector": [0, 0, 20] + }, + "1.1667": { + "vector": [0, 0, 20.51] + }, + "1.2083": { + "vector": [0, 0, 21.89] + }, + "1.25": { + "vector": [0, 0, 23.89] + }, + "1.2917": { + "vector": [0, 0, 26.26] + }, + "1.3333": { + "vector": [0, 0, 28.74] + }, + "1.375": { + "vector": [0, 0, 31.11] + }, + "1.4167": { + "vector": [0, 0, 33.11] + }, + "1.4583": { + "vector": [0, 0, 34.49] + }, + "1.5": { + "vector": [0, 0, 35] + } + } + }, + "leftFrontFoot": { + "rotation": { + "0.0": { + "vector": [0, 0, -10] + }, + "0.0417": { + "vector": [0, 0, -7.64] + }, + "0.0833": { + "vector": [0, 0, -5] + }, + "0.125": { + "vector": [0, 0, -2.5] + }, + "0.1667": { + "vector": [0, 0, -0.56] + }, + "0.2083": { + "vector": [0, 0, 0.42] + }, + "0.25": { + "vector": [0, 0, 0] + }, + "0.2917": { + "vector": [0, 0, -2.6] + }, + "0.3333": { + "vector": [0, 0, -7.22] + }, + "0.375": { + "vector": [0, 0, -12.81] + }, + "0.4167": { + "vector": [0, 0, -18.33] + }, + "0.4583": { + "vector": [0, 0, -22.74] + }, + "0.5": { + "vector": [0, 0, -25] + }, + "0.5417": { + "vector": [0, 0, -24.76] + }, + "0.5833": { + "vector": [0, 0, -22.78] + }, + "0.625": { + "vector": [0, 0, -19.69] + }, + "0.6667": { + "vector": [0, 0, -16.11] + }, + "0.7083": { + "vector": [0, 0, -12.67] + }, + "0.75": { + "vector": [0, 0, -10] + }, + "0.7917": { + "vector": [0, 0, -7.64] + }, + "0.8333": { + "vector": [0, 0, -5] + }, + "0.875": { + "vector": [0, 0, -2.5] + }, + "0.9167": { + "vector": [0, 0, -0.56] + }, + "0.9583": { + "vector": [0, 0, 0.42] + }, + "1.0": { + "vector": [0, 0, 0] + }, + "1.0417": { + "vector": [0, 0, -2.6] + }, + "1.0833": { + "vector": [0, 0, -7.22] + }, + "1.125": { + "vector": [0, 0, -12.81] + }, + "1.1667": { + "vector": [0, 0, -18.33] + }, + "1.2083": { + "vector": [0, 0, -22.74] + }, + "1.25": { + "vector": [0, 0, -25] + }, + "1.2917": { + "vector": [0, 0, -24.76] + }, + "1.3333": { + "vector": [0, 0, -22.78] + }, + "1.375": { + "vector": [0, 0, -19.69] + }, + "1.4167": { + "vector": [0, 0, -16.11] + }, + "1.4583": { + "vector": [0, 0, -12.67] + }, + "1.5": { + "vector": [0, 0, -10] + } + } + } + } + }, + "attack": { + "loop": true, + "animation_length": 0.75, + "bones": { + "body": { + "rotation": { + "0.0": { + "vector": [5, 0, 0] + }, + "0.0417": { + "vector": [2.33, 0, 0] + }, + "0.0833": { + "vector": [-1.11, 0, 0] + }, + "0.125": { + "vector": [-4.69, 0, 0] + }, + "0.1667": { + "vector": [-7.78, 0, 0] + }, + "0.2083": { + "vector": [-9.76, 0, 0] + }, + "0.25": { + "vector": [-10, 0, 0] + }, + "0.2917": { + "vector": [-7.74, 0, 0] + }, + "0.3333": { + "vector": [-3.33, 0, 0] + }, + "0.375": { + "vector": [2.19, 0, 0] + }, + "0.4167": { + "vector": [7.78, 0, 0] + }, + "0.4583": { + "vector": [12.4, 0, 0] + }, + "0.5": { + "vector": [15, 0, 0] + }, + "0.5417": { + "vector": [15.42, 0, 0] + }, + "0.5833": { + "vector": [14.44, 0, 0] + }, + "0.625": { + "vector": [12.5, 0, 0] + }, + "0.6667": { + "vector": [10, 0, 0] + }, + "0.7083": { + "vector": [7.36, 0, 0] + }, + "0.75": { + "vector": [5, 0, 0] + } + }, + "position": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.0417": { + "vector": [0, 0.21, 0.18] + }, + "0.0833": { + "vector": [0, 0.47, 0.52] + }, + "0.125": { + "vector": [0, 0.74, 0.86] + }, + "0.1667": { + "vector": [0, 1, 1] + }, + "0.2083": { + "vector": [0, 1.42, 0.82] + }, + "0.25": { + "vector": [0, 1.84, 0.39] + }, + "0.2917": { + "vector": [0, 1.88, -0.12] + }, + "0.3333": { + "vector": [0, 1.45, -0.67] + }, + "0.375": { + "vector": [0, 0.71, -1.35] + }, + "0.4167": { + "vector": [0, -0.04, -1.92] + }, + "0.4583": { + "vector": [0, -0.54, -2.09] + }, + "0.5": { + "vector": [0, -0.67, -1.37] + }, + "0.5417": { + "vector": [0, -0.51, -0.12] + }, + "0.5833": { + "vector": [0, -0.33, 0.74] + }, + "0.625": { + "vector": [0, -0.27, 0.77] + }, + "0.6667": { + "vector": [0, -0.21, 0.48] + }, + "0.7083": { + "vector": [0, -0.13, 0.15] + }, + "0.75": { + "vector": [0, 0, 0] + } + } + }, + "topHeadClawThing": { + "rotation": { + "0.0": { + "vector": [35, 0, 0] + }, + "0.0417": { + "vector": [28.92, 0, 0] + }, + "0.0833": { + "vector": [22.22, 0, 0] + }, + "0.125": { + "vector": [15.94, 0, 0] + }, + "0.1667": { + "vector": [11.11, 0, 0] + }, + "0.2083": { + "vector": [8.78, 0, 0] + }, + "0.25": { + "vector": [10, 0, 0] + }, + "0.2917": { + "vector": [16.84, 0, 0] + }, + "0.3333": { + "vector": [28.89, 0, 0] + }, + "0.375": { + "vector": [43.44, 0, 0] + }, + "0.4167": { + "vector": [57.78, 0, 0] + }, + "0.4583": { + "vector": [69.2, 0, 0] + }, + "0.5": { + "vector": [75, 0, 0] + }, + "0.5417": { + "vector": [74.24, 0, 0] + }, + "0.5833": { + "vector": [68.89, 0, 0] + }, + "0.625": { + "vector": [60.62, 0, 0] + }, + "0.6667": { + "vector": [51.11, 0, 0] + }, + "0.7083": { + "vector": [42.01, 0, 0] + }, + "0.75": { + "vector": [35, 0, 0] + } + } + }, + "rightFrontThigh": { + "rotation": { + "0.0": { + "vector": [0, -15, -5] + }, + "0.0417": { + "vector": [-1.11, -14.94, -0.69] + }, + "0.0833": { + "vector": [-2.29, -14.83, 3.91] + }, + "0.125": { + "vector": [-2.66, -14.77, 5.35] + }, + "0.1667": { + "vector": [-1.4, -14.77, 0.46] + }, + "0.2083": { + "vector": [0.67, -14.82, -7.59] + }, + "0.25": { + "vector": [2, -14.87, -12.76] + }, + "0.2917": { + "vector": [1.85, -14.92, -12.19] + }, + "0.3333": { + "vector": [0.96, -14.98, -8.74] + }, + "0.375": { + "vector": [0, -15, -5] + }, + "0.4167": { + "vector": [-1.11, -14.94, -0.69] + }, + "0.4583": { + "vector": [-2.29, -14.83, 3.91] + }, + "0.5": { + "vector": [-2.66, -14.77, 5.35] + }, + "0.5417": { + "vector": [-1.4, -14.77, 0.46] + }, + "0.5833": { + "vector": [0.67, -14.82, -7.59] + }, + "0.625": { + "vector": [2, -14.87, -12.76] + }, + "0.6667": { + "vector": [1.85, -14.92, -12.19] + }, + "0.7083": { + "vector": [0.96, -14.98, -8.74] + }, + "0.75": { + "vector": [0, -15, -5] + } + } + }, + "rightFrontLeg": { + "rotation": { + "0.0": { + "vector": [0, 0, -35] + }, + "0.0417": { + "vector": [0, 0, -32.66] + }, + "0.0833": { + "vector": [0, 0, -27.5] + }, + "0.125": { + "vector": [0, 0, -22.34] + }, + "0.1667": { + "vector": [0, 0, -20] + }, + "0.2083": { + "vector": [0, 0, -21.56] + }, + "0.25": { + "vector": [0, 0, -25.28] + }, + "0.2917": { + "vector": [0, 0, -29.72] + }, + "0.3333": { + "vector": [0, 0, -33.44] + }, + "0.375": { + "vector": [0, 0, -35] + }, + "0.4167": { + "vector": [0, 0, -32.66] + }, + "0.4583": { + "vector": [0, 0, -27.5] + }, + "0.5": { + "vector": [0, 0, -22.34] + }, + "0.5417": { + "vector": [0, 0, -20] + }, + "0.5833": { + "vector": [0, 0, -21.56] + }, + "0.625": { + "vector": [0, 0, -25.28] + }, + "0.6667": { + "vector": [0, 0, -29.72] + }, + "0.7083": { + "vector": [0, 0, -33.44] + }, + "0.75": { + "vector": [0, 0, -35] + } + } + }, + "rightFrontFoot": { + "rotation": { + "0.0": { + "vector": [0, 0, 10] + }, + "0.0417": { + "vector": [0, 0, 5] + }, + "0.0833": { + "vector": [0, 0, 0.56] + }, + "0.125": { + "vector": [0, 0, 0] + }, + "0.1667": { + "vector": [0, 0, 7.22] + }, + "0.2083": { + "vector": [0, 0, 18.33] + }, + "0.25": { + "vector": [0, 0, 25] + }, + "0.2917": { + "vector": [0, 0, 22.78] + }, + "0.3333": { + "vector": [0, 0, 16.11] + }, + "0.375": { + "vector": [0, 0, 10] + }, + "0.4167": { + "vector": [0, 0, 5] + }, + "0.4583": { + "vector": [0, 0, 0.56] + }, + "0.5": { + "vector": [0, 0, 0] + }, + "0.5417": { + "vector": [0, 0, 7.22] + }, + "0.5833": { + "vector": [0, 0, 18.33] + }, + "0.625": { + "vector": [0, 0, 25] + }, + "0.6667": { + "vector": [0, 0, 22.78] + }, + "0.7083": { + "vector": [0, 0, 16.11] + }, + "0.75": { + "vector": [0, 0, 10] + } + } + }, + "rightBackThigh": { + "rotation": { + "0.0": { + "vector": [0, 15, -5] + }, + "0.0417": { + "vector": [1.42, 14.83, 0.55] + }, + "0.0833": { + "vector": [3.21, 14.6, 7.54] + }, + "0.125": { + "vector": [3.97, 14.48, 10.5] + }, + "0.1667": { + "vector": [2.64, 14.57, 5.33] + }, + "0.2083": { + "vector": [0.28, 14.78, -3.86] + }, + "0.25": { + "vector": [-1.34, 14.94, -10.18] + }, + "0.2917": { + "vector": [-1.43, 15, -10.56] + }, + "0.3333": { + "vector": [-0.79, 15.02, -8.07] + }, + "0.375": { + "vector": [0, 15, -5] + }, + "0.4167": { + "vector": [1.01, 14.93, -1.07] + }, + "0.4583": { + "vector": [2.17, 14.82, 3.43] + }, + "0.5": { + "vector": [2.66, 14.77, 5.35] + }, + "0.5417": { + "vector": [1.85, 14.81, 2.18] + }, + "0.5833": { + "vector": [0.37, 14.91, -3.56] + }, + "0.625": { + "vector": [-0.67, 14.99, -7.59] + }, + "0.6667": { + "vector": [-0.87, 15.03, -8.35] + }, + "0.7083": { + "vector": [-0.62, 15.04, -7.39] + }, + "0.75": { + "vector": [0, 15, -5] + } + } + }, + "rightBackLeg": { + "rotation": { + "0.0": { + "vector": [0, 0, -5] + }, + "0.0417": { + "vector": [0, 0, -7.97] + }, + "0.0833": { + "vector": [0, 0, -9.17] + }, + "0.125": { + "vector": [0, 0, -4.53] + }, + "0.1667": { + "vector": [0, 0, 0] + }, + "0.2083": { + "vector": [0, 0, -0.03] + }, + "0.25": { + "vector": [0, 0, -0.78] + }, + "0.2917": { + "vector": [0, 0, -2.02] + }, + "0.3333": { + "vector": [0, 0, -3.51] + }, + "0.375": { + "vector": [0, 0, -5] + }, + "0.4167": { + "vector": [0, 0, -10.78] + }, + "0.4583": { + "vector": [0, 0, -14.17] + }, + "0.5": { + "vector": [0, 0, -7.35] + }, + "0.5417": { + "vector": [0, 0, 0] + }, + "0.5833": { + "vector": [0, 0, 0.21] + }, + "0.625": { + "vector": [0, 0, -0.66] + }, + "0.6667": { + "vector": [0, 0, -2.14] + }, + "0.7083": { + "vector": [0, 0, -3.75] + }, + "0.75": { + "vector": [0, 0, -5] + } + } + }, + "rightBackFoot": { + "rotation": { + "0.0": { + "vector": [0, 0, 30] + }, + "0.0417": { + "vector": [0, 0, 36.67] + }, + "0.0833": { + "vector": [0, 0, 42.22] + }, + "0.125": { + "vector": [0, 0, 42.5] + }, + "0.1667": { + "vector": [0, 0, 32.22] + }, + "0.2083": { + "vector": [0, 0, 16.67] + }, + "0.25": { + "vector": [0, 0, 7.5] + }, + "0.2917": { + "vector": [0, 0, 11.11] + }, + "0.3333": { + "vector": [0, 0, 21.11] + }, + "0.375": { + "vector": [0, 0, 30] + }, + "0.4167": { + "vector": [0, 0, 36.67] + }, + "0.4583": { + "vector": [0, 0, 42.22] + }, + "0.5": { + "vector": [0, 0, 42.5] + }, + "0.5417": { + "vector": [0, 0, 32.22] + }, + "0.5833": { + "vector": [0, 0, 16.67] + }, + "0.625": { + "vector": [0, 0, 7.5] + }, + "0.6667": { + "vector": [0, 0, 11.11] + }, + "0.7083": { + "vector": [0, 0, 21.11] + }, + "0.75": { + "vector": [0, 0, 30] + } + } + }, + "leftHeadClawThing": { + "rotation": { + "0.0": { + "vector": [-35, 0, -25] + }, + "0.0417": { + "vector": [-28.92, 0, -25] + }, + "0.0833": { + "vector": [-22.22, 0, -25] + }, + "0.125": { + "vector": [-15.94, 0, -25] + }, + "0.1667": { + "vector": [-11.11, 0, -25] + }, + "0.2083": { + "vector": [-8.78, 0, -25] + }, + "0.25": { + "vector": [-10, 0, -25] + }, + "0.2917": { + "vector": [-16.84, 0, -25] + }, + "0.3333": { + "vector": [-28.89, 0, -25] + }, + "0.375": { + "vector": [-43.44, 0, -25] + }, + "0.4167": { + "vector": [-57.78, 0, -25] + }, + "0.4583": { + "vector": [-69.2, 0, -25] + }, + "0.5": { + "vector": [-75, 0, -25] + }, + "0.5417": { + "vector": [-74.24, 0, -25] + }, + "0.5833": { + "vector": [-68.89, 0, -25] + }, + "0.625": { + "vector": [-60.63, 0, -25] + }, + "0.6667": { + "vector": [-51.11, 0, -25] + }, + "0.7083": { + "vector": [-42.01, 0, -25] + }, + "0.75": { + "vector": [-35, 0, -25] + } + } + }, + "rightHeadClawThing": { + "rotation": { + "0.0": { + "vector": [-35, 0, 25] + }, + "0.0417": { + "vector": [-28.92, 0, 25] + }, + "0.0833": { + "vector": [-22.22, 0, 25] + }, + "0.125": { + "vector": [-15.94, 0, 25] + }, + "0.1667": { + "vector": [-11.11, 0, 25] + }, + "0.2083": { + "vector": [-8.78, 0, 25] + }, + "0.25": { + "vector": [-10, 0, 25] + }, + "0.2917": { + "vector": [-16.84, 0, 25] + }, + "0.3333": { + "vector": [-28.89, 0, 25] + }, + "0.375": { + "vector": [-43.44, 0, 25] + }, + "0.4167": { + "vector": [-57.78, 0, 25] + }, + "0.4583": { + "vector": [-69.2, 0, 25] + }, + "0.5": { + "vector": [-75, 0, 25] + }, + "0.5417": { + "vector": [-74.24, 0, 25] + }, + "0.5833": { + "vector": [-68.89, 0, 25] + }, + "0.625": { + "vector": [-60.63, 0, 25] + }, + "0.6667": { + "vector": [-51.11, 0, 25] + }, + "0.7083": { + "vector": [-42.01, 0, 25] + }, + "0.75": { + "vector": [-35, 0, 25] + } + } + }, + "leftFrontThigh": { + "rotation": { + "0.0": { + "vector": [0, 15, 5] + }, + "0.0417": { + "vector": [-1.11, 14.94, 0.69] + }, + "0.0833": { + "vector": [-2.29, 14.83, -3.91] + }, + "0.125": { + "vector": [-2.66, 14.77, -5.35] + }, + "0.1667": { + "vector": [-1.4, 14.77, -0.46] + }, + "0.2083": { + "vector": [0.67, 14.82, 7.59] + }, + "0.25": { + "vector": [2, 14.87, 12.76] + }, + "0.2917": { + "vector": [1.85, 14.92, 12.19] + }, + "0.3333": { + "vector": [0.96, 14.98, 8.74] + }, + "0.375": { + "vector": [0, 15, 5] + }, + "0.4167": { + "vector": [-1.11, 14.94, 0.69] + }, + "0.4583": { + "vector": [-2.29, 14.83, -3.91] + }, + "0.5": { + "vector": [-2.66, 14.77, -5.35] + }, + "0.5417": { + "vector": [-1.4, 14.77, -0.46] + }, + "0.5833": { + "vector": [0.67, 14.82, 7.59] + }, + "0.625": { + "vector": [2, 14.87, 12.76] + }, + "0.6667": { + "vector": [1.85, 14.92, 12.19] + }, + "0.7083": { + "vector": [0.96, 14.98, 8.74] + }, + "0.75": { + "vector": [0, 15, 5] + } + } + }, + "leftBackThigh": { + "rotation": { + "0.0": { + "vector": [0, -15, 5] + }, + "0.0417": { + "vector": [1.42, -14.83, -0.55] + }, + "0.0833": { + "vector": [3.21, -14.6, -7.54] + }, + "0.125": { + "vector": [3.97, -14.48, -10.5] + }, + "0.1667": { + "vector": [2.64, -14.57, -5.33] + }, + "0.2083": { + "vector": [0.28, -14.78, 3.86] + }, + "0.25": { + "vector": [-1.34, -14.94, 10.18] + }, + "0.2917": { + "vector": [-1.43, -15, 10.56] + }, + "0.3333": { + "vector": [-0.79, -15.02, 8.07] + }, + "0.375": { + "vector": [0, -15, 5] + }, + "0.4167": { + "vector": [1.01, -14.93, 1.07] + }, + "0.4583": { + "vector": [2.17, -14.82, -3.43] + }, + "0.5": { + "vector": [2.66, -14.77, -5.35] + }, + "0.5417": { + "vector": [1.85, -14.81, -2.18] + }, + "0.5833": { + "vector": [0.37, -14.91, 3.56] + }, + "0.625": { + "vector": [-0.67, -14.99, 7.59] + }, + "0.6667": { + "vector": [-0.87, -15.03, 8.35] + }, + "0.7083": { + "vector": [-0.62, -15.04, 7.39] + }, + "0.75": { + "vector": [0, -15, 5] + } + } + }, + "leftBackLeg": { + "rotation": { + "0.0": { + "vector": [0, 0, 5] + }, + "0.0417": { + "vector": [0, 0, 7.97] + }, + "0.0833": { + "vector": [0, 0, 9.17] + }, + "0.125": { + "vector": [0, 0, 4.53] + }, + "0.1667": { + "vector": [0, 0, 0] + }, + "0.2083": { + "vector": [0, 0, 0.03] + }, + "0.25": { + "vector": [0, 0, 0.78] + }, + "0.2917": { + "vector": [0, 0, 2.02] + }, + "0.3333": { + "vector": [0, 0, 3.51] + }, + "0.375": { + "vector": [0, 0, 5] + }, + "0.4167": { + "vector": [0, 0, 10.78] + }, + "0.4583": { + "vector": [0, 0, 14.17] + }, + "0.5": { + "vector": [0, 0, 7.35] + }, + "0.5417": { + "vector": [0, 0, 0] + }, + "0.5833": { + "vector": [0, 0, -0.21] + }, + "0.625": { + "vector": [0, 0, 0.66] + }, + "0.6667": { + "vector": [0, 0, 2.14] + }, + "0.7083": { + "vector": [0, 0, 3.75] + }, + "0.75": { + "vector": [0, 0, 5] + } + } + }, + "leftBackFoot": { + "rotation": { + "0.0": { + "vector": [0, 0, -30] + }, + "0.0417": { + "vector": [0, 0, -36.67] + }, + "0.0833": { + "vector": [0, 0, -42.22] + }, + "0.125": { + "vector": [0, 0, -42.5] + }, + "0.1667": { + "vector": [0, 0, -32.22] + }, + "0.2083": { + "vector": [0, 0, -16.67] + }, + "0.25": { + "vector": [0, 0, -7.5] + }, + "0.2917": { + "vector": [0, 0, -11.11] + }, + "0.3333": { + "vector": [0, 0, -21.11] + }, + "0.375": { + "vector": [0, 0, -30] + }, + "0.4167": { + "vector": [0, 0, -36.67] + }, + "0.4583": { + "vector": [0, 0, -42.22] + }, + "0.5": { + "vector": [0, 0, -42.5] + }, + "0.5417": { + "vector": [0, 0, -32.22] + }, + "0.5833": { + "vector": [0, 0, -16.67] + }, + "0.625": { + "vector": [0, 0, -7.5] + }, + "0.6667": { + "vector": [0, 0, -11.11] + }, + "0.7083": { + "vector": [0, 0, -21.11] + }, + "0.75": { + "vector": [0, 0, -30] + } + } + }, + "leftFrontLeg": { + "rotation": { + "0.0": { + "vector": [0, 0, 35] + }, + "0.0417": { + "vector": [0, 0, 32.66] + }, + "0.0833": { + "vector": [0, 0, 27.5] + }, + "0.125": { + "vector": [0, 0, 22.34] + }, + "0.1667": { + "vector": [0, 0, 20] + }, + "0.2083": { + "vector": [0, 0, 21.56] + }, + "0.25": { + "vector": [0, 0, 25.28] + }, + "0.2917": { + "vector": [0, 0, 29.72] + }, + "0.3333": { + "vector": [0, 0, 33.44] + }, + "0.375": { + "vector": [0, 0, 35] + }, + "0.4167": { + "vector": [0, 0, 32.66] + }, + "0.4583": { + "vector": [0, 0, 27.5] + }, + "0.5": { + "vector": [0, 0, 22.34] + }, + "0.5417": { + "vector": [0, 0, 20] + }, + "0.5833": { + "vector": [0, 0, 21.56] + }, + "0.625": { + "vector": [0, 0, 25.28] + }, + "0.6667": { + "vector": [0, 0, 29.72] + }, + "0.7083": { + "vector": [0, 0, 33.44] + }, + "0.75": { + "vector": [0, 0, 35] + } + } + }, + "leftFrontFoot": { + "rotation": { + "0.0": { + "vector": [0, 0, -10] + }, + "0.0417": { + "vector": [0, 0, -5] + }, + "0.0833": { + "vector": [0, 0, -0.56] + }, + "0.125": { + "vector": [0, 0, 0] + }, + "0.1667": { + "vector": [0, 0, -7.22] + }, + "0.2083": { + "vector": [0, 0, -18.33] + }, + "0.25": { + "vector": [0, 0, -25] + }, + "0.2917": { + "vector": [0, 0, -22.78] + }, + "0.3333": { + "vector": [0, 0, -16.11] + }, + "0.375": { + "vector": [0, 0, -10] + }, + "0.4167": { + "vector": [0, 0, -5] + }, + "0.4583": { + "vector": [0, 0, -0.56] + }, + "0.5": { + "vector": [0, 0, 0] + }, + "0.5417": { + "vector": [0, 0, -7.22] + }, + "0.5833": { + "vector": [0, 0, -18.33] + }, + "0.625": { + "vector": [0, 0, -25] + }, + "0.6667": { + "vector": [0, 0, -22.78] + }, + "0.7083": { + "vector": [0, 0, -16.11] + }, + "0.75": { + "vector": [0, 0, -10] + } + } + } + } + } + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/antarchy/animations/gamma_metroid.animation.json b/common/src/main/resources/assets/antarchy/animations/gamma_metroid.animation.json new file mode 100644 index 00000000..e7fb6946 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/animations/gamma_metroid.animation.json @@ -0,0 +1,9461 @@ +{ + "format_version": "1.8.0", + "animations": { + "idle": { + "loop": true, + "animation_length": 4, + "bones": { + "root": { + "position": { + "0.0": { + "vector": [0, 4, 0] + }, + "0.0417": { + "vector": [0, 4.01, 0.02] + }, + "0.0833": { + "vector": [0, 4.02, 0.04] + }, + "0.125": { + "vector": [0, 4.04, 0.05] + }, + "0.1667": { + "vector": [0, 4.07, 0.07] + }, + "0.2083": { + "vector": [0, 4.11, 0.08] + }, + "0.25": { + "vector": [0, 4.16, 0.09] + }, + "0.2917": { + "vector": [0, 4.21, 0.1] + }, + "0.3333": { + "vector": [0, 4.26, 0.11] + }, + "0.375": { + "vector": [0, 4.32, 0.12] + }, + "0.4167": { + "vector": [0, 4.38, 0.12] + }, + "0.4583": { + "vector": [0, 4.44, 0.12] + }, + "0.5": { + "vector": [0, 4.5, 0.13] + }, + "0.5417": { + "vector": [0, 4.56, 0.12] + }, + "0.5833": { + "vector": [0, 4.62, 0.12] + }, + "0.625": { + "vector": [0, 4.68, 0.12] + }, + "0.6667": { + "vector": [0, 4.74, 0.11] + }, + "0.7083": { + "vector": [0, 4.79, 0.1] + }, + "0.75": { + "vector": [0, 4.84, 0.09] + }, + "0.7917": { + "vector": [0, 4.89, 0.08] + }, + "0.8333": { + "vector": [0, 4.93, 0.07] + }, + "0.875": { + "vector": [0, 4.96, 0.05] + }, + "0.9167": { + "vector": [0, 4.98, 0.04] + }, + "0.9583": { + "vector": [0, 4.99, 0.02] + }, + "1.0": { + "vector": [0, 5, 0] + }, + "1.0417": { + "vector": [0, 4.99, -0.02] + }, + "1.0833": { + "vector": [0, 4.98, -0.05] + }, + "1.125": { + "vector": [0, 4.96, -0.08] + }, + "1.1667": { + "vector": [0, 4.93, -0.12] + }, + "1.2083": { + "vector": [0, 4.89, -0.16] + }, + "1.25": { + "vector": [0, 4.84, -0.2] + }, + "1.2917": { + "vector": [0, 4.79, -0.25] + }, + "1.3333": { + "vector": [0, 4.74, -0.3] + }, + "1.375": { + "vector": [0, 4.68, -0.35] + }, + "1.4167": { + "vector": [0, 4.62, -0.4] + }, + "1.4583": { + "vector": [0, 4.56, -0.45] + }, + "1.5": { + "vector": [0, 4.5, -0.5] + }, + "1.5417": { + "vector": [0, 4.44, -0.55] + }, + "1.5833": { + "vector": [0, 4.38, -0.6] + }, + "1.625": { + "vector": [0, 4.32, -0.65] + }, + "1.6667": { + "vector": [0, 4.26, -0.7] + }, + "1.7083": { + "vector": [0, 4.21, -0.75] + }, + "1.75": { + "vector": [0, 4.16, -0.8] + }, + "1.7917": { + "vector": [0, 4.11, -0.84] + }, + "1.8333": { + "vector": [0, 4.07, -0.88] + }, + "1.875": { + "vector": [0, 4.04, -0.92] + }, + "1.9167": { + "vector": [0, 4.02, -0.95] + }, + "1.9583": { + "vector": [0, 4.01, -0.98] + }, + "2.0": { + "vector": [0, 4, -1] + }, + "2.0417": { + "vector": [0, 4.01, -1.02] + }, + "2.0833": { + "vector": [0, 4.02, -1.04] + }, + "2.125": { + "vector": [0, 4.04, -1.05] + }, + "2.1667": { + "vector": [0, 4.07, -1.07] + }, + "2.2083": { + "vector": [0, 4.11, -1.08] + }, + "2.25": { + "vector": [0, 4.16, -1.09] + }, + "2.2917": { + "vector": [0, 4.21, -1.1] + }, + "2.3333": { + "vector": [0, 4.26, -1.11] + }, + "2.375": { + "vector": [0, 4.32, -1.12] + }, + "2.4167": { + "vector": [0, 4.38, -1.12] + }, + "2.4583": { + "vector": [0, 4.44, -1.12] + }, + "2.5": { + "vector": [0, 4.5, -1.12] + }, + "2.5417": { + "vector": [0, 4.56, -1.12] + }, + "2.5833": { + "vector": [0, 4.62, -1.12] + }, + "2.625": { + "vector": [0, 4.68, -1.12] + }, + "2.6667": { + "vector": [0, 4.74, -1.11] + }, + "2.7083": { + "vector": [0, 4.79, -1.1] + }, + "2.75": { + "vector": [0, 4.84, -1.09] + }, + "2.7917": { + "vector": [0, 4.89, -1.08] + }, + "2.8333": { + "vector": [0, 4.93, -1.07] + }, + "2.875": { + "vector": [0, 4.96, -1.05] + }, + "2.9167": { + "vector": [0, 4.98, -1.04] + }, + "2.9583": { + "vector": [0, 4.99, -1.02] + }, + "3.0": { + "vector": [0, 5, -1] + }, + "3.0417": { + "vector": [0, 4.99, -0.98] + }, + "3.0833": { + "vector": [0, 4.98, -0.95] + }, + "3.125": { + "vector": [0, 4.96, -0.92] + }, + "3.1667": { + "vector": [0, 4.93, -0.88] + }, + "3.2083": { + "vector": [0, 4.89, -0.84] + }, + "3.25": { + "vector": [0, 4.84, -0.8] + }, + "3.2917": { + "vector": [0, 4.79, -0.75] + }, + "3.3333": { + "vector": [0, 4.74, -0.7] + }, + "3.375": { + "vector": [0, 4.68, -0.65] + }, + "3.4167": { + "vector": [0, 4.62, -0.6] + }, + "3.4583": { + "vector": [0, 4.56, -0.55] + }, + "3.5": { + "vector": [0, 4.5, -0.5] + }, + "3.5417": { + "vector": [0, 4.44, -0.45] + }, + "3.5833": { + "vector": [0, 4.38, -0.4] + }, + "3.625": { + "vector": [0, 4.32, -0.35] + }, + "3.6667": { + "vector": [0, 4.26, -0.3] + }, + "3.7083": { + "vector": [0, 4.21, -0.25] + }, + "3.75": { + "vector": [0, 4.16, -0.2] + }, + "3.7917": { + "vector": [0, 4.11, -0.16] + }, + "3.8333": { + "vector": [0, 4.07, -0.12] + }, + "3.875": { + "vector": [0, 4.04, -0.08] + }, + "3.9167": { + "vector": [0, 4.02, -0.05] + }, + "3.9583": { + "vector": [0, 4.01, -0.02] + }, + "4.0": { + "vector": [0, 4, 0] + } + } + }, + "body": { + "rotation": { + "0.0": { + "vector": [-2.5, 0, 0] + }, + "0.0417": { + "vector": [-2.49, 0, 0] + }, + "0.0833": { + "vector": [-2.47, 0, 0] + }, + "0.125": { + "vector": [-2.43, 0, 0] + }, + "0.1667": { + "vector": [-2.37, 0, 0] + }, + "0.2083": { + "vector": [-2.31, 0, 0] + }, + "0.25": { + "vector": [-2.23, 0, 0] + }, + "0.2917": { + "vector": [-2.14, 0, 0] + }, + "0.3333": { + "vector": [-2.04, 0, 0] + }, + "0.375": { + "vector": [-1.93, 0, 0] + }, + "0.4167": { + "vector": [-1.81, 0, 0] + }, + "0.4583": { + "vector": [-1.69, 0, 0] + }, + "0.5": { + "vector": [-1.56, 0, 0] + }, + "0.5417": { + "vector": [-1.43, 0, 0] + }, + "0.5833": { + "vector": [-1.29, 0, 0] + }, + "0.625": { + "vector": [-1.16, 0, 0] + }, + "0.6667": { + "vector": [-1.02, 0, 0] + }, + "0.7083": { + "vector": [-0.88, 0, 0] + }, + "0.75": { + "vector": [-0.74, 0, 0] + }, + "0.7917": { + "vector": [-0.61, 0, 0] + }, + "0.8333": { + "vector": [-0.47, 0, 0] + }, + "0.875": { + "vector": [-0.35, 0, 0] + }, + "0.9167": { + "vector": [-0.22, 0, 0] + }, + "0.9583": { + "vector": [-0.11, 0, 0] + }, + "1.0": { + "vector": [0, 0, 0] + }, + "1.0417": { + "vector": [0.11, 0, 0] + }, + "1.0833": { + "vector": [0.22, 0, 0] + }, + "1.125": { + "vector": [0.35, 0, 0] + }, + "1.1667": { + "vector": [0.47, 0, 0] + }, + "1.2083": { + "vector": [0.61, 0, 0] + }, + "1.25": { + "vector": [0.74, 0, 0] + }, + "1.2917": { + "vector": [0.88, 0, 0] + }, + "1.3333": { + "vector": [1.02, 0, 0] + }, + "1.375": { + "vector": [1.16, 0, 0] + }, + "1.4167": { + "vector": [1.29, 0, 0] + }, + "1.4583": { + "vector": [1.43, 0, 0] + }, + "1.5": { + "vector": [1.56, 0, 0] + }, + "1.5417": { + "vector": [1.69, 0, 0] + }, + "1.5833": { + "vector": [1.81, 0, 0] + }, + "1.625": { + "vector": [1.93, 0, 0] + }, + "1.6667": { + "vector": [2.04, 0, 0] + }, + "1.7083": { + "vector": [2.14, 0, 0] + }, + "1.75": { + "vector": [2.23, 0, 0] + }, + "1.7917": { + "vector": [2.31, 0, 0] + }, + "1.8333": { + "vector": [2.37, 0, 0] + }, + "1.875": { + "vector": [2.43, 0, 0] + }, + "1.9167": { + "vector": [2.47, 0, 0] + }, + "1.9583": { + "vector": [2.49, 0, 0] + }, + "2.0": { + "vector": [2.5, 0, 0] + }, + "2.0417": { + "vector": [2.49, 0, 0] + }, + "2.0833": { + "vector": [2.47, 0, 0] + }, + "2.125": { + "vector": [2.43, 0, 0] + }, + "2.1667": { + "vector": [2.37, 0, 0] + }, + "2.2083": { + "vector": [2.31, 0, 0] + }, + "2.25": { + "vector": [2.23, 0, 0] + }, + "2.2917": { + "vector": [2.14, 0, 0] + }, + "2.3333": { + "vector": [2.04, 0, 0] + }, + "2.375": { + "vector": [1.93, 0, 0] + }, + "2.4167": { + "vector": [1.81, 0, 0] + }, + "2.4583": { + "vector": [1.69, 0, 0] + }, + "2.5": { + "vector": [1.56, 0, 0] + }, + "2.5417": { + "vector": [1.43, 0, 0] + }, + "2.5833": { + "vector": [1.29, 0, 0] + }, + "2.625": { + "vector": [1.16, 0, 0] + }, + "2.6667": { + "vector": [1.02, 0, 0] + }, + "2.7083": { + "vector": [0.88, 0, 0] + }, + "2.75": { + "vector": [0.74, 0, 0] + }, + "2.7917": { + "vector": [0.61, 0, 0] + }, + "2.8333": { + "vector": [0.47, 0, 0] + }, + "2.875": { + "vector": [0.35, 0, 0] + }, + "2.9167": { + "vector": [0.22, 0, 0] + }, + "2.9583": { + "vector": [0.11, 0, 0] + }, + "3.0": { + "vector": [0, 0, 0] + }, + "3.0417": { + "vector": [-0.11, 0, 0] + }, + "3.0833": { + "vector": [-0.22, 0, 0] + }, + "3.125": { + "vector": [-0.35, 0, 0] + }, + "3.1667": { + "vector": [-0.47, 0, 0] + }, + "3.2083": { + "vector": [-0.61, 0, 0] + }, + "3.25": { + "vector": [-0.74, 0, 0] + }, + "3.2917": { + "vector": [-0.88, 0, 0] + }, + "3.3333": { + "vector": [-1.02, 0, 0] + }, + "3.375": { + "vector": [-1.16, 0, 0] + }, + "3.4167": { + "vector": [-1.29, 0, 0] + }, + "3.4583": { + "vector": [-1.43, 0, 0] + }, + "3.5": { + "vector": [-1.56, 0, 0] + }, + "3.5417": { + "vector": [-1.69, 0, 0] + }, + "3.5833": { + "vector": [-1.81, 0, 0] + }, + "3.625": { + "vector": [-1.93, 0, 0] + }, + "3.6667": { + "vector": [-2.04, 0, 0] + }, + "3.7083": { + "vector": [-2.14, 0, 0] + }, + "3.75": { + "vector": [-2.23, 0, 0] + }, + "3.7917": { + "vector": [-2.31, 0, 0] + }, + "3.8333": { + "vector": [-2.37, 0, 0] + }, + "3.875": { + "vector": [-2.43, 0, 0] + }, + "3.9167": { + "vector": [-2.47, 0, 0] + }, + "3.9583": { + "vector": [-2.49, 0, 0] + }, + "4.0": { + "vector": [-2.5, 0, 0] + } + } + }, + "leftFrontThigh": { + "rotation": { + "0.0": { + "vector": [9.57, 11.6, 44.98] + }, + "0.0417": { + "vector": [9.58, 11.65, 45.01] + }, + "0.0833": { + "vector": [9.59, 11.68, 45.09] + }, + "0.125": { + "vector": [9.62, 11.7, 45.22] + }, + "0.1667": { + "vector": [9.65, 11.71, 45.38] + }, + "0.2083": { + "vector": [9.69, 11.71, 45.58] + }, + "0.25": { + "vector": [9.73, 11.7, 45.8] + }, + "0.2917": { + "vector": [9.78, 11.68, 46.05] + }, + "0.3333": { + "vector": [9.83, 11.65, 46.33] + }, + "0.375": { + "vector": [9.89, 11.62, 46.62] + }, + "0.4167": { + "vector": [9.95, 11.57, 46.92] + }, + "0.4583": { + "vector": [10.01, 11.53, 47.23] + }, + "0.5": { + "vector": [10.07, 11.47, 47.54] + }, + "0.5417": { + "vector": [10.13, 11.42, 47.85] + }, + "0.5833": { + "vector": [10.19, 11.36, 48.16] + }, + "0.625": { + "vector": [10.25, 11.3, 48.46] + }, + "0.6667": { + "vector": [10.3, 11.23, 48.74] + }, + "0.7083": { + "vector": [10.35, 11.16, 49.01] + }, + "0.75": { + "vector": [10.4, 11.1, 49.25] + }, + "0.7917": { + "vector": [10.44, 11.03, 49.47] + }, + "0.8333": { + "vector": [10.48, 10.97, 49.65] + }, + "0.875": { + "vector": [10.51, 10.9, 49.8] + }, + "0.9167": { + "vector": [10.53, 10.84, 49.91] + }, + "0.9583": { + "vector": [10.54, 10.78, 49.98] + }, + "1.0": { + "vector": [10.54, 10.73, 49.99] + }, + "1.0417": { + "vector": [10.54, 10.68, 49.96] + }, + "1.0833": { + "vector": [10.52, 10.62, 49.87] + }, + "1.125": { + "vector": [10.5, 10.56, 49.74] + }, + "1.1667": { + "vector": [10.46, 10.5, 49.57] + }, + "1.2083": { + "vector": [10.42, 10.43, 49.36] + }, + "1.25": { + "vector": [10.38, 10.37, 49.12] + }, + "1.2917": { + "vector": [10.33, 10.3, 48.86] + }, + "1.3333": { + "vector": [10.27, 10.23, 48.57] + }, + "1.375": { + "vector": [10.21, 10.15, 48.26] + }, + "1.4167": { + "vector": [10.15, 10.08, 47.94] + }, + "1.4583": { + "vector": [10.08, 10.01, 47.61] + }, + "1.5": { + "vector": [10.02, 9.93, 47.28] + }, + "1.5417": { + "vector": [9.96, 9.86, 46.94] + }, + "1.5833": { + "vector": [9.89, 9.79, 46.61] + }, + "1.625": { + "vector": [9.83, 9.71, 46.29] + }, + "1.6667": { + "vector": [9.77, 9.64, 45.98] + }, + "1.7083": { + "vector": [9.71, 9.57, 45.69] + }, + "1.75": { + "vector": [9.66, 9.5, 45.43] + }, + "1.7917": { + "vector": [9.62, 9.43, 45.19] + }, + "1.8333": { + "vector": [9.58, 9.37, 44.98] + }, + "1.875": { + "vector": [9.54, 9.31, 44.81] + }, + "1.9167": { + "vector": [9.52, 9.25, 44.68] + }, + "1.9583": { + "vector": [9.5, 9.19, 44.59] + }, + "2.0": { + "vector": [9.5, 9.14, 44.55] + }, + "2.0417": { + "vector": [9.5, 9.08, 44.57] + }, + "2.0833": { + "vector": [9.51, 9.03, 44.63] + }, + "2.125": { + "vector": [9.53, 8.97, 44.74] + }, + "2.1667": { + "vector": [9.56, 8.9, 44.89] + }, + "2.2083": { + "vector": [9.6, 8.84, 45.07] + }, + "2.25": { + "vector": [9.64, 8.77, 45.29] + }, + "2.2917": { + "vector": [9.69, 8.71, 45.53] + }, + "2.3333": { + "vector": [9.74, 8.64, 45.79] + }, + "2.375": { + "vector": [9.79, 8.58, 46.08] + }, + "2.4167": { + "vector": [9.85, 8.51, 46.37] + }, + "2.4583": { + "vector": [9.91, 8.45, 46.68] + }, + "2.5": { + "vector": [9.97, 8.4, 46.99] + }, + "2.5417": { + "vector": [10.03, 8.35, 47.3] + }, + "2.5833": { + "vector": [10.09, 8.3, 47.61] + }, + "2.625": { + "vector": [10.15, 8.26, 47.91] + }, + "2.6667": { + "vector": [10.21, 8.22, 48.19] + }, + "2.7083": { + "vector": [10.26, 8.2, 48.46] + }, + "2.75": { + "vector": [10.31, 8.18, 48.71] + }, + "2.7917": { + "vector": [10.35, 8.17, 48.94] + }, + "2.8333": { + "vector": [10.39, 8.16, 49.13] + }, + "2.875": { + "vector": [10.42, 8.17, 49.29] + }, + "2.9167": { + "vector": [10.45, 8.19, 49.42] + }, + "2.9583": { + "vector": [10.46, 8.23, 49.5] + }, + "3.0": { + "vector": [10.47, 8.27, 49.53] + }, + "3.0417": { + "vector": [10.46, 8.33, 49.52] + }, + "3.0833": { + "vector": [10.45, 8.42, 49.45] + }, + "3.125": { + "vector": [10.43, 8.52, 49.35] + }, + "3.1667": { + "vector": [10.4, 8.63, 49.21] + }, + "3.2083": { + "vector": [10.37, 8.76, 49.04] + }, + "3.25": { + "vector": [10.33, 8.91, 48.84] + }, + "3.2917": { + "vector": [10.29, 9.06, 48.61] + }, + "3.3333": { + "vector": [10.24, 9.23, 48.36] + }, + "3.375": { + "vector": [10.19, 9.4, 48.1] + }, + "3.4167": { + "vector": [10.13, 9.58, 47.82] + }, + "3.4583": { + "vector": [10.08, 9.76, 47.54] + }, + "3.5": { + "vector": [10.02, 9.94, 47.25] + }, + "3.5417": { + "vector": [9.96, 10.12, 46.96] + }, + "3.5833": { + "vector": [9.91, 10.3, 46.68] + }, + "3.625": { + "vector": [9.85, 10.48, 46.4] + }, + "3.6667": { + "vector": [9.8, 10.65, 46.14] + }, + "3.7083": { + "vector": [9.75, 10.81, 45.89] + }, + "3.75": { + "vector": [9.71, 10.97, 45.66] + }, + "3.7917": { + "vector": [9.67, 11.11, 45.46] + }, + "3.8333": { + "vector": [9.63, 11.24, 45.29] + }, + "3.875": { + "vector": [9.61, 11.36, 45.15] + }, + "3.9167": { + "vector": [9.59, 11.46, 45.05] + }, + "3.9583": { + "vector": [9.57, 11.54, 44.99] + }, + "4.0": { + "vector": [9.57, 11.6, 44.98] + } + } + }, + "leftFrontLeg": { + "rotation": { + "0.0": { + "vector": [0, 0, -30] + }, + "0.0417": { + "vector": [0, 0, -30.01] + }, + "0.0833": { + "vector": [0, 0, -30.05] + }, + "0.125": { + "vector": [0, 0, -30.11] + }, + "0.1667": { + "vector": [0, 0, -30.19] + }, + "0.2083": { + "vector": [0, 0, -30.28] + }, + "0.25": { + "vector": [0, 0, -30.39] + }, + "0.2917": { + "vector": [0, 0, -30.51] + }, + "0.3333": { + "vector": [0, 0, -30.65] + }, + "0.375": { + "vector": [0, 0, -30.79] + }, + "0.4167": { + "vector": [0, 0, -30.94] + }, + "0.4583": { + "vector": [0, 0, -31.09] + }, + "0.5": { + "vector": [0, 0, -31.25] + }, + "0.5417": { + "vector": [0, 0, -31.41] + }, + "0.5833": { + "vector": [0, 0, -31.56] + }, + "0.625": { + "vector": [0, 0, -31.71] + }, + "0.6667": { + "vector": [0, 0, -31.85] + }, + "0.7083": { + "vector": [0, 0, -31.99] + }, + "0.75": { + "vector": [0, 0, -32.11] + }, + "0.7917": { + "vector": [0, 0, -32.22] + }, + "0.8333": { + "vector": [0, 0, -32.31] + }, + "0.875": { + "vector": [0, 0, -32.39] + }, + "0.9167": { + "vector": [0, 0, -32.45] + }, + "0.9583": { + "vector": [0, 0, -32.49] + }, + "1.0": { + "vector": [0, 0, -32.5] + }, + "1.0417": { + "vector": [0, 0, -32.49] + }, + "1.0833": { + "vector": [0, 0, -32.45] + }, + "1.125": { + "vector": [0, 0, -32.39] + }, + "1.1667": { + "vector": [0, 0, -32.31] + }, + "1.2083": { + "vector": [0, 0, -32.22] + }, + "1.25": { + "vector": [0, 0, -32.11] + }, + "1.2917": { + "vector": [0, 0, -31.99] + }, + "1.3333": { + "vector": [0, 0, -31.85] + }, + "1.375": { + "vector": [0, 0, -31.71] + }, + "1.4167": { + "vector": [0, 0, -31.56] + }, + "1.4583": { + "vector": [0, 0, -31.41] + }, + "1.5": { + "vector": [0, 0, -31.25] + }, + "1.5417": { + "vector": [0, 0, -31.09] + }, + "1.5833": { + "vector": [0, 0, -30.94] + }, + "1.625": { + "vector": [0, 0, -30.79] + }, + "1.6667": { + "vector": [0, 0, -30.65] + }, + "1.7083": { + "vector": [0, 0, -30.51] + }, + "1.75": { + "vector": [0, 0, -30.39] + }, + "1.7917": { + "vector": [0, 0, -30.28] + }, + "1.8333": { + "vector": [0, 0, -30.19] + }, + "1.875": { + "vector": [0, 0, -30.11] + }, + "1.9167": { + "vector": [0, 0, -30.05] + }, + "1.9583": { + "vector": [0, 0, -30.01] + }, + "2.0": { + "vector": [0, 0, -30] + }, + "2.0417": { + "vector": [0, 0, -30.01] + }, + "2.0833": { + "vector": [0, 0, -30.05] + }, + "2.125": { + "vector": [0, 0, -30.11] + }, + "2.1667": { + "vector": [0, 0, -30.19] + }, + "2.2083": { + "vector": [0, 0, -30.28] + }, + "2.25": { + "vector": [0, 0, -30.39] + }, + "2.2917": { + "vector": [0, 0, -30.51] + }, + "2.3333": { + "vector": [0, 0, -30.65] + }, + "2.375": { + "vector": [0, 0, -30.79] + }, + "2.4167": { + "vector": [0, 0, -30.94] + }, + "2.4583": { + "vector": [0, 0, -31.09] + }, + "2.5": { + "vector": [0, 0, -31.25] + }, + "2.5417": { + "vector": [0, 0, -31.41] + }, + "2.5833": { + "vector": [0, 0, -31.56] + }, + "2.625": { + "vector": [0, 0, -31.71] + }, + "2.6667": { + "vector": [0, 0, -31.85] + }, + "2.7083": { + "vector": [0, 0, -31.99] + }, + "2.75": { + "vector": [0, 0, -32.11] + }, + "2.7917": { + "vector": [0, 0, -32.22] + }, + "2.8333": { + "vector": [0, 0, -32.31] + }, + "2.875": { + "vector": [0, 0, -32.39] + }, + "2.9167": { + "vector": [0, 0, -32.45] + }, + "2.9583": { + "vector": [0, 0, -32.49] + }, + "3.0": { + "vector": [0, 0, -32.5] + }, + "3.0417": { + "vector": [0, 0, -32.49] + }, + "3.0833": { + "vector": [0, 0, -32.45] + }, + "3.125": { + "vector": [0, 0, -32.39] + }, + "3.1667": { + "vector": [0, 0, -32.31] + }, + "3.2083": { + "vector": [0, 0, -32.22] + }, + "3.25": { + "vector": [0, 0, -32.11] + }, + "3.2917": { + "vector": [0, 0, -31.99] + }, + "3.3333": { + "vector": [0, 0, -31.85] + }, + "3.375": { + "vector": [0, 0, -31.71] + }, + "3.4167": { + "vector": [0, 0, -31.56] + }, + "3.4583": { + "vector": [0, 0, -31.41] + }, + "3.5": { + "vector": [0, 0, -31.25] + }, + "3.5417": { + "vector": [0, 0, -31.09] + }, + "3.5833": { + "vector": [0, 0, -30.94] + }, + "3.625": { + "vector": [0, 0, -30.79] + }, + "3.6667": { + "vector": [0, 0, -30.65] + }, + "3.7083": { + "vector": [0, 0, -30.51] + }, + "3.75": { + "vector": [0, 0, -30.39] + }, + "3.7917": { + "vector": [0, 0, -30.28] + }, + "3.8333": { + "vector": [0, 0, -30.19] + }, + "3.875": { + "vector": [0, 0, -30.11] + }, + "3.9167": { + "vector": [0, 0, -30.05] + }, + "3.9583": { + "vector": [0, 0, -30.01] + }, + "4.0": { + "vector": [0, 0, -30] + } + } + }, + "topHeadClawThing": { + "rotation": { + "0.0": { + "vector": [50, 0, 0] + }, + "0.0417": { + "vector": [49.99, 0, 0] + }, + "0.0833": { + "vector": [49.95, 0, 0] + }, + "0.125": { + "vector": [49.89, 0, 0] + }, + "0.1667": { + "vector": [49.8, 0, 0] + }, + "0.2083": { + "vector": [49.7, 0, 0] + }, + "0.25": { + "vector": [49.57, 0, 0] + }, + "0.2917": { + "vector": [49.42, 0, 0] + }, + "0.3333": { + "vector": [49.26, 0, 0] + }, + "0.375": { + "vector": [49.08, 0, 0] + }, + "0.4167": { + "vector": [48.88, 0, 0] + }, + "0.4583": { + "vector": [48.67, 0, 0] + }, + "0.5": { + "vector": [48.44, 0, 0] + }, + "0.5417": { + "vector": [48.2, 0, 0] + }, + "0.5833": { + "vector": [47.94, 0, 0] + }, + "0.625": { + "vector": [47.68, 0, 0] + }, + "0.6667": { + "vector": [47.41, 0, 0] + }, + "0.7083": { + "vector": [47.13, 0, 0] + }, + "0.75": { + "vector": [46.84, 0, 0] + }, + "0.7917": { + "vector": [46.54, 0, 0] + }, + "0.8333": { + "vector": [46.24, 0, 0] + }, + "0.875": { + "vector": [45.93, 0, 0] + }, + "0.9167": { + "vector": [45.62, 0, 0] + }, + "0.9583": { + "vector": [45.31, 0, 0] + }, + "1.0": { + "vector": [45, 0, 0] + }, + "1.0417": { + "vector": [44.69, 0, 0] + }, + "1.0833": { + "vector": [44.38, 0, 0] + }, + "1.125": { + "vector": [44.07, 0, 0] + }, + "1.1667": { + "vector": [43.76, 0, 0] + }, + "1.2083": { + "vector": [43.46, 0, 0] + }, + "1.25": { + "vector": [43.16, 0, 0] + }, + "1.2917": { + "vector": [42.87, 0, 0] + }, + "1.3333": { + "vector": [42.59, 0, 0] + }, + "1.375": { + "vector": [42.32, 0, 0] + }, + "1.4167": { + "vector": [42.06, 0, 0] + }, + "1.4583": { + "vector": [41.8, 0, 0] + }, + "1.5": { + "vector": [41.56, 0, 0] + }, + "1.5417": { + "vector": [41.33, 0, 0] + }, + "1.5833": { + "vector": [41.12, 0, 0] + }, + "1.625": { + "vector": [40.92, 0, 0] + }, + "1.6667": { + "vector": [40.74, 0, 0] + }, + "1.7083": { + "vector": [40.58, 0, 0] + }, + "1.75": { + "vector": [40.43, 0, 0] + }, + "1.7917": { + "vector": [40.3, 0, 0] + }, + "1.8333": { + "vector": [40.2, 0, 0] + }, + "1.875": { + "vector": [40.11, 0, 0] + }, + "1.9167": { + "vector": [40.05, 0, 0] + }, + "1.9583": { + "vector": [40.01, 0, 0] + }, + "2.0": { + "vector": [40, 0, 0] + }, + "2.0417": { + "vector": [40.01, 0, 0] + }, + "2.0833": { + "vector": [40.05, 0, 0] + }, + "2.125": { + "vector": [40.11, 0, 0] + }, + "2.1667": { + "vector": [40.2, 0, 0] + }, + "2.2083": { + "vector": [40.3, 0, 0] + }, + "2.25": { + "vector": [40.43, 0, 0] + }, + "2.2917": { + "vector": [40.58, 0, 0] + }, + "2.3333": { + "vector": [40.74, 0, 0] + }, + "2.375": { + "vector": [40.92, 0, 0] + }, + "2.4167": { + "vector": [41.12, 0, 0] + }, + "2.4583": { + "vector": [41.33, 0, 0] + }, + "2.5": { + "vector": [41.56, 0, 0] + }, + "2.5417": { + "vector": [41.8, 0, 0] + }, + "2.5833": { + "vector": [42.06, 0, 0] + }, + "2.625": { + "vector": [42.32, 0, 0] + }, + "2.6667": { + "vector": [42.59, 0, 0] + }, + "2.7083": { + "vector": [42.87, 0, 0] + }, + "2.75": { + "vector": [43.16, 0, 0] + }, + "2.7917": { + "vector": [43.46, 0, 0] + }, + "2.8333": { + "vector": [43.76, 0, 0] + }, + "2.875": { + "vector": [44.07, 0, 0] + }, + "2.9167": { + "vector": [44.38, 0, 0] + }, + "2.9583": { + "vector": [44.69, 0, 0] + }, + "3.0": { + "vector": [45, 0, 0] + }, + "3.0417": { + "vector": [45.31, 0, 0] + }, + "3.0833": { + "vector": [45.62, 0, 0] + }, + "3.125": { + "vector": [45.93, 0, 0] + }, + "3.1667": { + "vector": [46.24, 0, 0] + }, + "3.2083": { + "vector": [46.54, 0, 0] + }, + "3.25": { + "vector": [46.84, 0, 0] + }, + "3.2917": { + "vector": [47.13, 0, 0] + }, + "3.3333": { + "vector": [47.41, 0, 0] + }, + "3.375": { + "vector": [47.68, 0, 0] + }, + "3.4167": { + "vector": [47.94, 0, 0] + }, + "3.4583": { + "vector": [48.2, 0, 0] + }, + "3.5": { + "vector": [48.44, 0, 0] + }, + "3.5417": { + "vector": [48.67, 0, 0] + }, + "3.5833": { + "vector": [48.88, 0, 0] + }, + "3.625": { + "vector": [49.08, 0, 0] + }, + "3.6667": { + "vector": [49.26, 0, 0] + }, + "3.7083": { + "vector": [49.42, 0, 0] + }, + "3.75": { + "vector": [49.57, 0, 0] + }, + "3.7917": { + "vector": [49.7, 0, 0] + }, + "3.8333": { + "vector": [49.8, 0, 0] + }, + "3.875": { + "vector": [49.89, 0, 0] + }, + "3.9167": { + "vector": [49.95, 0, 0] + }, + "3.9583": { + "vector": [49.99, 0, 0] + }, + "4.0": { + "vector": [50, 0, 0] + } + } + }, + "rightFrontThigh": { + "rotation": { + "0.0": { + "vector": [9.57, -11.6, -44.97] + }, + "0.0417": { + "vector": [9.58, -11.65, -45.01] + }, + "0.0833": { + "vector": [9.59, -11.68, -45.09] + }, + "0.125": { + "vector": [9.62, -11.7, -45.22] + }, + "0.1667": { + "vector": [9.65, -11.71, -45.38] + }, + "0.2083": { + "vector": [9.69, -11.71, -45.58] + }, + "0.25": { + "vector": [9.73, -11.7, -45.8] + }, + "0.2917": { + "vector": [9.78, -11.68, -46.05] + }, + "0.3333": { + "vector": [9.83, -11.65, -46.33] + }, + "0.375": { + "vector": [9.89, -11.62, -46.62] + }, + "0.4167": { + "vector": [9.95, -11.57, -46.92] + }, + "0.4583": { + "vector": [10.01, -11.53, -47.23] + }, + "0.5": { + "vector": [10.07, -11.47, -47.54] + }, + "0.5417": { + "vector": [10.13, -11.42, -47.85] + }, + "0.5833": { + "vector": [10.19, -11.36, -48.16] + }, + "0.625": { + "vector": [10.25, -11.3, -48.46] + }, + "0.6667": { + "vector": [10.3, -11.23, -48.74] + }, + "0.7083": { + "vector": [10.35, -11.16, -49.01] + }, + "0.75": { + "vector": [10.4, -11.1, -49.25] + }, + "0.7917": { + "vector": [10.44, -11.03, -49.47] + }, + "0.8333": { + "vector": [10.48, -10.97, -49.65] + }, + "0.875": { + "vector": [10.51, -10.9, -49.8] + }, + "0.9167": { + "vector": [10.53, -10.84, -49.91] + }, + "0.9583": { + "vector": [10.54, -10.78, -49.98] + }, + "1.0": { + "vector": [10.54, -10.73, -49.99] + }, + "1.0417": { + "vector": [10.54, -10.68, -49.96] + }, + "1.0833": { + "vector": [10.52, -10.62, -49.87] + }, + "1.125": { + "vector": [10.5, -10.56, -49.74] + }, + "1.1667": { + "vector": [10.46, -10.5, -49.57] + }, + "1.2083": { + "vector": [10.42, -10.43, -49.36] + }, + "1.25": { + "vector": [10.38, -10.37, -49.12] + }, + "1.2917": { + "vector": [10.33, -10.3, -48.86] + }, + "1.3333": { + "vector": [10.27, -10.23, -48.57] + }, + "1.375": { + "vector": [10.21, -10.15, -48.26] + }, + "1.4167": { + "vector": [10.15, -10.08, -47.94] + }, + "1.4583": { + "vector": [10.08, -10.01, -47.61] + }, + "1.5": { + "vector": [10.02, -9.93, -47.28] + }, + "1.5417": { + "vector": [9.96, -9.86, -46.94] + }, + "1.5833": { + "vector": [9.89, -9.79, -46.61] + }, + "1.625": { + "vector": [9.83, -9.71, -46.29] + }, + "1.6667": { + "vector": [9.77, -9.64, -45.98] + }, + "1.7083": { + "vector": [9.71, -9.57, -45.69] + }, + "1.75": { + "vector": [9.66, -9.5, -45.43] + }, + "1.7917": { + "vector": [9.62, -9.43, -45.19] + }, + "1.8333": { + "vector": [9.58, -9.37, -44.98] + }, + "1.875": { + "vector": [9.54, -9.31, -44.81] + }, + "1.9167": { + "vector": [9.52, -9.25, -44.68] + }, + "1.9583": { + "vector": [9.5, -9.19, -44.59] + }, + "2.0": { + "vector": [9.5, -9.14, -44.55] + }, + "2.0417": { + "vector": [9.5, -9.08, -44.57] + }, + "2.0833": { + "vector": [9.51, -9.03, -44.63] + }, + "2.125": { + "vector": [9.53, -8.97, -44.74] + }, + "2.1667": { + "vector": [9.56, -8.9, -44.89] + }, + "2.2083": { + "vector": [9.6, -8.84, -45.07] + }, + "2.25": { + "vector": [9.64, -8.77, -45.29] + }, + "2.2917": { + "vector": [9.69, -8.71, -45.53] + }, + "2.3333": { + "vector": [9.74, -8.64, -45.79] + }, + "2.375": { + "vector": [9.79, -8.58, -46.08] + }, + "2.4167": { + "vector": [9.85, -8.51, -46.37] + }, + "2.4583": { + "vector": [9.91, -8.45, -46.68] + }, + "2.5": { + "vector": [9.97, -8.4, -46.99] + }, + "2.5417": { + "vector": [10.03, -8.35, -47.3] + }, + "2.5833": { + "vector": [10.09, -8.3, -47.61] + }, + "2.625": { + "vector": [10.15, -8.26, -47.91] + }, + "2.6667": { + "vector": [10.21, -8.22, -48.19] + }, + "2.7083": { + "vector": [10.26, -8.2, -48.46] + }, + "2.75": { + "vector": [10.31, -8.18, -48.71] + }, + "2.7917": { + "vector": [10.35, -8.17, -48.94] + }, + "2.8333": { + "vector": [10.39, -8.16, -49.13] + }, + "2.875": { + "vector": [10.42, -8.17, -49.29] + }, + "2.9167": { + "vector": [10.45, -8.19, -49.42] + }, + "2.9583": { + "vector": [10.46, -8.23, -49.5] + }, + "3.0": { + "vector": [10.47, -8.27, -49.53] + }, + "3.0417": { + "vector": [10.46, -8.33, -49.52] + }, + "3.0833": { + "vector": [10.45, -8.42, -49.45] + }, + "3.125": { + "vector": [10.43, -8.52, -49.35] + }, + "3.1667": { + "vector": [10.4, -8.63, -49.21] + }, + "3.2083": { + "vector": [10.37, -8.76, -49.04] + }, + "3.25": { + "vector": [10.33, -8.91, -48.84] + }, + "3.2917": { + "vector": [10.29, -9.06, -48.61] + }, + "3.3333": { + "vector": [10.24, -9.23, -48.36] + }, + "3.375": { + "vector": [10.19, -9.4, -48.1] + }, + "3.4167": { + "vector": [10.13, -9.58, -47.82] + }, + "3.4583": { + "vector": [10.08, -9.76, -47.54] + }, + "3.5": { + "vector": [10.02, -9.94, -47.25] + }, + "3.5417": { + "vector": [9.96, -10.12, -46.96] + }, + "3.5833": { + "vector": [9.91, -10.3, -46.68] + }, + "3.625": { + "vector": [9.85, -10.48, -46.4] + }, + "3.6667": { + "vector": [9.8, -10.65, -46.14] + }, + "3.7083": { + "vector": [9.75, -10.81, -45.89] + }, + "3.75": { + "vector": [9.71, -10.97, -45.66] + }, + "3.7917": { + "vector": [9.67, -11.11, -45.46] + }, + "3.8333": { + "vector": [9.63, -11.24, -45.29] + }, + "3.875": { + "vector": [9.61, -11.36, -45.15] + }, + "3.9167": { + "vector": [9.59, -11.46, -45.05] + }, + "3.9583": { + "vector": [9.57, -11.54, -44.99] + }, + "4.0": { + "vector": [9.57, -11.6, -44.97] + } + } + }, + "rightFrontLeg": { + "rotation": { + "0.0": { + "vector": [0, 0, 30] + }, + "0.0417": { + "vector": [0, 0, 30.01] + }, + "0.0833": { + "vector": [0, 0, 30.05] + }, + "0.125": { + "vector": [0, 0, 30.11] + }, + "0.1667": { + "vector": [0, 0, 30.19] + }, + "0.2083": { + "vector": [0, 0, 30.28] + }, + "0.25": { + "vector": [0, 0, 30.39] + }, + "0.2917": { + "vector": [0, 0, 30.51] + }, + "0.3333": { + "vector": [0, 0, 30.65] + }, + "0.375": { + "vector": [0, 0, 30.79] + }, + "0.4167": { + "vector": [0, 0, 30.94] + }, + "0.4583": { + "vector": [0, 0, 31.09] + }, + "0.5": { + "vector": [0, 0, 31.25] + }, + "0.5417": { + "vector": [0, 0, 31.41] + }, + "0.5833": { + "vector": [0, 0, 31.56] + }, + "0.625": { + "vector": [0, 0, 31.71] + }, + "0.6667": { + "vector": [0, 0, 31.85] + }, + "0.7083": { + "vector": [0, 0, 31.99] + }, + "0.75": { + "vector": [0, 0, 32.11] + }, + "0.7917": { + "vector": [0, 0, 32.22] + }, + "0.8333": { + "vector": [0, 0, 32.31] + }, + "0.875": { + "vector": [0, 0, 32.39] + }, + "0.9167": { + "vector": [0, 0, 32.45] + }, + "0.9583": { + "vector": [0, 0, 32.49] + }, + "1.0": { + "vector": [0, 0, 32.5] + }, + "1.0417": { + "vector": [0, 0, 32.49] + }, + "1.0833": { + "vector": [0, 0, 32.45] + }, + "1.125": { + "vector": [0, 0, 32.39] + }, + "1.1667": { + "vector": [0, 0, 32.31] + }, + "1.2083": { + "vector": [0, 0, 32.22] + }, + "1.25": { + "vector": [0, 0, 32.11] + }, + "1.2917": { + "vector": [0, 0, 31.99] + }, + "1.3333": { + "vector": [0, 0, 31.85] + }, + "1.375": { + "vector": [0, 0, 31.71] + }, + "1.4167": { + "vector": [0, 0, 31.56] + }, + "1.4583": { + "vector": [0, 0, 31.41] + }, + "1.5": { + "vector": [0, 0, 31.25] + }, + "1.5417": { + "vector": [0, 0, 31.09] + }, + "1.5833": { + "vector": [0, 0, 30.94] + }, + "1.625": { + "vector": [0, 0, 30.79] + }, + "1.6667": { + "vector": [0, 0, 30.65] + }, + "1.7083": { + "vector": [0, 0, 30.51] + }, + "1.75": { + "vector": [0, 0, 30.39] + }, + "1.7917": { + "vector": [0, 0, 30.28] + }, + "1.8333": { + "vector": [0, 0, 30.19] + }, + "1.875": { + "vector": [0, 0, 30.11] + }, + "1.9167": { + "vector": [0, 0, 30.05] + }, + "1.9583": { + "vector": [0, 0, 30.01] + }, + "2.0": { + "vector": [0, 0, 30] + }, + "2.0417": { + "vector": [0, 0, 30.01] + }, + "2.0833": { + "vector": [0, 0, 30.05] + }, + "2.125": { + "vector": [0, 0, 30.11] + }, + "2.1667": { + "vector": [0, 0, 30.19] + }, + "2.2083": { + "vector": [0, 0, 30.28] + }, + "2.25": { + "vector": [0, 0, 30.39] + }, + "2.2917": { + "vector": [0, 0, 30.51] + }, + "2.3333": { + "vector": [0, 0, 30.65] + }, + "2.375": { + "vector": [0, 0, 30.79] + }, + "2.4167": { + "vector": [0, 0, 30.94] + }, + "2.4583": { + "vector": [0, 0, 31.09] + }, + "2.5": { + "vector": [0, 0, 31.25] + }, + "2.5417": { + "vector": [0, 0, 31.41] + }, + "2.5833": { + "vector": [0, 0, 31.56] + }, + "2.625": { + "vector": [0, 0, 31.71] + }, + "2.6667": { + "vector": [0, 0, 31.85] + }, + "2.7083": { + "vector": [0, 0, 31.99] + }, + "2.75": { + "vector": [0, 0, 32.11] + }, + "2.7917": { + "vector": [0, 0, 32.22] + }, + "2.8333": { + "vector": [0, 0, 32.31] + }, + "2.875": { + "vector": [0, 0, 32.39] + }, + "2.9167": { + "vector": [0, 0, 32.45] + }, + "2.9583": { + "vector": [0, 0, 32.49] + }, + "3.0": { + "vector": [0, 0, 32.5] + }, + "3.0417": { + "vector": [0, 0, 32.49] + }, + "3.0833": { + "vector": [0, 0, 32.45] + }, + "3.125": { + "vector": [0, 0, 32.39] + }, + "3.1667": { + "vector": [0, 0, 32.31] + }, + "3.2083": { + "vector": [0, 0, 32.22] + }, + "3.25": { + "vector": [0, 0, 32.11] + }, + "3.2917": { + "vector": [0, 0, 31.99] + }, + "3.3333": { + "vector": [0, 0, 31.85] + }, + "3.375": { + "vector": [0, 0, 31.71] + }, + "3.4167": { + "vector": [0, 0, 31.56] + }, + "3.4583": { + "vector": [0, 0, 31.41] + }, + "3.5": { + "vector": [0, 0, 31.25] + }, + "3.5417": { + "vector": [0, 0, 31.09] + }, + "3.5833": { + "vector": [0, 0, 30.94] + }, + "3.625": { + "vector": [0, 0, 30.79] + }, + "3.6667": { + "vector": [0, 0, 30.65] + }, + "3.7083": { + "vector": [0, 0, 30.51] + }, + "3.75": { + "vector": [0, 0, 30.39] + }, + "3.7917": { + "vector": [0, 0, 30.28] + }, + "3.8333": { + "vector": [0, 0, 30.19] + }, + "3.875": { + "vector": [0, 0, 30.11] + }, + "3.9167": { + "vector": [0, 0, 30.05] + }, + "3.9583": { + "vector": [0, 0, 30.01] + }, + "4.0": { + "vector": [0, 0, 30] + } + } + }, + "rightFrontFoot": { + "rotation": { + "0.0": { + "vector": [0, 0, -47.5] + }, + "0.0417": { + "vector": [0, 0, -47.49] + }, + "0.0833": { + "vector": [0, 0, -47.45] + }, + "0.125": { + "vector": [0, 0, -47.39] + }, + "0.1667": { + "vector": [0, 0, -47.31] + }, + "0.2083": { + "vector": [0, 0, -47.22] + }, + "0.25": { + "vector": [0, 0, -47.11] + }, + "0.2917": { + "vector": [0, 0, -46.99] + }, + "0.3333": { + "vector": [0, 0, -46.85] + }, + "0.375": { + "vector": [0, 0, -46.71] + }, + "0.4167": { + "vector": [0, 0, -46.56] + }, + "0.4583": { + "vector": [0, 0, -46.41] + }, + "0.5": { + "vector": [0, 0, -46.25] + }, + "0.5417": { + "vector": [0, 0, -46.09] + }, + "0.5833": { + "vector": [0, 0, -45.94] + }, + "0.625": { + "vector": [0, 0, -45.79] + }, + "0.6667": { + "vector": [0, 0, -45.65] + }, + "0.7083": { + "vector": [0, 0, -45.51] + }, + "0.75": { + "vector": [0, 0, -45.39] + }, + "0.7917": { + "vector": [0, 0, -45.28] + }, + "0.8333": { + "vector": [0, 0, -45.19] + }, + "0.875": { + "vector": [0, 0, -45.11] + }, + "0.9167": { + "vector": [0, 0, -45.05] + }, + "0.9583": { + "vector": [0, 0, -45.01] + }, + "1.0": { + "vector": [0, 0, -45] + }, + "1.0417": { + "vector": [0, 0, -45.01] + }, + "1.0833": { + "vector": [0, 0, -45.05] + }, + "1.125": { + "vector": [0, 0, -45.11] + }, + "1.1667": { + "vector": [0, 0, -45.19] + }, + "1.2083": { + "vector": [0, 0, -45.28] + }, + "1.25": { + "vector": [0, 0, -45.39] + }, + "1.2917": { + "vector": [0, 0, -45.51] + }, + "1.3333": { + "vector": [0, 0, -45.65] + }, + "1.375": { + "vector": [0, 0, -45.79] + }, + "1.4167": { + "vector": [0, 0, -45.94] + }, + "1.4583": { + "vector": [0, 0, -46.09] + }, + "1.5": { + "vector": [0, 0, -46.25] + }, + "1.5417": { + "vector": [0, 0, -46.41] + }, + "1.5833": { + "vector": [0, 0, -46.56] + }, + "1.625": { + "vector": [0, 0, -46.71] + }, + "1.6667": { + "vector": [0, 0, -46.85] + }, + "1.7083": { + "vector": [0, 0, -46.99] + }, + "1.75": { + "vector": [0, 0, -47.11] + }, + "1.7917": { + "vector": [0, 0, -47.22] + }, + "1.8333": { + "vector": [0, 0, -47.31] + }, + "1.875": { + "vector": [0, 0, -47.39] + }, + "1.9167": { + "vector": [0, 0, -47.45] + }, + "1.9583": { + "vector": [0, 0, -47.49] + }, + "2.0": { + "vector": [0, 0, -47.5] + }, + "2.0417": { + "vector": [0, 0, -47.49] + }, + "2.0833": { + "vector": [0, 0, -47.45] + }, + "2.125": { + "vector": [0, 0, -47.39] + }, + "2.1667": { + "vector": [0, 0, -47.31] + }, + "2.2083": { + "vector": [0, 0, -47.22] + }, + "2.25": { + "vector": [0, 0, -47.11] + }, + "2.2917": { + "vector": [0, 0, -46.99] + }, + "2.3333": { + "vector": [0, 0, -46.85] + }, + "2.375": { + "vector": [0, 0, -46.71] + }, + "2.4167": { + "vector": [0, 0, -46.56] + }, + "2.4583": { + "vector": [0, 0, -46.41] + }, + "2.5": { + "vector": [0, 0, -46.25] + }, + "2.5417": { + "vector": [0, 0, -46.09] + }, + "2.5833": { + "vector": [0, 0, -45.94] + }, + "2.625": { + "vector": [0, 0, -45.79] + }, + "2.6667": { + "vector": [0, 0, -45.65] + }, + "2.7083": { + "vector": [0, 0, -45.51] + }, + "2.75": { + "vector": [0, 0, -45.39] + }, + "2.7917": { + "vector": [0, 0, -45.28] + }, + "2.8333": { + "vector": [0, 0, -45.19] + }, + "2.875": { + "vector": [0, 0, -45.11] + }, + "2.9167": { + "vector": [0, 0, -45.05] + }, + "2.9583": { + "vector": [0, 0, -45.01] + }, + "3.0": { + "vector": [0, 0, -45] + }, + "3.0417": { + "vector": [0, 0, -45.01] + }, + "3.0833": { + "vector": [0, 0, -45.05] + }, + "3.125": { + "vector": [0, 0, -45.11] + }, + "3.1667": { + "vector": [0, 0, -45.19] + }, + "3.2083": { + "vector": [0, 0, -45.28] + }, + "3.25": { + "vector": [0, 0, -45.39] + }, + "3.2917": { + "vector": [0, 0, -45.51] + }, + "3.3333": { + "vector": [0, 0, -45.65] + }, + "3.375": { + "vector": [0, 0, -45.79] + }, + "3.4167": { + "vector": [0, 0, -45.94] + }, + "3.4583": { + "vector": [0, 0, -46.09] + }, + "3.5": { + "vector": [0, 0, -46.25] + }, + "3.5417": { + "vector": [0, 0, -46.41] + }, + "3.5833": { + "vector": [0, 0, -46.56] + }, + "3.625": { + "vector": [0, 0, -46.71] + }, + "3.6667": { + "vector": [0, 0, -46.85] + }, + "3.7083": { + "vector": [0, 0, -46.99] + }, + "3.75": { + "vector": [0, 0, -47.11] + }, + "3.7917": { + "vector": [0, 0, -47.22] + }, + "3.8333": { + "vector": [0, 0, -47.31] + }, + "3.875": { + "vector": [0, 0, -47.39] + }, + "3.9167": { + "vector": [0, 0, -47.45] + }, + "3.9583": { + "vector": [0, 0, -47.49] + }, + "4.0": { + "vector": [0, 0, -47.5] + } + } + }, + "rightBackThigh": { + "rotation": { + "0.0": { + "vector": [-14.41, 26.25, -29.69] + }, + "0.0417": { + "vector": [-14.43, 26.22, -29.73] + }, + "0.0833": { + "vector": [-14.5, 26.17, -29.89] + }, + "0.125": { + "vector": [-14.61, 26.11, -30.14] + }, + "0.1667": { + "vector": [-14.76, 26.04, -30.47] + }, + "0.2083": { + "vector": [-14.94, 25.95, -30.88] + }, + "0.25": { + "vector": [-15.15, 25.86, -31.36] + }, + "0.2917": { + "vector": [-15.38, 25.75, -31.9] + }, + "0.3333": { + "vector": [-15.64, 25.64, -32.48] + }, + "0.375": { + "vector": [-15.92, 25.53, -33.11] + }, + "0.4167": { + "vector": [-16.2, 25.41, -33.76] + }, + "0.4583": { + "vector": [-16.5, 25.3, -34.44] + }, + "0.5": { + "vector": [-16.8, 25.18, -35.12] + }, + "0.5417": { + "vector": [-17.1, 25.07, -35.8] + }, + "0.5833": { + "vector": [-17.4, 24.96, -36.48] + }, + "0.625": { + "vector": [-17.69, 24.86, -37.14] + }, + "0.6667": { + "vector": [-17.97, 24.77, -37.77] + }, + "0.7083": { + "vector": [-18.23, 24.68, -38.36] + }, + "0.75": { + "vector": [-18.47, 24.61, -38.91] + }, + "0.7917": { + "vector": [-18.69, 24.55, -39.4] + }, + "0.8333": { + "vector": [-18.87, 24.51, -39.83] + }, + "0.875": { + "vector": [-19.03, 24.49, -40.18] + }, + "0.9167": { + "vector": [-19.15, 24.48, -40.44] + }, + "0.9583": { + "vector": [-19.22, 24.5, -40.62] + }, + "1.0": { + "vector": [-19.25, 24.54, -40.69] + }, + "1.0417": { + "vector": [-19.24, 24.6, -40.65] + }, + "1.0833": { + "vector": [-19.17, 24.7, -40.51] + }, + "1.125": { + "vector": [-19.07, 24.82, -40.28] + }, + "1.1667": { + "vector": [-18.94, 24.97, -39.96] + }, + "1.2083": { + "vector": [-18.77, 25.14, -39.57] + }, + "1.25": { + "vector": [-18.57, 25.33, -39.12] + }, + "1.2917": { + "vector": [-18.34, 25.53, -38.61] + }, + "1.3333": { + "vector": [-18.1, 25.75, -38.06] + }, + "1.375": { + "vector": [-17.84, 25.98, -37.47] + }, + "1.4167": { + "vector": [-17.57, 26.21, -36.85] + }, + "1.4583": { + "vector": [-17.29, 26.45, -36.21] + }, + "1.5": { + "vector": [-17.01, 26.69, -35.56] + }, + "1.5417": { + "vector": [-16.72, 26.93, -34.91] + }, + "1.5833": { + "vector": [-16.44, 27.17, -34.28] + }, + "1.625": { + "vector": [-16.17, 27.4, -33.66] + }, + "1.6667": { + "vector": [-15.91, 27.61, -33.06] + }, + "1.7083": { + "vector": [-15.66, 27.82, -32.51] + }, + "1.75": { + "vector": [-15.44, 28.01, -31.99] + }, + "1.7917": { + "vector": [-15.24, 28.18, -31.54] + }, + "1.8333": { + "vector": [-15.07, 28.33, -31.14] + }, + "1.875": { + "vector": [-14.93, 28.46, -30.82] + }, + "1.9167": { + "vector": [-14.82, 28.56, -30.59] + }, + "1.9583": { + "vector": [-14.76, 28.63, -30.44] + }, + "2.0": { + "vector": [-14.74, 28.67, -30.39] + }, + "2.0417": { + "vector": [-14.76, 28.67, -30.46] + }, + "2.0833": { + "vector": [-14.84, 28.64, -30.62] + }, + "2.125": { + "vector": [-14.95, 28.59, -30.87] + }, + "2.1667": { + "vector": [-15.1, 28.51, -31.21] + }, + "2.2083": { + "vector": [-15.28, 28.41, -31.63] + }, + "2.25": { + "vector": [-15.49, 28.29, -32.1] + }, + "2.2917": { + "vector": [-15.72, 28.15, -32.63] + }, + "2.3333": { + "vector": [-15.97, 28, -33.21] + }, + "2.375": { + "vector": [-16.24, 27.83, -33.82] + }, + "2.4167": { + "vector": [-16.52, 27.66, -34.47] + }, + "2.4583": { + "vector": [-16.81, 27.47, -35.12] + }, + "2.5": { + "vector": [-17.1, 27.28, -35.79] + }, + "2.5417": { + "vector": [-17.39, 27.09, -36.46] + }, + "2.5833": { + "vector": [-17.68, 26.9, -37.11] + }, + "2.625": { + "vector": [-17.96, 26.71, -37.75] + }, + "2.6667": { + "vector": [-18.23, 26.52, -38.35] + }, + "2.7083": { + "vector": [-18.48, 26.34, -38.92] + }, + "2.75": { + "vector": [-18.7, 26.17, -39.44] + }, + "2.7917": { + "vector": [-18.91, 26.01, -39.91] + }, + "2.8333": { + "vector": [-19.08, 25.87, -40.31] + }, + "2.875": { + "vector": [-19.22, 25.74, -40.63] + }, + "2.9167": { + "vector": [-19.33, 25.63, -40.87] + }, + "2.9583": { + "vector": [-19.39, 25.54, -41.01] + }, + "3.0": { + "vector": [-19.41, 25.48, -41.05] + }, + "3.0417": { + "vector": [-19.38, 25.44, -40.98] + }, + "3.0833": { + "vector": [-19.3, 25.41, -40.8] + }, + "3.125": { + "vector": [-19.18, 25.4, -40.53] + }, + "3.1667": { + "vector": [-19.02, 25.41, -40.17] + }, + "3.2083": { + "vector": [-18.83, 25.42, -39.74] + }, + "3.25": { + "vector": [-18.61, 25.45, -39.23] + }, + "3.2917": { + "vector": [-18.36, 25.49, -38.67] + }, + "3.3333": { + "vector": [-18.09, 25.53, -38.07] + }, + "3.375": { + "vector": [-17.81, 25.59, -37.42] + }, + "3.4167": { + "vector": [-17.51, 25.64, -36.74] + }, + "3.4583": { + "vector": [-17.21, 25.71, -36.05] + }, + "3.5": { + "vector": [-16.9, 25.77, -35.35] + }, + "3.5417": { + "vector": [-16.59, 25.84, -34.64] + }, + "3.5833": { + "vector": [-16.28, 25.9, -33.95] + }, + "3.625": { + "vector": [-15.99, 25.97, -33.28] + }, + "3.6667": { + "vector": [-15.71, 26.03, -32.63] + }, + "3.7083": { + "vector": [-15.44, 26.08, -32.03] + }, + "3.75": { + "vector": [-15.19, 26.14, -31.47] + }, + "3.7917": { + "vector": [-14.98, 26.18, -30.97] + }, + "3.8333": { + "vector": [-14.79, 26.22, -30.54] + }, + "3.875": { + "vector": [-14.63, 26.24, -30.19] + }, + "3.9167": { + "vector": [-14.51, 26.26, -29.92] + }, + "3.9583": { + "vector": [-14.44, 26.26, -29.75] + }, + "4.0": { + "vector": [-14.41, 26.25, -29.69] + } + } + }, + "rightBackLeg": { + "rotation": { + "0.0": { + "vector": [0, 0, 7.5] + }, + "0.0417": { + "vector": [0, 0, 7.55] + }, + "0.0833": { + "vector": [0, 0, 7.7] + }, + "0.125": { + "vector": [0, 0, 7.93] + }, + "0.1667": { + "vector": [0, 0, 8.24] + }, + "0.2083": { + "vector": [0, 0, 8.62] + }, + "0.25": { + "vector": [0, 0, 9.06] + }, + "0.2917": { + "vector": [0, 0, 9.56] + }, + "0.3333": { + "vector": [0, 0, 10.09] + }, + "0.375": { + "vector": [0, 0, 10.66] + }, + "0.4167": { + "vector": [0, 0, 11.26] + }, + "0.4583": { + "vector": [0, 0, 11.88] + }, + "0.5": { + "vector": [0, 0, 12.5] + }, + "0.5417": { + "vector": [0, 0, 13.12] + }, + "0.5833": { + "vector": [0, 0, 13.74] + }, + "0.625": { + "vector": [0, 0, 14.34] + }, + "0.6667": { + "vector": [0, 0, 14.91] + }, + "0.7083": { + "vector": [0, 0, 15.44] + }, + "0.75": { + "vector": [0, 0, 15.94] + }, + "0.7917": { + "vector": [0, 0, 16.38] + }, + "0.8333": { + "vector": [0, 0, 16.76] + }, + "0.875": { + "vector": [0, 0, 17.07] + }, + "0.9167": { + "vector": [0, 0, 17.3] + }, + "0.9583": { + "vector": [0, 0, 17.45] + }, + "1.0": { + "vector": [0, 0, 17.5] + }, + "1.0417": { + "vector": [0, 0, 17.45] + }, + "1.0833": { + "vector": [0, 0, 17.3] + }, + "1.125": { + "vector": [0, 0, 17.07] + }, + "1.1667": { + "vector": [0, 0, 16.76] + }, + "1.2083": { + "vector": [0, 0, 16.38] + }, + "1.25": { + "vector": [0, 0, 15.94] + }, + "1.2917": { + "vector": [0, 0, 15.44] + }, + "1.3333": { + "vector": [0, 0, 14.91] + }, + "1.375": { + "vector": [0, 0, 14.34] + }, + "1.4167": { + "vector": [0, 0, 13.74] + }, + "1.4583": { + "vector": [0, 0, 13.12] + }, + "1.5": { + "vector": [0, 0, 12.5] + }, + "1.5417": { + "vector": [0, 0, 11.88] + }, + "1.5833": { + "vector": [0, 0, 11.26] + }, + "1.625": { + "vector": [0, 0, 10.66] + }, + "1.6667": { + "vector": [0, 0, 10.09] + }, + "1.7083": { + "vector": [0, 0, 9.56] + }, + "1.75": { + "vector": [0, 0, 9.06] + }, + "1.7917": { + "vector": [0, 0, 8.62] + }, + "1.8333": { + "vector": [0, 0, 8.24] + }, + "1.875": { + "vector": [0, 0, 7.93] + }, + "1.9167": { + "vector": [0, 0, 7.7] + }, + "1.9583": { + "vector": [0, 0, 7.55] + }, + "2.0": { + "vector": [0, 0, 7.5] + }, + "2.0417": { + "vector": [0, 0, 7.55] + }, + "2.0833": { + "vector": [0, 0, 7.7] + }, + "2.125": { + "vector": [0, 0, 7.93] + }, + "2.1667": { + "vector": [0, 0, 8.24] + }, + "2.2083": { + "vector": [0, 0, 8.62] + }, + "2.25": { + "vector": [0, 0, 9.06] + }, + "2.2917": { + "vector": [0, 0, 9.56] + }, + "2.3333": { + "vector": [0, 0, 10.09] + }, + "2.375": { + "vector": [0, 0, 10.66] + }, + "2.4167": { + "vector": [0, 0, 11.26] + }, + "2.4583": { + "vector": [0, 0, 11.88] + }, + "2.5": { + "vector": [0, 0, 12.5] + }, + "2.5417": { + "vector": [0, 0, 13.12] + }, + "2.5833": { + "vector": [0, 0, 13.74] + }, + "2.625": { + "vector": [0, 0, 14.34] + }, + "2.6667": { + "vector": [0, 0, 14.91] + }, + "2.7083": { + "vector": [0, 0, 15.44] + }, + "2.75": { + "vector": [0, 0, 15.94] + }, + "2.7917": { + "vector": [0, 0, 16.38] + }, + "2.8333": { + "vector": [0, 0, 16.76] + }, + "2.875": { + "vector": [0, 0, 17.07] + }, + "2.9167": { + "vector": [0, 0, 17.3] + }, + "2.9583": { + "vector": [0, 0, 17.45] + }, + "3.0": { + "vector": [0, 0, 17.5] + }, + "3.0417": { + "vector": [0, 0, 17.45] + }, + "3.0833": { + "vector": [0, 0, 17.3] + }, + "3.125": { + "vector": [0, 0, 17.07] + }, + "3.1667": { + "vector": [0, 0, 16.76] + }, + "3.2083": { + "vector": [0, 0, 16.38] + }, + "3.25": { + "vector": [0, 0, 15.94] + }, + "3.2917": { + "vector": [0, 0, 15.44] + }, + "3.3333": { + "vector": [0, 0, 14.91] + }, + "3.375": { + "vector": [0, 0, 14.34] + }, + "3.4167": { + "vector": [0, 0, 13.74] + }, + "3.4583": { + "vector": [0, 0, 13.12] + }, + "3.5": { + "vector": [0, 0, 12.5] + }, + "3.5417": { + "vector": [0, 0, 11.88] + }, + "3.5833": { + "vector": [0, 0, 11.26] + }, + "3.625": { + "vector": [0, 0, 10.66] + }, + "3.6667": { + "vector": [0, 0, 10.09] + }, + "3.7083": { + "vector": [0, 0, 9.56] + }, + "3.75": { + "vector": [0, 0, 9.06] + }, + "3.7917": { + "vector": [0, 0, 8.62] + }, + "3.8333": { + "vector": [0, 0, 8.24] + }, + "3.875": { + "vector": [0, 0, 7.93] + }, + "3.9167": { + "vector": [0, 0, 7.7] + }, + "3.9583": { + "vector": [0, 0, 7.55] + }, + "4.0": { + "vector": [0, 0, 7.5] + } + } + }, + "rightBackFoot": { + "rotation": { + "0.0": { + "vector": [0, 0, -50] + }, + "0.0417": { + "vector": [0, 0, -49.99] + }, + "0.0833": { + "vector": [0, 0, -49.95] + }, + "0.125": { + "vector": [0, 0, -49.89] + }, + "0.1667": { + "vector": [0, 0, -49.81] + }, + "0.2083": { + "vector": [0, 0, -49.72] + }, + "0.25": { + "vector": [0, 0, -49.61] + }, + "0.2917": { + "vector": [0, 0, -49.49] + }, + "0.3333": { + "vector": [0, 0, -49.35] + }, + "0.375": { + "vector": [0, 0, -49.21] + }, + "0.4167": { + "vector": [0, 0, -49.06] + }, + "0.4583": { + "vector": [0, 0, -48.91] + }, + "0.5": { + "vector": [0, 0, -48.75] + }, + "0.5417": { + "vector": [0, 0, -48.59] + }, + "0.5833": { + "vector": [0, 0, -48.44] + }, + "0.625": { + "vector": [0, 0, -48.29] + }, + "0.6667": { + "vector": [0, 0, -48.15] + }, + "0.7083": { + "vector": [0, 0, -48.01] + }, + "0.75": { + "vector": [0, 0, -47.89] + }, + "0.7917": { + "vector": [0, 0, -47.78] + }, + "0.8333": { + "vector": [0, 0, -47.69] + }, + "0.875": { + "vector": [0, 0, -47.61] + }, + "0.9167": { + "vector": [0, 0, -47.55] + }, + "0.9583": { + "vector": [0, 0, -47.51] + }, + "1.0": { + "vector": [0, 0, -47.5] + }, + "1.0417": { + "vector": [0, 0, -47.51] + }, + "1.0833": { + "vector": [0, 0, -47.55] + }, + "1.125": { + "vector": [0, 0, -47.61] + }, + "1.1667": { + "vector": [0, 0, -47.69] + }, + "1.2083": { + "vector": [0, 0, -47.78] + }, + "1.25": { + "vector": [0, 0, -47.89] + }, + "1.2917": { + "vector": [0, 0, -48.01] + }, + "1.3333": { + "vector": [0, 0, -48.15] + }, + "1.375": { + "vector": [0, 0, -48.29] + }, + "1.4167": { + "vector": [0, 0, -48.44] + }, + "1.4583": { + "vector": [0, 0, -48.59] + }, + "1.5": { + "vector": [0, 0, -48.75] + }, + "1.5417": { + "vector": [0, 0, -48.91] + }, + "1.5833": { + "vector": [0, 0, -49.06] + }, + "1.625": { + "vector": [0, 0, -49.21] + }, + "1.6667": { + "vector": [0, 0, -49.35] + }, + "1.7083": { + "vector": [0, 0, -49.49] + }, + "1.75": { + "vector": [0, 0, -49.61] + }, + "1.7917": { + "vector": [0, 0, -49.72] + }, + "1.8333": { + "vector": [0, 0, -49.81] + }, + "1.875": { + "vector": [0, 0, -49.89] + }, + "1.9167": { + "vector": [0, 0, -49.95] + }, + "1.9583": { + "vector": [0, 0, -49.99] + }, + "2.0": { + "vector": [0, 0, -50] + }, + "2.0417": { + "vector": [0, 0, -49.99] + }, + "2.0833": { + "vector": [0, 0, -49.95] + }, + "2.125": { + "vector": [0, 0, -49.89] + }, + "2.1667": { + "vector": [0, 0, -49.81] + }, + "2.2083": { + "vector": [0, 0, -49.72] + }, + "2.25": { + "vector": [0, 0, -49.61] + }, + "2.2917": { + "vector": [0, 0, -49.49] + }, + "2.3333": { + "vector": [0, 0, -49.35] + }, + "2.375": { + "vector": [0, 0, -49.21] + }, + "2.4167": { + "vector": [0, 0, -49.06] + }, + "2.4583": { + "vector": [0, 0, -48.91] + }, + "2.5": { + "vector": [0, 0, -48.75] + }, + "2.5417": { + "vector": [0, 0, -48.59] + }, + "2.5833": { + "vector": [0, 0, -48.44] + }, + "2.625": { + "vector": [0, 0, -48.29] + }, + "2.6667": { + "vector": [0, 0, -48.15] + }, + "2.7083": { + "vector": [0, 0, -48.01] + }, + "2.75": { + "vector": [0, 0, -47.89] + }, + "2.7917": { + "vector": [0, 0, -47.78] + }, + "2.8333": { + "vector": [0, 0, -47.69] + }, + "2.875": { + "vector": [0, 0, -47.61] + }, + "2.9167": { + "vector": [0, 0, -47.55] + }, + "2.9583": { + "vector": [0, 0, -47.51] + }, + "3.0": { + "vector": [0, 0, -47.5] + }, + "3.0417": { + "vector": [0, 0, -47.51] + }, + "3.0833": { + "vector": [0, 0, -47.55] + }, + "3.125": { + "vector": [0, 0, -47.61] + }, + "3.1667": { + "vector": [0, 0, -47.69] + }, + "3.2083": { + "vector": [0, 0, -47.78] + }, + "3.25": { + "vector": [0, 0, -47.89] + }, + "3.2917": { + "vector": [0, 0, -48.01] + }, + "3.3333": { + "vector": [0, 0, -48.15] + }, + "3.375": { + "vector": [0, 0, -48.29] + }, + "3.4167": { + "vector": [0, 0, -48.44] + }, + "3.4583": { + "vector": [0, 0, -48.59] + }, + "3.5": { + "vector": [0, 0, -48.75] + }, + "3.5417": { + "vector": [0, 0, -48.91] + }, + "3.5833": { + "vector": [0, 0, -49.06] + }, + "3.625": { + "vector": [0, 0, -49.21] + }, + "3.6667": { + "vector": [0, 0, -49.35] + }, + "3.7083": { + "vector": [0, 0, -49.49] + }, + "3.75": { + "vector": [0, 0, -49.61] + }, + "3.7917": { + "vector": [0, 0, -49.72] + }, + "3.8333": { + "vector": [0, 0, -49.81] + }, + "3.875": { + "vector": [0, 0, -49.89] + }, + "3.9167": { + "vector": [0, 0, -49.95] + }, + "3.9583": { + "vector": [0, 0, -49.99] + }, + "4.0": { + "vector": [0, 0, -50] + } + } + }, + "leftBackThigh": { + "rotation": { + "0.0": { + "vector": [-14.41, -26.25, 29.69] + }, + "0.0417": { + "vector": [-14.43, -26.22, 29.73] + }, + "0.0833": { + "vector": [-14.5, -26.17, 29.89] + }, + "0.125": { + "vector": [-14.61, -26.11, 30.14] + }, + "0.1667": { + "vector": [-14.76, -26.04, 30.47] + }, + "0.2083": { + "vector": [-14.94, -25.95, 30.88] + }, + "0.25": { + "vector": [-15.15, -25.86, 31.36] + }, + "0.2917": { + "vector": [-15.38, -25.75, 31.9] + }, + "0.3333": { + "vector": [-15.64, -25.64, 32.48] + }, + "0.375": { + "vector": [-15.92, -25.53, 33.11] + }, + "0.4167": { + "vector": [-16.2, -25.41, 33.76] + }, + "0.4583": { + "vector": [-16.5, -25.3, 34.44] + }, + "0.5": { + "vector": [-16.8, -25.18, 35.12] + }, + "0.5417": { + "vector": [-17.1, -25.07, 35.8] + }, + "0.5833": { + "vector": [-17.4, -24.96, 36.48] + }, + "0.625": { + "vector": [-17.69, -24.86, 37.14] + }, + "0.6667": { + "vector": [-17.97, -24.77, 37.77] + }, + "0.7083": { + "vector": [-18.23, -24.68, 38.36] + }, + "0.75": { + "vector": [-18.47, -24.61, 38.91] + }, + "0.7917": { + "vector": [-18.69, -24.55, 39.4] + }, + "0.8333": { + "vector": [-18.87, -24.51, 39.83] + }, + "0.875": { + "vector": [-19.03, -24.49, 40.18] + }, + "0.9167": { + "vector": [-19.15, -24.48, 40.44] + }, + "0.9583": { + "vector": [-19.22, -24.5, 40.62] + }, + "1.0": { + "vector": [-19.25, -24.54, 40.69] + }, + "1.0417": { + "vector": [-19.24, -24.6, 40.65] + }, + "1.0833": { + "vector": [-19.17, -24.7, 40.51] + }, + "1.125": { + "vector": [-19.07, -24.82, 40.28] + }, + "1.1667": { + "vector": [-18.94, -24.97, 39.96] + }, + "1.2083": { + "vector": [-18.77, -25.14, 39.57] + }, + "1.25": { + "vector": [-18.57, -25.33, 39.12] + }, + "1.2917": { + "vector": [-18.34, -25.53, 38.61] + }, + "1.3333": { + "vector": [-18.1, -25.75, 38.06] + }, + "1.375": { + "vector": [-17.84, -25.98, 37.47] + }, + "1.4167": { + "vector": [-17.57, -26.21, 36.85] + }, + "1.4583": { + "vector": [-17.29, -26.45, 36.21] + }, + "1.5": { + "vector": [-17.01, -26.69, 35.56] + }, + "1.5417": { + "vector": [-16.72, -26.93, 34.91] + }, + "1.5833": { + "vector": [-16.44, -27.17, 34.28] + }, + "1.625": { + "vector": [-16.17, -27.4, 33.66] + }, + "1.6667": { + "vector": [-15.91, -27.61, 33.06] + }, + "1.7083": { + "vector": [-15.66, -27.82, 32.51] + }, + "1.75": { + "vector": [-15.44, -28.01, 31.99] + }, + "1.7917": { + "vector": [-15.24, -28.18, 31.54] + }, + "1.8333": { + "vector": [-15.07, -28.33, 31.14] + }, + "1.875": { + "vector": [-14.93, -28.46, 30.82] + }, + "1.9167": { + "vector": [-14.82, -28.56, 30.59] + }, + "1.9583": { + "vector": [-14.76, -28.63, 30.44] + }, + "2.0": { + "vector": [-14.74, -28.67, 30.39] + }, + "2.0417": { + "vector": [-14.76, -28.67, 30.46] + }, + "2.0833": { + "vector": [-14.84, -28.64, 30.62] + }, + "2.125": { + "vector": [-14.95, -28.59, 30.87] + }, + "2.1667": { + "vector": [-15.1, -28.51, 31.21] + }, + "2.2083": { + "vector": [-15.28, -28.41, 31.63] + }, + "2.25": { + "vector": [-15.49, -28.29, 32.1] + }, + "2.2917": { + "vector": [-15.72, -28.15, 32.63] + }, + "2.3333": { + "vector": [-15.97, -28, 33.21] + }, + "2.375": { + "vector": [-16.24, -27.83, 33.82] + }, + "2.4167": { + "vector": [-16.52, -27.66, 34.47] + }, + "2.4583": { + "vector": [-16.81, -27.47, 35.12] + }, + "2.5": { + "vector": [-17.1, -27.28, 35.79] + }, + "2.5417": { + "vector": [-17.39, -27.09, 36.46] + }, + "2.5833": { + "vector": [-17.68, -26.9, 37.11] + }, + "2.625": { + "vector": [-17.96, -26.71, 37.75] + }, + "2.6667": { + "vector": [-18.23, -26.52, 38.35] + }, + "2.7083": { + "vector": [-18.48, -26.34, 38.92] + }, + "2.75": { + "vector": [-18.7, -26.17, 39.44] + }, + "2.7917": { + "vector": [-18.91, -26.01, 39.91] + }, + "2.8333": { + "vector": [-19.08, -25.87, 40.31] + }, + "2.875": { + "vector": [-19.22, -25.74, 40.63] + }, + "2.9167": { + "vector": [-19.33, -25.63, 40.87] + }, + "2.9583": { + "vector": [-19.39, -25.54, 41.01] + }, + "3.0": { + "vector": [-19.41, -25.48, 41.05] + }, + "3.0417": { + "vector": [-19.38, -25.44, 40.98] + }, + "3.0833": { + "vector": [-19.3, -25.41, 40.8] + }, + "3.125": { + "vector": [-19.18, -25.4, 40.53] + }, + "3.1667": { + "vector": [-19.02, -25.41, 40.17] + }, + "3.2083": { + "vector": [-18.83, -25.42, 39.74] + }, + "3.25": { + "vector": [-18.61, -25.45, 39.23] + }, + "3.2917": { + "vector": [-18.36, -25.49, 38.67] + }, + "3.3333": { + "vector": [-18.09, -25.53, 38.07] + }, + "3.375": { + "vector": [-17.81, -25.59, 37.42] + }, + "3.4167": { + "vector": [-17.51, -25.64, 36.74] + }, + "3.4583": { + "vector": [-17.21, -25.71, 36.05] + }, + "3.5": { + "vector": [-16.9, -25.77, 35.35] + }, + "3.5417": { + "vector": [-16.59, -25.84, 34.64] + }, + "3.5833": { + "vector": [-16.28, -25.9, 33.95] + }, + "3.625": { + "vector": [-15.99, -25.97, 33.28] + }, + "3.6667": { + "vector": [-15.71, -26.03, 32.63] + }, + "3.7083": { + "vector": [-15.44, -26.08, 32.03] + }, + "3.75": { + "vector": [-15.19, -26.14, 31.47] + }, + "3.7917": { + "vector": [-14.98, -26.18, 30.97] + }, + "3.8333": { + "vector": [-14.79, -26.22, 30.54] + }, + "3.875": { + "vector": [-14.63, -26.24, 30.19] + }, + "3.9167": { + "vector": [-14.51, -26.26, 29.92] + }, + "3.9583": { + "vector": [-14.44, -26.26, 29.75] + }, + "4.0": { + "vector": [-14.41, -26.25, 29.69] + } + } + }, + "leftBackLeg": { + "rotation": { + "0.0": { + "vector": [0, 0, -7.5] + }, + "0.0417": { + "vector": [0, 0, -7.55] + }, + "0.0833": { + "vector": [0, 0, -7.7] + }, + "0.125": { + "vector": [0, 0, -7.93] + }, + "0.1667": { + "vector": [0, 0, -8.24] + }, + "0.2083": { + "vector": [0, 0, -8.62] + }, + "0.25": { + "vector": [0, 0, -9.06] + }, + "0.2917": { + "vector": [0, 0, -9.56] + }, + "0.3333": { + "vector": [0, 0, -10.09] + }, + "0.375": { + "vector": [0, 0, -10.66] + }, + "0.4167": { + "vector": [0, 0, -11.26] + }, + "0.4583": { + "vector": [0, 0, -11.88] + }, + "0.5": { + "vector": [0, 0, -12.5] + }, + "0.5417": { + "vector": [0, 0, -13.12] + }, + "0.5833": { + "vector": [0, 0, -13.74] + }, + "0.625": { + "vector": [0, 0, -14.34] + }, + "0.6667": { + "vector": [0, 0, -14.91] + }, + "0.7083": { + "vector": [0, 0, -15.44] + }, + "0.75": { + "vector": [0, 0, -15.94] + }, + "0.7917": { + "vector": [0, 0, -16.38] + }, + "0.8333": { + "vector": [0, 0, -16.76] + }, + "0.875": { + "vector": [0, 0, -17.07] + }, + "0.9167": { + "vector": [0, 0, -17.3] + }, + "0.9583": { + "vector": [0, 0, -17.45] + }, + "1.0": { + "vector": [0, 0, -17.5] + }, + "1.0417": { + "vector": [0, 0, -17.45] + }, + "1.0833": { + "vector": [0, 0, -17.3] + }, + "1.125": { + "vector": [0, 0, -17.07] + }, + "1.1667": { + "vector": [0, 0, -16.76] + }, + "1.2083": { + "vector": [0, 0, -16.38] + }, + "1.25": { + "vector": [0, 0, -15.94] + }, + "1.2917": { + "vector": [0, 0, -15.44] + }, + "1.3333": { + "vector": [0, 0, -14.91] + }, + "1.375": { + "vector": [0, 0, -14.34] + }, + "1.4167": { + "vector": [0, 0, -13.74] + }, + "1.4583": { + "vector": [0, 0, -13.12] + }, + "1.5": { + "vector": [0, 0, -12.5] + }, + "1.5417": { + "vector": [0, 0, -11.88] + }, + "1.5833": { + "vector": [0, 0, -11.26] + }, + "1.625": { + "vector": [0, 0, -10.66] + }, + "1.6667": { + "vector": [0, 0, -10.09] + }, + "1.7083": { + "vector": [0, 0, -9.56] + }, + "1.75": { + "vector": [0, 0, -9.06] + }, + "1.7917": { + "vector": [0, 0, -8.62] + }, + "1.8333": { + "vector": [0, 0, -8.24] + }, + "1.875": { + "vector": [0, 0, -7.93] + }, + "1.9167": { + "vector": [0, 0, -7.7] + }, + "1.9583": { + "vector": [0, 0, -7.55] + }, + "2.0": { + "vector": [0, 0, -7.5] + }, + "2.0417": { + "vector": [0, 0, -7.55] + }, + "2.0833": { + "vector": [0, 0, -7.7] + }, + "2.125": { + "vector": [0, 0, -7.93] + }, + "2.1667": { + "vector": [0, 0, -8.24] + }, + "2.2083": { + "vector": [0, 0, -8.62] + }, + "2.25": { + "vector": [0, 0, -9.06] + }, + "2.2917": { + "vector": [0, 0, -9.56] + }, + "2.3333": { + "vector": [0, 0, -10.09] + }, + "2.375": { + "vector": [0, 0, -10.66] + }, + "2.4167": { + "vector": [0, 0, -11.26] + }, + "2.4583": { + "vector": [0, 0, -11.88] + }, + "2.5": { + "vector": [0, 0, -12.5] + }, + "2.5417": { + "vector": [0, 0, -13.12] + }, + "2.5833": { + "vector": [0, 0, -13.74] + }, + "2.625": { + "vector": [0, 0, -14.34] + }, + "2.6667": { + "vector": [0, 0, -14.91] + }, + "2.7083": { + "vector": [0, 0, -15.44] + }, + "2.75": { + "vector": [0, 0, -15.94] + }, + "2.7917": { + "vector": [0, 0, -16.38] + }, + "2.8333": { + "vector": [0, 0, -16.76] + }, + "2.875": { + "vector": [0, 0, -17.07] + }, + "2.9167": { + "vector": [0, 0, -17.3] + }, + "2.9583": { + "vector": [0, 0, -17.45] + }, + "3.0": { + "vector": [0, 0, -17.5] + }, + "3.0417": { + "vector": [0, 0, -17.45] + }, + "3.0833": { + "vector": [0, 0, -17.3] + }, + "3.125": { + "vector": [0, 0, -17.07] + }, + "3.1667": { + "vector": [0, 0, -16.76] + }, + "3.2083": { + "vector": [0, 0, -16.38] + }, + "3.25": { + "vector": [0, 0, -15.94] + }, + "3.2917": { + "vector": [0, 0, -15.44] + }, + "3.3333": { + "vector": [0, 0, -14.91] + }, + "3.375": { + "vector": [0, 0, -14.34] + }, + "3.4167": { + "vector": [0, 0, -13.74] + }, + "3.4583": { + "vector": [0, 0, -13.12] + }, + "3.5": { + "vector": [0, 0, -12.5] + }, + "3.5417": { + "vector": [0, 0, -11.88] + }, + "3.5833": { + "vector": [0, 0, -11.26] + }, + "3.625": { + "vector": [0, 0, -10.66] + }, + "3.6667": { + "vector": [0, 0, -10.09] + }, + "3.7083": { + "vector": [0, 0, -9.56] + }, + "3.75": { + "vector": [0, 0, -9.06] + }, + "3.7917": { + "vector": [0, 0, -8.62] + }, + "3.8333": { + "vector": [0, 0, -8.24] + }, + "3.875": { + "vector": [0, 0, -7.93] + }, + "3.9167": { + "vector": [0, 0, -7.7] + }, + "3.9583": { + "vector": [0, 0, -7.55] + }, + "4.0": { + "vector": [0, 0, -7.5] + } + } + }, + "leftHeadClawThing": { + "rotation": { + "0.0": { + "vector": [-50, 0, -50] + }, + "0.0417": { + "vector": [-49.99, 0, -50] + }, + "0.0833": { + "vector": [-49.95, 0, -50] + }, + "0.125": { + "vector": [-49.89, 0, -50] + }, + "0.1667": { + "vector": [-49.8, 0, -50] + }, + "0.2083": { + "vector": [-49.7, 0, -50] + }, + "0.25": { + "vector": [-49.57, 0, -50] + }, + "0.2917": { + "vector": [-49.42, 0, -50] + }, + "0.3333": { + "vector": [-49.26, 0, -50] + }, + "0.375": { + "vector": [-49.08, 0, -50] + }, + "0.4167": { + "vector": [-48.88, 0, -50] + }, + "0.4583": { + "vector": [-48.67, 0, -50] + }, + "0.5": { + "vector": [-48.44, 0, -50] + }, + "0.5417": { + "vector": [-48.2, 0, -50] + }, + "0.5833": { + "vector": [-47.94, 0, -50] + }, + "0.625": { + "vector": [-47.68, 0, -50] + }, + "0.6667": { + "vector": [-47.41, 0, -50] + }, + "0.7083": { + "vector": [-47.13, 0, -50] + }, + "0.75": { + "vector": [-46.84, 0, -50] + }, + "0.7917": { + "vector": [-46.54, 0, -50] + }, + "0.8333": { + "vector": [-46.24, 0, -50] + }, + "0.875": { + "vector": [-45.93, 0, -50] + }, + "0.9167": { + "vector": [-45.62, 0, -50] + }, + "0.9583": { + "vector": [-45.31, 0, -50] + }, + "1.0": { + "vector": [-45, 0, -50] + }, + "1.0417": { + "vector": [-44.69, 0, -50] + }, + "1.0833": { + "vector": [-44.38, 0, -50] + }, + "1.125": { + "vector": [-44.07, 0, -50] + }, + "1.1667": { + "vector": [-43.76, 0, -50] + }, + "1.2083": { + "vector": [-43.46, 0, -50] + }, + "1.25": { + "vector": [-43.16, 0, -50] + }, + "1.2917": { + "vector": [-42.87, 0, -50] + }, + "1.3333": { + "vector": [-42.59, 0, -50] + }, + "1.375": { + "vector": [-42.32, 0, -50] + }, + "1.4167": { + "vector": [-42.06, 0, -50] + }, + "1.4583": { + "vector": [-41.8, 0, -50] + }, + "1.5": { + "vector": [-41.56, 0, -50] + }, + "1.5417": { + "vector": [-41.33, 0, -50] + }, + "1.5833": { + "vector": [-41.12, 0, -50] + }, + "1.625": { + "vector": [-40.92, 0, -50] + }, + "1.6667": { + "vector": [-40.74, 0, -50] + }, + "1.7083": { + "vector": [-40.58, 0, -50] + }, + "1.75": { + "vector": [-40.43, 0, -50] + }, + "1.7917": { + "vector": [-40.3, 0, -50] + }, + "1.8333": { + "vector": [-40.2, 0, -50] + }, + "1.875": { + "vector": [-40.11, 0, -50] + }, + "1.9167": { + "vector": [-40.05, 0, -50] + }, + "1.9583": { + "vector": [-40.01, 0, -50] + }, + "2.0": { + "vector": [-40, 0, -50] + }, + "2.0417": { + "vector": [-40.01, 0, -50] + }, + "2.0833": { + "vector": [-40.05, 0, -50] + }, + "2.125": { + "vector": [-40.11, 0, -50] + }, + "2.1667": { + "vector": [-40.2, 0, -50] + }, + "2.2083": { + "vector": [-40.3, 0, -50] + }, + "2.25": { + "vector": [-40.43, 0, -50] + }, + "2.2917": { + "vector": [-40.58, 0, -50] + }, + "2.3333": { + "vector": [-40.74, 0, -50] + }, + "2.375": { + "vector": [-40.92, 0, -50] + }, + "2.4167": { + "vector": [-41.12, 0, -50] + }, + "2.4583": { + "vector": [-41.33, 0, -50] + }, + "2.5": { + "vector": [-41.56, 0, -50] + }, + "2.5417": { + "vector": [-41.8, 0, -50] + }, + "2.5833": { + "vector": [-42.06, 0, -50] + }, + "2.625": { + "vector": [-42.32, 0, -50] + }, + "2.6667": { + "vector": [-42.59, 0, -50] + }, + "2.7083": { + "vector": [-42.87, 0, -50] + }, + "2.75": { + "vector": [-43.16, 0, -50] + }, + "2.7917": { + "vector": [-43.46, 0, -50] + }, + "2.8333": { + "vector": [-43.76, 0, -50] + }, + "2.875": { + "vector": [-44.07, 0, -50] + }, + "2.9167": { + "vector": [-44.38, 0, -50] + }, + "2.9583": { + "vector": [-44.69, 0, -50] + }, + "3.0": { + "vector": [-45, 0, -50] + }, + "3.0417": { + "vector": [-45.31, 0, -50] + }, + "3.0833": { + "vector": [-45.62, 0, -50] + }, + "3.125": { + "vector": [-45.93, 0, -50] + }, + "3.1667": { + "vector": [-46.24, 0, -50] + }, + "3.2083": { + "vector": [-46.54, 0, -50] + }, + "3.25": { + "vector": [-46.84, 0, -50] + }, + "3.2917": { + "vector": [-47.13, 0, -50] + }, + "3.3333": { + "vector": [-47.41, 0, -50] + }, + "3.375": { + "vector": [-47.68, 0, -50] + }, + "3.4167": { + "vector": [-47.94, 0, -50] + }, + "3.4583": { + "vector": [-48.2, 0, -50] + }, + "3.5": { + "vector": [-48.44, 0, -50] + }, + "3.5417": { + "vector": [-48.67, 0, -50] + }, + "3.5833": { + "vector": [-48.88, 0, -50] + }, + "3.625": { + "vector": [-49.08, 0, -50] + }, + "3.6667": { + "vector": [-49.26, 0, -50] + }, + "3.7083": { + "vector": [-49.42, 0, -50] + }, + "3.75": { + "vector": [-49.57, 0, -50] + }, + "3.7917": { + "vector": [-49.7, 0, -50] + }, + "3.8333": { + "vector": [-49.8, 0, -50] + }, + "3.875": { + "vector": [-49.89, 0, -50] + }, + "3.9167": { + "vector": [-49.95, 0, -50] + }, + "3.9583": { + "vector": [-49.99, 0, -50] + }, + "4.0": { + "vector": [-50, 0, -50] + } + } + }, + "rightHeadClawThing": { + "rotation": { + "0.0": { + "vector": [-50, 0, 50] + }, + "0.0417": { + "vector": [-49.99, 0, 50] + }, + "0.0833": { + "vector": [-49.95, 0, 50] + }, + "0.125": { + "vector": [-49.89, 0, 50] + }, + "0.1667": { + "vector": [-49.8, 0, 50] + }, + "0.2083": { + "vector": [-49.7, 0, 50] + }, + "0.25": { + "vector": [-49.57, 0, 50] + }, + "0.2917": { + "vector": [-49.42, 0, 50] + }, + "0.3333": { + "vector": [-49.26, 0, 50] + }, + "0.375": { + "vector": [-49.08, 0, 50] + }, + "0.4167": { + "vector": [-48.88, 0, 50] + }, + "0.4583": { + "vector": [-48.67, 0, 50] + }, + "0.5": { + "vector": [-48.44, 0, 50] + }, + "0.5417": { + "vector": [-48.2, 0, 50] + }, + "0.5833": { + "vector": [-47.94, 0, 50] + }, + "0.625": { + "vector": [-47.68, 0, 50] + }, + "0.6667": { + "vector": [-47.41, 0, 50] + }, + "0.7083": { + "vector": [-47.13, 0, 50] + }, + "0.75": { + "vector": [-46.84, 0, 50] + }, + "0.7917": { + "vector": [-46.54, 0, 50] + }, + "0.8333": { + "vector": [-46.24, 0, 50] + }, + "0.875": { + "vector": [-45.93, 0, 50] + }, + "0.9167": { + "vector": [-45.62, 0, 50] + }, + "0.9583": { + "vector": [-45.31, 0, 50] + }, + "1.0": { + "vector": [-45, 0, 50] + }, + "1.0417": { + "vector": [-44.69, 0, 50] + }, + "1.0833": { + "vector": [-44.38, 0, 50] + }, + "1.125": { + "vector": [-44.07, 0, 50] + }, + "1.1667": { + "vector": [-43.76, 0, 50] + }, + "1.2083": { + "vector": [-43.46, 0, 50] + }, + "1.25": { + "vector": [-43.16, 0, 50] + }, + "1.2917": { + "vector": [-42.87, 0, 50] + }, + "1.3333": { + "vector": [-42.59, 0, 50] + }, + "1.375": { + "vector": [-42.32, 0, 50] + }, + "1.4167": { + "vector": [-42.06, 0, 50] + }, + "1.4583": { + "vector": [-41.8, 0, 50] + }, + "1.5": { + "vector": [-41.56, 0, 50] + }, + "1.5417": { + "vector": [-41.33, 0, 50] + }, + "1.5833": { + "vector": [-41.12, 0, 50] + }, + "1.625": { + "vector": [-40.92, 0, 50] + }, + "1.6667": { + "vector": [-40.74, 0, 50] + }, + "1.7083": { + "vector": [-40.58, 0, 50] + }, + "1.75": { + "vector": [-40.43, 0, 50] + }, + "1.7917": { + "vector": [-40.3, 0, 50] + }, + "1.8333": { + "vector": [-40.2, 0, 50] + }, + "1.875": { + "vector": [-40.11, 0, 50] + }, + "1.9167": { + "vector": [-40.05, 0, 50] + }, + "1.9583": { + "vector": [-40.01, 0, 50] + }, + "2.0": { + "vector": [-40, 0, 50] + }, + "2.0417": { + "vector": [-40.01, 0, 50] + }, + "2.0833": { + "vector": [-40.05, 0, 50] + }, + "2.125": { + "vector": [-40.11, 0, 50] + }, + "2.1667": { + "vector": [-40.2, 0, 50] + }, + "2.2083": { + "vector": [-40.3, 0, 50] + }, + "2.25": { + "vector": [-40.43, 0, 50] + }, + "2.2917": { + "vector": [-40.58, 0, 50] + }, + "2.3333": { + "vector": [-40.74, 0, 50] + }, + "2.375": { + "vector": [-40.92, 0, 50] + }, + "2.4167": { + "vector": [-41.12, 0, 50] + }, + "2.4583": { + "vector": [-41.33, 0, 50] + }, + "2.5": { + "vector": [-41.56, 0, 50] + }, + "2.5417": { + "vector": [-41.8, 0, 50] + }, + "2.5833": { + "vector": [-42.06, 0, 50] + }, + "2.625": { + "vector": [-42.32, 0, 50] + }, + "2.6667": { + "vector": [-42.59, 0, 50] + }, + "2.7083": { + "vector": [-42.87, 0, 50] + }, + "2.75": { + "vector": [-43.16, 0, 50] + }, + "2.7917": { + "vector": [-43.46, 0, 50] + }, + "2.8333": { + "vector": [-43.76, 0, 50] + }, + "2.875": { + "vector": [-44.07, 0, 50] + }, + "2.9167": { + "vector": [-44.38, 0, 50] + }, + "2.9583": { + "vector": [-44.69, 0, 50] + }, + "3.0": { + "vector": [-45, 0, 50] + }, + "3.0417": { + "vector": [-45.31, 0, 50] + }, + "3.0833": { + "vector": [-45.62, 0, 50] + }, + "3.125": { + "vector": [-45.93, 0, 50] + }, + "3.1667": { + "vector": [-46.24, 0, 50] + }, + "3.2083": { + "vector": [-46.54, 0, 50] + }, + "3.25": { + "vector": [-46.84, 0, 50] + }, + "3.2917": { + "vector": [-47.13, 0, 50] + }, + "3.3333": { + "vector": [-47.41, 0, 50] + }, + "3.375": { + "vector": [-47.68, 0, 50] + }, + "3.4167": { + "vector": [-47.94, 0, 50] + }, + "3.4583": { + "vector": [-48.2, 0, 50] + }, + "3.5": { + "vector": [-48.44, 0, 50] + }, + "3.5417": { + "vector": [-48.67, 0, 50] + }, + "3.5833": { + "vector": [-48.88, 0, 50] + }, + "3.625": { + "vector": [-49.08, 0, 50] + }, + "3.6667": { + "vector": [-49.26, 0, 50] + }, + "3.7083": { + "vector": [-49.42, 0, 50] + }, + "3.75": { + "vector": [-49.57, 0, 50] + }, + "3.7917": { + "vector": [-49.7, 0, 50] + }, + "3.8333": { + "vector": [-49.8, 0, 50] + }, + "3.875": { + "vector": [-49.89, 0, 50] + }, + "3.9167": { + "vector": [-49.95, 0, 50] + }, + "3.9583": { + "vector": [-49.99, 0, 50] + }, + "4.0": { + "vector": [-50, 0, 50] + } + } + }, + "tail1": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.0417": { + "vector": [0, 0, 0] + }, + "0.0833": { + "vector": [-0.01, 0, 0] + }, + "0.125": { + "vector": [-0.03, 0, 0] + }, + "0.1667": { + "vector": [-0.05, 0, 0] + }, + "0.2083": { + "vector": [-0.08, 0, 0] + }, + "0.25": { + "vector": [-0.11, 0, 0] + }, + "0.2917": { + "vector": [-0.14, 0, 0] + }, + "0.3333": { + "vector": [-0.19, 0, 0] + }, + "0.375": { + "vector": [-0.23, 0, 0] + }, + "0.4167": { + "vector": [-0.28, 0, 0] + }, + "0.4583": { + "vector": [-0.33, 0, 0] + }, + "0.5": { + "vector": [-0.39, 0, 0] + }, + "0.5417": { + "vector": [-0.45, 0, 0] + }, + "0.5833": { + "vector": [-0.51, 0, 0] + }, + "0.625": { + "vector": [-0.58, 0, 0] + }, + "0.6667": { + "vector": [-0.65, 0, 0] + }, + "0.7083": { + "vector": [-0.72, 0, 0] + }, + "0.75": { + "vector": [-0.79, 0, 0] + }, + "0.7917": { + "vector": [-0.87, 0, 0] + }, + "0.8333": { + "vector": [-0.94, 0, 0] + }, + "0.875": { + "vector": [-1.02, 0, 0] + }, + "0.9167": { + "vector": [-1.09, 0, 0] + }, + "0.9583": { + "vector": [-1.17, 0, 0] + }, + "1.0": { + "vector": [-1.25, 0, 0] + }, + "1.0417": { + "vector": [-1.33, 0, 0] + }, + "1.0833": { + "vector": [-1.41, 0, 0] + }, + "1.125": { + "vector": [-1.48, 0, 0] + }, + "1.1667": { + "vector": [-1.56, 0, 0] + }, + "1.2083": { + "vector": [-1.63, 0, 0] + }, + "1.25": { + "vector": [-1.71, 0, 0] + }, + "1.2917": { + "vector": [-1.78, 0, 0] + }, + "1.3333": { + "vector": [-1.85, 0, 0] + }, + "1.375": { + "vector": [-1.92, 0, 0] + }, + "1.4167": { + "vector": [-1.99, 0, 0] + }, + "1.4583": { + "vector": [-2.05, 0, 0] + }, + "1.5": { + "vector": [-2.11, 0, 0] + }, + "1.5417": { + "vector": [-2.17, 0, 0] + }, + "1.5833": { + "vector": [-2.22, 0, 0] + }, + "1.625": { + "vector": [-2.27, 0, 0] + }, + "1.6667": { + "vector": [-2.31, 0, 0] + }, + "1.7083": { + "vector": [-2.36, 0, 0] + }, + "1.75": { + "vector": [-2.39, 0, 0] + }, + "1.7917": { + "vector": [-2.42, 0, 0] + }, + "1.8333": { + "vector": [-2.45, 0, 0] + }, + "1.875": { + "vector": [-2.47, 0, 0] + }, + "1.9167": { + "vector": [-2.49, 0, 0] + }, + "1.9583": { + "vector": [-2.5, 0, 0] + }, + "2.0": { + "vector": [-2.5, 0, 0] + }, + "2.0417": { + "vector": [-2.5, 0, 0] + }, + "2.0833": { + "vector": [-2.49, 0, 0] + }, + "2.125": { + "vector": [-2.47, 0, 0] + }, + "2.1667": { + "vector": [-2.45, 0, 0] + }, + "2.2083": { + "vector": [-2.42, 0, 0] + }, + "2.25": { + "vector": [-2.39, 0, 0] + }, + "2.2917": { + "vector": [-2.36, 0, 0] + }, + "2.3333": { + "vector": [-2.31, 0, 0] + }, + "2.375": { + "vector": [-2.27, 0, 0] + }, + "2.4167": { + "vector": [-2.22, 0, 0] + }, + "2.4583": { + "vector": [-2.17, 0, 0] + }, + "2.5": { + "vector": [-2.11, 0, 0] + }, + "2.5417": { + "vector": [-2.05, 0, 0] + }, + "2.5833": { + "vector": [-1.99, 0, 0] + }, + "2.625": { + "vector": [-1.92, 0, 0] + }, + "2.6667": { + "vector": [-1.85, 0, 0] + }, + "2.7083": { + "vector": [-1.78, 0, 0] + }, + "2.75": { + "vector": [-1.71, 0, 0] + }, + "2.7917": { + "vector": [-1.63, 0, 0] + }, + "2.8333": { + "vector": [-1.56, 0, 0] + }, + "2.875": { + "vector": [-1.48, 0, 0] + }, + "2.9167": { + "vector": [-1.41, 0, 0] + }, + "2.9583": { + "vector": [-1.33, 0, 0] + }, + "3.0": { + "vector": [-1.25, 0, 0] + }, + "3.0417": { + "vector": [-1.17, 0, 0] + }, + "3.0833": { + "vector": [-1.09, 0, 0] + }, + "3.125": { + "vector": [-1.02, 0, 0] + }, + "3.1667": { + "vector": [-0.94, 0, 0] + }, + "3.2083": { + "vector": [-0.87, 0, 0] + }, + "3.25": { + "vector": [-0.79, 0, 0] + }, + "3.2917": { + "vector": [-0.72, 0, 0] + }, + "3.3333": { + "vector": [-0.65, 0, 0] + }, + "3.375": { + "vector": [-0.58, 0, 0] + }, + "3.4167": { + "vector": [-0.51, 0, 0] + }, + "3.4583": { + "vector": [-0.45, 0, 0] + }, + "3.5": { + "vector": [-0.39, 0, 0] + }, + "3.5417": { + "vector": [-0.33, 0, 0] + }, + "3.5833": { + "vector": [-0.28, 0, 0] + }, + "3.625": { + "vector": [-0.23, 0, 0] + }, + "3.6667": { + "vector": [-0.19, 0, 0] + }, + "3.7083": { + "vector": [-0.14, 0, 0] + }, + "3.75": { + "vector": [-0.11, 0, 0] + }, + "3.7917": { + "vector": [-0.08, 0, 0] + }, + "3.8333": { + "vector": [-0.05, 0, 0] + }, + "3.875": { + "vector": [-0.03, 0, 0] + }, + "3.9167": { + "vector": [-0.01, 0, 0] + }, + "3.9583": { + "vector": [0, 0, 0] + }, + "4.0": { + "vector": [0, 0, 0] + } + } + }, + "tail2": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.0417": { + "vector": [0, 0, 0] + }, + "0.0833": { + "vector": [-0.01, 0, 0] + }, + "0.125": { + "vector": [-0.03, 0, 0] + }, + "0.1667": { + "vector": [-0.05, 0, 0] + }, + "0.2083": { + "vector": [-0.08, 0, 0] + }, + "0.25": { + "vector": [-0.11, 0, 0] + }, + "0.2917": { + "vector": [-0.14, 0, 0] + }, + "0.3333": { + "vector": [-0.19, 0, 0] + }, + "0.375": { + "vector": [-0.23, 0, 0] + }, + "0.4167": { + "vector": [-0.28, 0, 0] + }, + "0.4583": { + "vector": [-0.33, 0, 0] + }, + "0.5": { + "vector": [-0.39, 0, 0] + }, + "0.5417": { + "vector": [-0.45, 0, 0] + }, + "0.5833": { + "vector": [-0.51, 0, 0] + }, + "0.625": { + "vector": [-0.58, 0, 0] + }, + "0.6667": { + "vector": [-0.65, 0, 0] + }, + "0.7083": { + "vector": [-0.72, 0, 0] + }, + "0.75": { + "vector": [-0.79, 0, 0] + }, + "0.7917": { + "vector": [-0.87, 0, 0] + }, + "0.8333": { + "vector": [-0.94, 0, 0] + }, + "0.875": { + "vector": [-1.02, 0, 0] + }, + "0.9167": { + "vector": [-1.09, 0, 0] + }, + "0.9583": { + "vector": [-1.17, 0, 0] + }, + "1.0": { + "vector": [-1.25, 0, 0] + }, + "1.0417": { + "vector": [-1.33, 0, 0] + }, + "1.0833": { + "vector": [-1.41, 0, 0] + }, + "1.125": { + "vector": [-1.48, 0, 0] + }, + "1.1667": { + "vector": [-1.56, 0, 0] + }, + "1.2083": { + "vector": [-1.63, 0, 0] + }, + "1.25": { + "vector": [-1.71, 0, 0] + }, + "1.2917": { + "vector": [-1.78, 0, 0] + }, + "1.3333": { + "vector": [-1.85, 0, 0] + }, + "1.375": { + "vector": [-1.92, 0, 0] + }, + "1.4167": { + "vector": [-1.99, 0, 0] + }, + "1.4583": { + "vector": [-2.05, 0, 0] + }, + "1.5": { + "vector": [-2.11, 0, 0] + }, + "1.5417": { + "vector": [-2.17, 0, 0] + }, + "1.5833": { + "vector": [-2.22, 0, 0] + }, + "1.625": { + "vector": [-2.27, 0, 0] + }, + "1.6667": { + "vector": [-2.31, 0, 0] + }, + "1.7083": { + "vector": [-2.36, 0, 0] + }, + "1.75": { + "vector": [-2.39, 0, 0] + }, + "1.7917": { + "vector": [-2.42, 0, 0] + }, + "1.8333": { + "vector": [-2.45, 0, 0] + }, + "1.875": { + "vector": [-2.47, 0, 0] + }, + "1.9167": { + "vector": [-2.49, 0, 0] + }, + "1.9583": { + "vector": [-2.5, 0, 0] + }, + "2.0": { + "vector": [-2.5, 0, 0] + }, + "2.0417": { + "vector": [-2.5, 0, 0] + }, + "2.0833": { + "vector": [-2.49, 0, 0] + }, + "2.125": { + "vector": [-2.47, 0, 0] + }, + "2.1667": { + "vector": [-2.45, 0, 0] + }, + "2.2083": { + "vector": [-2.42, 0, 0] + }, + "2.25": { + "vector": [-2.39, 0, 0] + }, + "2.2917": { + "vector": [-2.36, 0, 0] + }, + "2.3333": { + "vector": [-2.31, 0, 0] + }, + "2.375": { + "vector": [-2.27, 0, 0] + }, + "2.4167": { + "vector": [-2.22, 0, 0] + }, + "2.4583": { + "vector": [-2.17, 0, 0] + }, + "2.5": { + "vector": [-2.11, 0, 0] + }, + "2.5417": { + "vector": [-2.05, 0, 0] + }, + "2.5833": { + "vector": [-1.99, 0, 0] + }, + "2.625": { + "vector": [-1.92, 0, 0] + }, + "2.6667": { + "vector": [-1.85, 0, 0] + }, + "2.7083": { + "vector": [-1.78, 0, 0] + }, + "2.75": { + "vector": [-1.71, 0, 0] + }, + "2.7917": { + "vector": [-1.63, 0, 0] + }, + "2.8333": { + "vector": [-1.56, 0, 0] + }, + "2.875": { + "vector": [-1.48, 0, 0] + }, + "2.9167": { + "vector": [-1.41, 0, 0] + }, + "2.9583": { + "vector": [-1.33, 0, 0] + }, + "3.0": { + "vector": [-1.25, 0, 0] + }, + "3.0417": { + "vector": [-1.17, 0, 0] + }, + "3.0833": { + "vector": [-1.09, 0, 0] + }, + "3.125": { + "vector": [-1.02, 0, 0] + }, + "3.1667": { + "vector": [-0.94, 0, 0] + }, + "3.2083": { + "vector": [-0.87, 0, 0] + }, + "3.25": { + "vector": [-0.79, 0, 0] + }, + "3.2917": { + "vector": [-0.72, 0, 0] + }, + "3.3333": { + "vector": [-0.65, 0, 0] + }, + "3.375": { + "vector": [-0.58, 0, 0] + }, + "3.4167": { + "vector": [-0.51, 0, 0] + }, + "3.4583": { + "vector": [-0.45, 0, 0] + }, + "3.5": { + "vector": [-0.39, 0, 0] + }, + "3.5417": { + "vector": [-0.33, 0, 0] + }, + "3.5833": { + "vector": [-0.28, 0, 0] + }, + "3.625": { + "vector": [-0.23, 0, 0] + }, + "3.6667": { + "vector": [-0.19, 0, 0] + }, + "3.7083": { + "vector": [-0.14, 0, 0] + }, + "3.75": { + "vector": [-0.11, 0, 0] + }, + "3.7917": { + "vector": [-0.08, 0, 0] + }, + "3.8333": { + "vector": [-0.05, 0, 0] + }, + "3.875": { + "vector": [-0.03, 0, 0] + }, + "3.9167": { + "vector": [-0.01, 0, 0] + }, + "3.9583": { + "vector": [0, 0, 0] + }, + "4.0": { + "vector": [0, 0, 0] + } + } + }, + "tail3": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.0417": { + "vector": [0, 0, 0] + }, + "0.0833": { + "vector": [-0.01, 0, 0] + }, + "0.125": { + "vector": [-0.03, 0, 0] + }, + "0.1667": { + "vector": [-0.05, 0, 0] + }, + "0.2083": { + "vector": [-0.08, 0, 0] + }, + "0.25": { + "vector": [-0.11, 0, 0] + }, + "0.2917": { + "vector": [-0.14, 0, 0] + }, + "0.3333": { + "vector": [-0.19, 0, 0] + }, + "0.375": { + "vector": [-0.23, 0, 0] + }, + "0.4167": { + "vector": [-0.28, 0, 0] + }, + "0.4583": { + "vector": [-0.33, 0, 0] + }, + "0.5": { + "vector": [-0.39, 0, 0] + }, + "0.5417": { + "vector": [-0.45, 0, 0] + }, + "0.5833": { + "vector": [-0.51, 0, 0] + }, + "0.625": { + "vector": [-0.58, 0, 0] + }, + "0.6667": { + "vector": [-0.65, 0, 0] + }, + "0.7083": { + "vector": [-0.72, 0, 0] + }, + "0.75": { + "vector": [-0.79, 0, 0] + }, + "0.7917": { + "vector": [-0.87, 0, 0] + }, + "0.8333": { + "vector": [-0.94, 0, 0] + }, + "0.875": { + "vector": [-1.02, 0, 0] + }, + "0.9167": { + "vector": [-1.09, 0, 0] + }, + "0.9583": { + "vector": [-1.17, 0, 0] + }, + "1.0": { + "vector": [-1.25, 0, 0] + }, + "1.0417": { + "vector": [-1.33, 0, 0] + }, + "1.0833": { + "vector": [-1.41, 0, 0] + }, + "1.125": { + "vector": [-1.48, 0, 0] + }, + "1.1667": { + "vector": [-1.56, 0, 0] + }, + "1.2083": { + "vector": [-1.63, 0, 0] + }, + "1.25": { + "vector": [-1.71, 0, 0] + }, + "1.2917": { + "vector": [-1.78, 0, 0] + }, + "1.3333": { + "vector": [-1.85, 0, 0] + }, + "1.375": { + "vector": [-1.92, 0, 0] + }, + "1.4167": { + "vector": [-1.99, 0, 0] + }, + "1.4583": { + "vector": [-2.05, 0, 0] + }, + "1.5": { + "vector": [-2.11, 0, 0] + }, + "1.5417": { + "vector": [-2.17, 0, 0] + }, + "1.5833": { + "vector": [-2.22, 0, 0] + }, + "1.625": { + "vector": [-2.27, 0, 0] + }, + "1.6667": { + "vector": [-2.31, 0, 0] + }, + "1.7083": { + "vector": [-2.36, 0, 0] + }, + "1.75": { + "vector": [-2.39, 0, 0] + }, + "1.7917": { + "vector": [-2.42, 0, 0] + }, + "1.8333": { + "vector": [-2.45, 0, 0] + }, + "1.875": { + "vector": [-2.47, 0, 0] + }, + "1.9167": { + "vector": [-2.49, 0, 0] + }, + "1.9583": { + "vector": [-2.5, 0, 0] + }, + "2.0": { + "vector": [-2.5, 0, 0] + }, + "2.0417": { + "vector": [-2.5, 0, 0] + }, + "2.0833": { + "vector": [-2.49, 0, 0] + }, + "2.125": { + "vector": [-2.47, 0, 0] + }, + "2.1667": { + "vector": [-2.45, 0, 0] + }, + "2.2083": { + "vector": [-2.42, 0, 0] + }, + "2.25": { + "vector": [-2.39, 0, 0] + }, + "2.2917": { + "vector": [-2.36, 0, 0] + }, + "2.3333": { + "vector": [-2.31, 0, 0] + }, + "2.375": { + "vector": [-2.27, 0, 0] + }, + "2.4167": { + "vector": [-2.22, 0, 0] + }, + "2.4583": { + "vector": [-2.17, 0, 0] + }, + "2.5": { + "vector": [-2.11, 0, 0] + }, + "2.5417": { + "vector": [-2.05, 0, 0] + }, + "2.5833": { + "vector": [-1.99, 0, 0] + }, + "2.625": { + "vector": [-1.92, 0, 0] + }, + "2.6667": { + "vector": [-1.85, 0, 0] + }, + "2.7083": { + "vector": [-1.78, 0, 0] + }, + "2.75": { + "vector": [-1.71, 0, 0] + }, + "2.7917": { + "vector": [-1.63, 0, 0] + }, + "2.8333": { + "vector": [-1.56, 0, 0] + }, + "2.875": { + "vector": [-1.48, 0, 0] + }, + "2.9167": { + "vector": [-1.41, 0, 0] + }, + "2.9583": { + "vector": [-1.33, 0, 0] + }, + "3.0": { + "vector": [-1.25, 0, 0] + }, + "3.0417": { + "vector": [-1.17, 0, 0] + }, + "3.0833": { + "vector": [-1.09, 0, 0] + }, + "3.125": { + "vector": [-1.02, 0, 0] + }, + "3.1667": { + "vector": [-0.94, 0, 0] + }, + "3.2083": { + "vector": [-0.87, 0, 0] + }, + "3.25": { + "vector": [-0.79, 0, 0] + }, + "3.2917": { + "vector": [-0.72, 0, 0] + }, + "3.3333": { + "vector": [-0.65, 0, 0] + }, + "3.375": { + "vector": [-0.58, 0, 0] + }, + "3.4167": { + "vector": [-0.51, 0, 0] + }, + "3.4583": { + "vector": [-0.45, 0, 0] + }, + "3.5": { + "vector": [-0.39, 0, 0] + }, + "3.5417": { + "vector": [-0.33, 0, 0] + }, + "3.5833": { + "vector": [-0.28, 0, 0] + }, + "3.625": { + "vector": [-0.23, 0, 0] + }, + "3.6667": { + "vector": [-0.19, 0, 0] + }, + "3.7083": { + "vector": [-0.14, 0, 0] + }, + "3.75": { + "vector": [-0.11, 0, 0] + }, + "3.7917": { + "vector": [-0.08, 0, 0] + }, + "3.8333": { + "vector": [-0.05, 0, 0] + }, + "3.875": { + "vector": [-0.03, 0, 0] + }, + "3.9167": { + "vector": [-0.01, 0, 0] + }, + "3.9583": { + "vector": [0, 0, 0] + }, + "4.0": { + "vector": [0, 0, 0] + } + } + }, + "tail4": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.0417": { + "vector": [0, 0, 0] + }, + "0.0833": { + "vector": [0.01, 0, 0] + }, + "0.125": { + "vector": [0.03, 0, 0] + }, + "0.1667": { + "vector": [0.05, 0, 0] + }, + "0.2083": { + "vector": [0.08, 0, 0] + }, + "0.25": { + "vector": [0.11, 0, 0] + }, + "0.2917": { + "vector": [0.14, 0, 0] + }, + "0.3333": { + "vector": [0.19, 0, 0] + }, + "0.375": { + "vector": [0.23, 0, 0] + }, + "0.4167": { + "vector": [0.28, 0, 0] + }, + "0.4583": { + "vector": [0.33, 0, 0] + }, + "0.5": { + "vector": [0.39, 0, 0] + }, + "0.5417": { + "vector": [0.45, 0, 0] + }, + "0.5833": { + "vector": [0.51, 0, 0] + }, + "0.625": { + "vector": [0.58, 0, 0] + }, + "0.6667": { + "vector": [0.65, 0, 0] + }, + "0.7083": { + "vector": [0.72, 0, 0] + }, + "0.75": { + "vector": [0.79, 0, 0] + }, + "0.7917": { + "vector": [0.87, 0, 0] + }, + "0.8333": { + "vector": [0.94, 0, 0] + }, + "0.875": { + "vector": [1.02, 0, 0] + }, + "0.9167": { + "vector": [1.09, 0, 0] + }, + "0.9583": { + "vector": [1.17, 0, 0] + }, + "1.0": { + "vector": [1.25, 0, 0] + }, + "1.0417": { + "vector": [1.33, 0, 0] + }, + "1.0833": { + "vector": [1.41, 0, 0] + }, + "1.125": { + "vector": [1.48, 0, 0] + }, + "1.1667": { + "vector": [1.56, 0, 0] + }, + "1.2083": { + "vector": [1.63, 0, 0] + }, + "1.25": { + "vector": [1.71, 0, 0] + }, + "1.2917": { + "vector": [1.78, 0, 0] + }, + "1.3333": { + "vector": [1.85, 0, 0] + }, + "1.375": { + "vector": [1.92, 0, 0] + }, + "1.4167": { + "vector": [1.99, 0, 0] + }, + "1.4583": { + "vector": [2.05, 0, 0] + }, + "1.5": { + "vector": [2.11, 0, 0] + }, + "1.5417": { + "vector": [2.17, 0, 0] + }, + "1.5833": { + "vector": [2.22, 0, 0] + }, + "1.625": { + "vector": [2.27, 0, 0] + }, + "1.6667": { + "vector": [2.31, 0, 0] + }, + "1.7083": { + "vector": [2.36, 0, 0] + }, + "1.75": { + "vector": [2.39, 0, 0] + }, + "1.7917": { + "vector": [2.42, 0, 0] + }, + "1.8333": { + "vector": [2.45, 0, 0] + }, + "1.875": { + "vector": [2.47, 0, 0] + }, + "1.9167": { + "vector": [2.49, 0, 0] + }, + "1.9583": { + "vector": [2.5, 0, 0] + }, + "2.0": { + "vector": [2.5, 0, 0] + }, + "2.0417": { + "vector": [2.5, 0, 0] + }, + "2.0833": { + "vector": [2.49, 0, 0] + }, + "2.125": { + "vector": [2.47, 0, 0] + }, + "2.1667": { + "vector": [2.45, 0, 0] + }, + "2.2083": { + "vector": [2.42, 0, 0] + }, + "2.25": { + "vector": [2.39, 0, 0] + }, + "2.2917": { + "vector": [2.36, 0, 0] + }, + "2.3333": { + "vector": [2.31, 0, 0] + }, + "2.375": { + "vector": [2.27, 0, 0] + }, + "2.4167": { + "vector": [2.22, 0, 0] + }, + "2.4583": { + "vector": [2.17, 0, 0] + }, + "2.5": { + "vector": [2.11, 0, 0] + }, + "2.5417": { + "vector": [2.05, 0, 0] + }, + "2.5833": { + "vector": [1.99, 0, 0] + }, + "2.625": { + "vector": [1.92, 0, 0] + }, + "2.6667": { + "vector": [1.85, 0, 0] + }, + "2.7083": { + "vector": [1.78, 0, 0] + }, + "2.75": { + "vector": [1.71, 0, 0] + }, + "2.7917": { + "vector": [1.63, 0, 0] + }, + "2.8333": { + "vector": [1.56, 0, 0] + }, + "2.875": { + "vector": [1.48, 0, 0] + }, + "2.9167": { + "vector": [1.41, 0, 0] + }, + "2.9583": { + "vector": [1.33, 0, 0] + }, + "3.0": { + "vector": [1.25, 0, 0] + }, + "3.0417": { + "vector": [1.17, 0, 0] + }, + "3.0833": { + "vector": [1.09, 0, 0] + }, + "3.125": { + "vector": [1.02, 0, 0] + }, + "3.1667": { + "vector": [0.94, 0, 0] + }, + "3.2083": { + "vector": [0.87, 0, 0] + }, + "3.25": { + "vector": [0.79, 0, 0] + }, + "3.2917": { + "vector": [0.72, 0, 0] + }, + "3.3333": { + "vector": [0.65, 0, 0] + }, + "3.375": { + "vector": [0.58, 0, 0] + }, + "3.4167": { + "vector": [0.51, 0, 0] + }, + "3.4583": { + "vector": [0.45, 0, 0] + }, + "3.5": { + "vector": [0.39, 0, 0] + }, + "3.5417": { + "vector": [0.33, 0, 0] + }, + "3.5833": { + "vector": [0.28, 0, 0] + }, + "3.625": { + "vector": [0.23, 0, 0] + }, + "3.6667": { + "vector": [0.19, 0, 0] + }, + "3.7083": { + "vector": [0.14, 0, 0] + }, + "3.75": { + "vector": [0.11, 0, 0] + }, + "3.7917": { + "vector": [0.08, 0, 0] + }, + "3.8333": { + "vector": [0.05, 0, 0] + }, + "3.875": { + "vector": [0.03, 0, 0] + }, + "3.9167": { + "vector": [0.01, 0, 0] + }, + "3.9583": { + "vector": [0, 0, 0] + }, + "4.0": { + "vector": [0, 0, 0] + } + } + }, + "tail5": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.0417": { + "vector": [0, 0, 0] + }, + "0.0833": { + "vector": [0.01, 0, 0] + }, + "0.125": { + "vector": [0.03, 0, 0] + }, + "0.1667": { + "vector": [0.05, 0, 0] + }, + "0.2083": { + "vector": [0.08, 0, 0] + }, + "0.25": { + "vector": [0.11, 0, 0] + }, + "0.2917": { + "vector": [0.14, 0, 0] + }, + "0.3333": { + "vector": [0.19, 0, 0] + }, + "0.375": { + "vector": [0.23, 0, 0] + }, + "0.4167": { + "vector": [0.28, 0, 0] + }, + "0.4583": { + "vector": [0.33, 0, 0] + }, + "0.5": { + "vector": [0.39, 0, 0] + }, + "0.5417": { + "vector": [0.45, 0, 0] + }, + "0.5833": { + "vector": [0.51, 0, 0] + }, + "0.625": { + "vector": [0.58, 0, 0] + }, + "0.6667": { + "vector": [0.65, 0, 0] + }, + "0.7083": { + "vector": [0.72, 0, 0] + }, + "0.75": { + "vector": [0.79, 0, 0] + }, + "0.7917": { + "vector": [0.87, 0, 0] + }, + "0.8333": { + "vector": [0.94, 0, 0] + }, + "0.875": { + "vector": [1.02, 0, 0] + }, + "0.9167": { + "vector": [1.09, 0, 0] + }, + "0.9583": { + "vector": [1.17, 0, 0] + }, + "1.0": { + "vector": [1.25, 0, 0] + }, + "1.0417": { + "vector": [1.33, 0, 0] + }, + "1.0833": { + "vector": [1.41, 0, 0] + }, + "1.125": { + "vector": [1.48, 0, 0] + }, + "1.1667": { + "vector": [1.56, 0, 0] + }, + "1.2083": { + "vector": [1.63, 0, 0] + }, + "1.25": { + "vector": [1.71, 0, 0] + }, + "1.2917": { + "vector": [1.78, 0, 0] + }, + "1.3333": { + "vector": [1.85, 0, 0] + }, + "1.375": { + "vector": [1.92, 0, 0] + }, + "1.4167": { + "vector": [1.99, 0, 0] + }, + "1.4583": { + "vector": [2.05, 0, 0] + }, + "1.5": { + "vector": [2.11, 0, 0] + }, + "1.5417": { + "vector": [2.17, 0, 0] + }, + "1.5833": { + "vector": [2.22, 0, 0] + }, + "1.625": { + "vector": [2.27, 0, 0] + }, + "1.6667": { + "vector": [2.31, 0, 0] + }, + "1.7083": { + "vector": [2.36, 0, 0] + }, + "1.75": { + "vector": [2.39, 0, 0] + }, + "1.7917": { + "vector": [2.42, 0, 0] + }, + "1.8333": { + "vector": [2.45, 0, 0] + }, + "1.875": { + "vector": [2.47, 0, 0] + }, + "1.9167": { + "vector": [2.49, 0, 0] + }, + "1.9583": { + "vector": [2.5, 0, 0] + }, + "2.0": { + "vector": [2.5, 0, 0] + }, + "2.0417": { + "vector": [2.5, 0, 0] + }, + "2.0833": { + "vector": [2.49, 0, 0] + }, + "2.125": { + "vector": [2.47, 0, 0] + }, + "2.1667": { + "vector": [2.45, 0, 0] + }, + "2.2083": { + "vector": [2.42, 0, 0] + }, + "2.25": { + "vector": [2.39, 0, 0] + }, + "2.2917": { + "vector": [2.36, 0, 0] + }, + "2.3333": { + "vector": [2.31, 0, 0] + }, + "2.375": { + "vector": [2.27, 0, 0] + }, + "2.4167": { + "vector": [2.22, 0, 0] + }, + "2.4583": { + "vector": [2.17, 0, 0] + }, + "2.5": { + "vector": [2.11, 0, 0] + }, + "2.5417": { + "vector": [2.05, 0, 0] + }, + "2.5833": { + "vector": [1.99, 0, 0] + }, + "2.625": { + "vector": [1.92, 0, 0] + }, + "2.6667": { + "vector": [1.85, 0, 0] + }, + "2.7083": { + "vector": [1.78, 0, 0] + }, + "2.75": { + "vector": [1.71, 0, 0] + }, + "2.7917": { + "vector": [1.63, 0, 0] + }, + "2.8333": { + "vector": [1.56, 0, 0] + }, + "2.875": { + "vector": [1.48, 0, 0] + }, + "2.9167": { + "vector": [1.41, 0, 0] + }, + "2.9583": { + "vector": [1.33, 0, 0] + }, + "3.0": { + "vector": [1.25, 0, 0] + }, + "3.0417": { + "vector": [1.17, 0, 0] + }, + "3.0833": { + "vector": [1.09, 0, 0] + }, + "3.125": { + "vector": [1.02, 0, 0] + }, + "3.1667": { + "vector": [0.94, 0, 0] + }, + "3.2083": { + "vector": [0.87, 0, 0] + }, + "3.25": { + "vector": [0.79, 0, 0] + }, + "3.2917": { + "vector": [0.72, 0, 0] + }, + "3.3333": { + "vector": [0.65, 0, 0] + }, + "3.375": { + "vector": [0.58, 0, 0] + }, + "3.4167": { + "vector": [0.51, 0, 0] + }, + "3.4583": { + "vector": [0.45, 0, 0] + }, + "3.5": { + "vector": [0.39, 0, 0] + }, + "3.5417": { + "vector": [0.33, 0, 0] + }, + "3.5833": { + "vector": [0.28, 0, 0] + }, + "3.625": { + "vector": [0.23, 0, 0] + }, + "3.6667": { + "vector": [0.19, 0, 0] + }, + "3.7083": { + "vector": [0.14, 0, 0] + }, + "3.75": { + "vector": [0.11, 0, 0] + }, + "3.7917": { + "vector": [0.08, 0, 0] + }, + "3.8333": { + "vector": [0.05, 0, 0] + }, + "3.875": { + "vector": [0.03, 0, 0] + }, + "3.9167": { + "vector": [0.01, 0, 0] + }, + "3.9583": { + "vector": [0, 0, 0] + }, + "4.0": { + "vector": [0, 0, 0] + } + } + }, + "leftBackFoot": { + "rotation": { + "0.0": { + "vector": [0, 0, 50] + }, + "0.0417": { + "vector": [0, 0, 49.99] + }, + "0.0833": { + "vector": [0, 0, 49.95] + }, + "0.125": { + "vector": [0, 0, 49.89] + }, + "0.1667": { + "vector": [0, 0, 49.81] + }, + "0.2083": { + "vector": [0, 0, 49.72] + }, + "0.25": { + "vector": [0, 0, 49.61] + }, + "0.2917": { + "vector": [0, 0, 49.49] + }, + "0.3333": { + "vector": [0, 0, 49.35] + }, + "0.375": { + "vector": [0, 0, 49.21] + }, + "0.4167": { + "vector": [0, 0, 49.06] + }, + "0.4583": { + "vector": [0, 0, 48.91] + }, + "0.5": { + "vector": [0, 0, 48.75] + }, + "0.5417": { + "vector": [0, 0, 48.59] + }, + "0.5833": { + "vector": [0, 0, 48.44] + }, + "0.625": { + "vector": [0, 0, 48.29] + }, + "0.6667": { + "vector": [0, 0, 48.15] + }, + "0.7083": { + "vector": [0, 0, 48.01] + }, + "0.75": { + "vector": [0, 0, 47.89] + }, + "0.7917": { + "vector": [0, 0, 47.78] + }, + "0.8333": { + "vector": [0, 0, 47.69] + }, + "0.875": { + "vector": [0, 0, 47.61] + }, + "0.9167": { + "vector": [0, 0, 47.55] + }, + "0.9583": { + "vector": [0, 0, 47.51] + }, + "1.0": { + "vector": [0, 0, 47.5] + }, + "1.0417": { + "vector": [0, 0, 47.51] + }, + "1.0833": { + "vector": [0, 0, 47.55] + }, + "1.125": { + "vector": [0, 0, 47.61] + }, + "1.1667": { + "vector": [0, 0, 47.69] + }, + "1.2083": { + "vector": [0, 0, 47.78] + }, + "1.25": { + "vector": [0, 0, 47.89] + }, + "1.2917": { + "vector": [0, 0, 48.01] + }, + "1.3333": { + "vector": [0, 0, 48.15] + }, + "1.375": { + "vector": [0, 0, 48.29] + }, + "1.4167": { + "vector": [0, 0, 48.44] + }, + "1.4583": { + "vector": [0, 0, 48.59] + }, + "1.5": { + "vector": [0, 0, 48.75] + }, + "1.5417": { + "vector": [0, 0, 48.91] + }, + "1.5833": { + "vector": [0, 0, 49.06] + }, + "1.625": { + "vector": [0, 0, 49.21] + }, + "1.6667": { + "vector": [0, 0, 49.35] + }, + "1.7083": { + "vector": [0, 0, 49.49] + }, + "1.75": { + "vector": [0, 0, 49.61] + }, + "1.7917": { + "vector": [0, 0, 49.72] + }, + "1.8333": { + "vector": [0, 0, 49.81] + }, + "1.875": { + "vector": [0, 0, 49.89] + }, + "1.9167": { + "vector": [0, 0, 49.95] + }, + "1.9583": { + "vector": [0, 0, 49.99] + }, + "2.0": { + "vector": [0, 0, 50] + }, + "2.0417": { + "vector": [0, 0, 49.99] + }, + "2.0833": { + "vector": [0, 0, 49.95] + }, + "2.125": { + "vector": [0, 0, 49.89] + }, + "2.1667": { + "vector": [0, 0, 49.81] + }, + "2.2083": { + "vector": [0, 0, 49.72] + }, + "2.25": { + "vector": [0, 0, 49.61] + }, + "2.2917": { + "vector": [0, 0, 49.49] + }, + "2.3333": { + "vector": [0, 0, 49.35] + }, + "2.375": { + "vector": [0, 0, 49.21] + }, + "2.4167": { + "vector": [0, 0, 49.06] + }, + "2.4583": { + "vector": [0, 0, 48.91] + }, + "2.5": { + "vector": [0, 0, 48.75] + }, + "2.5417": { + "vector": [0, 0, 48.59] + }, + "2.5833": { + "vector": [0, 0, 48.44] + }, + "2.625": { + "vector": [0, 0, 48.29] + }, + "2.6667": { + "vector": [0, 0, 48.15] + }, + "2.7083": { + "vector": [0, 0, 48.01] + }, + "2.75": { + "vector": [0, 0, 47.89] + }, + "2.7917": { + "vector": [0, 0, 47.78] + }, + "2.8333": { + "vector": [0, 0, 47.69] + }, + "2.875": { + "vector": [0, 0, 47.61] + }, + "2.9167": { + "vector": [0, 0, 47.55] + }, + "2.9583": { + "vector": [0, 0, 47.51] + }, + "3.0": { + "vector": [0, 0, 47.5] + }, + "3.0417": { + "vector": [0, 0, 47.51] + }, + "3.0833": { + "vector": [0, 0, 47.55] + }, + "3.125": { + "vector": [0, 0, 47.61] + }, + "3.1667": { + "vector": [0, 0, 47.69] + }, + "3.2083": { + "vector": [0, 0, 47.78] + }, + "3.25": { + "vector": [0, 0, 47.89] + }, + "3.2917": { + "vector": [0, 0, 48.01] + }, + "3.3333": { + "vector": [0, 0, 48.15] + }, + "3.375": { + "vector": [0, 0, 48.29] + }, + "3.4167": { + "vector": [0, 0, 48.44] + }, + "3.4583": { + "vector": [0, 0, 48.59] + }, + "3.5": { + "vector": [0, 0, 48.75] + }, + "3.5417": { + "vector": [0, 0, 48.91] + }, + "3.5833": { + "vector": [0, 0, 49.06] + }, + "3.625": { + "vector": [0, 0, 49.21] + }, + "3.6667": { + "vector": [0, 0, 49.35] + }, + "3.7083": { + "vector": [0, 0, 49.49] + }, + "3.75": { + "vector": [0, 0, 49.61] + }, + "3.7917": { + "vector": [0, 0, 49.72] + }, + "3.8333": { + "vector": [0, 0, 49.81] + }, + "3.875": { + "vector": [0, 0, 49.89] + }, + "3.9167": { + "vector": [0, 0, 49.95] + }, + "3.9583": { + "vector": [0, 0, 49.99] + }, + "4.0": { + "vector": [0, 0, 50] + } + } + }, + "leftFrontFoot": { + "rotation": { + "0.0": { + "vector": [0, 0, 47.5] + }, + "0.0417": { + "vector": [0, 0, 47.49] + }, + "0.0833": { + "vector": [0, 0, 47.45] + }, + "0.125": { + "vector": [0, 0, 47.39] + }, + "0.1667": { + "vector": [0, 0, 47.31] + }, + "0.2083": { + "vector": [0, 0, 47.22] + }, + "0.25": { + "vector": [0, 0, 47.11] + }, + "0.2917": { + "vector": [0, 0, 46.99] + }, + "0.3333": { + "vector": [0, 0, 46.85] + }, + "0.375": { + "vector": [0, 0, 46.71] + }, + "0.4167": { + "vector": [0, 0, 46.56] + }, + "0.4583": { + "vector": [0, 0, 46.41] + }, + "0.5": { + "vector": [0, 0, 46.25] + }, + "0.5417": { + "vector": [0, 0, 46.09] + }, + "0.5833": { + "vector": [0, 0, 45.94] + }, + "0.625": { + "vector": [0, 0, 45.79] + }, + "0.6667": { + "vector": [0, 0, 45.65] + }, + "0.7083": { + "vector": [0, 0, 45.51] + }, + "0.75": { + "vector": [0, 0, 45.39] + }, + "0.7917": { + "vector": [0, 0, 45.28] + }, + "0.8333": { + "vector": [0, 0, 45.19] + }, + "0.875": { + "vector": [0, 0, 45.11] + }, + "0.9167": { + "vector": [0, 0, 45.05] + }, + "0.9583": { + "vector": [0, 0, 45.01] + }, + "1.0": { + "vector": [0, 0, 45] + }, + "1.0417": { + "vector": [0, 0, 45.01] + }, + "1.0833": { + "vector": [0, 0, 45.05] + }, + "1.125": { + "vector": [0, 0, 45.11] + }, + "1.1667": { + "vector": [0, 0, 45.19] + }, + "1.2083": { + "vector": [0, 0, 45.28] + }, + "1.25": { + "vector": [0, 0, 45.39] + }, + "1.2917": { + "vector": [0, 0, 45.51] + }, + "1.3333": { + "vector": [0, 0, 45.65] + }, + "1.375": { + "vector": [0, 0, 45.79] + }, + "1.4167": { + "vector": [0, 0, 45.94] + }, + "1.4583": { + "vector": [0, 0, 46.09] + }, + "1.5": { + "vector": [0, 0, 46.25] + }, + "1.5417": { + "vector": [0, 0, 46.41] + }, + "1.5833": { + "vector": [0, 0, 46.56] + }, + "1.625": { + "vector": [0, 0, 46.71] + }, + "1.6667": { + "vector": [0, 0, 46.85] + }, + "1.7083": { + "vector": [0, 0, 46.99] + }, + "1.75": { + "vector": [0, 0, 47.11] + }, + "1.7917": { + "vector": [0, 0, 47.22] + }, + "1.8333": { + "vector": [0, 0, 47.31] + }, + "1.875": { + "vector": [0, 0, 47.39] + }, + "1.9167": { + "vector": [0, 0, 47.45] + }, + "1.9583": { + "vector": [0, 0, 47.49] + }, + "2.0": { + "vector": [0, 0, 47.5] + }, + "2.0417": { + "vector": [0, 0, 47.49] + }, + "2.0833": { + "vector": [0, 0, 47.45] + }, + "2.125": { + "vector": [0, 0, 47.39] + }, + "2.1667": { + "vector": [0, 0, 47.31] + }, + "2.2083": { + "vector": [0, 0, 47.22] + }, + "2.25": { + "vector": [0, 0, 47.11] + }, + "2.2917": { + "vector": [0, 0, 46.99] + }, + "2.3333": { + "vector": [0, 0, 46.85] + }, + "2.375": { + "vector": [0, 0, 46.71] + }, + "2.4167": { + "vector": [0, 0, 46.56] + }, + "2.4583": { + "vector": [0, 0, 46.41] + }, + "2.5": { + "vector": [0, 0, 46.25] + }, + "2.5417": { + "vector": [0, 0, 46.09] + }, + "2.5833": { + "vector": [0, 0, 45.94] + }, + "2.625": { + "vector": [0, 0, 45.79] + }, + "2.6667": { + "vector": [0, 0, 45.65] + }, + "2.7083": { + "vector": [0, 0, 45.51] + }, + "2.75": { + "vector": [0, 0, 45.39] + }, + "2.7917": { + "vector": [0, 0, 45.28] + }, + "2.8333": { + "vector": [0, 0, 45.19] + }, + "2.875": { + "vector": [0, 0, 45.11] + }, + "2.9167": { + "vector": [0, 0, 45.05] + }, + "2.9583": { + "vector": [0, 0, 45.01] + }, + "3.0": { + "vector": [0, 0, 45] + }, + "3.0417": { + "vector": [0, 0, 45.01] + }, + "3.0833": { + "vector": [0, 0, 45.05] + }, + "3.125": { + "vector": [0, 0, 45.11] + }, + "3.1667": { + "vector": [0, 0, 45.19] + }, + "3.2083": { + "vector": [0, 0, 45.28] + }, + "3.25": { + "vector": [0, 0, 45.39] + }, + "3.2917": { + "vector": [0, 0, 45.51] + }, + "3.3333": { + "vector": [0, 0, 45.65] + }, + "3.375": { + "vector": [0, 0, 45.79] + }, + "3.4167": { + "vector": [0, 0, 45.94] + }, + "3.4583": { + "vector": [0, 0, 46.09] + }, + "3.5": { + "vector": [0, 0, 46.25] + }, + "3.5417": { + "vector": [0, 0, 46.41] + }, + "3.5833": { + "vector": [0, 0, 46.56] + }, + "3.625": { + "vector": [0, 0, 46.71] + }, + "3.6667": { + "vector": [0, 0, 46.85] + }, + "3.7083": { + "vector": [0, 0, 46.99] + }, + "3.75": { + "vector": [0, 0, 47.11] + }, + "3.7917": { + "vector": [0, 0, 47.22] + }, + "3.8333": { + "vector": [0, 0, 47.31] + }, + "3.875": { + "vector": [0, 0, 47.39] + }, + "3.9167": { + "vector": [0, 0, 47.45] + }, + "3.9583": { + "vector": [0, 0, 47.49] + }, + "4.0": { + "vector": [0, 0, 47.5] + } + } + } + } + }, + "walk": { + "loop": true, + "animation_length": 0.6667, + "bones": { + "root": { + "position": { + "0.0": { + "vector": [0, 13, 0] + }, + "0.0417": { + "vector": [0, 11.14, 0] + }, + "0.0833": { + "vector": [0, 9.42, 0] + }, + "0.125": { + "vector": [0, 10.63, 0] + }, + "0.1667": { + "vector": [0, 12.5, 0] + }, + "0.2083": { + "vector": [0, 13.63, 0] + }, + "0.25": { + "vector": [0, 12.75, 0] + }, + "0.2917": { + "vector": [0, 12.88, 0] + }, + "0.3333": { + "vector": [0, 13, 0] + }, + "0.375": { + "vector": [0, 11.14, 0] + }, + "0.4167": { + "vector": [0, 9.42, 0] + }, + "0.4583": { + "vector": [0, 10.63, 0] + }, + "0.5": { + "vector": [0, 12.5, 0] + }, + "0.5417": { + "vector": [0, 13.63, 0] + }, + "0.5833": { + "vector": [0, 12.75, 0] + }, + "0.625": { + "vector": [0, 12.88, 0] + }, + "0.6667": { + "vector": [0, 13, 0] + } + } + }, + "body": { + "rotation": { + "0.0": { + "vector": [-2.5, 0, 0] + }, + "0.0417": { + "vector": [-2.23, 0, 0] + }, + "0.0833": { + "vector": [-1.56, 0, 0] + }, + "0.125": { + "vector": [-0.74, 0, 0] + }, + "0.1667": { + "vector": [0, 0, 0] + }, + "0.2083": { + "vector": [0.74, 0, 0] + }, + "0.25": { + "vector": [1.56, 0, 0] + }, + "0.2917": { + "vector": [2.23, 0, 0] + }, + "0.3333": { + "vector": [2.5, 0, 0] + }, + "0.375": { + "vector": [2.23, 0, 0] + }, + "0.4167": { + "vector": [1.56, 0, 0] + }, + "0.4583": { + "vector": [0.74, 0, 0] + }, + "0.5": { + "vector": [0, 0, 0] + }, + "0.5417": { + "vector": [-0.74, 0, 0] + }, + "0.5833": { + "vector": [-1.56, 0, 0] + }, + "0.625": { + "vector": [-2.23, 0, 0] + }, + "0.6667": { + "vector": [-2.5, 0, 0] + } + } + }, + "leftFrontThigh": { + "rotation": { + "0.0": { + "vector": [13.67, 58.61, 23.2] + }, + "0.0417": { + "vector": [13.27, 59.08, 23.78] + }, + "0.0833": { + "vector": [9.89, 50.3, 23.58] + }, + "0.125": { + "vector": [5.21, 37.36, 23] + }, + "0.1667": { + "vector": [0.9, 25.37, 22.42] + }, + "0.2083": { + "vector": [-3.25, 14.04, 21.95] + }, + "0.25": { + "vector": [-7.91, 1.19, 21.38] + }, + "0.2917": { + "vector": [-12.09, -10.9, 20.64] + }, + "0.3333": { + "vector": [-14.8, -19.97, 19.67] + }, + "0.375": { + "vector": [-15.99, -27.06, 18.02] + }, + "0.4167": { + "vector": [-16.11, -32.84, 15.86] + }, + "0.4583": { + "vector": [-14.94, -34.45, 14.08] + }, + "0.5": { + "vector": [-12.23, -29.08, 13.59] + }, + "0.5417": { + "vector": [-6.48, -11.13, 15.13] + }, + "0.5833": { + "vector": [1.68, 16.27, 18.06] + }, + "0.625": { + "vector": [9.37, 42.92, 21.16] + }, + "0.6667": { + "vector": [13.67, 58.61, 23.2] + } + } + }, + "leftFrontLeg": { + "rotation": { + "0.0": { + "vector": [0, 0, 10] + }, + "0.0417": { + "vector": [0, 0, 11.72] + }, + "0.0833": { + "vector": [0, 0, 14.06] + }, + "0.125": { + "vector": [0, 0, 17.5] + }, + "0.1667": { + "vector": [0, 0, 22.5] + }, + "0.2083": { + "vector": [0, 0, 31.6] + }, + "0.25": { + "vector": [0, 0, 43.75] + }, + "0.2917": { + "vector": [0, 0, 54.02] + }, + "0.3333": { + "vector": [0, 0, 57.5] + }, + "0.375": { + "vector": [0, 0, 50.31] + }, + "0.4167": { + "vector": [0, 0, 35.94] + }, + "0.4583": { + "vector": [0, 0, 20.47] + }, + "0.5": { + "vector": [0, 0, 10] + }, + "0.5417": { + "vector": [0, 0, 6.37] + }, + "0.5833": { + "vector": [0, 0, 6.25] + }, + "0.625": { + "vector": [0, 0, 8.01] + }, + "0.6667": { + "vector": [0, 0, 10] + } + } + }, + "topHeadClawThing": { + "rotation": { + "0.0": { + "vector": [50, 0, 0] + }, + "0.0417": { + "vector": [49.57, 0, 0] + }, + "0.0833": { + "vector": [48.44, 0, 0] + }, + "0.125": { + "vector": [46.84, 0, 0] + }, + "0.1667": { + "vector": [45, 0, 0] + }, + "0.2083": { + "vector": [43.16, 0, 0] + }, + "0.25": { + "vector": [41.56, 0, 0] + }, + "0.2917": { + "vector": [40.43, 0, 0] + }, + "0.3333": { + "vector": [40, 0, 0] + }, + "0.375": { + "vector": [40.43, 0, 0] + }, + "0.4167": { + "vector": [41.56, 0, 0] + }, + "0.4583": { + "vector": [43.16, 0, 0] + }, + "0.5": { + "vector": [45, 0, 0] + }, + "0.5417": { + "vector": [46.84, 0, 0] + }, + "0.5833": { + "vector": [48.44, 0, 0] + }, + "0.625": { + "vector": [49.57, 0, 0] + }, + "0.6667": { + "vector": [50, 0, 0] + } + } + }, + "rightFrontThigh": { + "rotation": { + "0.0": { + "vector": [-14.8, 19.96, -19.67] + }, + "0.0417": { + "vector": [-15.98, 27.06, -18.02] + }, + "0.0833": { + "vector": [-16.11, 32.83, -15.86] + }, + "0.125": { + "vector": [-14.94, 34.45, -14.08] + }, + "0.1667": { + "vector": [-12.23, 29.08, -13.58] + }, + "0.2083": { + "vector": [-6.48, 11.13, -15.13] + }, + "0.25": { + "vector": [1.68, -16.27, -18.06] + }, + "0.2917": { + "vector": [9.37, -42.92, -21.16] + }, + "0.3333": { + "vector": [13.67, -58.61, -23.2] + }, + "0.375": { + "vector": [13.27, -59.08, -23.78] + }, + "0.4167": { + "vector": [9.89, -50.3, -23.58] + }, + "0.4583": { + "vector": [5.21, -37.36, -23] + }, + "0.5": { + "vector": [0.9, -25.37, -22.42] + }, + "0.5417": { + "vector": [-3.25, -14.04, -21.95] + }, + "0.5833": { + "vector": [-7.91, -1.2, -21.38] + }, + "0.625": { + "vector": [-12.09, 10.89, -20.64] + }, + "0.6667": { + "vector": [-14.8, 19.96, -19.67] + } + } + }, + "rightFrontLeg": { + "rotation": { + "0.0": { + "vector": [0, 0, -57.5] + }, + "0.0417": { + "vector": [0, 0, -50.31] + }, + "0.0833": { + "vector": [0, 0, -35.94] + }, + "0.125": { + "vector": [0, 0, -20.47] + }, + "0.1667": { + "vector": [0, 0, -10] + }, + "0.2083": { + "vector": [0, 0, -6.37] + }, + "0.25": { + "vector": [0, 0, -6.25] + }, + "0.2917": { + "vector": [0, 0, -8.01] + }, + "0.3333": { + "vector": [0, 0, -10] + }, + "0.375": { + "vector": [0, 0, -11.72] + }, + "0.4167": { + "vector": [0, 0, -14.06] + }, + "0.4583": { + "vector": [0, 0, -17.5] + }, + "0.5": { + "vector": [0, 0, -22.5] + }, + "0.5417": { + "vector": [0, 0, -31.6] + }, + "0.5833": { + "vector": [0, 0, -43.75] + }, + "0.625": { + "vector": [0, 0, -54.02] + }, + "0.6667": { + "vector": [0, 0, -57.5] + } + } + }, + "rightFrontFoot": { + "rotation": { + "0.0": { + "vector": [0, 0, 30] + }, + "0.0417": { + "vector": [0, 0, 26.45] + }, + "0.0833": { + "vector": [0, 0, 14.06] + }, + "0.125": { + "vector": [0, 0, -0.35] + }, + "0.1667": { + "vector": [0, 0, -10] + }, + "0.2083": { + "vector": [0, 0, -12.23] + }, + "0.25": { + "vector": [0, 0, -10.94] + }, + "0.2917": { + "vector": [0, 0, -9.18] + }, + "0.3333": { + "vector": [0, 0, -10] + }, + "0.375": { + "vector": [0, 0, -16.6] + }, + "0.4167": { + "vector": [0, 0, -26.56] + }, + "0.4583": { + "vector": [0, 0, -34.49] + }, + "0.5": { + "vector": [0, 0, -35] + }, + "0.5417": { + "vector": [0, 0, -22.62] + }, + "0.5833": { + "vector": [0, 0, -1.56] + }, + "0.625": { + "vector": [0, 0, 19.02] + }, + "0.6667": { + "vector": [0, 0, 30] + } + } + }, + "rightBackThigh": { + "rotation": { + "0.0": { + "vector": [-23.56, 44.83, -14.27] + }, + "0.0417": { + "vector": [-16.52, 48.8, -13.92] + }, + "0.0833": { + "vector": [-7.62, 53.76, -15.64] + }, + "0.125": { + "vector": [0.49, 57.55, -17.83] + }, + "0.1667": { + "vector": [5.15, 57.99, -18.92] + }, + "0.2083": { + "vector": [5.37, 52.91, -17.86] + }, + "0.25": { + "vector": [2.65, 44.01, -15.69] + }, + "0.2917": { + "vector": [-1.89, 34.9, -14] + }, + "0.3333": { + "vector": [-7.12, 29.22, -14.36] + }, + "0.375": { + "vector": [-14.27, 28.36, -18.53] + }, + "0.4167": { + "vector": [-23.43, 30.23, -25.23] + }, + "0.4583": { + "vector": [-31.79, 33.29, -31.45] + }, + "0.5": { + "vector": [-36.57, 35.96, -34.18] + }, + "0.5417": { + "vector": [-36.67, 37.92, -31.42] + }, + "0.5833": { + "vector": [-33.7, 39.99, -25.17] + }, + "0.625": { + "vector": [-28.91, 42.26, -18.45] + }, + "0.6667": { + "vector": [-23.56, 44.83, -14.27] + } + } + }, + "rightBackLeg": { + "rotation": { + "0.0": { + "vector": [0, 0, -57.5] + }, + "0.0417": { + "vector": [0, 0, -50.31] + }, + "0.0833": { + "vector": [0, 0, -35.94] + }, + "0.125": { + "vector": [0, 0, -20.47] + }, + "0.1667": { + "vector": [0, 0, -10] + }, + "0.2083": { + "vector": [0, 0, -6.37] + }, + "0.25": { + "vector": [0, 0, -6.25] + }, + "0.2917": { + "vector": [0, 0, -8.01] + }, + "0.3333": { + "vector": [0, 0, -10] + }, + "0.375": { + "vector": [0, 0, -11.72] + }, + "0.4167": { + "vector": [0, 0, -14.06] + }, + "0.4583": { + "vector": [0, 0, -17.5] + }, + "0.5": { + "vector": [0, 0, -22.5] + }, + "0.5417": { + "vector": [0, 0, -31.6] + }, + "0.5833": { + "vector": [0, 0, -43.75] + }, + "0.625": { + "vector": [0, 0, -54.02] + }, + "0.6667": { + "vector": [0, 0, -57.5] + } + } + }, + "rightBackFoot": { + "rotation": { + "0.0": { + "vector": [0, 0, 5] + }, + "0.0417": { + "vector": [0, 0, 4.77] + }, + "0.0833": { + "vector": [0, 0, 0] + }, + "0.125": { + "vector": [0, 0, -6.02] + }, + "0.1667": { + "vector": [0, 0, -10] + }, + "0.2083": { + "vector": [0, 0, -10.47] + }, + "0.25": { + "vector": [0, 0, -9.37] + }, + "0.2917": { + "vector": [0, 0, -8.59] + }, + "0.3333": { + "vector": [0, 0, -10] + }, + "0.375": { + "vector": [0, 0, -16.02] + }, + "0.4167": { + "vector": [0, 0, -25] + }, + "0.4583": { + "vector": [0, 0, -32.73] + }, + "0.5": { + "vector": [0, 0, -35] + }, + "0.5417": { + "vector": [0, 0, -28.28] + }, + "0.5833": { + "vector": [0, 0, -15.63] + }, + "0.625": { + "vector": [0, 0, -2.66] + }, + "0.6667": { + "vector": [0, 0, 5] + } + } + }, + "leftBackThigh": { + "rotation": { + "0.0": { + "vector": [-7.12, -29.22, 14.36] + }, + "0.0417": { + "vector": [-14.27, -28.36, 18.53] + }, + "0.0833": { + "vector": [-23.43, -30.23, 25.23] + }, + "0.125": { + "vector": [-31.79, -33.29, 31.44] + }, + "0.1667": { + "vector": [-36.57, -35.96, 34.18] + }, + "0.2083": { + "vector": [-36.67, -37.92, 31.42] + }, + "0.25": { + "vector": [-33.7, -39.99, 25.17] + }, + "0.2917": { + "vector": [-28.91, -42.26, 18.45] + }, + "0.3333": { + "vector": [-23.56, -44.83, 14.27] + }, + "0.375": { + "vector": [-16.52, -48.8, 13.92] + }, + "0.4167": { + "vector": [-7.62, -53.76, 15.64] + }, + "0.4583": { + "vector": [0.49, -57.55, 17.83] + }, + "0.5": { + "vector": [5.15, -57.99, 18.92] + }, + "0.5417": { + "vector": [5.37, -52.91, 17.86] + }, + "0.5833": { + "vector": [2.65, -44.01, 15.69] + }, + "0.625": { + "vector": [-1.89, -34.9, 14] + }, + "0.6667": { + "vector": [-7.12, -29.22, 14.36] + } + } + }, + "leftBackLeg": { + "rotation": { + "0.0": { + "vector": [0, 0, 10] + }, + "0.0417": { + "vector": [0, 0, 11.72] + }, + "0.0833": { + "vector": [0, 0, 14.06] + }, + "0.125": { + "vector": [0, 0, 17.5] + }, + "0.1667": { + "vector": [0, 0, 22.5] + }, + "0.2083": { + "vector": [0, 0, 31.6] + }, + "0.25": { + "vector": [0, 0, 43.75] + }, + "0.2917": { + "vector": [0, 0, 54.02] + }, + "0.3333": { + "vector": [0, 0, 57.5] + }, + "0.375": { + "vector": [0, 0, 50.31] + }, + "0.4167": { + "vector": [0, 0, 35.94] + }, + "0.4583": { + "vector": [0, 0, 20.47] + }, + "0.5": { + "vector": [0, 0, 10] + }, + "0.5417": { + "vector": [0, 0, 6.37] + }, + "0.5833": { + "vector": [0, 0, 6.25] + }, + "0.625": { + "vector": [0, 0, 8.01] + }, + "0.6667": { + "vector": [0, 0, 10] + } + } + }, + "leftHeadClawThing": { + "rotation": { + "0.0": { + "vector": [-50, 0, -50] + }, + "0.0417": { + "vector": [-49.57, 0, -50] + }, + "0.0833": { + "vector": [-48.44, 0, -50] + }, + "0.125": { + "vector": [-46.84, 0, -50] + }, + "0.1667": { + "vector": [-45, 0, -50] + }, + "0.2083": { + "vector": [-43.16, 0, -50] + }, + "0.25": { + "vector": [-41.56, 0, -50] + }, + "0.2917": { + "vector": [-40.43, 0, -50] + }, + "0.3333": { + "vector": [-40, 0, -50] + }, + "0.375": { + "vector": [-40.43, 0, -50] + }, + "0.4167": { + "vector": [-41.56, 0, -50] + }, + "0.4583": { + "vector": [-43.16, 0, -50] + }, + "0.5": { + "vector": [-45, 0, -50] + }, + "0.5417": { + "vector": [-46.84, 0, -50] + }, + "0.5833": { + "vector": [-48.44, 0, -50] + }, + "0.625": { + "vector": [-49.57, 0, -50] + }, + "0.6667": { + "vector": [-50, 0, -50] + } + } + }, + "rightHeadClawThing": { + "rotation": { + "0.0": { + "vector": [-50, 0, 50] + }, + "0.0417": { + "vector": [-49.57, 0, 50] + }, + "0.0833": { + "vector": [-48.44, 0, 50] + }, + "0.125": { + "vector": [-46.84, 0, 50] + }, + "0.1667": { + "vector": [-45, 0, 50] + }, + "0.2083": { + "vector": [-43.16, 0, 50] + }, + "0.25": { + "vector": [-41.56, 0, 50] + }, + "0.2917": { + "vector": [-40.43, 0, 50] + }, + "0.3333": { + "vector": [-40, 0, 50] + }, + "0.375": { + "vector": [-40.43, 0, 50] + }, + "0.4167": { + "vector": [-41.56, 0, 50] + }, + "0.4583": { + "vector": [-43.16, 0, 50] + }, + "0.5": { + "vector": [-45, 0, 50] + }, + "0.5417": { + "vector": [-46.84, 0, 50] + }, + "0.5833": { + "vector": [-48.44, 0, 50] + }, + "0.625": { + "vector": [-49.57, 0, 50] + }, + "0.6667": { + "vector": [-50, 0, 50] + } + } + }, + "tail1": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.0417": { + "vector": [-0.11, 0, 0] + }, + "0.0833": { + "vector": [-0.39, 0, 0] + }, + "0.125": { + "vector": [-0.79, 0, 0] + }, + "0.1667": { + "vector": [-1.25, 0, 0] + }, + "0.2083": { + "vector": [-1.71, 0, 0] + }, + "0.25": { + "vector": [-2.11, 0, 0] + }, + "0.2917": { + "vector": [-2.39, 0, 0] + }, + "0.3333": { + "vector": [-2.5, 0, 0] + }, + "0.375": { + "vector": [-2.39, 0, 0] + }, + "0.4167": { + "vector": [-2.11, 0, 0] + }, + "0.4583": { + "vector": [-1.71, 0, 0] + }, + "0.5": { + "vector": [-1.25, 0, 0] + }, + "0.5417": { + "vector": [-0.79, 0, 0] + }, + "0.5833": { + "vector": [-0.39, 0, 0] + }, + "0.625": { + "vector": [-0.11, 0, 0] + }, + "0.6667": { + "vector": [0, 0, 0] + } + } + }, + "tail2": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.0417": { + "vector": [-0.11, 0, 0] + }, + "0.0833": { + "vector": [-0.39, 0, 0] + }, + "0.125": { + "vector": [-0.79, 0, 0] + }, + "0.1667": { + "vector": [-1.25, 0, 0] + }, + "0.2083": { + "vector": [-1.71, 0, 0] + }, + "0.25": { + "vector": [-2.11, 0, 0] + }, + "0.2917": { + "vector": [-2.39, 0, 0] + }, + "0.3333": { + "vector": [-2.5, 0, 0] + }, + "0.375": { + "vector": [-2.39, 0, 0] + }, + "0.4167": { + "vector": [-2.11, 0, 0] + }, + "0.4583": { + "vector": [-1.71, 0, 0] + }, + "0.5": { + "vector": [-1.25, 0, 0] + }, + "0.5417": { + "vector": [-0.79, 0, 0] + }, + "0.5833": { + "vector": [-0.39, 0, 0] + }, + "0.625": { + "vector": [-0.11, 0, 0] + }, + "0.6667": { + "vector": [0, 0, 0] + } + } + }, + "tail3": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.0417": { + "vector": [-0.11, 0, 0] + }, + "0.0833": { + "vector": [-0.39, 0, 0] + }, + "0.125": { + "vector": [-0.79, 0, 0] + }, + "0.1667": { + "vector": [-1.25, 0, 0] + }, + "0.2083": { + "vector": [-1.71, 0, 0] + }, + "0.25": { + "vector": [-2.11, 0, 0] + }, + "0.2917": { + "vector": [-2.39, 0, 0] + }, + "0.3333": { + "vector": [-2.5, 0, 0] + }, + "0.375": { + "vector": [-2.39, 0, 0] + }, + "0.4167": { + "vector": [-2.11, 0, 0] + }, + "0.4583": { + "vector": [-1.71, 0, 0] + }, + "0.5": { + "vector": [-1.25, 0, 0] + }, + "0.5417": { + "vector": [-0.79, 0, 0] + }, + "0.5833": { + "vector": [-0.39, 0, 0] + }, + "0.625": { + "vector": [-0.11, 0, 0] + }, + "0.6667": { + "vector": [0, 0, 0] + } + } + }, + "tail4": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.0417": { + "vector": [0.11, 0, 0] + }, + "0.0833": { + "vector": [0.39, 0, 0] + }, + "0.125": { + "vector": [0.79, 0, 0] + }, + "0.1667": { + "vector": [1.25, 0, 0] + }, + "0.2083": { + "vector": [1.71, 0, 0] + }, + "0.25": { + "vector": [2.11, 0, 0] + }, + "0.2917": { + "vector": [2.39, 0, 0] + }, + "0.3333": { + "vector": [2.5, 0, 0] + }, + "0.375": { + "vector": [2.39, 0, 0] + }, + "0.4167": { + "vector": [2.11, 0, 0] + }, + "0.4583": { + "vector": [1.71, 0, 0] + }, + "0.5": { + "vector": [1.25, 0, 0] + }, + "0.5417": { + "vector": [0.79, 0, 0] + }, + "0.5833": { + "vector": [0.39, 0, 0] + }, + "0.625": { + "vector": [0.11, 0, 0] + }, + "0.6667": { + "vector": [0, 0, 0] + } + } + }, + "tail5": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.0417": { + "vector": [0.11, 0, 0] + }, + "0.0833": { + "vector": [0.39, 0, 0] + }, + "0.125": { + "vector": [0.79, 0, 0] + }, + "0.1667": { + "vector": [1.25, 0, 0] + }, + "0.2083": { + "vector": [1.71, 0, 0] + }, + "0.25": { + "vector": [2.11, 0, 0] + }, + "0.2917": { + "vector": [2.39, 0, 0] + }, + "0.3333": { + "vector": [2.5, 0, 0] + }, + "0.375": { + "vector": [2.39, 0, 0] + }, + "0.4167": { + "vector": [2.11, 0, 0] + }, + "0.4583": { + "vector": [1.71, 0, 0] + }, + "0.5": { + "vector": [1.25, 0, 0] + }, + "0.5417": { + "vector": [0.79, 0, 0] + }, + "0.5833": { + "vector": [0.39, 0, 0] + }, + "0.625": { + "vector": [0.11, 0, 0] + }, + "0.6667": { + "vector": [0, 0, 0] + } + } + }, + "leftBackFoot": { + "rotation": { + "0.0": { + "vector": [0, 0, 10] + }, + "0.0417": { + "vector": [0, 0, 16.02] + }, + "0.0833": { + "vector": [0, 0, 25] + }, + "0.125": { + "vector": [0, 0, 32.73] + }, + "0.1667": { + "vector": [0, 0, 35] + }, + "0.2083": { + "vector": [0, 0, 28.28] + }, + "0.25": { + "vector": [0, 0, 15.63] + }, + "0.2917": { + "vector": [0, 0, 2.66] + }, + "0.3333": { + "vector": [0, 0, -5] + }, + "0.375": { + "vector": [0, 0, -4.77] + }, + "0.4167": { + "vector": [0, 0, 0] + }, + "0.4583": { + "vector": [0, 0, 6.02] + }, + "0.5": { + "vector": [0, 0, 10] + }, + "0.5417": { + "vector": [0, 0, 10.47] + }, + "0.5833": { + "vector": [0, 0, 9.38] + }, + "0.625": { + "vector": [0, 0, 8.59] + }, + "0.6667": { + "vector": [0, 0, 10] + } + } + }, + "leftFrontFoot": { + "rotation": { + "0.0": { + "vector": [0, 0, 10] + }, + "0.0417": { + "vector": [0, 0, 16.6] + }, + "0.0833": { + "vector": [0, 0, 26.56] + }, + "0.125": { + "vector": [0, 0, 34.49] + }, + "0.1667": { + "vector": [0, 0, 35] + }, + "0.2083": { + "vector": [0, 0, 22.62] + }, + "0.25": { + "vector": [0, 0, 1.56] + }, + "0.2917": { + "vector": [0, 0, -19.02] + }, + "0.3333": { + "vector": [0, 0, -30] + }, + "0.375": { + "vector": [0, 0, -26.44] + }, + "0.4167": { + "vector": [0, 0, -14.06] + }, + "0.4583": { + "vector": [0, 0, 0.35] + }, + "0.5": { + "vector": [0, 0, 10] + }, + "0.5417": { + "vector": [0, 0, 12.23] + }, + "0.5833": { + "vector": [0, 0, 10.94] + }, + "0.625": { + "vector": [0, 0, 9.18] + }, + "0.6667": { + "vector": [0, 0, 10] + } + } + } + } + }, + "attack": { + "loop": true, + "animation_length": 1, + "bones": { + "root": { + "position": { + "0.0": { + "vector": [0, 4, 0] + }, + "0.0417": { + "vector": [0, 4.13, 0.28] + }, + "0.0833": { + "vector": [0, 4.33, 0.44] + }, + "0.125": { + "vector": [0, 4.56, 0.5] + }, + "0.1667": { + "vector": [0, 4.78, 0.44] + }, + "0.2083": { + "vector": [0, 4.94, 0.28] + }, + "0.25": { + "vector": [0, 5, 0] + }, + "0.2917": { + "vector": [0, 4.94, -0.53] + }, + "0.3333": { + "vector": [0, 4.78, -1.33] + }, + "0.375": { + "vector": [0, 4.56, -2.25] + }, + "0.4167": { + "vector": [0, 4.33, -3.11] + }, + "0.4583": { + "vector": [0, 4.13, -3.75] + }, + "0.5": { + "vector": [0, 4, -4] + }, + "0.5417": { + "vector": [0, 3.96, -3.93] + }, + "0.5833": { + "vector": [0, 3.93, -3.75] + }, + "0.625": { + "vector": [0, 3.91, -3.47] + }, + "0.6667": { + "vector": [0, 3.89, -3.11] + }, + "0.7083": { + "vector": [0, 3.88, -2.7] + }, + "0.75": { + "vector": [0, 3.88, -2.25] + }, + "0.7917": { + "vector": [0, 3.88, -1.79] + }, + "0.8333": { + "vector": [0, 3.89, -1.33] + }, + "0.875": { + "vector": [0, 3.91, -0.91] + }, + "0.9167": { + "vector": [0, 3.93, -0.53] + }, + "0.9583": { + "vector": [0, 3.96, -0.22] + }, + "1.0": { + "vector": [0, 4, 0] + } + } + }, + "body": { + "rotation": { + "0.0": { + "vector": [-2.5, 0, 0] + }, + "0.0417": { + "vector": [-2.52, 0, 0] + }, + "0.0833": { + "vector": [-2.22, 0, 0] + }, + "0.125": { + "vector": [-1.72, 0, 0] + }, + "0.1667": { + "vector": [-1.11, 0, 0] + }, + "0.2083": { + "vector": [-0.5, 0, 0] + }, + "0.25": { + "vector": [0, 0, 0] + }, + "0.2917": { + "vector": [0.5, 0, 0] + }, + "0.3333": { + "vector": [1.11, 0, 0] + }, + "0.375": { + "vector": [1.72, 0, 0] + }, + "0.4167": { + "vector": [2.22, 0, 0] + }, + "0.4583": { + "vector": [2.52, 0, 0] + }, + "0.5": { + "vector": [2.5, 0, 0] + }, + "0.5417": { + "vector": [2.32, 0, 0] + }, + "0.5833": { + "vector": [2.01, 0, 0] + }, + "0.625": { + "vector": [1.6, 0, 0] + }, + "0.6667": { + "vector": [1.11, 0, 0] + }, + "0.7083": { + "vector": [0.57, 0, 0] + }, + "0.75": { + "vector": [0, 0, 0] + }, + "0.7917": { + "vector": [-0.57, 0, 0] + }, + "0.8333": { + "vector": [-1.11, 0, 0] + }, + "0.875": { + "vector": [-1.6, 0, 0] + }, + "0.9167": { + "vector": [-2.01, 0, 0] + }, + "0.9583": { + "vector": [-2.32, 0, 0] + }, + "1.0": { + "vector": [-2.5, 0, 0] + } + } + }, + "leftFrontThigh": { + "rotation": { + "0.0": { + "vector": [9.57, 11.6, 44.98] + }, + "0.0417": { + "vector": [9.71, 12.07, 45.74] + }, + "0.0833": { + "vector": [9.92, 12.24, 46.8] + }, + "0.125": { + "vector": [10.14, 12.16, 47.97] + }, + "0.1667": { + "vector": [10.35, 11.86, 49.03] + }, + "0.2083": { + "vector": [10.5, 11.37, 49.78] + }, + "0.25": { + "vector": [10.54, 10.73, 49.99] + }, + "0.2917": { + "vector": [10.46, 9.68, 49.49] + }, + "0.3333": { + "vector": [10.27, 8.13, 48.41] + }, + "0.375": { + "vector": [10.02, 6.4, 47] + }, + "0.4167": { + "vector": [9.75, 4.79, 45.55] + }, + "0.4583": { + "vector": [9.53, 3.63, 44.31] + }, + "0.5": { + "vector": [9.39, 3.22, 43.56] + }, + "0.5417": { + "vector": [9.35, 3.39, 43.4] + }, + "0.5833": { + "vector": [9.33, 3.8, 43.3] + }, + "0.625": { + "vector": [9.32, 4.41, 43.28] + }, + "0.6667": { + "vector": [9.32, 5.18, 43.32] + }, + "0.7083": { + "vector": [9.33, 6.05, 43.41] + }, + "0.75": { + "vector": [9.35, 7, 43.55] + }, + "0.7917": { + "vector": [9.37, 7.96, 43.73] + }, + "0.8333": { + "vector": [9.4, 8.91, 43.95] + }, + "0.875": { + "vector": [9.44, 9.79, 44.18] + }, + "0.9167": { + "vector": [9.48, 10.56, 44.44] + }, + "0.9583": { + "vector": [9.52, 11.18, 44.71] + }, + "1.0": { + "vector": [9.57, 11.6, 44.98] + } + } + }, + "leftFrontLeg": { + "rotation": { + "0.0": { + "vector": [0, 0, -30] + }, + "0.0417": { + "vector": [0, 0, -30.33] + }, + "0.0833": { + "vector": [0, 0, -30.83] + }, + "0.125": { + "vector": [0, 0, -31.41] + }, + "0.1667": { + "vector": [0, 0, -31.94] + }, + "0.2083": { + "vector": [0, 0, -32.34] + }, + "0.25": { + "vector": [0, 0, -32.5] + }, + "0.2917": { + "vector": [0, 0, -32.34] + }, + "0.3333": { + "vector": [0, 0, -31.94] + }, + "0.375": { + "vector": [0, 0, -31.41] + }, + "0.4167": { + "vector": [0, 0, -30.83] + }, + "0.4583": { + "vector": [0, 0, -30.33] + }, + "0.5": { + "vector": [0, 0, -30] + }, + "0.5417": { + "vector": [0, 0, -29.9] + }, + "0.5833": { + "vector": [0, 0, -29.83] + }, + "0.625": { + "vector": [0, 0, -29.77] + }, + "0.6667": { + "vector": [0, 0, -29.72] + }, + "0.7083": { + "vector": [0, 0, -29.7] + }, + "0.75": { + "vector": [0, 0, -29.69] + }, + "0.7917": { + "vector": [0, 0, -29.7] + }, + "0.8333": { + "vector": [0, 0, -29.72] + }, + "0.875": { + "vector": [0, 0, -29.77] + }, + "0.9167": { + "vector": [0, 0, -29.83] + }, + "0.9583": { + "vector": [0, 0, -29.9] + }, + "1.0": { + "vector": [0, 0, -30] + } + } + }, + "topHeadClawThing": { + "rotation": { + "0.0": { + "vector": [50, 0, 0] + }, + "0.0417": { + "vector": [44.62, 0, 0] + }, + "0.0833": { + "vector": [38.33, 0, 0] + }, + "0.125": { + "vector": [32.19, 0, 0] + }, + "0.1667": { + "vector": [27.22, 0, 0] + }, + "0.2083": { + "vector": [24.48, 0, 0] + }, + "0.25": { + "vector": [25, 0, 0] + }, + "0.2917": { + "vector": [30.52, 0, 0] + }, + "0.3333": { + "vector": [40.56, 0, 0] + }, + "0.375": { + "vector": [52.81, 0, 0] + }, + "0.4167": { + "vector": [65, 0, 0] + }, + "0.4583": { + "vector": [74.83, 0, 0] + }, + "0.5": { + "vector": [80, 0, 0] + }, + "0.5417": { + "vector": [80.46, 0, 0] + }, + "0.5833": { + "vector": [79.86, 0, 0] + }, + "0.625": { + "vector": [78.36, 0, 0] + }, + "0.6667": { + "vector": [76.11, 0, 0] + }, + "0.7083": { + "vector": [73.27, 0, 0] + }, + "0.75": { + "vector": [70, 0, 0] + }, + "0.7917": { + "vector": [66.45, 0, 0] + }, + "0.8333": { + "vector": [62.78, 0, 0] + }, + "0.875": { + "vector": [59.14, 0, 0] + }, + "0.9167": { + "vector": [55.69, 0, 0] + }, + "0.9583": { + "vector": [52.6, 0, 0] + }, + "1.0": { + "vector": [50, 0, 0] + } + } + }, + "rightFrontThigh": { + "rotation": { + "0.0": { + "vector": [9.57, -11.6, -44.97] + }, + "0.0417": { + "vector": [9.71, -12.07, -45.74] + }, + "0.0833": { + "vector": [9.92, -12.24, -46.8] + }, + "0.125": { + "vector": [10.14, -12.16, -47.97] + }, + "0.1667": { + "vector": [10.35, -11.86, -49.03] + }, + "0.2083": { + "vector": [10.5, -11.37, -49.78] + }, + "0.25": { + "vector": [10.54, -10.73, -49.99] + }, + "0.2917": { + "vector": [10.46, -9.68, -49.49] + }, + "0.3333": { + "vector": [10.27, -8.13, -48.41] + }, + "0.375": { + "vector": [10.02, -6.4, -47] + }, + "0.4167": { + "vector": [9.75, -4.79, -45.55] + }, + "0.4583": { + "vector": [9.53, -3.63, -44.31] + }, + "0.5": { + "vector": [9.39, -3.22, -43.56] + }, + "0.5417": { + "vector": [9.35, -3.39, -43.4] + }, + "0.5833": { + "vector": [9.33, -3.8, -43.3] + }, + "0.625": { + "vector": [9.32, -4.41, -43.28] + }, + "0.6667": { + "vector": [9.32, -5.18, -43.32] + }, + "0.7083": { + "vector": [9.33, -6.05, -43.41] + }, + "0.75": { + "vector": [9.35, -7, -43.55] + }, + "0.7917": { + "vector": [9.37, -7.96, -43.73] + }, + "0.8333": { + "vector": [9.4, -8.91, -43.95] + }, + "0.875": { + "vector": [9.44, -9.79, -44.18] + }, + "0.9167": { + "vector": [9.48, -10.56, -44.44] + }, + "0.9583": { + "vector": [9.52, -11.18, -44.71] + }, + "1.0": { + "vector": [9.57, -11.6, -44.97] + } + } + }, + "rightFrontLeg": { + "rotation": { + "0.0": { + "vector": [0, 0, 30] + }, + "0.0417": { + "vector": [0, 0, 30.33] + }, + "0.0833": { + "vector": [0, 0, 30.83] + }, + "0.125": { + "vector": [0, 0, 31.41] + }, + "0.1667": { + "vector": [0, 0, 31.94] + }, + "0.2083": { + "vector": [0, 0, 32.34] + }, + "0.25": { + "vector": [0, 0, 32.5] + }, + "0.2917": { + "vector": [0, 0, 32.34] + }, + "0.3333": { + "vector": [0, 0, 31.94] + }, + "0.375": { + "vector": [0, 0, 31.41] + }, + "0.4167": { + "vector": [0, 0, 30.83] + }, + "0.4583": { + "vector": [0, 0, 30.33] + }, + "0.5": { + "vector": [0, 0, 30] + }, + "0.5417": { + "vector": [0, 0, 29.9] + }, + "0.5833": { + "vector": [0, 0, 29.83] + }, + "0.625": { + "vector": [0, 0, 29.77] + }, + "0.6667": { + "vector": [0, 0, 29.72] + }, + "0.7083": { + "vector": [0, 0, 29.7] + }, + "0.75": { + "vector": [0, 0, 29.69] + }, + "0.7917": { + "vector": [0, 0, 29.7] + }, + "0.8333": { + "vector": [0, 0, 29.72] + }, + "0.875": { + "vector": [0, 0, 29.77] + }, + "0.9167": { + "vector": [0, 0, 29.83] + }, + "0.9583": { + "vector": [0, 0, 29.9] + }, + "1.0": { + "vector": [0, 0, 30] + } + } + }, + "rightFrontFoot": { + "rotation": { + "0.0": { + "vector": [0, 0, -47.5] + }, + "0.0417": { + "vector": [0, 0, -47.17] + }, + "0.0833": { + "vector": [0, 0, -46.67] + }, + "0.125": { + "vector": [0, 0, -46.09] + }, + "0.1667": { + "vector": [0, 0, -45.56] + }, + "0.2083": { + "vector": [0, 0, -45.16] + }, + "0.25": { + "vector": [0, 0, -45] + }, + "0.2917": { + "vector": [0, 0, -45.16] + }, + "0.3333": { + "vector": [0, 0, -45.56] + }, + "0.375": { + "vector": [0, 0, -46.09] + }, + "0.4167": { + "vector": [0, 0, -46.67] + }, + "0.4583": { + "vector": [0, 0, -47.17] + }, + "0.5": { + "vector": [0, 0, -47.5] + }, + "0.5417": { + "vector": [0, 0, -47.6] + }, + "0.5833": { + "vector": [0, 0, -47.67] + }, + "0.625": { + "vector": [0, 0, -47.73] + }, + "0.6667": { + "vector": [0, 0, -47.78] + }, + "0.7083": { + "vector": [0, 0, -47.8] + }, + "0.75": { + "vector": [0, 0, -47.81] + }, + "0.7917": { + "vector": [0, 0, -47.8] + }, + "0.8333": { + "vector": [0, 0, -47.78] + }, + "0.875": { + "vector": [0, 0, -47.73] + }, + "0.9167": { + "vector": [0, 0, -47.67] + }, + "0.9583": { + "vector": [0, 0, -47.6] + }, + "1.0": { + "vector": [0, 0, -47.5] + } + } + }, + "rightBackThigh": { + "rotation": { + "0.0": { + "vector": [-14.41, 26.25, -29.69] + }, + "0.0417": { + "vector": [-14.97, 25.52, -30.98] + }, + "0.0833": { + "vector": [-15.9, 24.87, -33.1] + }, + "0.125": { + "vector": [-16.99, 24.38, -35.59] + }, + "0.1667": { + "vector": [-18.05, 24.11, -37.99] + }, + "0.2083": { + "vector": [-18.87, 24.14, -39.84] + }, + "0.25": { + "vector": [-19.25, 24.54, -40.69] + }, + "0.2917": { + "vector": [-19.1, 25.6, -40.29] + }, + "0.3333": { + "vector": [-18.55, 27.33, -38.99] + }, + "0.375": { + "vector": [-17.76, 29.36, -37.13] + }, + "0.4167": { + "vector": [-16.89, 31.31, -35.09] + }, + "0.4583": { + "vector": [-16.09, 32.81, -33.23] + }, + "0.5": { + "vector": [-15.52, 33.49, -31.92] + }, + "0.5417": { + "vector": [-15.32, 33.44, -31.46] + }, + "0.5833": { + "vector": [-15.12, 33.16, -31.01] + }, + "0.625": { + "vector": [-14.92, 32.69, -30.59] + }, + "0.6667": { + "vector": [-14.74, 32.07, -30.2] + }, + "0.7083": { + "vector": [-14.57, 31.34, -29.85] + }, + "0.75": { + "vector": [-14.43, 30.54, -29.57] + }, + "0.7917": { + "vector": [-14.32, 29.69, -29.35] + }, + "0.8333": { + "vector": [-14.24, 28.85, -29.21] + }, + "0.875": { + "vector": [-14.21, 28.05, -29.16] + }, + "0.9167": { + "vector": [-14.22, 27.32, -29.22] + }, + "0.9583": { + "vector": [-14.29, 26.71, -29.39] + }, + "1.0": { + "vector": [-14.41, 26.25, -29.69] + } + } + }, + "rightBackLeg": { + "rotation": { + "0.0": { + "vector": [0, 0, 7.5] + }, + "0.0417": { + "vector": [0, 0, 9.17] + }, + "0.0833": { + "vector": [0, 0, 11.39] + }, + "0.125": { + "vector": [0, 0, 13.75] + }, + "0.1667": { + "vector": [0, 0, 15.83] + }, + "0.2083": { + "vector": [0, 0, 17.22] + }, + "0.25": { + "vector": [0, 0, 17.5] + }, + "0.2917": { + "vector": [0, 0, 16.22] + }, + "0.3333": { + "vector": [0, 0, 13.61] + }, + "0.375": { + "vector": [0, 0, 10.31] + }, + "0.4167": { + "vector": [0, 0, 6.94] + }, + "0.4583": { + "vector": [0, 0, 4.13] + }, + "0.5": { + "vector": [0, 0, 2.5] + }, + "0.5417": { + "vector": [0, 0, 2.2] + }, + "0.5833": { + "vector": [0, 0, 2.12] + }, + "0.625": { + "vector": [0, 0, 2.23] + }, + "0.6667": { + "vector": [0, 0, 2.5] + }, + "0.7083": { + "vector": [0, 0, 2.91] + }, + "0.75": { + "vector": [0, 0, 3.44] + }, + "0.7917": { + "vector": [0, 0, 4.05] + }, + "0.8333": { + "vector": [0, 0, 4.72] + }, + "0.875": { + "vector": [0, 0, 5.43] + }, + "0.9167": { + "vector": [0, 0, 6.15] + }, + "0.9583": { + "vector": [0, 0, 6.84] + }, + "1.0": { + "vector": [0, 0, 7.5] + } + } + }, + "rightBackFoot": { + "rotation": { + "0.0": { + "vector": [0, 0, -50] + }, + "0.0417": { + "vector": [0, 0, -50.02] + }, + "0.0833": { + "vector": [0, 0, -49.72] + }, + "0.125": { + "vector": [0, 0, -49.22] + }, + "0.1667": { + "vector": [0, 0, -48.61] + }, + "0.2083": { + "vector": [0, 0, -48] + }, + "0.25": { + "vector": [0, 0, -47.5] + }, + "0.2917": { + "vector": [0, 0, -47] + }, + "0.3333": { + "vector": [0, 0, -46.39] + }, + "0.375": { + "vector": [0, 0, -45.78] + }, + "0.4167": { + "vector": [0, 0, -45.28] + }, + "0.4583": { + "vector": [0, 0, -44.98] + }, + "0.5": { + "vector": [0, 0, -45] + }, + "0.5417": { + "vector": [0, 0, -45.18] + }, + "0.5833": { + "vector": [0, 0, -45.49] + }, + "0.625": { + "vector": [0, 0, -45.9] + }, + "0.6667": { + "vector": [0, 0, -46.39] + }, + "0.7083": { + "vector": [0, 0, -46.93] + }, + "0.75": { + "vector": [0, 0, -47.5] + }, + "0.7917": { + "vector": [0, 0, -48.07] + }, + "0.8333": { + "vector": [0, 0, -48.61] + }, + "0.875": { + "vector": [0, 0, -49.1] + }, + "0.9167": { + "vector": [0, 0, -49.51] + }, + "0.9583": { + "vector": [0, 0, -49.82] + }, + "1.0": { + "vector": [0, 0, -50] + } + } + }, + "leftBackThigh": { + "rotation": { + "0.0": { + "vector": [-14.41, -26.25, 29.69] + }, + "0.0417": { + "vector": [-14.97, -25.52, 30.98] + }, + "0.0833": { + "vector": [-15.9, -24.87, 33.1] + }, + "0.125": { + "vector": [-16.99, -24.38, 35.59] + }, + "0.1667": { + "vector": [-18.05, -24.11, 37.99] + }, + "0.2083": { + "vector": [-18.87, -24.14, 39.84] + }, + "0.25": { + "vector": [-19.25, -24.54, 40.69] + }, + "0.2917": { + "vector": [-19.1, -25.6, 40.29] + }, + "0.3333": { + "vector": [-18.55, -27.33, 38.99] + }, + "0.375": { + "vector": [-17.76, -29.36, 37.13] + }, + "0.4167": { + "vector": [-16.89, -31.31, 35.09] + }, + "0.4583": { + "vector": [-16.09, -32.81, 33.23] + }, + "0.5": { + "vector": [-15.52, -33.49, 31.92] + }, + "0.5417": { + "vector": [-15.32, -33.44, 31.46] + }, + "0.5833": { + "vector": [-15.12, -33.16, 31.01] + }, + "0.625": { + "vector": [-14.92, -32.69, 30.59] + }, + "0.6667": { + "vector": [-14.74, -32.07, 30.2] + }, + "0.7083": { + "vector": [-14.57, -31.34, 29.85] + }, + "0.75": { + "vector": [-14.43, -30.54, 29.57] + }, + "0.7917": { + "vector": [-14.32, -29.69, 29.35] + }, + "0.8333": { + "vector": [-14.24, -28.85, 29.21] + }, + "0.875": { + "vector": [-14.21, -28.05, 29.16] + }, + "0.9167": { + "vector": [-14.22, -27.32, 29.22] + }, + "0.9583": { + "vector": [-14.29, -26.71, 29.39] + }, + "1.0": { + "vector": [-14.41, -26.25, 29.69] + } + } + }, + "leftBackLeg": { + "rotation": { + "0.0": { + "vector": [0, 0, -7.5] + }, + "0.0417": { + "vector": [0, 0, -9.17] + }, + "0.0833": { + "vector": [0, 0, -11.39] + }, + "0.125": { + "vector": [0, 0, -13.75] + }, + "0.1667": { + "vector": [0, 0, -15.83] + }, + "0.2083": { + "vector": [0, 0, -17.22] + }, + "0.25": { + "vector": [0, 0, -17.5] + }, + "0.2917": { + "vector": [0, 0, -16.22] + }, + "0.3333": { + "vector": [0, 0, -13.61] + }, + "0.375": { + "vector": [0, 0, -10.31] + }, + "0.4167": { + "vector": [0, 0, -6.94] + }, + "0.4583": { + "vector": [0, 0, -4.13] + }, + "0.5": { + "vector": [0, 0, -2.5] + }, + "0.5417": { + "vector": [0, 0, -2.2] + }, + "0.5833": { + "vector": [0, 0, -2.12] + }, + "0.625": { + "vector": [0, 0, -2.23] + }, + "0.6667": { + "vector": [0, 0, -2.5] + }, + "0.7083": { + "vector": [0, 0, -2.91] + }, + "0.75": { + "vector": [0, 0, -3.44] + }, + "0.7917": { + "vector": [0, 0, -4.05] + }, + "0.8333": { + "vector": [0, 0, -4.72] + }, + "0.875": { + "vector": [0, 0, -5.43] + }, + "0.9167": { + "vector": [0, 0, -6.15] + }, + "0.9583": { + "vector": [0, 0, -6.84] + }, + "1.0": { + "vector": [0, 0, -7.5] + } + } + }, + "leftHeadClawThing": { + "rotation": { + "0.0": { + "vector": [-50, 0, -50] + }, + "0.0417": { + "vector": [-44.62, 0, -50] + }, + "0.0833": { + "vector": [-38.33, 0, -50] + }, + "0.125": { + "vector": [-32.19, 0, -50] + }, + "0.1667": { + "vector": [-27.22, 0, -50] + }, + "0.2083": { + "vector": [-24.48, 0, -50] + }, + "0.25": { + "vector": [-25, 0, -50] + }, + "0.2917": { + "vector": [-30.52, 0, -50] + }, + "0.3333": { + "vector": [-40.56, 0, -50] + }, + "0.375": { + "vector": [-52.81, 0, -50] + }, + "0.4167": { + "vector": [-65, 0, -50] + }, + "0.4583": { + "vector": [-74.83, 0, -50] + }, + "0.5": { + "vector": [-80, 0, -50] + }, + "0.5417": { + "vector": [-80.46, 0, -50] + }, + "0.5833": { + "vector": [-79.86, 0, -50] + }, + "0.625": { + "vector": [-78.36, 0, -50] + }, + "0.6667": { + "vector": [-76.11, 0, -50] + }, + "0.7083": { + "vector": [-73.27, 0, -50] + }, + "0.75": { + "vector": [-70, 0, -50] + }, + "0.7917": { + "vector": [-66.45, 0, -50] + }, + "0.8333": { + "vector": [-62.78, 0, -50] + }, + "0.875": { + "vector": [-59.14, 0, -50] + }, + "0.9167": { + "vector": [-55.69, 0, -50] + }, + "0.9583": { + "vector": [-52.6, 0, -50] + }, + "1.0": { + "vector": [-50, 0, -50] + } + } + }, + "rightHeadClawThing": { + "rotation": { + "0.0": { + "vector": [-50, 0, 50] + }, + "0.0417": { + "vector": [-44.62, 0, 50] + }, + "0.0833": { + "vector": [-38.33, 0, 50] + }, + "0.125": { + "vector": [-32.19, 0, 50] + }, + "0.1667": { + "vector": [-27.22, 0, 50] + }, + "0.2083": { + "vector": [-24.48, 0, 50] + }, + "0.25": { + "vector": [-25, 0, 50] + }, + "0.2917": { + "vector": [-30.52, 0, 50] + }, + "0.3333": { + "vector": [-40.56, 0, 50] + }, + "0.375": { + "vector": [-52.81, 0, 50] + }, + "0.4167": { + "vector": [-65, 0, 50] + }, + "0.4583": { + "vector": [-74.83, 0, 50] + }, + "0.5": { + "vector": [-80, 0, 50] + }, + "0.5417": { + "vector": [-80.46, 0, 50] + }, + "0.5833": { + "vector": [-79.86, 0, 50] + }, + "0.625": { + "vector": [-78.36, 0, 50] + }, + "0.6667": { + "vector": [-76.11, 0, 50] + }, + "0.7083": { + "vector": [-73.27, 0, 50] + }, + "0.75": { + "vector": [-70, 0, 50] + }, + "0.7917": { + "vector": [-66.45, 0, 50] + }, + "0.8333": { + "vector": [-62.78, 0, 50] + }, + "0.875": { + "vector": [-59.14, 0, 50] + }, + "0.9167": { + "vector": [-55.69, 0, 50] + }, + "0.9583": { + "vector": [-52.6, 0, 50] + }, + "1.0": { + "vector": [-50, 0, 50] + } + } + }, + "tail1": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.0417": { + "vector": [-0.05, 0, 0] + }, + "0.0833": { + "vector": [-0.19, 0, 0] + }, + "0.125": { + "vector": [-0.39, 0, 0] + }, + "0.1667": { + "vector": [-0.65, 0, 0] + }, + "0.2083": { + "vector": [-0.94, 0, 0] + }, + "0.25": { + "vector": [-1.25, 0, 0] + }, + "0.2917": { + "vector": [-1.56, 0, 0] + }, + "0.3333": { + "vector": [-1.85, 0, 0] + }, + "0.375": { + "vector": [-2.11, 0, 0] + }, + "0.4167": { + "vector": [-2.31, 0, 0] + }, + "0.4583": { + "vector": [-2.45, 0, 0] + }, + "0.5": { + "vector": [-2.5, 0, 0] + }, + "0.5417": { + "vector": [-2.45, 0, 0] + }, + "0.5833": { + "vector": [-2.31, 0, 0] + }, + "0.625": { + "vector": [-2.11, 0, 0] + }, + "0.6667": { + "vector": [-1.85, 0, 0] + }, + "0.7083": { + "vector": [-1.56, 0, 0] + }, + "0.75": { + "vector": [-1.25, 0, 0] + }, + "0.7917": { + "vector": [-0.94, 0, 0] + }, + "0.8333": { + "vector": [-0.65, 0, 0] + }, + "0.875": { + "vector": [-0.39, 0, 0] + }, + "0.9167": { + "vector": [-0.19, 0, 0] + }, + "0.9583": { + "vector": [-0.05, 0, 0] + }, + "1.0": { + "vector": [0, 0, 0] + } + } + }, + "tail2": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.0417": { + "vector": [-0.05, 0, 0] + }, + "0.0833": { + "vector": [-0.19, 0, 0] + }, + "0.125": { + "vector": [-0.39, 0, 0] + }, + "0.1667": { + "vector": [-0.65, 0, 0] + }, + "0.2083": { + "vector": [-0.94, 0, 0] + }, + "0.25": { + "vector": [-1.25, 0, 0] + }, + "0.2917": { + "vector": [-1.56, 0, 0] + }, + "0.3333": { + "vector": [-1.85, 0, 0] + }, + "0.375": { + "vector": [-2.11, 0, 0] + }, + "0.4167": { + "vector": [-2.31, 0, 0] + }, + "0.4583": { + "vector": [-2.45, 0, 0] + }, + "0.5": { + "vector": [-2.5, 0, 0] + }, + "0.5417": { + "vector": [-2.45, 0, 0] + }, + "0.5833": { + "vector": [-2.31, 0, 0] + }, + "0.625": { + "vector": [-2.11, 0, 0] + }, + "0.6667": { + "vector": [-1.85, 0, 0] + }, + "0.7083": { + "vector": [-1.56, 0, 0] + }, + "0.75": { + "vector": [-1.25, 0, 0] + }, + "0.7917": { + "vector": [-0.94, 0, 0] + }, + "0.8333": { + "vector": [-0.65, 0, 0] + }, + "0.875": { + "vector": [-0.39, 0, 0] + }, + "0.9167": { + "vector": [-0.19, 0, 0] + }, + "0.9583": { + "vector": [-0.05, 0, 0] + }, + "1.0": { + "vector": [0, 0, 0] + } + } + }, + "tail3": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.0417": { + "vector": [-0.05, 0, 0] + }, + "0.0833": { + "vector": [-0.19, 0, 0] + }, + "0.125": { + "vector": [-0.39, 0, 0] + }, + "0.1667": { + "vector": [-0.65, 0, 0] + }, + "0.2083": { + "vector": [-0.94, 0, 0] + }, + "0.25": { + "vector": [-1.25, 0, 0] + }, + "0.2917": { + "vector": [-1.56, 0, 0] + }, + "0.3333": { + "vector": [-1.85, 0, 0] + }, + "0.375": { + "vector": [-2.11, 0, 0] + }, + "0.4167": { + "vector": [-2.31, 0, 0] + }, + "0.4583": { + "vector": [-2.45, 0, 0] + }, + "0.5": { + "vector": [-2.5, 0, 0] + }, + "0.5417": { + "vector": [-2.45, 0, 0] + }, + "0.5833": { + "vector": [-2.31, 0, 0] + }, + "0.625": { + "vector": [-2.11, 0, 0] + }, + "0.6667": { + "vector": [-1.85, 0, 0] + }, + "0.7083": { + "vector": [-1.56, 0, 0] + }, + "0.75": { + "vector": [-1.25, 0, 0] + }, + "0.7917": { + "vector": [-0.94, 0, 0] + }, + "0.8333": { + "vector": [-0.65, 0, 0] + }, + "0.875": { + "vector": [-0.39, 0, 0] + }, + "0.9167": { + "vector": [-0.19, 0, 0] + }, + "0.9583": { + "vector": [-0.05, 0, 0] + }, + "1.0": { + "vector": [0, 0, 0] + } + } + }, + "tail4": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.0417": { + "vector": [0.05, 0, 0] + }, + "0.0833": { + "vector": [0.19, 0, 0] + }, + "0.125": { + "vector": [0.39, 0, 0] + }, + "0.1667": { + "vector": [0.65, 0, 0] + }, + "0.2083": { + "vector": [0.94, 0, 0] + }, + "0.25": { + "vector": [1.25, 0, 0] + }, + "0.2917": { + "vector": [1.56, 0, 0] + }, + "0.3333": { + "vector": [1.85, 0, 0] + }, + "0.375": { + "vector": [2.11, 0, 0] + }, + "0.4167": { + "vector": [2.31, 0, 0] + }, + "0.4583": { + "vector": [2.45, 0, 0] + }, + "0.5": { + "vector": [2.5, 0, 0] + }, + "0.5417": { + "vector": [2.45, 0, 0] + }, + "0.5833": { + "vector": [2.31, 0, 0] + }, + "0.625": { + "vector": [2.11, 0, 0] + }, + "0.6667": { + "vector": [1.85, 0, 0] + }, + "0.7083": { + "vector": [1.56, 0, 0] + }, + "0.75": { + "vector": [1.25, 0, 0] + }, + "0.7917": { + "vector": [0.94, 0, 0] + }, + "0.8333": { + "vector": [0.65, 0, 0] + }, + "0.875": { + "vector": [0.39, 0, 0] + }, + "0.9167": { + "vector": [0.19, 0, 0] + }, + "0.9583": { + "vector": [0.05, 0, 0] + }, + "1.0": { + "vector": [0, 0, 0] + } + } + }, + "tail5": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.0417": { + "vector": [0.05, 0, 0] + }, + "0.0833": { + "vector": [0.19, 0, 0] + }, + "0.125": { + "vector": [0.39, 0, 0] + }, + "0.1667": { + "vector": [0.65, 0, 0] + }, + "0.2083": { + "vector": [0.94, 0, 0] + }, + "0.25": { + "vector": [1.25, 0, 0] + }, + "0.2917": { + "vector": [1.56, 0, 0] + }, + "0.3333": { + "vector": [1.85, 0, 0] + }, + "0.375": { + "vector": [2.11, 0, 0] + }, + "0.4167": { + "vector": [2.31, 0, 0] + }, + "0.4583": { + "vector": [2.45, 0, 0] + }, + "0.5": { + "vector": [2.5, 0, 0] + }, + "0.5417": { + "vector": [2.45, 0, 0] + }, + "0.5833": { + "vector": [2.31, 0, 0] + }, + "0.625": { + "vector": [2.11, 0, 0] + }, + "0.6667": { + "vector": [1.85, 0, 0] + }, + "0.7083": { + "vector": [1.56, 0, 0] + }, + "0.75": { + "vector": [1.25, 0, 0] + }, + "0.7917": { + "vector": [0.94, 0, 0] + }, + "0.8333": { + "vector": [0.65, 0, 0] + }, + "0.875": { + "vector": [0.39, 0, 0] + }, + "0.9167": { + "vector": [0.19, 0, 0] + }, + "0.9583": { + "vector": [0.05, 0, 0] + }, + "1.0": { + "vector": [0, 0, 0] + } + } + }, + "leftBackFoot": { + "rotation": { + "0.0": { + "vector": [0, 0, 50] + }, + "0.0417": { + "vector": [0, 0, 50.02] + }, + "0.0833": { + "vector": [0, 0, 49.72] + }, + "0.125": { + "vector": [0, 0, 49.22] + }, + "0.1667": { + "vector": [0, 0, 48.61] + }, + "0.2083": { + "vector": [0, 0, 48] + }, + "0.25": { + "vector": [0, 0, 47.5] + }, + "0.2917": { + "vector": [0, 0, 47] + }, + "0.3333": { + "vector": [0, 0, 46.39] + }, + "0.375": { + "vector": [0, 0, 45.78] + }, + "0.4167": { + "vector": [0, 0, 45.28] + }, + "0.4583": { + "vector": [0, 0, 44.98] + }, + "0.5": { + "vector": [0, 0, 45] + }, + "0.5417": { + "vector": [0, 0, 45.18] + }, + "0.5833": { + "vector": [0, 0, 45.49] + }, + "0.625": { + "vector": [0, 0, 45.9] + }, + "0.6667": { + "vector": [0, 0, 46.39] + }, + "0.7083": { + "vector": [0, 0, 46.93] + }, + "0.75": { + "vector": [0, 0, 47.5] + }, + "0.7917": { + "vector": [0, 0, 48.07] + }, + "0.8333": { + "vector": [0, 0, 48.61] + }, + "0.875": { + "vector": [0, 0, 49.1] + }, + "0.9167": { + "vector": [0, 0, 49.51] + }, + "0.9583": { + "vector": [0, 0, 49.82] + }, + "1.0": { + "vector": [0, 0, 50] + } + } + }, + "leftFrontFoot": { + "rotation": { + "0.0": { + "vector": [0, 0, 47.5] + }, + "0.0417": { + "vector": [0, 0, 47.17] + }, + "0.0833": { + "vector": [0, 0, 46.67] + }, + "0.125": { + "vector": [0, 0, 46.09] + }, + "0.1667": { + "vector": [0, 0, 45.56] + }, + "0.2083": { + "vector": [0, 0, 45.16] + }, + "0.25": { + "vector": [0, 0, 45] + }, + "0.2917": { + "vector": [0, 0, 45.16] + }, + "0.3333": { + "vector": [0, 0, 45.56] + }, + "0.375": { + "vector": [0, 0, 46.09] + }, + "0.4167": { + "vector": [0, 0, 46.67] + }, + "0.4583": { + "vector": [0, 0, 47.17] + }, + "0.5": { + "vector": [0, 0, 47.5] + }, + "0.5417": { + "vector": [0, 0, 47.6] + }, + "0.5833": { + "vector": [0, 0, 47.67] + }, + "0.625": { + "vector": [0, 0, 47.73] + }, + "0.6667": { + "vector": [0, 0, 47.78] + }, + "0.7083": { + "vector": [0, 0, 47.8] + }, + "0.75": { + "vector": [0, 0, 47.81] + }, + "0.7917": { + "vector": [0, 0, 47.8] + }, + "0.8333": { + "vector": [0, 0, 47.78] + }, + "0.875": { + "vector": [0, 0, 47.73] + }, + "0.9167": { + "vector": [0, 0, 47.67] + }, + "0.9583": { + "vector": [0, 0, 47.6] + }, + "1.0": { + "vector": [0, 0, 47.5] + } + } + } + } + } + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/antarchy/animations/infant_metroid.animation.json b/common/src/main/resources/assets/antarchy/animations/infant_metroid.animation.json new file mode 100644 index 00000000..ebaa4675 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/animations/infant_metroid.animation.json @@ -0,0 +1,169 @@ +{ + "format_version": "1.8.0", + "animations": { + "idle": { + "loop": true, + "animation_length": 1, + "bones": { + "body": { + "scale": { + "0.0": { + "vector": [1, 1, 1] + }, + "0.0417": { + "vector": [1.0023, 0.9977, 1.0023] + }, + "0.0833": { + "vector": [1.005, 0.995, 1.005] + }, + "0.125": { + "vector": [1.008, 0.992, 1.008] + }, + "0.1667": { + "vector": [1.0111, 0.9889, 1.0111] + }, + "0.2083": { + "vector": [1.0142, 0.9858, 1.0142] + }, + "0.25": { + "vector": [1.0172, 0.9828, 1.0172] + }, + "0.2917": { + "vector": [1.0199, 0.9801, 1.0199] + }, + "0.3333": { + "vector": [1.0222, 0.9778, 1.0222] + }, + "0.375": { + "vector": [1.024, 0.976, 1.024] + }, + "0.4167": { + "vector": [1.0252, 0.9748, 1.0252] + }, + "0.4583": { + "vector": [1.0255, 0.9745, 1.0255] + }, + "0.5": { + "vector": [1.025, 0.975, 1.025] + }, + "0.5417": { + "vector": [1.0201, 0.9799, 1.0201] + }, + "0.5833": { + "vector": [1.0111, 0.9889, 1.0111] + }, + "0.625": { + "vector": [1, 1, 1] + }, + "0.6667": { + "vector": [0.9889, 1.0111, 0.9889] + }, + "0.7083": { + "vector": [0.9799, 1.0201, 0.9799] + }, + "0.75": { + "vector": [0.975, 1.025, 0.975] + }, + "0.7917": { + "vector": [0.9748, 1.0252, 0.9748] + }, + "0.8333": { + "vector": [0.9778, 1.0222, 0.9778] + }, + "0.875": { + "vector": [0.9828, 1.0172, 0.9828] + }, + "0.9167": { + "vector": [0.9889, 1.0111, 0.9889] + }, + "0.9583": { + "vector": [0.995, 1.005, 0.995] + }, + "1.0": { + "vector": [1, 1, 1] + } + } + }, + "gel": { + "scale": { + "0.0": { + "vector": [0.975, 1.025, 0.975] + }, + "0.0417": { + "vector": [0.9748, 1.0252, 0.9748] + }, + "0.0833": { + "vector": [0.9778, 1.0222, 0.9778] + }, + "0.125": { + "vector": [0.9828, 1.0172, 0.9828] + }, + "0.1667": { + "vector": [0.9889, 1.0111, 0.9889] + }, + "0.2083": { + "vector": [0.995, 1.005, 0.995] + }, + "0.25": { + "vector": [1, 1, 1] + }, + "0.2917": { + "vector": [1.0023, 0.9977, 1.0023] + }, + "0.3333": { + "vector": [1.005, 0.995, 1.005] + }, + "0.375": { + "vector": [1.008, 0.992, 1.008] + }, + "0.4167": { + "vector": [1.0111, 0.9889, 1.0111] + }, + "0.4583": { + "vector": [1.0142, 0.9858, 1.0142] + }, + "0.5": { + "vector": [1.0172, 0.9828, 1.0172] + }, + "0.5417": { + "vector": [1.0199, 0.9801, 1.0199] + }, + "0.5833": { + "vector": [1.0222, 0.9778, 1.0222] + }, + "0.625": { + "vector": [1.024, 0.976, 1.024] + }, + "0.6667": { + "vector": [1.0252, 0.9748, 1.0252] + }, + "0.7083": { + "vector": [1.0255, 0.9745, 1.0255] + }, + "0.75": { + "vector": [1.025, 0.975, 1.025] + }, + "0.7917": { + "vector": [1.0201, 0.9799, 1.0201] + }, + "0.8333": { + "vector": [1.0111, 0.9889, 1.0111] + }, + "0.875": { + "vector": [1, 1, 1] + }, + "0.9167": { + "vector": [0.9889, 1.0111, 0.9889] + }, + "0.9583": { + "vector": [0.9799, 1.0201, 0.9799] + }, + "1.0": { + "vector": [0.975, 1.025, 0.975] + } + } + } + } + } + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/antarchy/animations/metroid_larva.animation.json b/common/src/main/resources/assets/antarchy/animations/metroid_larva.animation.json new file mode 100644 index 00000000..8c2eaa68 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/animations/metroid_larva.animation.json @@ -0,0 +1,485 @@ +{ + "format_version": "1.8.0", + "animations": { + "idle": { + "loop": true, + "animation_length": 1, + "bones": { + "gel": { + "scale": { + "0.0": { + "vector": [0.975, 1.025, 0.975] + }, + "0.0417": { + "vector": [0.9748, 1.0252, 0.9748] + }, + "0.0833": { + "vector": [0.9778, 1.0222, 0.9778] + }, + "0.125": { + "vector": [0.9828, 1.0172, 0.9828] + }, + "0.1667": { + "vector": [0.9889, 1.0111, 0.9889] + }, + "0.2083": { + "vector": [0.995, 1.005, 0.995] + }, + "0.25": { + "vector": [1, 1, 1] + }, + "0.2917": { + "vector": [1.0023, 0.9977, 1.0023] + }, + "0.3333": { + "vector": [1.005, 0.995, 1.005] + }, + "0.375": { + "vector": [1.008, 0.992, 1.008] + }, + "0.4167": { + "vector": [1.0111, 0.9889, 1.0111] + }, + "0.4583": { + "vector": [1.0142, 0.9858, 1.0142] + }, + "0.5": { + "vector": [1.0172, 0.9828, 1.0172] + }, + "0.5417": { + "vector": [1.0199, 0.9801, 1.0199] + }, + "0.5833": { + "vector": [1.0222, 0.9778, 1.0222] + }, + "0.625": { + "vector": [1.024, 0.976, 1.024] + }, + "0.6667": { + "vector": [1.0252, 0.9748, 1.0252] + }, + "0.7083": { + "vector": [1.0255, 0.9745, 1.0255] + }, + "0.75": { + "vector": [1.025, 0.975, 1.025] + }, + "0.7917": { + "vector": [1.0201, 0.9799, 1.0201] + }, + "0.8333": { + "vector": [1.0111, 0.9889, 1.0111] + }, + "0.875": { + "vector": [1, 1, 1] + }, + "0.9167": { + "vector": [0.9889, 1.0111, 0.9889] + }, + "0.9583": { + "vector": [0.9799, 1.0201, 0.9799] + }, + "1.0": { + "vector": [0.975, 1.025, 0.975] + } + } + }, + "body": { + "scale": { + "0.0": { + "vector": [1, 1, 1] + }, + "0.0417": { + "vector": [1.0023, 0.9977, 1.0023] + }, + "0.0833": { + "vector": [1.005, 0.995, 1.005] + }, + "0.125": { + "vector": [1.008, 0.992, 1.008] + }, + "0.1667": { + "vector": [1.0111, 0.9889, 1.0111] + }, + "0.2083": { + "vector": [1.0142, 0.9858, 1.0142] + }, + "0.25": { + "vector": [1.0172, 0.9828, 1.0172] + }, + "0.2917": { + "vector": [1.0199, 0.9801, 1.0199] + }, + "0.3333": { + "vector": [1.0222, 0.9778, 1.0222] + }, + "0.375": { + "vector": [1.024, 0.976, 1.024] + }, + "0.4167": { + "vector": [1.0252, 0.9748, 1.0252] + }, + "0.4583": { + "vector": [1.0255, 0.9745, 1.0255] + }, + "0.5": { + "vector": [1.025, 0.975, 1.025] + }, + "0.5417": { + "vector": [1.0201, 0.9799, 1.0201] + }, + "0.5833": { + "vector": [1.0111, 0.9889, 1.0111] + }, + "0.625": { + "vector": [1, 1, 1] + }, + "0.6667": { + "vector": [0.9889, 1.0111, 0.9889] + }, + "0.7083": { + "vector": [0.9799, 1.0201, 0.9799] + }, + "0.75": { + "vector": [0.975, 1.025, 0.975] + }, + "0.7917": { + "vector": [0.9748, 1.0252, 0.9748] + }, + "0.8333": { + "vector": [0.9778, 1.0222, 0.9778] + }, + "0.875": { + "vector": [0.9828, 1.0172, 0.9828] + }, + "0.9167": { + "vector": [0.9889, 1.0111, 0.9889] + }, + "0.9583": { + "vector": [0.995, 1.005, 0.995] + }, + "1.0": { + "vector": [1, 1, 1] + } + } + }, + "rightTooth": { + "rotation": { + "0.0": { + "vector": [0, 0, 25] + }, + "0.0417": { + "vector": [0, 0, 24.7] + }, + "0.0833": { + "vector": [0, 0, 23.89] + }, + "0.125": { + "vector": [0, 0, 22.66] + }, + "0.1667": { + "vector": [0, 0, 21.11] + }, + "0.2083": { + "vector": [0, 0, 19.36] + }, + "0.25": { + "vector": [0, 0, 17.5] + }, + "0.2917": { + "vector": [0, 0, 15.64] + }, + "0.3333": { + "vector": [0, 0, 13.89] + }, + "0.375": { + "vector": [0, 0, 12.34] + }, + "0.4167": { + "vector": [0, 0, 11.11] + }, + "0.4583": { + "vector": [0, 0, 10.3] + }, + "0.5": { + "vector": [0, 0, 10] + }, + "0.5417": { + "vector": [0, 0, 10.3] + }, + "0.5833": { + "vector": [0, 0, 11.11] + }, + "0.625": { + "vector": [0, 0, 12.34] + }, + "0.6667": { + "vector": [0, 0, 13.89] + }, + "0.7083": { + "vector": [0, 0, 15.64] + }, + "0.75": { + "vector": [0, 0, 17.5] + }, + "0.7917": { + "vector": [0, 0, 19.36] + }, + "0.8333": { + "vector": [0, 0, 21.11] + }, + "0.875": { + "vector": [0, 0, 22.66] + }, + "0.9167": { + "vector": [0, 0, 23.89] + }, + "0.9583": { + "vector": [0, 0, 24.7] + }, + "1.0": { + "vector": [0, 0, 25] + } + } + }, + "rightArm": { + "rotation": { + "0.0": { + "vector": [-25, 0, 0] + }, + "0.0417": { + "vector": [-24.58, 0.88, 2.83] + }, + "0.0833": { + "vector": [-23.47, 1.86, 5.97] + }, + "0.125": { + "vector": [-21.91, 2.82, 9.07] + }, + "0.1667": { + "vector": [-20.14, 3.66, 11.75] + }, + "0.2083": { + "vector": [-18.4, 4.24, 13.63] + }, + "0.25": { + "vector": [-16.94, 4.46, 14.34] + }, + "0.2917": { + "vector": [-15.56, 4.24, 13.63] + }, + "0.3333": { + "vector": [-14.03, 3.66, 11.75] + }, + "0.375": { + "vector": [-12.54, 2.82, 9.07] + }, + "0.4167": { + "vector": [-11.25, 1.86, 5.97] + }, + "0.4583": { + "vector": [-10.34, 0.88, 2.83] + }, + "0.5": { + "vector": [-10, 0, 0] + }, + "0.5417": { + "vector": [-10.33, -0.92, -2.96] + }, + "0.5833": { + "vector": [-11.22, -2, -6.44] + }, + "0.625": { + "vector": [-12.49, -3.1, -9.97] + }, + "0.6667": { + "vector": [-13.97, -4.07, -13.08] + }, + "0.7083": { + "vector": [-15.49, -4.76, -15.29] + }, + "0.75": { + "vector": [-16.87, -5.02, -16.13] + }, + "0.7917": { + "vector": [-18.34, -4.76, -15.29] + }, + "0.8333": { + "vector": [-20.08, -4.07, -13.08] + }, + "0.875": { + "vector": [-21.87, -3.1, -9.97] + }, + "0.9167": { + "vector": [-23.44, -2, -6.44] + }, + "0.9583": { + "vector": [-24.57, -0.92, -2.96] + }, + "1.0": { + "vector": [-25, 0, 0] + } + } + }, + "leftTooth": { + "rotation": { + "0.0": { + "vector": [0, 0, -25] + }, + "0.0417": { + "vector": [0, 0, -24.7] + }, + "0.0833": { + "vector": [0, 0, -23.89] + }, + "0.125": { + "vector": [0, 0, -22.66] + }, + "0.1667": { + "vector": [0, 0, -21.11] + }, + "0.2083": { + "vector": [0, 0, -19.36] + }, + "0.25": { + "vector": [0, 0, -17.5] + }, + "0.2917": { + "vector": [0, 0, -15.64] + }, + "0.3333": { + "vector": [0, 0, -13.89] + }, + "0.375": { + "vector": [0, 0, -12.34] + }, + "0.4167": { + "vector": [0, 0, -11.11] + }, + "0.4583": { + "vector": [0, 0, -10.3] + }, + "0.5": { + "vector": [0, 0, -10] + }, + "0.5417": { + "vector": [0, 0, -10.3] + }, + "0.5833": { + "vector": [0, 0, -11.11] + }, + "0.625": { + "vector": [0, 0, -12.34] + }, + "0.6667": { + "vector": [0, 0, -13.89] + }, + "0.7083": { + "vector": [0, 0, -15.64] + }, + "0.75": { + "vector": [0, 0, -17.5] + }, + "0.7917": { + "vector": [0, 0, -19.36] + }, + "0.8333": { + "vector": [0, 0, -21.11] + }, + "0.875": { + "vector": [0, 0, -22.66] + }, + "0.9167": { + "vector": [0, 0, -23.89] + }, + "0.9583": { + "vector": [0, 0, -24.7] + }, + "1.0": { + "vector": [0, 0, -25] + } + } + }, + "leftArm": { + "rotation": { + "0.0": { + "vector": [-25, 0, 0] + }, + "0.0417": { + "vector": [-24.58, -0.88, -2.83] + }, + "0.0833": { + "vector": [-23.47, -1.86, -5.97] + }, + "0.125": { + "vector": [-21.91, -2.82, -9.07] + }, + "0.1667": { + "vector": [-20.14, -3.66, -11.75] + }, + "0.2083": { + "vector": [-18.4, -4.24, -13.63] + }, + "0.25": { + "vector": [-16.94, -4.46, -14.33] + }, + "0.2917": { + "vector": [-15.56, -4.24, -13.63] + }, + "0.3333": { + "vector": [-14.03, -3.66, -11.75] + }, + "0.375": { + "vector": [-12.54, -2.82, -9.07] + }, + "0.4167": { + "vector": [-11.25, -1.86, -5.97] + }, + "0.4583": { + "vector": [-10.34, -0.88, -2.83] + }, + "0.5": { + "vector": [-10, 0, 0] + }, + "0.5417": { + "vector": [-10.33, 0.92, 2.96] + }, + "0.5833": { + "vector": [-11.22, 2, 6.44] + }, + "0.625": { + "vector": [-12.49, 3.1, 9.97] + }, + "0.6667": { + "vector": [-13.97, 4.07, 13.08] + }, + "0.7083": { + "vector": [-15.49, 4.76, 15.29] + }, + "0.75": { + "vector": [-16.87, 5.02, 16.13] + }, + "0.7917": { + "vector": [-18.34, 4.76, 15.29] + }, + "0.8333": { + "vector": [-20.08, 4.07, 13.08] + }, + "0.875": { + "vector": [-21.87, 3.1, 9.97] + }, + "0.9167": { + "vector": [-23.44, 2, 6.44] + }, + "0.9583": { + "vector": [-24.57, 0.92, 2.96] + }, + "1.0": { + "vector": [-25, 0, 0] + } + } + } + } + } + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/antarchy/blockstates/biomite.json b/common/src/main/resources/assets/antarchy/blockstates/biomite.json new file mode 100644 index 00000000..36122680 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/biomite.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "antarchy:block/biomite" + } + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/biomite_turf.json b/common/src/main/resources/assets/antarchy/blockstates/biomite_turf.json new file mode 100644 index 00000000..6fcb78fc --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/biomite_turf.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "antarchy:block/biomite_turf" + } + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/biowart.json b/common/src/main/resources/assets/antarchy/blockstates/biowart.json new file mode 100644 index 00000000..dafc5e20 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/biowart.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "antarchy:block/biowart" + } + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/biowart_tendrils.json b/common/src/main/resources/assets/antarchy/blockstates/biowart_tendrils.json new file mode 100644 index 00000000..c19c4f34 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/biowart_tendrils.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "antarchy:block/biowart_tendrils" + } + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/metroid_egg.json b/common/src/main/resources/assets/antarchy/blockstates/metroid_egg.json new file mode 100644 index 00000000..8fb5111b --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/metroid_egg.json @@ -0,0 +1,11 @@ +{ + "variants": { + "rotated=false": { + "model": "antarchy:block/metroid_egg" + }, + "rotated=true": { + "model": "antarchy:block/metroid_egg", + "y": 90 + } + } +} diff --git a/common/src/main/resources/assets/antarchy/blockstates/spit_bug_egg.json b/common/src/main/resources/assets/antarchy/blockstates/spit_bug_egg.json new file mode 100644 index 00000000..336a5076 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/blockstates/spit_bug_egg.json @@ -0,0 +1,25 @@ +{ + "variants": { + "hatch=0,rotated=false": { + "model": "antarchy:block/spit_bug_egg" + }, + "hatch=0,rotated=true": { + "model": "antarchy:block/spit_bug_egg", + "y": 90 + }, + "hatch=1,rotated=false": { + "model": "antarchy:block/spit_bug_egg" + }, + "hatch=1,rotated=true": { + "model": "antarchy:block/spit_bug_egg", + "y": 90 + }, + "hatch=2,rotated=false": { + "model": "antarchy:block/spit_bug_egg" + }, + "hatch=2,rotated=true": { + "model": "antarchy:block/spit_bug_egg", + "y": 90 + } + } +} diff --git a/common/src/main/resources/assets/antarchy/geo/alpha_metroid.geo.json b/common/src/main/resources/assets/antarchy/geo/alpha_metroid.geo.json new file mode 100644 index 00000000..b71ed9bc --- /dev/null +++ b/common/src/main/resources/assets/antarchy/geo/alpha_metroid.geo.json @@ -0,0 +1,166 @@ +{ + "format_version": "1.12.0", + "minecraft:geometry": [ + { + "description": { + "identifier": "geometry.alphametroid", + "texture_width": 128, + "texture_height": 128, + "visible_bounds_width": 4, + "visible_bounds_height": 3.5, + "visible_bounds_offset": [0, 1.25, 0] + }, + "bones": [ + { + "name": "root", + "pivot": [0, 0, 0] + }, + { + "name": "body", + "parent": "root", + "pivot": [0, 0, 0], + "cubes": [ + {"origin": [-8, 0, -8], "size": [16, 16, 16], "uv": [0, 0]}, + {"origin": [-4, 4, -4], "size": [8, 8, 8], "uv": [92, 110]}, + {"origin": [0, 0, -8], "size": [0, 16, 16], "uv": [0, 96]}, + {"origin": [-8, 0, 0], "size": [16, 16, 0], "uv": [0, 112]}, + {"origin": [-8, 8, -8], "size": [16, 0, 16], "uv": [-16, 112]}, + {"origin": [-8.5, 10, -8.5], "size": [17, 10, 17], "uv": [0, 32]}, + {"origin": [-6.5, 10, 2.5], "size": [13, 6, 8], "pivot": [0, 10, 8.5], "rotation": [-45, 0, 0], "uv": [0, 59]}, + {"origin": [-4.5, 10, -12.5], "size": [9, 7, 4], "uv": [64, 0]}, + {"origin": [-4.5, 10, -12.5], "size": [9, 7, 0], "inflate": 0.25, "uv": [92, 19]}, + {"origin": [-4.5, 10, -12.5], "size": [9, 7, 0], "inflate": 0.5, "uv": [89, 49]}, + {"origin": [-5.5, 13, -10.5], "size": [11, 1, 1], "uv": [64, 11]}, + {"origin": [-5, 12.5, -11], "size": [10, 2, 2], "uv": [45, 62]} + ] + }, + { + "name": "leftFrontThigh", + "parent": "body", + "pivot": [4.5, 11, -8.5], + "cubes": [ + {"origin": [3.5, 10, -9.5], "size": [8, 2, 2], "inflate": 0.025, "uv": [64, 13]} + ] + }, + { + "name": "leftFrontLeg", + "parent": "leftFrontThigh", + "pivot": [11.5, 10, -8.5], + "cubes": [ + {"origin": [9.5, 4, -9], "size": [2, 6, 1], "uv": [68, 26]} + ] + }, + { + "name": "leftFrontFoot", + "parent": "leftFrontLeg", + "pivot": [11.5, 4, -8.5], + "cubes": [ + {"origin": [11.5, 4, -8.5], "size": [6, 4, 0], "uv": [116, 0]} + ] + }, + { + "name": "leftBackThigh", + "parent": "body", + "pivot": [4.5, 10, 1.5], + "cubes": [ + {"origin": [3.5, 9, 0.5], "size": [8, 2, 2], "inflate": 0.025, "uv": [64, 13]} + ] + }, + { + "name": "leftBackLeg", + "parent": "leftBackThigh", + "pivot": [11.5, 9, 1.5], + "cubes": [ + {"origin": [9.5, 3, 1], "size": [2, 6, 1], "uv": [68, 26]} + ] + }, + { + "name": "leftBackFoot", + "parent": "leftBackLeg", + "pivot": [11.5, 3, 1.5], + "cubes": [ + {"origin": [11.5, 3, 1.5], "size": [6, 4, 0], "uv": [116, 0]} + ] + }, + { + "name": "rightFrontThigh", + "parent": "body", + "pivot": [-4.5, 11, -8.5], + "cubes": [ + {"origin": [-11.5, 10, -9.5], "size": [8, 2, 2], "inflate": 0.025, "uv": [64, 13], "mirror": true} + ] + }, + { + "name": "rightFrontLeg", + "parent": "rightFrontThigh", + "pivot": [-11.5, 10, -8.5], + "cubes": [ + {"origin": [-11.5, 4, -9], "size": [2, 6, 1], "uv": [68, 26], "mirror": true} + ] + }, + { + "name": "rightFrontFoot", + "parent": "rightFrontLeg", + "pivot": [-11.5, 4, -8.5], + "cubes": [ + {"origin": [-17.5, 4, -8.5], "size": [6, 4, 0], "uv": [116, 0], "mirror": true} + ] + }, + { + "name": "rightBackThigh", + "parent": "body", + "pivot": [-4.5, 10, 1.5], + "cubes": [ + {"origin": [-11.5, 9, 0.5], "size": [8, 2, 2], "inflate": 0.025, "uv": [64, 13], "mirror": true} + ] + }, + { + "name": "rightBackLeg", + "parent": "rightBackThigh", + "pivot": [-11.5, 9, 1.5], + "cubes": [ + {"origin": [-11.5, 3, 1], "size": [2, 6, 1], "uv": [68, 26], "mirror": true} + ] + }, + { + "name": "rightBackFoot", + "parent": "rightBackLeg", + "pivot": [-11.5, 3, 1.5], + "cubes": [ + {"origin": [-17.5, 3, 1.5], "size": [6, 4, 0], "uv": [116, 0], "mirror": true} + ] + }, + { + "name": "topHeadClawThing", + "parent": "body", + "pivot": [0, 17, -10.5], + "cubes": [ + {"origin": [-1, 17, -12.5], "size": [2, 4, 2], "uv": [72, 20]}, + {"origin": [-0.5, 21, -12.5], "size": [1, 2, 2], "uv": [68, 39]}, + {"origin": [0, 23, -14.5], "size": [0, 3, 3], "uv": [68, 33]} + ] + }, + { + "name": "leftHeadClawThing", + "parent": "body", + "pivot": [4, 10, -10.5], + "cubes": [ + {"origin": [3, 6, -12.5], "size": [2, 4, 2], "uv": [64, 20]}, + {"origin": [3.5, 4, -12.5], "size": [1, 2, 2], "uv": [90, 62]}, + {"origin": [4, 1, -14.5], "size": [0, 3, 3], "uv": [82, 33]} + ] + }, + { + "name": "rightHeadClawThing", + "parent": "body", + "pivot": [-4, 10, -10.5], + "cubes": [ + {"origin": [-5, 6, -12.5], "size": [2, 4, 2], "uv": [64, 20], "mirror": true}, + {"origin": [-4.5, 4, -12.5], "size": [1, 2, 2], "uv": [90, 62], "mirror": true}, + {"origin": [-4, 1, -14.5], "size": [0, 3, 3], "uv": [82, 33], "mirror": true} + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/main/resources/assets/antarchy/geo/gamma_metroid.geo.json b/common/src/main/resources/assets/antarchy/geo/gamma_metroid.geo.json new file mode 100644 index 00000000..9dd5fa7e --- /dev/null +++ b/common/src/main/resources/assets/antarchy/geo/gamma_metroid.geo.json @@ -0,0 +1,226 @@ +{ + "format_version": "1.12.0", + "minecraft:geometry": [ + { + "description": { + "identifier": "geometry.gammametroid", + "texture_width": 128, + "texture_height": 128, + "visible_bounds_width": 6, + "visible_bounds_height": 3.5, + "visible_bounds_offset": [0, 1.25, 0] + }, + "bones": [ + { + "name": "root", + "pivot": [0, 0, 0] + }, + { + "name": "body", + "parent": "root", + "pivot": [0, 13, -3], + "cubes": [ + {"origin": [-8, 2, -8], "size": [16, 16, 16], "uv": [0, 0]}, + {"origin": [-4, 6, -4], "size": [8, 8, 8], "uv": [64, 0]}, + {"origin": [0, 2, -8], "size": [0, 16, 16], "uv": [52, 57]}, + {"origin": [-8, 2, 0], "size": [16, 16, 0], "uv": [64, 16]}, + {"origin": [-8.5, 9.9, -8.5], "size": [17, 12, 8], "pivot": [0, 9.9, -0.5], "rotation": [5, 0, 0], "uv": [52, 37]}, + {"origin": [-9, 9.75, -1.925], "size": [18, 13, 8], "uv": [0, 37]}, + {"origin": [-4.5, 10, -12.5], "size": [9, 7, 4], "uv": [84, 57]}, + {"origin": [-4.5, 10, -12.5], "size": [9, 7, 0], "inflate": 0.25, "uv": [100, 84]}, + {"origin": [-4.5, 10, -12.5], "size": [9, 7, 0], "inflate": 0.5, "uv": [100, 91]}, + {"origin": [-5.5, 13, -10], "size": [11, 1, 1], "inflate": -0.05, "uv": [84, 72]}, + {"origin": [-5, 12.5, -10.5], "size": [10, 2, 2], "inflate": -0.05, "uv": [84, 68]}, + {"origin": [-5.5, 12, -11], "size": [11, 1, 1], "uv": [84, 72]}, + {"origin": [-5, 11.5, -11.5], "size": [10, 2, 2], "uv": [84, 68]}, + {"origin": [-5.5, 14, -11], "size": [11, 1, 1], "inflate": 0.05, "uv": [84, 72]}, + {"origin": [-5, 13.5, -11.5], "size": [10, 2, 2], "inflate": 0.05, "uv": [84, 68]} + ] + }, + { + "name": "tail1", + "parent": "body", + "pivot": [0, 21.775, 6.075], + "rotation": [-5, 0, 0], + "cubes": [ + {"origin": [-8.5, 9.80386, 6.06833], "size": [17, 12, 8], "uv": [52, 37]} + ] + }, + { + "name": "tail2", + "parent": "tail1", + "pivot": [0, 20.96821, 14.04442], + "rotation": [-10, 0, 0], + "cubes": [ + {"origin": [-7.5, 9.9837, 14.02548], "size": [15, 11, 6], "uv": [0, 58]} + ] + }, + { + "name": "tail3", + "parent": "tail2", + "pivot": [0, 18.96538, 20.04064], + "rotation": [-5, 0, 0], + "cubes": [ + {"origin": [-5.5, 9.99664, 20.00703], "size": [11, 9, 4], "uv": [0, 75]} + ] + }, + { + "name": "tail4", + "parent": "tail3", + "pivot": [0, 10.03043, 24.00795], + "rotation": [5, 0, 0], + "cubes": [ + {"origin": [-1.5, 9.99685, 24.00409], "size": [3, 5, 4], "uv": [0, 88]} + ] + }, + { + "name": "tail5", + "parent": "tail4", + "pivot": [0, 10.00353, 28.01924], + "rotation": [10, 0, 0], + "cubes": [ + {"origin": [-1, 9.99958, 28.00316], "size": [2, 2, 2], "uv": [28, 88]} + ] + }, + { + "name": "topHeadClawThing", + "parent": "body", + "pivot": [0, 17, -10.5], + "cubes": [ + {"origin": [-1, 17, -12.5], "size": [2, 4, 2], "uv": [30, 75]}, + {"origin": [-0.5, 21, -13.5], "size": [1, 2, 2], "uv": [84, 88]}, + {"origin": [0, 23, -15.5], "size": [0, 3, 3], "uv": [36, 88]} + ] + }, + { + "name": "leftHeadClawThing", + "parent": "body", + "pivot": [4, 10, -10.5], + "cubes": [ + {"origin": [3, 6, -12.5], "size": [2, 4, 2], "uv": [20, 88]}, + {"origin": [3.5, 4, -13.5], "size": [1, 2, 2], "uv": [48, 89]}, + {"origin": [4, 1, -15.5], "size": [0, 3, 3], "uv": [42, 88]} + ] + }, + { + "name": "rightHeadClawThing", + "parent": "body", + "pivot": [-4, 10, -10.5], + "cubes": [ + {"origin": [-5, 6, -12.5], "size": [2, 4, 2], "uv": [20, 88], "mirror": true}, + {"origin": [-4.5, 4, -13.5], "size": [1, 2, 2], "uv": [48, 89], "mirror": true}, + {"origin": [-4, 1, -15.5], "size": [0, 3, 3], "uv": [42, 88], "mirror": true} + ] + }, + { + "name": "leftFrontThigh", + "parent": "root", + "pivot": [4.5, 10, -8.5], + "cubes": [ + {"origin": [3.5, 8.5, -9.5], "size": [12, 3, 2], "inflate": 0.025, "uv": [78, 32]} + ] + }, + { + "name": "leftFrontLeg", + "parent": "leftFrontThigh", + "pivot": [14.5, 10.5, -8.5], + "cubes": [ + {"origin": [15.5, 6.5, -9.5], "size": [1, 10, 2], "uv": [14, 88]}, + {"origin": [13.5, 8.5, -9], "size": [2, 24, 1], "uv": [42, 58], "mirror": true} + ] + }, + { + "name": "leftFrontFoot", + "parent": "leftFrontLeg", + "pivot": [16.5, 33.5, -8.5], + "cubes": [ + {"origin": [36.5, 33.5, -10], "size": [8, 2, 3], "inflate": 0.25, "pivot": [40.5, 33.5, -3.5], "rotation": [0, 0, 24], "uv": [30, 83], "mirror": true}, + {"origin": [12.5, 31.5, -10], "size": [36, 2, 3], "uv": [0, 32], "mirror": true}, + {"origin": [39, 29.625, -8.5], "size": [4, 1, 0], "pivot": [39, 31.625, -3.5], "rotation": [0, 0, -24], "uv": [30, 81]} + ] + }, + { + "name": "leftBackThigh", + "parent": "root", + "pivot": [4.5, 10, 1.5], + "cubes": [ + {"origin": [3.5, 8.5, 0.5], "size": [12, 3, 2], "inflate": 0.025, "uv": [78, 32]} + ] + }, + { + "name": "leftBackLeg", + "parent": "leftBackThigh", + "pivot": [14.5, 10.5, 1.5], + "cubes": [ + {"origin": [15.5, 6.5, 0.5], "size": [1, 10, 2], "uv": [14, 88]}, + {"origin": [13.5, 8.5, 1], "size": [2, 24, 1], "uv": [42, 58], "mirror": true} + ] + }, + { + "name": "leftBackFoot", + "parent": "leftBackLeg", + "pivot": [16.5, 33.5, 1.5], + "cubes": [ + {"origin": [36.5, 33.5, 0], "size": [8, 2, 3], "inflate": 0.25, "pivot": [40.5, 33.5, -3.5], "rotation": [0, 0, 24], "uv": [30, 83], "mirror": true}, + {"origin": [39, 29.625, 1.5], "size": [4, 1, 0], "pivot": [39, 31.625, -3.5], "rotation": [0, 0, -24], "uv": [30, 81]}, + {"origin": [12.5, 31.5, 0], "size": [36, 2, 3], "uv": [0, 32], "mirror": true} + ] + }, + { + "name": "rightFrontThigh", + "parent": "root", + "pivot": [-4.5, 10, -8.5], + "cubes": [ + {"origin": [-15.5, 8.5, -9.5], "size": [12, 3, 2], "inflate": 0.025, "uv": [78, 32], "mirror": true} + ] + }, + { + "name": "rightFrontLeg", + "parent": "rightFrontThigh", + "pivot": [-14.5, 10.5, -8.5], + "cubes": [ + {"origin": [-15.5, 8.5, -9], "size": [2, 24, 1], "uv": [42, 58]}, + {"origin": [-16.5, 6.5, -9.5], "size": [1, 10, 2], "uv": [14, 88], "mirror": true} + ] + }, + { + "name": "rightFrontFoot", + "parent": "rightFrontLeg", + "pivot": [-16.5, 33.5, -8.5], + "cubes": [ + {"origin": [-48.5, 31.5, -10], "size": [36, 2, 3], "uv": [0, 32]}, + {"origin": [-44.5, 33.5, -10], "size": [8, 2, 3], "inflate": 0.25, "pivot": [-40.5, 33.5, -3.5], "rotation": [0, 0, -24], "uv": [30, 83]}, + {"origin": [-43, 29.625, -8.5], "size": [4, 1, 0], "pivot": [-39, 31.625, -3.5], "rotation": [0, 0, 24], "uv": [30, 81], "mirror": true} + ] + }, + { + "name": "rightBackThigh", + "parent": "root", + "pivot": [-4.5, 10, 1.5], + "cubes": [ + {"origin": [-15.5, 8.5, 0.5], "size": [12, 3, 2], "inflate": 0.025, "uv": [78, 32], "mirror": true} + ] + }, + { + "name": "rightBackLeg", + "parent": "rightBackThigh", + "pivot": [-14.5, 10.5, 1.5], + "cubes": [ + {"origin": [-15.5, 8.5, 1], "size": [2, 24, 1], "uv": [42, 58]}, + {"origin": [-16.5, 6.5, 0.5], "size": [1, 10, 2], "uv": [14, 88], "mirror": true} + ] + }, + { + "name": "rightBackFoot", + "parent": "rightBackLeg", + "pivot": [-16.5, 33.5, 1.5], + "cubes": [ + {"origin": [-48.5, 31.5, 0], "size": [36, 2, 3], "uv": [0, 32]}, + {"origin": [-44.5, 33.5, 0], "size": [8, 2, 3], "inflate": 0.25, "pivot": [-40.5, 33.5, -3.5], "rotation": [0, 0, -24], "uv": [30, 83]}, + {"origin": [-43, 29.625, 1.5], "size": [4, 1, 0], "pivot": [-39, 31.625, -3.5], "rotation": [0, 0, 24], "uv": [30, 81], "mirror": true} + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/main/resources/assets/antarchy/geo/infant_metroid.geo.json b/common/src/main/resources/assets/antarchy/geo/infant_metroid.geo.json new file mode 100644 index 00000000..4cf93fab --- /dev/null +++ b/common/src/main/resources/assets/antarchy/geo/infant_metroid.geo.json @@ -0,0 +1,64 @@ +{ + "format_version": "1.12.0", + "minecraft:geometry": [ + { + "description": { + "identifier": "geometry.infantmetroid", + "texture_width": 64, + "texture_height": 64, + "visible_bounds_width": 2, + "visible_bounds_height": 2.5, + "visible_bounds_offset": [0, 0.75, 0] + }, + "bones": [ + { + "name": "root", + "pivot": [0, 1, -0.5] + }, + { + "name": "body", + "parent": "root", + "pivot": [0, 3, -0.5], + "cubes": [ + {"origin": [-4, 1, -3.5], "size": [8, 3, 7], "uv": [0, 18]}, + {"origin": [-3, 4, -2.5], "size": [6, 2, 5], "uv": [0, 28]}, + {"origin": [-4, 0, -1.5], "size": [1, 1, 2], "uv": [30, 26]}, + {"origin": [3, 0, -1.5], "size": [1, 1, 2], "uv": [30, 29]} + ] + }, + { + "name": "gel", + "parent": "body", + "pivot": [0, 2.5, 0], + "cubes": [ + {"origin": [-5, 2, -4.5], "size": [10, 9, 9], "uv": [0, 0]} + ] + }, + { + "name": "eye1", + "parent": "body", + "pivot": [-3, 6, -2.5], + "cubes": [ + {"origin": [-4, 5, -3.5], "size": [2, 2, 2], "uv": [30, 18]} + ] + }, + { + "name": "eye2", + "parent": "body", + "pivot": [0, 6, -1.5], + "cubes": [ + {"origin": [-1, 6, -2.5], "size": [2, 2, 2], "uv": [30, 18]} + ] + }, + { + "name": "eye3", + "parent": "body", + "pivot": [3, 6, -2.5], + "cubes": [ + {"origin": [2, 5, -3.5], "size": [2, 2, 2], "uv": [30, 18]} + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/main/resources/assets/antarchy/geo/metroid_larva.geo.json b/common/src/main/resources/assets/antarchy/geo/metroid_larva.geo.json new file mode 100644 index 00000000..0818c981 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/geo/metroid_larva.geo.json @@ -0,0 +1,90 @@ +{ + "format_version": "1.12.0", + "minecraft:geometry": [ + { + "description": { + "identifier": "geometry.metroidlarva", + "texture_width": 128, + "texture_height": 128, + "visible_bounds_width": 2, + "visible_bounds_height": 2.5, + "visible_bounds_offset": [0, 0.75, 0] + }, + "bones": [ + { + "name": "body", + "pivot": [0, 2, 0], + "cubes": [ + {"origin": [-5, 1, -4.5], "size": [10, 4, 9], "uv": [0, 26]}, + {"origin": [-4, 5, -3.5], "size": [8, 2, 7], "uv": [38, 26]} + ] + }, + { + "name": "eye1", + "parent": "body", + "pivot": [-4, 7, -3], + "cubes": [ + {"origin": [-6, 6, -4.5], "size": [3, 3, 3], "uv": [38, 35]} + ] + }, + { + "name": "eye2", + "parent": "body", + "pivot": [0, 7, -2], + "cubes": [ + {"origin": [-1.5, 7, -3.5], "size": [3, 3, 3], "uv": [38, 35]} + ] + }, + { + "name": "eye3", + "parent": "body", + "pivot": [4, 7, -3], + "cubes": [ + {"origin": [3, 6, -4.5], "size": [3, 3, 3], "uv": [38, 35]} + ] + }, + { + "name": "gel", + "parent": "body", + "pivot": [0, 2.5, -0.5], + "cubes": [ + {"origin": [-7.5, 1.5, 0], "size": [15, 15, 0], "uv": [44, 56]}, + {"origin": [-7, 2, -6], "size": [14, 14, 12], "uv": [0, 0]} + ] + }, + { + "name": "rightTooth", + "parent": "body", + "pivot": [-5, 1, -0.5], + "cubes": [ + {"origin": [-6, -3, -1.5], "size": [2, 5, 2], "uv": [0, 39]} + ] + }, + { + "name": "leftTooth", + "parent": "body", + "pivot": [5, 1, -0.5], + "cubes": [ + {"origin": [4, -3, -1.5], "size": [2, 5, 2], "uv": [0, 39], "mirror": true} + ] + }, + { + "name": "rightArm", + "parent": "body", + "pivot": [-1.5, 1, -4], + "cubes": [ + {"origin": [-2, -2, -4.5], "size": [1, 3, 1], "uv": [8, 39]} + ] + }, + { + "name": "leftArm", + "parent": "body", + "pivot": [1.5, 1, -4], + "cubes": [ + {"origin": [1, -2, -4.5], "size": [1, 3, 1], "uv": [8, 39], "mirror": true} + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/main/resources/assets/antarchy/lang/en_us.json b/common/src/main/resources/assets/antarchy/lang/en_us.json index 2e11bea9..22318a15 100644 --- a/common/src/main/resources/assets/antarchy/lang/en_us.json +++ b/common/src/main/resources/assets/antarchy/lang/en_us.json @@ -530,6 +530,7 @@ "effect.antarchy.paralyzed": "Paralyzed", "effect.antarchy.inverted": "Inverted", "effect.antarchy.stinky": "Stinky", + "effect.antarchy.gooped": "Gooped", "effect.antarchy.shrinking": "Shrinking", "effect.antarchy.growth": "Growth", "effect.antarchy.bloodglass_ward": "Bloodglass Ward", @@ -915,6 +916,12 @@ "block.antarchy.molting_vines": "Molting Vines", "item.antarchy.broodfruit": "Broodfruit", "block.antarchy.jumpy_bug_egg": "Jumpy Bug Egg", + "block.antarchy.spit_bug_egg": "Spit Bug Egg", + "block.antarchy.metroid_egg": "Metroid Egg", + "block.antarchy.biomite": "Biomite", + "block.antarchy.biomite_turf": "Biomite Turf", + "block.antarchy.biowart": "Biowart", + "block.antarchy.biowart_tendrils": "Biowart Tendrils", "subtitles.antarchy.creeping_horror_growl": "Creeping Horror growls", "subtitles.antarchy.creeping_horror_hurt": "Creeping Horror hurts", "subtitles.antarchy.creeping_horror_bite": "Creeping Horror bites", diff --git a/common/src/main/resources/assets/antarchy/models/block/biomite.json b/common/src/main/resources/assets/antarchy/models/block/biomite.json new file mode 100644 index 00000000..18eb93e2 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/biomite.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "antarchy:block/biomite" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/biomite_turf.json b/common/src/main/resources/assets/antarchy/models/block/biomite_turf.json new file mode 100644 index 00000000..cd947023 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/biomite_turf.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "antarchy:block/biomite_turf" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/biowart.json b/common/src/main/resources/assets/antarchy/models/block/biowart.json new file mode 100644 index 00000000..8ba39617 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/biowart.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "antarchy:block/biowart" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/biowart_tendrils.json b/common/src/main/resources/assets/antarchy/models/block/biowart_tendrils.json new file mode 100644 index 00000000..f15554c0 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/biowart_tendrils.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cross", + "textures": { + "cross": "antarchy:block/biowart_tendrils" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/block/metroid_egg.json b/common/src/main/resources/assets/antarchy/models/block/metroid_egg.json new file mode 100644 index 00000000..f2b551bf --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/metroid_egg.json @@ -0,0 +1,71 @@ +{ + "format_version": "1.9.0", + "credit": "Made with Blockbench", + "texture_size": [64, 64], + "textures": { + "1": "antarchy:block/metroid_egg", + "particle": "antarchy:block/metroid_egg" + }, + "elements": [ + { + "from": [1, 0, 0], + "to": [15, 14, 16], + "faces": { + "north": {"uv": [7, 8, 10.5, 11.5], "texture": "#1"}, + "east": {"uv": [0, 0, 4, 3.5], "texture": "#1"}, + "south": {"uv": [7, 8, 10.5, 11.5], "texture": "#1"}, + "west": {"uv": [0, 0, 4, 3.5], "texture": "#1"}, + "up": {"uv": [3.5, 7.5, 0, 3.5], "texture": "#1"}, + "down": {"uv": [7, 3.5, 3.5, 7.5], "texture": "#1"} + } + }, + { + "from": [2, 0.025, 1], + "to": [14, 16.025, 15], + "faces": { + "north": {"uv": [10.5, 0, 13.5, 4], "texture": "#1"}, + "east": {"uv": [7, 0, 10.5, 4], "texture": "#1"}, + "south": {"uv": [10.5, 4, 13.5, 8], "texture": "#1"}, + "west": {"uv": [7, 4, 10.5, 8], "texture": "#1"}, + "up": {"uv": [7, 3.5, 4, 0], "texture": "#1"}, + "down": {"uv": [6, 11.25, 3, 14.75], "texture": "#1"} + } + }, + { + "from": [4, 1, 3], + "to": [12, 9, 13], + "faces": { + "north": {"uv": [13.5, 0, 15.5, 2], "texture": "#1"}, + "east": {"uv": [6, 11.5, 8.5, 13.5], "texture": "#1"}, + "south": {"uv": [13.5, 2, 15.5, 4], "texture": "#1"}, + "west": {"uv": [8.5, 11.75, 11, 13.75], "texture": "#1"}, + "up": {"uv": [13, 14.25, 11, 11.75], "texture": "#1"}, + "down": {"uv": [15, 11.75, 13, 14.25], "texture": "#1"} + } + }, + { + "from": [8, 1, 1], + "to": [8, 16, 15], + "faces": { + "north": {"uv": [0, 0, 0, 3.75], "texture": "#1"}, + "east": {"uv": [0, 7.5, 3.5, 11.25], "texture": "#1"}, + "south": {"uv": [0, 0, 0, 3.75], "texture": "#1"}, + "west": {"uv": [3.5, 7.5, 7, 11.25], "texture": "#1"}, + "up": {"uv": [0, 3.5, 0, 0], "texture": "#1"}, + "down": {"uv": [0, 0, 0, 3.5], "texture": "#1"} + } + }, + { + "from": [2, 1, 8], + "to": [14, 16, 8], + "faces": { + "north": {"uv": [10.5, 8, 13.5, 11.75], "texture": "#1"}, + "east": {"uv": [0, 0, 0, 3.75], "texture": "#1"}, + "south": {"uv": [0, 11.25, 3, 15], "texture": "#1"}, + "west": {"uv": [0, 0, 0, 3.75], "texture": "#1"}, + "up": {"uv": [3, 0, 0, 0], "texture": "#1"}, + "down": {"uv": [0, 0, 3, 0], "texture": "#1"} + } + } + ] +} diff --git a/common/src/main/resources/assets/antarchy/models/block/spit_bug_egg.json b/common/src/main/resources/assets/antarchy/models/block/spit_bug_egg.json new file mode 100644 index 00000000..92ae529b --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/block/spit_bug_egg.json @@ -0,0 +1,85 @@ +{ + "format_version": "1.21.11", + "credit": "Made with Blockbench", + "texture_size": [64, 64], + "textures": { + "0": "antarchy:block/spit_bug_egg", + "particle": "antarchy:block/spit_bug_egg" + }, + "elements": [ + { + "from": [1, 0, 2], + "to": [15, 16, 14], + "faces": { + "north": {"uv": [0, 0, 3.5, 4], "texture": "#0"}, + "east": {"uv": [0, 4, 3, 8], "texture": "#0"}, + "south": {"uv": [0, 0, 3.5, 4], "texture": "#0"}, + "west": {"uv": [0, 4, 3, 8], "texture": "#0"}, + "up": {"uv": [9.5, 7, 6, 4], "texture": "#0", "cullface": "up"}, + "down": {"uv": [10.5, 0, 7, 3], "texture": "#0", "cullface": "down"} + } + }, + { + "from": [2, 0.1, 3], + "to": [14, 14.1, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [0, 0.1, 0]}, + "faces": { + "north": {"uv": [0, 8, 3, 11.5], "texture": "#0"}, + "east": {"uv": [3, 8, 5.5, 11.5], "texture": "#0"}, + "south": {"uv": [0, 8, 3, 11.5], "texture": "#0"}, + "west": {"uv": [3, 8, 5.5, 11.5], "texture": "#0"}, + "up": {"uv": [12.5, 5.5, 9.5, 3], "texture": "#0", "cullface": "up"}, + "down": {"uv": [13.5, 0, 10.5, 2.5], "texture": "#0", "cullface": "down"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "thirdperson_lefthand": { + "rotation": [0, 90, -55], + "translation": [0, 4, 0.5], + "scale": [0.85, 0.85, 0.85] + }, + "firstperson_righthand": { + "rotation": [0, 45, 0], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_lefthand": { + "rotation": [0, -135, 0], + "scale": [0.4, 0.4, 0.4] + }, + "ground": { + "translation": [0, 3, 0], + "scale": [0.25, 0.25, 0.25] + }, + "gui": { + "rotation": [30, -135, 0], + "scale": [0.625, 0.625, 0.625] + }, + "fixed": { + "scale": [0.5, 0.5, 0.5] + } + }, + "groups": [ + { + "name": "jumpy_bug_egg", + "origin": [0, 0.1, 0], + "scope": 0, + "color": 0, + "children": [ + 0, + { + "name": "inside", + "origin": [0, 0.1, 0], + "scope": 0, + "color": 0, + "children": [1] + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/main/resources/assets/antarchy/models/item/biomite.json b/common/src/main/resources/assets/antarchy/models/item/biomite.json new file mode 100644 index 00000000..1888b89d --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/biomite.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/biomite" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/biomite_turf.json b/common/src/main/resources/assets/antarchy/models/item/biomite_turf.json new file mode 100644 index 00000000..edcbca4d --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/biomite_turf.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/biomite_turf" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/biowart.json b/common/src/main/resources/assets/antarchy/models/item/biowart.json new file mode 100644 index 00000000..621c5c9f --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/biowart.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/biowart" +} diff --git a/common/src/main/resources/assets/antarchy/models/item/biowart_tendrils.json b/common/src/main/resources/assets/antarchy/models/item/biowart_tendrils.json new file mode 100644 index 00000000..220471b8 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/biowart_tendrils.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:block/biowart_tendrils" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/metroid_egg.json b/common/src/main/resources/assets/antarchy/models/item/metroid_egg.json new file mode 100644 index 00000000..e4e58116 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/metroid_egg.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/metroid_egg_item" + } +} diff --git a/common/src/main/resources/assets/antarchy/models/item/spit_bug_egg.json b/common/src/main/resources/assets/antarchy/models/item/spit_bug_egg.json new file mode 100644 index 00000000..14efc944 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/models/item/spit_bug_egg.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/spit_bug_egg_item" + } +} diff --git a/common/src/main/resources/assets/antarchy/textures/block/biomite.png b/common/src/main/resources/assets/antarchy/textures/block/biomite.png new file mode 100644 index 00000000..02f43731 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/biomite.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/biomite_turf.png b/common/src/main/resources/assets/antarchy/textures/block/biomite_turf.png new file mode 100644 index 00000000..10cf07b2 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/biomite_turf.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/biomite_turf.png.mcmeta b/common/src/main/resources/assets/antarchy/textures/block/biomite_turf.png.mcmeta new file mode 100644 index 00000000..6714e205 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/textures/block/biomite_turf.png.mcmeta @@ -0,0 +1,6 @@ +{ + "animation": { + "frametime": 16, + "interpolate": true + } +} diff --git a/common/src/main/resources/assets/antarchy/textures/block/biowart.png b/common/src/main/resources/assets/antarchy/textures/block/biowart.png new file mode 100644 index 00000000..a09ef65b Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/biowart.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/biowart.png.mcmeta b/common/src/main/resources/assets/antarchy/textures/block/biowart.png.mcmeta new file mode 100644 index 00000000..6714e205 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/textures/block/biowart.png.mcmeta @@ -0,0 +1,6 @@ +{ + "animation": { + "frametime": 16, + "interpolate": true + } +} diff --git a/common/src/main/resources/assets/antarchy/textures/block/biowart_tendrils.png b/common/src/main/resources/assets/antarchy/textures/block/biowart_tendrils.png new file mode 100644 index 00000000..6aac53fa Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/biowart_tendrils.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/biowart_tendrils.png.mcmeta b/common/src/main/resources/assets/antarchy/textures/block/biowart_tendrils.png.mcmeta new file mode 100644 index 00000000..6714e205 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/textures/block/biowart_tendrils.png.mcmeta @@ -0,0 +1,6 @@ +{ + "animation": { + "frametime": 16, + "interpolate": true + } +} diff --git a/common/src/main/resources/assets/antarchy/textures/block/metroid_egg.png b/common/src/main/resources/assets/antarchy/textures/block/metroid_egg.png new file mode 100644 index 00000000..04c4863f Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/metroid_egg.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/spit_bug_egg.png b/common/src/main/resources/assets/antarchy/textures/block/spit_bug_egg.png new file mode 100644 index 00000000..638afdbf Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/block/spit_bug_egg.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/block/spit_bug_egg.png.mcmeta b/common/src/main/resources/assets/antarchy/textures/block/spit_bug_egg.png.mcmeta new file mode 100644 index 00000000..4a8bdc48 --- /dev/null +++ b/common/src/main/resources/assets/antarchy/textures/block/spit_bug_egg.png.mcmeta @@ -0,0 +1,12 @@ +{ + "animation": { + "frametime": 140, + "interpolate": true, + "frames": [ + 0, + 1, + 0, + 2 + ] + } +} diff --git a/common/src/main/resources/assets/antarchy/textures/entity/metroid/alpha_metroid.png b/common/src/main/resources/assets/antarchy/textures/entity/metroid/alpha_metroid.png new file mode 100644 index 00000000..217eb832 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/entity/metroid/alpha_metroid.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/entity/metroid/gamma_metroid.png b/common/src/main/resources/assets/antarchy/textures/entity/metroid/gamma_metroid.png new file mode 100644 index 00000000..042689e6 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/entity/metroid/gamma_metroid.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/entity/metroid/infant_metroid.png b/common/src/main/resources/assets/antarchy/textures/entity/metroid/infant_metroid.png new file mode 100644 index 00000000..b4e4d99f Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/entity/metroid/infant_metroid.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/entity/metroid/metroid_larva.png b/common/src/main/resources/assets/antarchy/textures/entity/metroid/metroid_larva.png new file mode 100644 index 00000000..ab1dbc7e Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/entity/metroid/metroid_larva.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/metroid_egg_item.png b/common/src/main/resources/assets/antarchy/textures/item/metroid_egg_item.png new file mode 100644 index 00000000..d6774bac Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/metroid_egg_item.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/item/spit_bug_egg_item.png b/common/src/main/resources/assets/antarchy/textures/item/spit_bug_egg_item.png new file mode 100644 index 00000000..ca4e7424 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/item/spit_bug_egg_item.png differ diff --git a/common/src/main/resources/assets/antarchy/textures/mob_effect/gooped.png b/common/src/main/resources/assets/antarchy/textures/mob_effect/gooped.png new file mode 100644 index 00000000..c815e500 Binary files /dev/null and b/common/src/main/resources/assets/antarchy/textures/mob_effect/gooped.png differ diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/biomite.json b/common/src/main/resources/data/antarchy/loot_table/blocks/biomite.json new file mode 100644 index 00000000..ac5e40b9 --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/biomite.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:biomite" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "antarchy:blocks/biomite" +} diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/biomite_turf.json b/common/src/main/resources/data/antarchy/loot_table/blocks/biomite_turf.json new file mode 100644 index 00000000..9980b91f --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/biomite_turf.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:biomite_turf" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "antarchy:blocks/biomite_turf" +} diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/biowart.json b/common/src/main/resources/data/antarchy/loot_table/blocks/biowart.json new file mode 100644 index 00000000..38860771 --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/biowart.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:biowart" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "antarchy:blocks/biowart" +} diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/biowart_tendrils.json b/common/src/main/resources/data/antarchy/loot_table/blocks/biowart_tendrils.json new file mode 100644 index 00000000..416d7142 --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/biowart_tendrils.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:biowart_tendrils" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "antarchy:blocks/biowart_tendrils" +} diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/metroid_egg.json b/common/src/main/resources/data/antarchy/loot_table/blocks/metroid_egg.json new file mode 100644 index 00000000..fc9a4354 --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/metroid_egg.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:metroid_egg" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "antarchy:blocks/metroid_egg" +} diff --git a/common/src/main/resources/data/antarchy/loot_table/blocks/spit_bug_egg.json b/common/src/main/resources/data/antarchy/loot_table/blocks/spit_bug_egg.json new file mode 100644 index 00000000..623ae141 --- /dev/null +++ b/common/src/main/resources/data/antarchy/loot_table/blocks/spit_bug_egg.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "entries": [ + { + "type": "minecraft:item", + "name": "antarchy:spit_bug_egg" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ], + "random_sequence": "antarchy:blocks/spit_bug_egg" +} diff --git a/common/src/main/resources/data/antarchy/loot_table/entities/kraken.json b/common/src/main/resources/data/antarchy/loot_table/entities/kraken.json index dbaa8297..8306f4e1 100644 --- a/common/src/main/resources/data/antarchy/loot_table/entities/kraken.json +++ b/common/src/main/resources/data/antarchy/loot_table/entities/kraken.json @@ -4,7 +4,7 @@ { "rolls": { "type": "minecraft:uniform", - "min": 1, + "min": 2, "max": 3 }, "entries": [ @@ -22,8 +22,8 @@ { "rolls": { "type": "minecraft:uniform", - "min": 1, - "max": 2 + "min": 2, + "max": 4 }, "entries": [ { diff --git a/common/src/main/resources/data/antarchy/tags/block/biowart_replaceable.json b/common/src/main/resources/data/antarchy/tags/block/biowart_replaceable.json new file mode 100644 index 00000000..883c1482 --- /dev/null +++ b/common/src/main/resources/data/antarchy/tags/block/biowart_replaceable.json @@ -0,0 +1,7 @@ +{ + "replace": false, + "values": [ + "antarchy:biomite", + "antarchy:biomite_turf" + ] +} diff --git a/common/src/main/resources/data/antarchy/tags/worldgen/biome/uses_horde_system.json b/common/src/main/resources/data/antarchy/tags/worldgen/biome/uses_horde_system.json new file mode 100644 index 00000000..28e2c5b6 --- /dev/null +++ b/common/src/main/resources/data/antarchy/tags/worldgen/biome/uses_horde_system.json @@ -0,0 +1,5 @@ +{ + "values": [ + "#antarchy:is_cavaryn" + ] +} diff --git a/common/src/main/resources/data/antarchy/worldgen/biome/brooding_tunnels.json b/common/src/main/resources/data/antarchy/worldgen/biome/brooding_tunnels.json index a7cf57b6..2feef692 100644 --- a/common/src/main/resources/data/antarchy/worldgen/biome/brooding_tunnels.json +++ b/common/src/main/resources/data/antarchy/worldgen/biome/brooding_tunnels.json @@ -58,7 +58,8 @@ "antarchy:brooding_tunnels_hanging_creeproots", "antarchy:molting_vines", "antarchy:ground_molting_vines", - "antarchy:jumpy_bug_egg_ceiling" + "antarchy:jumpy_bug_egg_ceiling", + "antarchy:spit_bug_egg_patch" ] ], "creature_spawn_probability": 0.12, @@ -69,22 +70,16 @@ "weight": 95, "minCount": 1, "maxCount": 3 - }, - { - "type": "antarchy:spit_bug", - "weight": 95, - "minCount": 2, - "maxCount": 5 } ], - "creature": [], - "ambient": [ + "creature": [ { "type": "antarchy:stink_bug", "weight": 10, "minCount": 1, "maxCount": 3 - } + }], + "ambient": [ ], "axolotls": [], "underground_water_creature": [], diff --git a/common/src/main/resources/data/antarchy/worldgen/biome/cavaryn.json b/common/src/main/resources/data/antarchy/worldgen/biome/cavaryn.json index e0da68c7..9f5cd675 100644 --- a/common/src/main/resources/data/antarchy/worldgen/biome/cavaryn.json +++ b/common/src/main/resources/data/antarchy/worldgen/biome/cavaryn.json @@ -61,33 +61,15 @@ "creature_spawn_probability": 0.06, "spawners": { "monster": [ - { - "type": "antarchy:creeping_horror", - "weight": 95, - "minCount": 2, - "maxCount": 5 - }, - { - "type": "antarchy:lurking_terror", - "weight": 95, - "minCount": 2, - "maxCount": 5 - }, - { - "type": "antarchy:hercules_beetle", - "weight": 5, - "minCount": 1, - "maxCount": 1 - } ], - "creature": [], - "ambient": [ + "creature": [ { "type": "antarchy:stink_bug", "weight": 10, "minCount": 1, "maxCount": 3 - } + }], + "ambient": [ ], "axolotls": [], "underground_water_creature": [], diff --git a/common/src/main/resources/data/antarchy/worldgen/biome/glowcap_caves.json b/common/src/main/resources/data/antarchy/worldgen/biome/glowcap_caves.json index d6df1bf4..67622342 100644 --- a/common/src/main/resources/data/antarchy/worldgen/biome/glowcap_caves.json +++ b/common/src/main/resources/data/antarchy/worldgen/biome/glowcap_caves.json @@ -50,27 +50,15 @@ "creature_spawn_probability": 0.09, "spawners": { "monster": [ - { - "type": "antarchy:creeping_horror", - "weight": 95, - "minCount": 2, - "maxCount": 5 - }, - { - "type": "antarchy:lurking_terror", - "weight": 95, - "minCount": 2, - "maxCount": 5 - } ], - "creature": [], - "ambient": [ + "creature": [ { "type": "antarchy:stink_bug", "weight": 40, "minCount": 2, "maxCount": 4 - } + }], + "ambient": [ ], "axolotls": [], "underground_water_creature": [], diff --git a/common/src/main/resources/data/antarchy/worldgen/configured_feature/spit_bug_egg_patch.json b/common/src/main/resources/data/antarchy/worldgen/configured_feature/spit_bug_egg_patch.json new file mode 100644 index 00000000..cc45b2c2 --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/configured_feature/spit_bug_egg_patch.json @@ -0,0 +1,4 @@ +{ + "type": "antarchy:spit_bug_egg_patch", + "config": {} +} diff --git a/common/src/main/resources/data/antarchy/worldgen/placed_feature/spit_bug_egg_patch.json b/common/src/main/resources/data/antarchy/worldgen/placed_feature/spit_bug_egg_patch.json new file mode 100644 index 00000000..74fcdb5e --- /dev/null +++ b/common/src/main/resources/data/antarchy/worldgen/placed_feature/spit_bug_egg_patch.json @@ -0,0 +1,31 @@ +{ + "feature": "antarchy:spit_bug_egg_patch", + "placement": [ + { + "type": "minecraft:count", + "count": { + "type": "minecraft:uniform", + "min_inclusive": 1, + "max_inclusive": 2 + } + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:height_range", + "height": { + "type": "minecraft:uniform", + "min_inclusive": { + "absolute": 5 + }, + "max_inclusive": { + "absolute": 190 + } + } + }, + { + "type": "minecraft:biome" + } + ] +} diff --git a/common/src/main/resources/data/minecraft/tags/block/mineable/hoe.json b/common/src/main/resources/data/minecraft/tags/block/mineable/hoe.json index a12f646b..49d538da 100644 --- a/common/src/main/resources/data/minecraft/tags/block/mineable/hoe.json +++ b/common/src/main/resources/data/minecraft/tags/block/mineable/hoe.json @@ -11,6 +11,8 @@ "antarchy:blush_moss_carpet", "antarchy:amber_moss_block", "antarchy:amber_moss_carpet", + "antarchy:biowart", + "antarchy:biowart_tendrils", "antarchy:glowcap_mushroom_block" ] } diff --git a/common/src/main/resources/data/minecraft/tags/block/mineable/pickaxe.json b/common/src/main/resources/data/minecraft/tags/block/mineable/pickaxe.json index 8534b13b..1588ce3e 100644 --- a/common/src/main/resources/data/minecraft/tags/block/mineable/pickaxe.json +++ b/common/src/main/resources/data/minecraft/tags/block/mineable/pickaxe.json @@ -98,6 +98,8 @@ "antarchy:broodstone_uranium_ore", "antarchy:broodstone_titanium_ore", "antarchy:bile_vein", + "antarchy:biomite", + "antarchy:biomite_turf", "antarchy:chiten_block", "antarchy:chiten_spike" ] diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabricContent.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabricContent.java index 9d521093..bef466f1 100644 --- a/fabric/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabricContent.java +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabricContent.java @@ -15,6 +15,7 @@ import com.craisinlord.antarchy.content.entity.lucid.LucidEyeProjectileEntity; import com.craisinlord.antarchy.content.item.ScorpionWhipTetherSync; import com.craisinlord.antarchy.content.network.ImpactShakeSync; import com.craisinlord.antarchy.content.network.HerculesBeetleImpactShakeSync; +import com.craisinlord.antarchy.content.network.HordeIntensitySync; import com.craisinlord.antarchy.content.portal.PermanentPortalType; import net.fabricmc.fabric.api.registry.FabricBrewingRecipeRegistryBuilder; import net.minecraft.core.Holder; @@ -423,6 +424,7 @@ public final class AntarchyFabricContent { ScorpionWhipTetherSync.setSink(AntarchyFabricNetworking::syncScorpionWhipTether); HerculesBeetleImpactShakeSync.setSink((player, ticks) -> net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking.send(player, new com.craisinlord.antarchy.content.network.HerculesBeetleImpactShakePayload(ticks))); ImpactShakeSync.setSink((player, payload) -> net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking.send(player, payload)); + HordeIntensitySync.setSink((player, payload) -> net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking.send(player, payload)); BloodCrystalKatanaItem.setTrailCallback(AntarchyFabricNetworking::syncKatanaTrail); com.craisinlord.antarchy.content.gravity.AntarchyGravityApi.setSyncDispatcher(AntarchyFabricNetworking::syncGravityEntity); AntarchyFabricEvents.register(); diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabricEvents.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabricEvents.java index 4ae7cd7e..cb196200 100644 --- a/fabric/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabricEvents.java +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabricEvents.java @@ -14,7 +14,9 @@ import com.craisinlord.antarchy.content.entity.kraken.KrakenEntity; import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; import com.craisinlord.antarchy.content.gravity.AntarchyGravityDirection; import com.craisinlord.antarchy.content.gravity.AntarchyGravityTransition; +import com.craisinlord.antarchy.content.horde.CavarynHordeManager; import com.craisinlord.antarchy.content.portal.PermanentPortalManager; +import com.craisinlord.antarchy.content.command.CavarynCommand; import com.craisinlord.antarchy.content.command.CaterpillarCommand; import com.craisinlord.antarchy.content.command.GravityCommand; import com.craisinlord.antarchy.content.item.MinersDreamExcavationManager; @@ -22,6 +24,7 @@ import net.fabricmc.fabric.api.command.v2.CommandRegistrationCallback; import net.fabricmc.fabric.api.entity.event.v1.ServerLivingEntityEvents; import net.fabricmc.fabric.api.event.lifecycle.v1.ServerTickEvents; import net.fabricmc.fabric.api.event.player.AttackEntityCallback; +import net.fabricmc.fabric.api.event.player.PlayerBlockBreakEvents; import net.minecraft.server.level.ServerPlayer; import com.craisinlord.antarchy.content.SquidzookaDispenseBehavior; import com.craisinlord.antarchy.content.RpoLauncherDispenseBehavior; @@ -52,6 +55,7 @@ public final class AntarchyFabricEvents { public static void register() { CommandRegistrationCallback.EVENT.register((dispatcher, registryAccess, environment) -> { + CavarynCommand.register(dispatcher); GravityCommand.register(dispatcher); CaterpillarCommand.register(dispatcher); }); @@ -80,6 +84,9 @@ public final class AntarchyFabricEvents { BloodglassManager.handleDeath(sp); } PermanentPortalManager.handleSacrifice(entity); + if (entity.getKillCredit() instanceof ServerPlayer killer) { + CavarynHordeManager.recordMobKill(killer, entity); + } if (entity instanceof MissileSquidEntity missileSquid) { if (missileSquid.isSpawnedByKraken()) { return; @@ -118,10 +125,16 @@ public final class AntarchyFabricEvents { } return InteractionResult.PASS; }); + PlayerBlockBreakEvents.AFTER.register((world, player, pos, state, blockEntity) -> { + if (!world.isClientSide && player instanceof ServerPlayer serverPlayer) { + CavarynHordeManager.recordBlockBreak(serverPlayer, state, pos); + } + }); ServerTickEvents.END_SERVER_TICK.register(server -> { Set activeThisTick = new HashSet<>(); for (ServerLevel level : server.getAllLevels()) { + CavarynHordeManager.tick(level); tickInvertedPlayers(level, activeThisTick); tickDuctTapePlayers(level); tickIchorPlayers(level); diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/AntarchyFabricClientBootstrap.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/AntarchyFabricClientBootstrap.java index 05a18146..bbb84061 100644 --- a/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/AntarchyFabricClientBootstrap.java +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/AntarchyFabricClientBootstrap.java @@ -7,6 +7,7 @@ import com.craisinlord.antarchy.fabric.registry.AntarchyFabricMisc; import com.craisinlord.antarchy.Antarchy; import com.craisinlord.antarchy.content.client.CameraShakeClientState; import com.craisinlord.antarchy.content.client.HerculesBeetleImpactShakeClientState; +import com.craisinlord.antarchy.content.client.HordeClientState; import com.craisinlord.antarchy.content.client.renderer.*; import com.craisinlord.antarchy.content.client.particle.*; import com.craisinlord.antarchy.content.client.renderer.AntiwaterFluidRenderer; @@ -340,6 +341,9 @@ public final class AntarchyFabricClientBootstrap { BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.TITANIUM_BARS.get(), RenderType.cutout()); BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.CLOUD_BLOCK.get(), RenderType.translucent()); BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.JUMPY_BUG_EGG.get(), RenderType.translucent()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.SPIT_BUG_EGG.get(), RenderType.translucent()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.METROID_EGG.get(), RenderType.translucent()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.BIOWART_TENDRILS.get(), RenderType.cutout()); BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.HANGING_CREEPROOTS.get(), RenderType.cutout()); BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.MOLTING_VINES.get(), RenderType.cutout()); BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.GLOWCAP_MUSHROOM.get(), RenderType.cutout()); @@ -413,6 +417,7 @@ public final class AntarchyFabricClientBootstrap { if (entityType == EntityType.PLAYER) { if (renderer instanceof net.minecraft.client.renderer.entity.player.PlayerRenderer playerRenderer) { registrationHelper.register(new ParalyzedStonePlayerLayer(playerRenderer)); + registrationHelper.register(new GoopedLivingLayer(playerRenderer)); registrationHelper.register(new BrutalflyElytraLayer(playerRenderer)); registrationHelper.register(new FallenKingCrownLayer(playerRenderer)); } @@ -426,9 +431,11 @@ public final class AntarchyFabricClientBootstrap { software.bernie.geckolib.renderer.GeoEntityRenderer geoRenderer = (software.bernie.geckolib.renderer.GeoEntityRenderer) (Object) renderer; geoRenderer.addRenderLayer(new ParalyzedStoneGeoLayer(geoRenderer)); + geoRenderer.addRenderLayer(new GoopedGeoLayer(geoRenderer)); return; } registrationHelper.register(new ParalyzedStoneLivingLayer(renderer)); + registrationHelper.register(new GoopedLivingLayer(renderer)); }); } @@ -436,6 +443,7 @@ public final class AntarchyFabricClientBootstrap { ClientTickEvents.END_CLIENT_TICK.register(client -> { CameraShakeClientState.tick(); HerculesBeetleImpactShakeClientState.tick(); + HordeClientState.tick(); if (client.player != null) { ParalyzedClientHandler.clampPlayerInput(client.player); } @@ -460,6 +468,8 @@ public final class AntarchyFabricClientBootstrap { ReverieTrailHandler.register(); HudRenderCallback.EVENT.register((guiGraphics, partialTick) -> { DreadHudRenderer.render(guiGraphics); + com.craisinlord.antarchy.content.client.HordeHudRenderer.render(guiGraphics); + com.craisinlord.antarchy.content.client.GoopedHudRenderer.render(guiGraphics); ParalyzedHudRenderer.render(guiGraphics); BrutalflyElytraHudRenderer.render(guiGraphics); JumpyBootsHudRenderer.render(guiGraphics); diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/network/AntarchyFabricClientNetworking.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/network/AntarchyFabricClientNetworking.java index 97354e1b..d83a1a1c 100644 --- a/fabric/src/main/java/com/craisinlord/antarchy/fabric/network/AntarchyFabricClientNetworking.java +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/network/AntarchyFabricClientNetworking.java @@ -2,6 +2,7 @@ package com.craisinlord.antarchy.fabric.network; import com.craisinlord.antarchy.content.client.BloodglassClientState; import com.craisinlord.antarchy.content.client.BrutalflyElytraClientState; +import com.craisinlord.antarchy.content.client.HordeClientState; import com.craisinlord.antarchy.content.client.ScorpionWhipTetherClientState; import com.craisinlord.antarchy.content.client.ThoraxisWeatherClientState; import com.craisinlord.antarchy.content.entity.multipart.MultipartFramework; @@ -58,5 +59,7 @@ public final class AntarchyFabricClientNetworking { context.client().execute(() -> AntarchyFabricNetworking.triggerHerculesBeetleImpactShake(payload.durationTicks()))); ClientPlayNetworking.registerGlobalReceiver(ImpactShakePayload.TYPE, (payload, context) -> context.client().execute(() -> AntarchyFabricNetworking.triggerImpactShake(payload))); + ClientPlayNetworking.registerGlobalReceiver(HordeIntensityPayload.TYPE, (payload, context) -> + context.client().execute(() -> HordeClientState.update(payload.intensity()))); } } diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/network/AntarchyFabricNetworking.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/network/AntarchyFabricNetworking.java index 0c81b210..97b9de03 100644 --- a/fabric/src/main/java/com/craisinlord/antarchy/fabric/network/AntarchyFabricNetworking.java +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/network/AntarchyFabricNetworking.java @@ -76,6 +76,7 @@ public final class AntarchyFabricNetworking { PayloadTypeRegistry.playS2C().register(ThoraxisWeatherPayload.TYPE, ThoraxisWeatherPayload.STREAM_CODEC); PayloadTypeRegistry.playS2C().register(HerculesBeetleImpactShakePayload.TYPE, HerculesBeetleImpactShakePayload.STREAM_CODEC); PayloadTypeRegistry.playS2C().register(ImpactShakePayload.TYPE, ImpactShakePayload.STREAM_CODEC); + PayloadTypeRegistry.playS2C().register(HordeIntensityPayload.TYPE, HordeIntensityPayload.STREAM_CODEC); PayloadTypeRegistry.playC2S().register(GravityGunPrimaryPayload.TYPE, GravityGunPrimaryPayload.STREAM_CODEC); PayloadTypeRegistry.playC2S().register(GravityGunScrollPayload.TYPE, GravityGunScrollPayload.STREAM_CODEC); diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricBlocks.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricBlocks.java index 941a65cb..5a56c21f 100644 --- a/fabric/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricBlocks.java +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricBlocks.java @@ -660,6 +660,22 @@ public final class AntarchyFabricBlocks { () -> new Block(nyxiteProperties())); + public static final DeferredBlock BIOMITE = BLOCKS.register("biomite", + () -> new Block(BlockBehaviour.Properties.ofFullCopy(Blocks.NETHERRACK))); + + + public static final DeferredBlock BIOMITE_TURF = BLOCKS.register("biomite_turf", + () -> new Block(BlockBehaviour.Properties.ofFullCopy(Blocks.NETHERRACK))); + + + public static final DeferredBlock BIOWART = BLOCKS.register("biowart", + () -> new BiowartBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.MOSS_BLOCK))); + + + public static final DeferredBlock BIOWART_TENDRILS = BLOCKS.register("biowart_tendrils", + () -> new BiowartTendrilsBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.MOSS_CARPET).noCollission().noOcclusion())); + + public static final DeferredBlock MYRMITE_COAL_ORE = BLOCKS.register("myrmite_coal_ore", () -> createOre(Blocks.COAL_ORE, 0, 2)); @@ -806,10 +822,23 @@ public final class AntarchyFabricBlocks { () -> new JumpyBugEggBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.TURTLE_EGG))); + public static final DeferredBlock SPIT_BUG_EGG = BLOCKS.register("spit_bug_egg", + () -> new SpitBugEggBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.TURTLE_EGG))); + + + public static final DeferredBlock METROID_EGG = BLOCKS.register("metroid_egg", + () -> new MetroidEggBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.TURTLE_EGG))); + + public static final DeferredBlock LURKING_TERROR_EGG = BLOCKS.register("lurking_terror_egg", () -> new LurkingTerrorEggBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.TURTLE_EGG))); + static { + BiowartBlock.bindTendrils(BIOWART_TENDRILS); + } + + public static final DeferredBlock WASP_NEST = BLOCKS.register("wasp_nest", () -> new WaspNestBlock(AntarchyFabricBlocks::waspNestBlockEntityType, BlockBehaviour.Properties.ofFullCopy(Blocks.BEE_NEST))); diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricItems.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricItems.java index a10e7dfc..e38b0a58 100644 --- a/fabric/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricItems.java +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricItems.java @@ -634,6 +634,10 @@ public final class AntarchyFabricItems { public static final DeferredItem NYXITE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.NYXITE); public static final DeferredItem MYRMITE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.MYRMITE); + public static final DeferredItem BIOMITE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.BIOMITE); + public static final DeferredItem BIOMITE_TURF_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.BIOMITE_TURF); + public static final DeferredItem BIOWART_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.BIOWART); + public static final DeferredItem BIOWART_TENDRILS_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.BIOWART_TENDRILS); public static final DeferredItem BROODSTONE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.BROODSTONE); public static final DeferredItem POLISHED_BROODSTONE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.POLISHED_BROODSTONE); public static final DeferredItem CHISELED_BROODSTONE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.CHISELED_BROODSTONE); @@ -787,6 +791,8 @@ public final class AntarchyFabricItems { public static final DeferredItem BED_BUG_EGG_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.BED_BUG_EGG); public static final DeferredItem CREEPING_HORROR_EGG_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.CREEPING_HORROR_EGG); public static final DeferredItem JUMPY_BUG_EGG_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.JUMPY_BUG_EGG); + public static final DeferredItem SPIT_BUG_EGG_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.SPIT_BUG_EGG); + public static final DeferredItem METROID_EGG_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.METROID_EGG); public static final DeferredItem LURKING_TERROR_EGG_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.LURKING_TERROR_EGG); diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricMisc.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricMisc.java index 8495d30e..ed57aaa0 100644 --- a/fabric/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricMisc.java +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricMisc.java @@ -44,6 +44,7 @@ import com.craisinlord.antarchy.fabric.registry.DeferredHolder; import com.craisinlord.antarchy.fabric.registry.DeferredItem; import com.craisinlord.antarchy.fabric.registry.DeferredRegister; import com.craisinlord.antarchy.content.effect.DreadMobEffect; +import com.craisinlord.antarchy.content.effect.GoopedMobEffect; import com.craisinlord.antarchy.content.effect.GrowthMobEffect; import com.craisinlord.antarchy.content.effect.InvertedMobEffect; import com.craisinlord.antarchy.content.effect.ParalyzedMobEffect; @@ -495,6 +496,9 @@ public final class AntarchyFabricMisc { public static final DeferredHolder STINKY = MOB_EFFECTS.register("stinky", StinkyMobEffect::new); + public static final DeferredHolder GOOPED = MOB_EFFECTS.register("gooped", GoopedMobEffect::new); + + public static final DeferredHolder BLOODGLASS_WARD = MOB_EFFECTS.register("bloodglass_ward", com.craisinlord.antarchy.content.effect.BloodglassWardEffect::new); @@ -849,6 +853,8 @@ public final class AntarchyFabricMisc { public static final DeferredHolder, com.craisinlord.antarchy.content.worldgen.cavaryn.JumpyBugEggCeilingFeature> JUMPY_BUG_EGG_CEILING = FEATURES.register("jumpy_bug_egg_ceiling", () -> new com.craisinlord.antarchy.content.worldgen.cavaryn.JumpyBugEggCeilingFeature(NoneFeatureConfiguration.CODEC)); + public static final DeferredHolder, com.craisinlord.antarchy.content.worldgen.cavaryn.SpitBugEggPatchFeature> SPIT_BUG_EGG_PATCH = FEATURES.register("spit_bug_egg_patch", + () -> new com.craisinlord.antarchy.content.worldgen.cavaryn.SpitBugEggPatchFeature(NoneFeatureConfiguration.CODEC)); public static final DeferredHolder, com.craisinlord.antarchy.content.worldgen.cavaryn.RollyCavesGiantCavernFeature> ROLLY_CAVES_GIANT_CAVERN = FEATURES.register("rolly_caves_giant_cavern", () -> new com.craisinlord.antarchy.content.worldgen.cavaryn.RollyCavesGiantCavernFeature(NoneFeatureConfiguration.CODEC)); diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyConfigModuleNeoforge.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyConfigModuleNeoforge.java index ecc5c49a..b63544f9 100644 --- a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyConfigModuleNeoforge.java +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyConfigModuleNeoforge.java @@ -5,6 +5,7 @@ import com.craisinlord.antarchy.content.network.ImpactShakeSync; import com.craisinlord.antarchy.config.ConfigResetGuard; import com.craisinlord.antarchy.content.network.HerculesBeetleImpactShakePayload; import com.craisinlord.antarchy.content.network.HerculesBeetleImpactShakeSync; +import com.craisinlord.antarchy.content.network.HordeIntensitySync; import java.nio.file.Path; import net.neoforged.fml.loading.FMLPaths; import net.neoforged.neoforge.network.PacketDistributor; @@ -28,6 +29,7 @@ public final class AntarchyConfigModuleNeoforge { modContainer.registerConfig(ModConfig.Type.COMMON, AntarchyMiscConfig.SPEC, "antarchy/antarchy_misc.toml"); HerculesBeetleImpactShakeSync.setSink((player, ticks) -> PacketDistributor.sendToPlayer(player, new HerculesBeetleImpactShakePayload(ticks))); ImpactShakeSync.setSink(PacketDistributor::sendToPlayer); + HordeIntensitySync.setSink(PacketDistributor::sendToPlayer); AntarchyNeoforge.modEventBusTempHolder.addListener(AntarchyConfigModuleNeoforge::onConfigChange); } diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyNeoforgeEvents.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyNeoforgeEvents.java index bda2c95a..62933798 100644 --- a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyNeoforgeEvents.java +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyNeoforgeEvents.java @@ -1,6 +1,7 @@ package com.craisinlord.antarchy.neoforge; import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.content.command.CavarynCommand; import com.craisinlord.antarchy.content.command.CaterpillarCommand; import com.craisinlord.antarchy.content.command.GravityCommand; import net.neoforged.bus.api.SubscribeEvent; @@ -14,6 +15,7 @@ public final class AntarchyNeoforgeEvents { @SubscribeEvent public static void onRegisterCommands(RegisterCommandsEvent event) { + CavarynCommand.register(event.getDispatcher()); GravityCommand.register(event.getDispatcher()); CaterpillarCommand.register(event.getDispatcher()); } diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/AntarchyNeoForgeClient.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/AntarchyNeoForgeClient.java index 0fb72b54..55e47622 100644 --- a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/AntarchyNeoForgeClient.java +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/AntarchyNeoForgeClient.java @@ -1,6 +1,8 @@ package com.craisinlord.antarchy.neoforge.client; import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.content.client.GoopedHudRenderer; +import com.craisinlord.antarchy.content.client.HordeHudRenderer; import com.craisinlord.antarchy.content.client.hud.BloodglassHudRenderer; import com.craisinlord.antarchy.content.client.particle.*; import com.craisinlord.antarchy.content.client.renderer.*; @@ -158,6 +160,7 @@ public final class AntarchyNeoForgeClient { (LivingEntityRenderer>) event.getSkin(skin); if (renderer != null) { renderer.addLayer(new ParalyzedStonePlayerLayer(renderer)); + renderer.addLayer(new GoopedLivingLayer(renderer)); renderer.addLayer(new BrutalflyElytraLayer(renderer)); renderer.addLayer(new FallenKingCrownLayer(renderer)); } @@ -167,7 +170,7 @@ public final class AntarchyNeoForgeClient { if (armorStandRenderer != null) { armorStandRenderer.addLayer(new FallenKingCrownArmorStandLayer(armorStandRenderer)); } - BuiltInRegistries.ENTITY_TYPE.forEach(entityType -> addParalyzedLayerToEntity(event, entityType)); + BuiltInRegistries.ENTITY_TYPE.forEach(entityType -> addStatusLayersToEntity(event, entityType)); } @SubscribeEvent @@ -179,7 +182,7 @@ public final class AntarchyNeoForgeClient { } @SuppressWarnings({"rawtypes", "unchecked"}) - private static void addParalyzedLayerToEntity(EntityRenderersEvent.AddLayers event, EntityType entityType) { + private static void addStatusLayersToEntity(EntityRenderersEvent.AddLayers event, EntityType entityType) { if (entityType == EntityType.PLAYER) { return; } @@ -194,10 +197,12 @@ public final class AntarchyNeoForgeClient { return; } ((LivingEntityRenderer) livingRenderer).addLayer(new ParalyzedStoneLivingLayer<>(livingRenderer)); + ((LivingEntityRenderer) livingRenderer).addLayer(new GoopedLivingLayer<>(livingRenderer)); } private static GeoEntityRenderer withParalyzedGeoLayer(GeoEntityRenderer renderer) { renderer.addRenderLayer(new ParalyzedStoneGeoLayer<>(renderer)); + renderer.addRenderLayer(new GoopedGeoLayer<>(renderer)); return renderer; } @@ -290,10 +295,18 @@ public final class AntarchyNeoForgeClient { ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "dread_darkness"), (guiGraphics, partialTick) -> DreadHudRenderer.render(guiGraphics) ); + event.registerAboveAll( + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "horde_intensity"), + (guiGraphics, partialTick) -> HordeHudRenderer.render(guiGraphics) + ); event.registerAboveAll( ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "paralyzed_stone"), (guiGraphics, partialTick) -> ParalyzedHudRenderer.render(guiGraphics) ); + event.registerAboveAll( + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "gooped_tint"), + (guiGraphics, partialTick) -> GoopedHudRenderer.render(guiGraphics) + ); event.registerAboveAll( ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "brutalfly_elytra"), (guiGraphics, partialTick) -> BrutalflyElytraHudRenderer.render(guiGraphics) @@ -576,6 +589,9 @@ public final class AntarchyNeoForgeClient { ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.TITANIUM_BARS.get(), RenderType.cutout()); ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.CLOUD_BLOCK.get(), RenderType.translucent()); ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.JUMPY_BUG_EGG.get(), RenderType.translucent()); + ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.SPIT_BUG_EGG.get(), RenderType.translucent()); + ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.METROID_EGG.get(), RenderType.translucent()); + ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.BIOWART_TENDRILS.get(), RenderType.cutout()); ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.HANGING_CREEPROOTS.get(), RenderType.cutout()); ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.MOLTING_VINES.get(), RenderType.cutout()); ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.POTTED_GLOWCAP_MUSHROOM.get(), RenderType.cutout()); diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/HerculesBeetleClientHandler.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/HerculesBeetleClientHandler.java index b0e87027..3d3d00f5 100644 --- a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/HerculesBeetleClientHandler.java +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/HerculesBeetleClientHandler.java @@ -3,6 +3,7 @@ package com.craisinlord.antarchy.neoforge.client; import com.craisinlord.antarchy.Antarchy; import com.craisinlord.antarchy.content.client.CameraShakeClientState; import com.craisinlord.antarchy.content.client.HerculesBeetleImpactShakeClientState; +import com.craisinlord.antarchy.content.client.HordeClientState; import com.craisinlord.antarchy.content.entity.HerculesBeetleEntity; import com.craisinlord.antarchy.content.network.HerculesBeetleJumpInputPayload; import com.craisinlord.antarchy.content.network.HerculesBeetleMountedAttackPayload; @@ -31,6 +32,7 @@ public final class HerculesBeetleClientHandler { public static void onClientTick(ClientTickEvent.Post event) { CameraShakeClientState.tick(); HerculesBeetleImpactShakeClientState.tick(); + HordeClientState.tick(); Minecraft mc = Minecraft.getInstance(); LocalPlayer player = mc.player; diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoForgeEvents.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoForgeEvents.java index fafe9a37..9c76dc97 100644 --- a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoForgeEvents.java +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoForgeEvents.java @@ -15,6 +15,7 @@ import com.craisinlord.antarchy.content.entity.lucid.LucidEntity; import com.craisinlord.antarchy.content.entity.lucid.LucidEyeProjectileEntity; import com.craisinlord.antarchy.content.entity.multipart.MultipartFramework; import com.craisinlord.antarchy.content.entity.trades.DrTrayaurusTradeManager; +import com.craisinlord.antarchy.content.horde.CavarynHordeManager; import com.craisinlord.antarchy.content.item.*; import com.craisinlord.antarchy.content.item.ultimate.UltimateGearHelper; import com.craisinlord.antarchy.content.movement.DreamSandLowGravityAccess; @@ -116,6 +117,9 @@ public final class AntarchyNeoForgeEvents { NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeEvents::handleBloodglassPlayerDeath); NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeEvents::handleBloodglassRespawn); NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeEvents::handleBloodglassLogin); + NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeEvents::handleCavarynHordeKill); + NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeEvents::handleCavarynHordeBlockBreak); + NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeEvents::tickCavarynHordes); modEventBus.addListener(AntarchyNeoForgeEvents::modifyEntityAttributes); NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeEvents::tickOverheadInversion); NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeEvents::tickDuctTapeStickiness); @@ -176,6 +180,24 @@ public final class AntarchyNeoForgeEvents { } } + static void handleCavarynHordeKill(LivingDeathEvent event) { + if (event.getEntity().getKillCredit() instanceof ServerPlayer player) { + CavarynHordeManager.recordMobKill(player, event.getEntity()); + } + } + + static void handleCavarynHordeBlockBreak(BlockEvent.BreakEvent event) { + if (event.getPlayer() instanceof ServerPlayer player) { + CavarynHordeManager.recordBlockBreak(player, event.getState(), event.getPos()); + } + } + + static void tickCavarynHordes(ServerTickEvent.Post event) { + for (ServerLevel level : event.getServer().getAllLevels()) { + CavarynHordeManager.tick(level); + } + } + private static int badOmenLevel(Player player) { MobEffectInstance effect = player.getEffect(MobEffects.BAD_OMEN); return effect != null ? effect.getAmplifier() + 1 : 0; diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeBlocks.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeBlocks.java index 2f43fff5..ba395c0e 100644 --- a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeBlocks.java +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeBlocks.java @@ -248,6 +248,14 @@ public final class AntarchyNeoforgeBlocks { )); public static final DeferredBlock MYRMITE = BLOCKS.register("myrmite", () -> new Block(nyxiteProperties())); + public static final DeferredBlock BIOMITE = BLOCKS.register("biomite", + () -> new Block(BlockBehaviour.Properties.ofFullCopy(Blocks.NETHERRACK))); + public static final DeferredBlock BIOMITE_TURF = BLOCKS.register("biomite_turf", + () -> new Block(BlockBehaviour.Properties.ofFullCopy(Blocks.NETHERRACK))); + public static final DeferredBlock BIOWART = BLOCKS.register("biowart", + () -> new BiowartBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.MOSS_BLOCK))); + public static final DeferredBlock BIOWART_TENDRILS = BLOCKS.register("biowart_tendrils", + () -> new BiowartTendrilsBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.MOSS_CARPET).noCollission().noOcclusion())); public static final DeferredBlock MYRMITE_COAL_ORE = BLOCKS.register("myrmite_coal_ore", () -> createOre(Blocks.COAL_ORE, 0, 2)); public static final DeferredBlock BROODSTONE = BLOCKS.register("broodstone", @@ -324,8 +332,16 @@ public final class AntarchyNeoforgeBlocks { () -> new CreepingHorrorEggBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.TURTLE_EGG))); public static final DeferredBlock JUMPY_BUG_EGG = BLOCKS.register("jumpy_bug_egg", () -> new JumpyBugEggBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.TURTLE_EGG))); + public static final DeferredBlock SPIT_BUG_EGG = BLOCKS.register("spit_bug_egg", + () -> new SpitBugEggBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.TURTLE_EGG))); + public static final DeferredBlock METROID_EGG = BLOCKS.register("metroid_egg", + () -> new MetroidEggBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.TURTLE_EGG))); public static final DeferredBlock LURKING_TERROR_EGG = BLOCKS.register("lurking_terror_egg", () -> new LurkingTerrorEggBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.TURTLE_EGG))); + + static { + BiowartBlock.bindTendrils(BIOWART_TENDRILS); + } public static final DeferredBlock WASP_NEST = BLOCKS.register("wasp_nest", () -> new WaspNestBlock(AntarchyNeoforgeItems::waspNestBlockEntityType, BlockBehaviour.Properties.ofFullCopy(Blocks.BEE_NEST))); public static final DeferredBlock OURANWOOD_SQUIRREL_NEST = BLOCKS.register("ouranwood_squirrel_nest", diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeCreativeModeTabs.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeCreativeModeTabs.java index d280e27b..91c32de8 100644 --- a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeCreativeModeTabs.java +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeCreativeModeTabs.java @@ -123,6 +123,8 @@ public class AntarchyNeoforgeCreativeModeTabs { event.accept(AntarchyNeoforgeItems.CREEPING_HORROR_EGG_ITEM.get()); event.accept(AntarchyNeoforgeItems.LURKING_TERROR_EGG_ITEM.get()); event.accept(AntarchyNeoforgeItems.JUMPY_BUG_EGG_ITEM.get()); + event.accept(AntarchyNeoforgeItems.SPIT_BUG_EGG_ITEM.get()); + event.accept(AntarchyNeoforgeItems.METROID_EGG_ITEM.get()); event.accept(AntarchyNeoforgeItems.WASP_NEST_ITEM.get()); event.accept(AntarchyNeoforgeItems.RED_ANT_NEST_ITEM.get()); event.accept(AntarchyNeoforgeItems.BROWN_ANT_NEST_ITEM.get()); @@ -317,6 +319,10 @@ public class AntarchyNeoforgeCreativeModeTabs { event.accept(AntarchyNeoforgeItems.MEDIUM_BLOOD_CRYSTAL_BUD_ITEM.get()); event.accept(AntarchyNeoforgeItems.LARGE_BLOOD_CRYSTAL_BUD_ITEM.get()); event.accept(AntarchyNeoforgeItems.MYRMITE_ITEM.get()); + event.accept(AntarchyNeoforgeItems.BIOMITE_ITEM.get()); + event.accept(AntarchyNeoforgeItems.BIOMITE_TURF_ITEM.get()); + event.accept(AntarchyNeoforgeItems.BIOWART_ITEM.get()); + event.accept(AntarchyNeoforgeItems.BIOWART_TENDRILS_ITEM.get()); event.accept(AntarchyNeoforgeItems.BROODSTONE_ITEM.get()); event.accept(AntarchyNeoforgeItems.POLISHED_BROODSTONE_ITEM.get()); event.accept(AntarchyNeoforgeItems.CHISELED_BROODSTONE_ITEM.get()); diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeItems.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeItems.java index 404577c3..57df292d 100644 --- a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeItems.java +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeItems.java @@ -275,6 +275,10 @@ public final class AntarchyNeoforgeItems { public static final DeferredItem INFESTED_COARSE_DIRT_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.INFESTED_COARSE_DIRT); public static final DeferredItem NYXITE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.NYXITE); public static final DeferredItem MYRMITE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.MYRMITE); + public static final DeferredItem BIOMITE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.BIOMITE); + public static final DeferredItem BIOMITE_TURF_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.BIOMITE_TURF); + public static final DeferredItem BIOWART_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.BIOWART); + public static final DeferredItem BIOWART_TENDRILS_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.BIOWART_TENDRILS); public static final DeferredItem BROODSTONE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.BROODSTONE); public static final DeferredItem POLISHED_BROODSTONE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.POLISHED_BROODSTONE); public static final DeferredItem CHISELED_BROODSTONE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.CHISELED_BROODSTONE); @@ -346,6 +350,8 @@ public final class AntarchyNeoforgeItems { public static final DeferredItem BED_BUG_EGG_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.BED_BUG_EGG); public static final DeferredItem CREEPING_HORROR_EGG_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.CREEPING_HORROR_EGG); public static final DeferredItem JUMPY_BUG_EGG_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.JUMPY_BUG_EGG); + public static final DeferredItem SPIT_BUG_EGG_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.SPIT_BUG_EGG); + public static final DeferredItem METROID_EGG_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.METROID_EGG); public static final DeferredItem LURKING_TERROR_EGG_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.LURKING_TERROR_EGG); public static final DeferredItem WASP_NEST_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.WASP_NEST); public static final DeferredItem HUSHWEED_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.HUSHWEED); diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeMisc.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeMisc.java index 04821095..ddd30c69 100644 --- a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeMisc.java +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeMisc.java @@ -4,6 +4,7 @@ import com.craisinlord.antarchy.Antarchy; import com.craisinlord.antarchy.content.client.particle.InvertedGeyserBaseParticleOptions; import com.craisinlord.antarchy.content.client.particle.InvertedGeyserParticleOptions; import com.craisinlord.antarchy.content.effect.DreadMobEffect; +import com.craisinlord.antarchy.content.effect.GoopedMobEffect; import com.craisinlord.antarchy.content.effect.GrowthMobEffect; import com.craisinlord.antarchy.content.effect.InvertedMobEffect; import com.craisinlord.antarchy.content.effect.ParalyzedMobEffect; @@ -127,6 +128,7 @@ public final class AntarchyNeoforgeMisc { public static final DeferredHolder PARALYZED = MOB_EFFECTS.register("paralyzed", ParalyzedMobEffect::new); public static final DeferredHolder INVERTED = MOB_EFFECTS.register("inverted", InvertedMobEffect::new); public static final DeferredHolder STINKY = MOB_EFFECTS.register("stinky", StinkyMobEffect::new); + public static final DeferredHolder GOOPED = MOB_EFFECTS.register("gooped", GoopedMobEffect::new); public static final DeferredHolder BLOODGLASS_WARD = MOB_EFFECTS.register("bloodglass_ward", com.craisinlord.antarchy.content.effect.BloodglassWardEffect::new); public static final DeferredHolder SHRINKING_EFFECT = MOB_EFFECTS.register("shrinking", ShrinkMobEffect::new); public static final DeferredHolder GROWTH_EFFECT = MOB_EFFECTS.register("growth", GrowthMobEffect::new); @@ -318,6 +320,8 @@ public final class AntarchyNeoforgeMisc { () -> new com.craisinlord.antarchy.content.worldgen.cavaryn.GroundMoltingVinesFeature(NoneFeatureConfiguration.CODEC)); public static final DeferredHolder, com.craisinlord.antarchy.content.worldgen.cavaryn.JumpyBugEggCeilingFeature> JUMPY_BUG_EGG_CEILING = FEATURES.register("jumpy_bug_egg_ceiling", () -> new com.craisinlord.antarchy.content.worldgen.cavaryn.JumpyBugEggCeilingFeature(NoneFeatureConfiguration.CODEC)); + public static final DeferredHolder, com.craisinlord.antarchy.content.worldgen.cavaryn.SpitBugEggPatchFeature> SPIT_BUG_EGG_PATCH = FEATURES.register("spit_bug_egg_patch", + () -> new com.craisinlord.antarchy.content.worldgen.cavaryn.SpitBugEggPatchFeature(NoneFeatureConfiguration.CODEC)); public static final DeferredHolder, com.craisinlord.antarchy.content.worldgen.cavaryn.RollyCavesGiantCavernFeature> ROLLY_CAVES_GIANT_CAVERN = FEATURES.register("rolly_caves_giant_cavern", () -> new com.craisinlord.antarchy.content.worldgen.cavaryn.RollyCavesGiantCavernFeature(NoneFeatureConfiguration.CODEC)); public static final DeferredHolder, CavarynWallAmberMossFeature> CAVARYN_WALL_AMBER_MOSS = FEATURES.register("cavaryn_wall_amber_moss", diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgePayloadHandlers.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgePayloadHandlers.java index c98e10cc..91ce3af7 100644 --- a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgePayloadHandlers.java +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgePayloadHandlers.java @@ -45,6 +45,13 @@ public class AntarchyNeoforgePayloadHandlers { com.craisinlord.antarchy.content.client.ScorpionWhipTetherClientState.update(payload.playerId(), payload.targetId()) ) ); + registrar.playToClient( + com.craisinlord.antarchy.content.network.HordeIntensityPayload.TYPE, + com.craisinlord.antarchy.content.network.HordeIntensityPayload.STREAM_CODEC, + (payload, ctx) -> ctx.enqueueWork(() -> + com.craisinlord.antarchy.content.client.HordeClientState.update(payload.intensity()) + ) + ); MultipartNetworking.register(registrar); // ThoraxisWeatherNetworking.register(registrar); }