diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/config/AntarchySettings.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/config/AntarchySettings.java index 78d73b00..6dbb378d 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/config/AntarchySettings.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/config/AntarchySettings.java @@ -197,8 +197,40 @@ public final class AntarchySettings { private static double nightmareBootsDoubleDamageChance = 0.05D; private static double nightmareSwordBaseDamage = 18.0D; - + private static double nightmareSwordScalingFactor = 1.5D; + + private static boolean royalArmorComesEnchanted = true; + private static int royalArmorProtectionLevel = 10; + private static int royalArmorEnchantability = 30; + private static int royalArmorDurabilityMultiplier = 93; + private static int royalGuardianHelmetArmorValue = 5; + private static int royalGuardianChestplateArmorValue = 10; + private static int royalGuardianLeggingsArmorValue = 8; + private static int royalGuardianBootsArmorValue = 5; + private static double royalGuardianArmorToughness = 4.0D; + private static double royalGuardianArmorKnockbackResistance = 0.15D; + private static int royalAssailantHelmetArmorValue = 5; + private static int royalAssailantChestplateArmorValue = 10; + private static int royalAssailantLeggingsArmorValue = 8; + private static int royalAssailantBootsArmorValue = 5; + private static double royalAssailantArmorToughness = 3.0D; + private static double royalAssailantArmorKnockbackResistance = 0.15D; + private static double royalAssailantHelmetDoubleDamageChance = 0.06D; + private static double royalAssailantChestplateDoubleDamageChance = 0.08D; + private static double royalAssailantLeggingsDoubleDamageChance = 0.07D; + private static double royalAssailantBootsDoubleDamageChance = 0.05D; + private static double royalGuardianSwordAttackDamage = 111.0D; + private static double royalGuardianSwordAttackSpeed = -2.5D; + private static double royalAssailantBattleAxeAttackDamage = 151.0D; + private static double royalAssailantBattleAxeAttackSpeed = -2.9D; + private static double royalWeaponAttackReachBonus = 1.0D; + private static double royalWeaponAttackKnockbackBonus = 1.0D; + private static int royalWeaponDurability = 4608; + private static int royalWeaponEnchantability = 30; + private static int royalGuardianShieldDurability = 1008; + private static double royalBoltDamage = 6.0D; + private static int royalEggHatchChance = 3; private static boolean basiliskPetrifyingGazeEnabled = true; private static int basiliskSpawnMaxLightLevel = 5; private static double basiliskHealth = 320.0D; @@ -345,6 +377,20 @@ public final class AntarchySettings { private static int windVortexDurationTicks = 140; private static double windVortexPullStrength = 0.32D; private static double windVortexLaunchStrength = 1.0D; + private static boolean eyeOfTheStormEnabled = true; + private static int eyeOfTheStormUpdraftCooldownTicks = 40; + private static double eyeOfTheStormUpdraftLaunchStrength = 1.15D; + private static double eyeOfTheStormUpdraftHeight = 4.0D; + private static double eyeOfTheStormUpdraftRadius = 1.3D; + private static int eyeOfTheStormUpdraftDurationTicks = 32; + private static int eyeOfTheStormSurgeCooldownTicks = 70; + private static double eyeOfTheStormSurgeRange = 16.0D; + private static int eyeOfTheStormSurgeDurationTicks = 300; + private static double eyeOfTheStormSurgeRadius = 3.5D; + private static double eyeOfTheStormSurgeHeight = 5.0D; + private static double eyeOfTheStormSurgePullStrength = 0.45D; + private static double eyeOfTheStormSurgeReturnStrength = 1.4D; + private static float eyeOfTheStormSurgeDamage = 5.0F; private static double vortexLensMinRadius = 1.5D; private static double vortexLensMaxRadius = 10.0D; private static double vortexLensMinHeight = 3.0D; @@ -1775,6 +1821,99 @@ public final class AntarchySettings { public static double nightmareBootsDoubleDamageChance() { return nightmareBootsDoubleDamageChance; } public static void setNightmareBootsDoubleDamageChance(double v) { nightmareBootsDoubleDamageChance = v; } + public static boolean royalArmorComesEnchanted() { return royalArmorComesEnchanted; } + public static void setRoyalArmorComesEnchanted(boolean v) { royalArmorComesEnchanted = v; } + + public static int royalArmorProtectionLevel() { return royalArmorProtectionLevel; } + public static void setRoyalArmorProtectionLevel(int v) { royalArmorProtectionLevel = v; } + + public static int royalArmorEnchantability() { return royalArmorEnchantability; } + public static void setRoyalArmorEnchantability(int v) { royalArmorEnchantability = v; } + + public static int royalArmorDurabilityMultiplier() { return royalArmorDurabilityMultiplier; } + public static void setRoyalArmorDurabilityMultiplier(int v) { royalArmorDurabilityMultiplier = v; } + + public static int royalGuardianHelmetArmorValue() { return royalGuardianHelmetArmorValue; } + public static void setRoyalGuardianHelmetArmorValue(int v) { royalGuardianHelmetArmorValue = v; } + + public static int royalGuardianChestplateArmorValue() { return royalGuardianChestplateArmorValue; } + public static void setRoyalGuardianChestplateArmorValue(int v) { royalGuardianChestplateArmorValue = v; } + + public static int royalGuardianLeggingsArmorValue() { return royalGuardianLeggingsArmorValue; } + public static void setRoyalGuardianLeggingsArmorValue(int v) { royalGuardianLeggingsArmorValue = v; } + + public static int royalGuardianBootsArmorValue() { return royalGuardianBootsArmorValue; } + public static void setRoyalGuardianBootsArmorValue(int v) { royalGuardianBootsArmorValue = v; } + + public static double royalGuardianArmorToughness() { return royalGuardianArmorToughness; } + public static void setRoyalGuardianArmorToughness(double v) { royalGuardianArmorToughness = v; } + + public static double royalGuardianArmorKnockbackResistance() { return royalGuardianArmorKnockbackResistance; } + public static void setRoyalGuardianArmorKnockbackResistance(double v) { royalGuardianArmorKnockbackResistance = v; } + + public static int royalAssailantHelmetArmorValue() { return royalAssailantHelmetArmorValue; } + public static void setRoyalAssailantHelmetArmorValue(int v) { royalAssailantHelmetArmorValue = v; } + + public static int royalAssailantChestplateArmorValue() { return royalAssailantChestplateArmorValue; } + public static void setRoyalAssailantChestplateArmorValue(int v) { royalAssailantChestplateArmorValue = v; } + + public static int royalAssailantLeggingsArmorValue() { return royalAssailantLeggingsArmorValue; } + public static void setRoyalAssailantLeggingsArmorValue(int v) { royalAssailantLeggingsArmorValue = v; } + + public static int royalAssailantBootsArmorValue() { return royalAssailantBootsArmorValue; } + public static void setRoyalAssailantBootsArmorValue(int v) { royalAssailantBootsArmorValue = v; } + + public static double royalAssailantArmorToughness() { return royalAssailantArmorToughness; } + public static void setRoyalAssailantArmorToughness(double v) { royalAssailantArmorToughness = v; } + + public static double royalAssailantArmorKnockbackResistance() { return royalAssailantArmorKnockbackResistance; } + public static void setRoyalAssailantArmorKnockbackResistance(double v) { royalAssailantArmorKnockbackResistance = v; } + + public static double royalAssailantHelmetDoubleDamageChance() { return royalAssailantHelmetDoubleDamageChance; } + public static void setRoyalAssailantHelmetDoubleDamageChance(double v) { royalAssailantHelmetDoubleDamageChance = v; } + + public static double royalAssailantChestplateDoubleDamageChance() { return royalAssailantChestplateDoubleDamageChance; } + public static void setRoyalAssailantChestplateDoubleDamageChance(double v) { royalAssailantChestplateDoubleDamageChance = v; } + + public static double royalAssailantLeggingsDoubleDamageChance() { return royalAssailantLeggingsDoubleDamageChance; } + public static void setRoyalAssailantLeggingsDoubleDamageChance(double v) { royalAssailantLeggingsDoubleDamageChance = v; } + + public static double royalAssailantBootsDoubleDamageChance() { return royalAssailantBootsDoubleDamageChance; } + public static void setRoyalAssailantBootsDoubleDamageChance(double v) { royalAssailantBootsDoubleDamageChance = v; } + + public static double royalGuardianSwordAttackDamage() { return royalGuardianSwordAttackDamage; } + public static void setRoyalGuardianSwordAttackDamage(double v) { royalGuardianSwordAttackDamage = v; } + + public static double royalGuardianSwordAttackSpeed() { return royalGuardianSwordAttackSpeed; } + public static void setRoyalGuardianSwordAttackSpeed(double v) { royalGuardianSwordAttackSpeed = v; } + + public static double royalAssailantBattleAxeAttackDamage() { return royalAssailantBattleAxeAttackDamage; } + public static void setRoyalAssailantBattleAxeAttackDamage(double v) { royalAssailantBattleAxeAttackDamage = v; } + + public static double royalAssailantBattleAxeAttackSpeed() { return royalAssailantBattleAxeAttackSpeed; } + public static void setRoyalAssailantBattleAxeAttackSpeed(double v) { royalAssailantBattleAxeAttackSpeed = v; } + + public static double royalWeaponAttackReachBonus() { return royalWeaponAttackReachBonus; } + public static void setRoyalWeaponAttackReachBonus(double v) { royalWeaponAttackReachBonus = v; } + + public static double royalWeaponAttackKnockbackBonus() { return royalWeaponAttackKnockbackBonus; } + public static void setRoyalWeaponAttackKnockbackBonus(double v) { royalWeaponAttackKnockbackBonus = v; } + + public static int royalWeaponDurability() { return royalWeaponDurability; } + public static void setRoyalWeaponDurability(int v) { royalWeaponDurability = v; } + + public static int royalWeaponEnchantability() { return royalWeaponEnchantability; } + public static void setRoyalWeaponEnchantability(int v) { royalWeaponEnchantability = v; } + + public static int royalGuardianShieldDurability() { return royalGuardianShieldDurability; } + public static void setRoyalGuardianShieldDurability(int v) { royalGuardianShieldDurability = v; } + + public static double royalBoltDamage() { return royalBoltDamage; } + public static void setRoyalBoltDamage(double v) { royalBoltDamage = v; } + + public static int royalEggHatchChance() { return royalEggHatchChance; } + public static void setRoyalEggHatchChance(int v) { royalEggHatchChance = v; } + public static double nightmareSwordBaseDamage() { return nightmareSwordBaseDamage; } public static void setNightmareSwordBaseDamage(double v) { nightmareSwordBaseDamage = v; } @@ -2282,6 +2421,48 @@ public final class AntarchySettings { public static double windVortexLaunchStrength() { return windVortexLaunchStrength; } public static void setWindVortexLaunchStrength(double value) { windVortexLaunchStrength = value; } + public static boolean eyeOfTheStormEnabled() { return eyeOfTheStormEnabled; } + public static void setEyeOfTheStormEnabled(boolean value) { eyeOfTheStormEnabled = value; } + + public static int eyeOfTheStormUpdraftCooldownTicks() { return eyeOfTheStormUpdraftCooldownTicks; } + public static void setEyeOfTheStormUpdraftCooldownTicks(int value) { eyeOfTheStormUpdraftCooldownTicks = value; } + + public static double eyeOfTheStormUpdraftLaunchStrength() { return eyeOfTheStormUpdraftLaunchStrength; } + public static void setEyeOfTheStormUpdraftLaunchStrength(double value) { eyeOfTheStormUpdraftLaunchStrength = value; } + + public static double eyeOfTheStormUpdraftHeight() { return eyeOfTheStormUpdraftHeight; } + public static void setEyeOfTheStormUpdraftHeight(double value) { eyeOfTheStormUpdraftHeight = value; } + + public static double eyeOfTheStormUpdraftRadius() { return eyeOfTheStormUpdraftRadius; } + public static void setEyeOfTheStormUpdraftRadius(double value) { eyeOfTheStormUpdraftRadius = value; } + + public static int eyeOfTheStormUpdraftDurationTicks() { return eyeOfTheStormUpdraftDurationTicks; } + public static void setEyeOfTheStormUpdraftDurationTicks(int value) { eyeOfTheStormUpdraftDurationTicks = value; } + + public static int eyeOfTheStormSurgeCooldownTicks() { return eyeOfTheStormSurgeCooldownTicks; } + public static void setEyeOfTheStormSurgeCooldownTicks(int value) { eyeOfTheStormSurgeCooldownTicks = value; } + + public static double eyeOfTheStormSurgeRange() { return eyeOfTheStormSurgeRange; } + public static void setEyeOfTheStormSurgeRange(double value) { eyeOfTheStormSurgeRange = value; } + + public static int eyeOfTheStormSurgeDurationTicks() { return eyeOfTheStormSurgeDurationTicks; } + public static void setEyeOfTheStormSurgeDurationTicks(int value) { eyeOfTheStormSurgeDurationTicks = value; } + + public static double eyeOfTheStormSurgeRadius() { return eyeOfTheStormSurgeRadius; } + public static void setEyeOfTheStormSurgeRadius(double value) { eyeOfTheStormSurgeRadius = value; } + + public static double eyeOfTheStormSurgeHeight() { return eyeOfTheStormSurgeHeight; } + public static void setEyeOfTheStormSurgeHeight(double value) { eyeOfTheStormSurgeHeight = value; } + + public static double eyeOfTheStormSurgePullStrength() { return eyeOfTheStormSurgePullStrength; } + public static void setEyeOfTheStormSurgePullStrength(double value) { eyeOfTheStormSurgePullStrength = value; } + + public static double eyeOfTheStormSurgeReturnStrength() { return eyeOfTheStormSurgeReturnStrength; } + public static void setEyeOfTheStormSurgeReturnStrength(double value) { eyeOfTheStormSurgeReturnStrength = value; } + + public static float eyeOfTheStormSurgeDamage() { return eyeOfTheStormSurgeDamage; } + public static void setEyeOfTheStormSurgeDamage(float value) { eyeOfTheStormSurgeDamage = value; } + public static double vortexLensMinRadius() { return vortexLensMinRadius; } public static void setVortexLensMinRadius(double value) { vortexLensMinRadius = value; } diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/config/ConfigResetGuard.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/config/ConfigResetGuard.java index c0ad9ae6..d58e78fd 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/config/ConfigResetGuard.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/config/ConfigResetGuard.java @@ -6,7 +6,7 @@ import java.nio.file.Files; import java.nio.file.Path; public final class ConfigResetGuard { - public static final int RESET_GENERATION = 8; + public static final int RESET_GENERATION = 9; private static final String MARKER_FILE_NAME = ".config_generation"; private ConfigResetGuard() { diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/AntarchyObjects.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/AntarchyObjects.java index 1032f46d..6ec2d2dc 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/AntarchyObjects.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/AntarchyObjects.java @@ -139,6 +139,18 @@ public final class AntarchyObjects { @SuppressWarnings("unchecked") public static Supplier> HERCULES_BEETLE = (Supplier>) UNBOUND; @SuppressWarnings("unchecked") + public static Supplier> PRINCE = (Supplier>) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier> PRINCESS = (Supplier>) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier> ROYAL_BOLT = (Supplier>) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier PRINCE_EGG = (Supplier) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier PRINCESS_EGG = (Supplier) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier> ROYAL_EGG_BLOCK_ENTITY = (Supplier>) UNBOUND; + @SuppressWarnings("unchecked") public static Supplier> OURANWOOD_DEER = (Supplier>) UNBOUND; @SuppressWarnings("unchecked") public static Supplier> GLIMMER = (Supplier>) UNBOUND; @@ -665,6 +677,30 @@ public final class AntarchyObjects { HERCULES_BEETLE = supplier; } + public static void setPrince(Supplier> supplier) { + PRINCE = supplier; + } + + public static void setPrincess(Supplier> supplier) { + PRINCESS = supplier; + } + + public static void setRoyalBolt(Supplier> supplier) { + ROYAL_BOLT = supplier; + } + + public static void setPrinceEgg(Supplier supplier) { + PRINCE_EGG = supplier; + } + + public static void setPrincessEgg(Supplier supplier) { + PRINCESS_EGG = supplier; + } + + public static void setRoyalEggBlockEntity(Supplier> supplier) { + ROYAL_EGG_BLOCK_ENTITY = supplier; + } + public static void setOuranwoodDeer(Supplier> supplier) { OURANWOOD_DEER = supplier; } diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/block/PrinceEggBlock.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/block/PrinceEggBlock.java new file mode 100644 index 00000000..742ddf75 --- /dev/null +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/block/PrinceEggBlock.java @@ -0,0 +1,24 @@ +package com.craisinlord.antarchy.content.block; + +import com.craisinlord.antarchy.content.AntarchyObjects; +import com.craisinlord.antarchy.content.entity.royal.RoyalMountEntity; +import com.mojang.serialization.MapCodec; +import net.minecraft.world.entity.EntityType; + +public class PrinceEggBlock extends RoyalEggBlock { + public static final MapCodec CODEC = simpleCodec(PrinceEggBlock::new); + + public PrinceEggBlock(Properties properties) { + super(properties); + } + + @Override + public MapCodec codec() { + return CODEC; + } + + @Override + protected EntityType mountType() { + return AntarchyObjects.PRINCE.get(); + } +} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/block/PrincessEggBlock.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/block/PrincessEggBlock.java new file mode 100644 index 00000000..18375d0d --- /dev/null +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/block/PrincessEggBlock.java @@ -0,0 +1,24 @@ +package com.craisinlord.antarchy.content.block; + +import com.craisinlord.antarchy.content.AntarchyObjects; +import com.craisinlord.antarchy.content.entity.royal.RoyalMountEntity; +import com.mojang.serialization.MapCodec; +import net.minecraft.world.entity.EntityType; + +public class PrincessEggBlock extends RoyalEggBlock { + public static final MapCodec CODEC = simpleCodec(PrincessEggBlock::new); + + public PrincessEggBlock(Properties properties) { + super(properties); + } + + @Override + public MapCodec codec() { + return CODEC; + } + + @Override + protected EntityType mountType() { + return AntarchyObjects.PRINCESS.get(); + } +} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/block/RoyalEggBlock.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/block/RoyalEggBlock.java new file mode 100644 index 00000000..cc072455 --- /dev/null +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/block/RoyalEggBlock.java @@ -0,0 +1,138 @@ +package com.craisinlord.antarchy.content.block; + +import com.craisinlord.antarchy.config.AntarchySettings; +import com.craisinlord.antarchy.content.block.entity.RoyalEggBlockEntity; +import com.craisinlord.antarchy.content.entity.royal.RoyalMountEntity; +import java.util.UUID; +import net.minecraft.core.BlockPos; +import net.minecraft.core.particles.ParticleTypes; +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.RandomSource; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.MobSpawnType; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.BaseEntityBlock; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.RenderShape; +import net.minecraft.world.level.block.entity.BlockEntity; +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.IntegerProperty; +import org.jetbrains.annotations.Nullable; + +public abstract class RoyalEggBlock extends BaseEntityBlock { + public static final IntegerProperty HATCH = BlockStateProperties.HATCH; + private static final int MAX_HATCH = 2; + + protected RoyalEggBlock(Properties properties) { + super(properties); + this.registerDefaultState(this.stateDefinition.any().setValue(HATCH, 0)); + } + + protected abstract EntityType mountType(); + + @Override + protected void createBlockStateDefinition(StateDefinition.Builder builder) { + builder.add(HATCH); + } + + @Override + protected RenderShape getRenderShape(BlockState state) { + return RenderShape.MODEL; + } + + @Nullable + @Override + public BlockEntity newBlockEntity(BlockPos pos, BlockState state) { + return new RoyalEggBlockEntity(pos, state); + } + + @Override + public void setPlacedBy(Level level, BlockPos pos, BlockState state, @Nullable LivingEntity placer, ItemStack stack) { + super.setPlacedBy(level, pos, state, placer, stack); + if (!level.isClientSide && placer instanceof Player player + && level.getBlockEntity(pos) instanceof RoyalEggBlockEntity egg) { + egg.setPlacerUuid(player.getUUID()); + } + } + + @Override + public void attack(BlockState state, Level level, BlockPos pos, Player player) { + if (level instanceof ServerLevel serverLevel) { + this.teleport(state, serverLevel, pos); + } + } + + private void teleport(BlockState state, ServerLevel level, BlockPos pos) { + RandomSource random = level.random; + for (int attempt = 0; attempt < 32; attempt++) { + BlockPos target = pos.offset( + random.nextInt(16) - random.nextInt(16), + random.nextInt(8) - random.nextInt(8), + random.nextInt(16) - random.nextInt(16)); + if (level.getBlockState(target).isAir() && target.getY() > level.getMinBuildHeight()) { + RoyalEggBlockEntity source = level.getBlockEntity(pos) instanceof RoyalEggBlockEntity be ? be : null; + UUID placer = source == null ? null : source.getPlacerUuid(); + int hatch = state.getValue(HATCH); + level.setBlock(pos, Blocks.AIR.defaultBlockState(), 2); + level.setBlock(target, state.setValue(HATCH, Math.max(0, hatch - 1)), 2); + if (level.getBlockEntity(target) instanceof RoyalEggBlockEntity moved) { + moved.setPlacerUuid(placer); + } + level.levelEvent(2003, pos, 0); + level.playSound(null, pos, SoundEvents.ENDER_DRAGON_FLAP, SoundSource.BLOCKS, 0.6F, 1.4F); + return; + } + } + } + + @Override + protected boolean isRandomlyTicking(BlockState state) { + return true; + } + + @Override + protected void randomTick(BlockState state, ServerLevel level, BlockPos pos, RandomSource random) { + if (random.nextInt(Math.max(1, AntarchySettings.royalEggHatchChance())) != 0) { + 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.9F + random.nextFloat() * 0.2F); + return; + } + this.hatch(level, pos); + } + + private void hatch(ServerLevel level, BlockPos pos) { + UUID placer = level.getBlockEntity(pos) instanceof RoyalEggBlockEntity be ? be.getPlacerUuid() : null; + level.playSound(null, pos, SoundEvents.TURTLE_EGG_HATCH, SoundSource.BLOCKS, 0.9F, 1.0F); + level.setBlock(pos, Blocks.AIR.defaultBlockState(), 3); + + RoyalMountEntity mount = this.mountType().create(level); + if (mount == null) { + return; + } + mount.moveTo(pos.getX() + 0.5D, pos.getY(), pos.getZ() + 0.5D, level.random.nextFloat() * 360.0F, 0.0F); + mount.setBaby(true); + mount.finalizeSpawn(level, level.getCurrentDifficultyAt(pos), MobSpawnType.BREEDING, null); + if (placer != null) { + mount.setTame(true, true); + mount.setOwnerUUID(placer); + if (level.getPlayerByUUID(placer) instanceof ServerPlayer owner) { + mount.tame(owner); + } + } + level.addFreshEntity(mount); + level.sendParticles(ParticleTypes.HAPPY_VILLAGER, pos.getX() + 0.5D, pos.getY() + 0.5D, pos.getZ() + 0.5D, 24, 0.4D, 0.4D, 0.4D, 0.0D); + } +} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/block/RoyalLeavesBlock.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/block/RoyalLeavesBlock.java new file mode 100644 index 00000000..0b7bd02b --- /dev/null +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/block/RoyalLeavesBlock.java @@ -0,0 +1,146 @@ +package com.craisinlord.antarchy.content.block; + +import com.mojang.serialization.MapCodec; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.tags.BlockTags; +import net.minecraft.util.RandomSource; +import net.minecraft.world.item.context.BlockPlaceContext; +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.LeavesBlock; +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.level.block.state.properties.IntegerProperty; +import net.minecraft.world.level.material.FluidState; +import net.minecraft.world.level.material.Fluids; + +public class RoyalLeavesBlock extends LeavesBlock { + public static final MapCodec CODEC = Block.simpleCodec(RoyalLeavesBlock::new); + public static final IntegerProperty ROYAL_DISTANCE = IntegerProperty.create("royal_distance", 1, 17); + public static final BooleanProperty PERSISTENT = LeavesBlock.PERSISTENT; + public static final BooleanProperty WATERLOGGED = LeavesBlock.WATERLOGGED; + public static final int ROYAL_MAX_DISTANCE = 16; + public static final int ROYAL_DECAY_DISTANCE = ROYAL_MAX_DISTANCE + 1; + + public RoyalLeavesBlock(BlockBehaviour.Properties properties) { + super(properties); + this.registerDefaultState(this.stateDefinition.any() + .setValue(DISTANCE, DECAY_DISTANCE) + .setValue(ROYAL_DISTANCE, ROYAL_DECAY_DISTANCE) + .setValue(PERSISTENT, false) + .setValue(WATERLOGGED, false)); + } + + @Override + public MapCodec codec() { + return CODEC; + } + + @Override + public BlockState getStateForPlacement(BlockPlaceContext context) { + FluidState fluidState = context.getLevel().getFluidState(context.getClickedPos()); + BlockState state = this.defaultBlockState() + .setValue(PERSISTENT, true) + .setValue(WATERLOGGED, fluidState.getType() == Fluids.WATER); + + return recalculateDistance(state, context.getLevel(), context.getClickedPos()); + } + + @Override + protected void createBlockStateDefinition(StateDefinition.Builder builder) { + builder.add(LeavesBlock.DISTANCE, ROYAL_DISTANCE, PERSISTENT, WATERLOGGED); + } + + @Override + protected boolean isRandomlyTicking(BlockState state) { + return decaying(state); + } + + @Override + protected boolean decaying(BlockState state) { + return !state.getValue(PERSISTENT) && state.getValue(ROYAL_DISTANCE) > ROYAL_MAX_DISTANCE; + } + + @Override + protected void randomTick(BlockState state, ServerLevel level, BlockPos pos, RandomSource random) { + if (decaying(state)) { + dropResources(state, level, pos); + level.removeBlock(pos, false); + } + } + + @Override + protected void tick(BlockState state, ServerLevel level, BlockPos pos, RandomSource random) { + level.setBlock(pos, recalculateDistance(state, level, pos), Block.UPDATE_ALL); + } + + @Override + protected BlockState updateShape( + BlockState state, + Direction direction, + BlockState neighborState, + LevelAccessor level, + BlockPos pos, + BlockPos neighborPos + ) { + if (state.getValue(WATERLOGGED)) { + level.scheduleTick(pos, Fluids.WATER, Fluids.WATER.getTickDelay(level)); + } + + int neighborDistance = Math.min(ROYAL_DECAY_DISTANCE, getDistanceAt(neighborState) + 1); + int currentDistance = state.getValue(ROYAL_DISTANCE); + + if (neighborDistance != 1 || currentDistance != neighborDistance) { + level.scheduleTick(pos, this, 1); + } + + return state; + } + + private static BlockState recalculateDistance(BlockState state, LevelReader level, BlockPos pos) { + int bestDistance = ROYAL_DECAY_DISTANCE; + BlockPos.MutableBlockPos cursor = new BlockPos.MutableBlockPos(); + + for (Direction direction : Direction.values()) { + cursor.setWithOffset(pos, direction); + bestDistance = Math.min(bestDistance, getDistanceAt(level.getBlockState(cursor)) + 1); + if (bestDistance == 1) { + break; + } + } + + return setRoyalDistance(state, Math.min(ROYAL_DECAY_DISTANCE, bestDistance)); + } + + private static BlockState setRoyalDistance(BlockState state, int distance) { + int royalDistance = Math.max(1, Math.min(ROYAL_DECAY_DISTANCE, distance)); + int vanillaDistance = Math.min(LeavesBlock.DECAY_DISTANCE, royalDistance); + + return state + .setValue(ROYAL_DISTANCE, royalDistance) + .setValue(LeavesBlock.DISTANCE, vanillaDistance); + } + + private static int getDistanceAt(BlockState state) { + if (state.is(BlockTags.LOGS)) { + return 0; + } + if (state.hasProperty(ROYAL_DISTANCE)) { + return state.getValue(ROYAL_DISTANCE); + } + if (state.hasProperty(LeavesBlock.DISTANCE)) { + return state.getValue(LeavesBlock.DISTANCE); + } + + return ROYAL_DECAY_DISTANCE; + } + + public static BlockState setRoyalDistanceForWorldgen(BlockState state, int distance) { + return setRoyalDistance(state, distance); + } +} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/block/RoyalSaplingBlock.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/block/RoyalSaplingBlock.java index 913edc31..d96ab3bd 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/block/RoyalSaplingBlock.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/block/RoyalSaplingBlock.java @@ -1,22 +1,39 @@ package com.craisinlord.antarchy.content.block; +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.content.advancement.AntarchyAdvancements; +import com.craisinlord.antarchy.content.worldgen.royal.RoyalTreeGrowers; import com.mojang.serialization.MapCodec; +import java.util.LinkedHashMap; +import java.util.Map; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; +import net.minecraft.core.Holder; +import net.minecraft.core.registries.Registries; +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.tags.BlockTags; +import net.minecraft.util.RandomSource; 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.BonemealableBlock; 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.level.levelgen.feature.ConfiguredFeature; +import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; -public class RoyalSaplingBlock extends BushBlock { +public class RoyalSaplingBlock extends BushBlock implements BonemealableBlock { public static final MapCodec CODEC = Block.simpleCodec(RoyalSaplingBlock::new); + private static final ResourceLocation LET_IT_GROW_ADVANCEMENT = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "let_it_grow"); private static final VoxelShape SHAPE = Block.box(2.0D, 0.0D, 2.0D, 14.0D, 12.0D, 14.0D); public RoyalSaplingBlock(BlockBehaviour.Properties properties) { @@ -40,8 +57,7 @@ public class RoyalSaplingBlock extends BushBlock { @Override protected boolean canSurvive(BlockState state, LevelReader level, BlockPos pos) { - BlockState belowState = level.getBlockState(pos.below()); - return belowState.is(BlockTags.DIRT); + return level.getBlockState(pos.below()).is(BlockTags.DIRT); } @Override @@ -57,4 +73,87 @@ public class RoyalSaplingBlock extends BushBlock { ? super.updateShape(state, direction, neighborState, level, pos, neighborPos) : Blocks.AIR.defaultBlockState(); } + + @Override + protected void randomTick(BlockState state, ServerLevel level, BlockPos pos, RandomSource random) { + if (level.getMaxLocalRawBrightness(pos.above()) >= 9 && random.nextInt(7) == 0) { + this.growRoyalTree(level, pos, random); + } + } + + @Override + public boolean isValidBonemealTarget(LevelReader level, BlockPos pos, BlockState state) { + return true; + } + + @Override + public boolean isBonemealSuccess(Level level, RandomSource random, BlockPos pos, BlockState state) { + return random.nextFloat() < 0.45F; + } + + @Override + public void performBonemeal(ServerLevel level, RandomSource random, BlockPos pos, BlockState state) { + this.growRoyalTree(level, pos, random); + } + + private void growRoyalTree(ServerLevel level, BlockPos pos, RandomSource random) { + Map footprint = this.findFootprint(level, pos); + if (footprint == null) { + return; + } + + BlockPos origin = footprint.keySet().iterator().next(); + ResourceKey> variant = switch (random.nextInt(3)) { + case 0 -> RoyalTreeGrowers.ROYAL_TREE_SMALL; + case 1 -> RoyalTreeGrowers.ROYAL_TREE_MEDIUM; + default -> RoyalTreeGrowers.ROYAL_TREE_LARGE; + }; + + Holder.Reference> feature = level.registryAccess() + .lookupOrThrow(Registries.CONFIGURED_FEATURE) + .getOrThrow(variant); + + for (BlockPos saplingPos : footprint.keySet()) { + level.removeBlock(saplingPos, false); + } + + if (feature.value().place(level, level.getChunkSource().getGenerator(), random, origin)) { + for (ServerPlayer player : level.getEntitiesOfClass(ServerPlayer.class, new AABB(origin).inflate(8.0D))) { + AntarchyAdvancements.award(player, LET_IT_GROW_ADVANCEMENT); + } + return; + } + + for (Map.Entry entry : footprint.entrySet()) { + level.setBlock(entry.getKey(), entry.getValue(), Block.UPDATE_ALL); + } + } + + private Map findFootprint(ServerLevel level, BlockPos pos) { + for (int offsetX = 0; offsetX < 2; offsetX++) { + for (int offsetZ = 0; offsetZ < 2; offsetZ++) { + BlockPos origin = pos.offset(-offsetX, 0, -offsetZ); + Map blocks = new LinkedHashMap<>(); + boolean matches = true; + + for (int x = 0; x < 2 && matches; x++) { + for (int z = 0; z < 2; z++) { + BlockPos checkPos = origin.offset(x, 0, z); + BlockState checkState = level.getBlockState(checkPos); + if (!checkState.is(this)) { + matches = false; + break; + } + blocks.put(checkPos, checkState); + } + } + + if (matches) { + return blocks; + } + } + } + + return null; + } } diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/block/entity/RoyalEggBlockEntity.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/block/entity/RoyalEggBlockEntity.java new file mode 100644 index 00000000..66e55dc3 --- /dev/null +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/block/entity/RoyalEggBlockEntity.java @@ -0,0 +1,42 @@ +package com.craisinlord.antarchy.content.block.entity; + +import com.craisinlord.antarchy.content.AntarchyObjects; +import java.util.UUID; +import net.minecraft.core.BlockPos; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.state.BlockState; +import org.jetbrains.annotations.Nullable; + +public class RoyalEggBlockEntity extends BlockEntity { + @Nullable + private UUID placerUuid; + + public RoyalEggBlockEntity(BlockPos pos, BlockState state) { + super(AntarchyObjects.ROYAL_EGG_BLOCK_ENTITY.get(), pos, state); + } + + @Nullable + public UUID getPlacerUuid() { + return this.placerUuid; + } + + public void setPlacerUuid(@Nullable UUID placerUuid) { + this.placerUuid = placerUuid; + this.setChanged(); + } + + @Override + protected void loadAdditional(CompoundTag tag, net.minecraft.core.HolderLookup.Provider registries) { + super.loadAdditional(tag, registries); + this.placerUuid = tag.hasUUID("Placer") ? tag.getUUID("Placer") : null; + } + + @Override + protected void saveAdditional(CompoundTag tag, net.minecraft.core.HolderLookup.Provider registries) { + super.saveAdditional(tag, registries); + if (this.placerUuid != null) { + tag.putUUID("Placer", this.placerUuid); + } + } +} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/client/HoverboardTrailSystem.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/client/HoverboardTrailSystem.java index e1aac17e..4cb76871 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/client/HoverboardTrailSystem.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/client/HoverboardTrailSystem.java @@ -32,8 +32,8 @@ public final class HoverboardTrailSystem { private static final float CORE_HALF_WIDTH = 0.0225f; private static final float GLOW_HALF_WIDTH = 0.055f; private static final double MIN_DISTANCE_BETWEEN_POINTS = 0.04D; - private static final double LATERAL_OFFSET = 0.34D; - private static final double REAR_OFFSET = 0.52D; + private static final double LATERAL_OFFSET = 0.5275D; + private static final double REAR_OFFSET = 0.77D; private static final double HEIGHT_OFFSET = 0.14D; private static final float[] DEFAULT_COLOR = rgb(0xC9A0FF); diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/client/model/RoyalMountModel.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/client/model/RoyalMountModel.java new file mode 100644 index 00000000..dbba6168 --- /dev/null +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/client/model/RoyalMountModel.java @@ -0,0 +1,23 @@ +package com.craisinlord.antarchy.content.client.model; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.content.entity.royal.RoyalMountEntity; +import net.minecraft.resources.ResourceLocation; +import software.bernie.geckolib.model.GeoModel; + +public class RoyalMountModel extends GeoModel { + @Override + public ResourceLocation getModelResource(RoyalMountEntity animatable) { + return ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "geo/" + animatable.geoNameForRender() + ".geo.json"); + } + + @Override + public ResourceLocation getTextureResource(RoyalMountEntity animatable) { + return ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "textures/entity/" + animatable.geoNameForRender() + ".png"); + } + + @Override + public ResourceLocation getAnimationResource(RoyalMountEntity animatable) { + return ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "animations/" + animatable.geoNameForRender() + ".animation.json"); + } +} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/client/renderer/RoyalBoltRenderer.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/client/renderer/RoyalBoltRenderer.java new file mode 100644 index 00000000..89a06fbf --- /dev/null +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/client/renderer/RoyalBoltRenderer.java @@ -0,0 +1,19 @@ +package com.craisinlord.antarchy.content.client.renderer; + +import com.craisinlord.antarchy.content.entity.royal.RoyalBoltEntity; +import net.minecraft.client.renderer.entity.EntityRenderer; +import net.minecraft.client.renderer.entity.EntityRendererProvider; +import net.minecraft.resources.ResourceLocation; + +public class RoyalBoltRenderer extends EntityRenderer { + private static final ResourceLocation TEXTURE = ResourceLocation.withDefaultNamespace("textures/particle/generic_0.png"); + + public RoyalBoltRenderer(EntityRendererProvider.Context context) { + super(context); + } + + @Override + public ResourceLocation getTextureLocation(RoyalBoltEntity entity) { + return TEXTURE; + } +} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/client/renderer/RoyalMountRenderer.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/client/renderer/RoyalMountRenderer.java new file mode 100644 index 00000000..0f2124c4 --- /dev/null +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/client/renderer/RoyalMountRenderer.java @@ -0,0 +1,34 @@ +package com.craisinlord.antarchy.content.client.renderer; + +import com.craisinlord.antarchy.content.client.model.RoyalMountModel; +import com.craisinlord.antarchy.content.entity.royal.RoyalMountEntity; +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.client.renderer.entity.EntityRendererProvider; +import net.minecraft.resources.ResourceLocation; +import org.jetbrains.annotations.Nullable; +import software.bernie.geckolib.cache.object.BakedGeoModel; +import software.bernie.geckolib.renderer.GeoEntityRenderer; + +public class RoyalMountRenderer extends GeoEntityRenderer { + public RoyalMountRenderer(EntityRendererProvider.Context context) { + super(context, new RoyalMountModel()); + this.shadowRadius = 1.1F; + } + + @Override + public RenderType getRenderType(RoyalMountEntity animatable, ResourceLocation texture, @Nullable MultiBufferSource bufferSource, float partialTick) { + return RenderType.entityCutoutNoCull(texture); + } + + @Override + public void preRender(PoseStack poseStack, RoyalMountEntity animatable, BakedGeoModel model, @Nullable MultiBufferSource bufferSource, + @Nullable VertexConsumer buffer, boolean isReRender, float partialTick, int packedLight, int packedOverlay, int colour) { + super.preRender(poseStack, animatable, model, bufferSource, buffer, isReRender, partialTick, packedLight, packedOverlay, colour); + float scale = animatable.getAgeScale(); + poseStack.scale(scale, scale, scale); + this.shadowRadius = 1.1F * scale; + } +} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/creative/CreativeTabContents.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/creative/CreativeTabContents.java index d97a9fff..f5a9df45 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/creative/CreativeTabContents.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/creative/CreativeTabContents.java @@ -2,6 +2,7 @@ package com.craisinlord.antarchy.content.creative; import com.craisinlord.antarchy.content.entity.glimmer.GlimmerVariant; import com.craisinlord.antarchy.content.item.GlimmerBottleItem; +import com.craisinlord.antarchy.content.item.royal.RoyalGearHelper; import com.craisinlord.antarchy.content.item.ultimate.UltimateGearHelper; import java.util.HashMap; import java.util.List; @@ -406,6 +407,7 @@ public final class CreativeTabContents { entry("growth_ray", "combat"), entry("gravity_gun", "combat"), entry("portal_gun", "combat"), + entry("eye_of_the_storm", "combat"), entry("water_cannon", "combat"), entry("attitude_adjuster", "combat"), entry("lucid_pearl", "combat"), @@ -423,6 +425,19 @@ public final class CreativeTabContents { entry("blood_crystal_chestplate", "combat"), entry("blood_crystal_leggings", "combat"), entry("blood_crystal_boots", "combat"), + entry("royal_guardian_sword", "combat"), + entry("royal_guardian_helmet", "combat"), + entry("royal_guardian_chestplate", "combat"), + entry("royal_guardian_leggings", "combat"), + entry("royal_guardian_boots", "combat"), + entry("royal_guardian_shield", "combat"), + entry("royal_assailant_battleaxe", "combat"), + entry("royal_assailant_helmet", "combat"), + entry("royal_assailant_chestplate", "combat"), + entry("royal_assailant_leggings", "combat"), + entry("royal_assailant_boots", "combat"), + entry("prince_egg", "spawn_eggs"), + entry("princess_egg", "spawn_eggs"), entry("tigers_eye_helmet", "combat"), entry("tigers_eye_chestplate", "combat"), entry("tigers_eye_leggings", "combat"), @@ -618,6 +633,10 @@ public final class CreativeTabContents { output.accept(UltimateGearHelper.createUltimateArmorStack(item(entry.path()), holders)); continue; } + if (isRoyalArmor(entry.path())) { + output.accept(RoyalGearHelper.createRoyalArmorStack(item(entry.path()), holders)); + continue; + } if ("ultimate_bow".equals(entry.path())) { output.accept(UltimateGearHelper.createUltimateBowStack(item(entry.path()), holders)); continue; @@ -644,6 +663,17 @@ public final class CreativeTabContents { || "ultimate_boots".equals(path); } + private static boolean isRoyalArmor(String path) { + return "royal_guardian_helmet".equals(path) + || "royal_guardian_chestplate".equals(path) + || "royal_guardian_leggings".equals(path) + || "royal_guardian_boots".equals(path) + || "royal_assailant_helmet".equals(path) + || "royal_assailant_chestplate".equals(path) + || "royal_assailant_leggings".equals(path) + || "royal_assailant_boots".equals(path); + } + private static void acceptPotionFamily(AntarchyTabOutput output, String path) { Holder potion = potion(path); if (potion == null) { diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/HoverboardEntity.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/HoverboardEntity.java index 25f5341a..4d878725 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/HoverboardEntity.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/HoverboardEntity.java @@ -53,6 +53,8 @@ public class HoverboardEntity extends PathfinderMob implements GeoEntity { private static final double MAX_HOVER_HEIGHT = 5.0D; private static final double ASCEND_SPEED = 0.15D; private static final double SETTLE_DESCEND_SPEED = 0.08D; + private static final double FAST_DESCEND_SPEED = 0.9D; + private static final double FAST_DESCEND_RAMP = 0.2D; private static final double DAMPING = 0.955D; private static final double RIDER_Y_OFFSET = 0.65D; @@ -206,23 +208,31 @@ public class HoverboardEntity extends PathfinderMob implements GeoEntity { double supportHeight = this.findSupportHeight(gravityDirection); if (!gravityDirection.isInverted()) { double maxY = supportHeight + MAX_HOVER_HEIGHT; - if (this.getY() > maxY) { - return -SETTLE_DESCEND_SPEED; - } if (holdingJump) { return this.getY() >= maxY ? 0.0D : ASCEND_SPEED; } - return this.getY() <= supportHeight ? 0.0D : -SETTLE_DESCEND_SPEED; + if (this.getY() <= supportHeight) { + return 0.0D; + } + double heightAboveBand = this.getY() - maxY; + if (heightAboveBand > 0.0D) { + return -Mth.clamp(SETTLE_DESCEND_SPEED + heightAboveBand * FAST_DESCEND_RAMP, SETTLE_DESCEND_SPEED, FAST_DESCEND_SPEED); + } + return -SETTLE_DESCEND_SPEED; } double minY = supportHeight - MAX_HOVER_HEIGHT; - if (this.getY() < minY) { - return SETTLE_DESCEND_SPEED; - } if (holdingJump) { return this.getY() <= minY ? 0.0D : -ASCEND_SPEED; } - return this.getY() >= supportHeight ? 0.0D : SETTLE_DESCEND_SPEED; + if (this.getY() >= supportHeight) { + return 0.0D; + } + double depthBelowBand = minY - this.getY(); + if (depthBelowBand > 0.0D) { + return Mth.clamp(SETTLE_DESCEND_SPEED + depthBelowBand * FAST_DESCEND_RAMP, SETTLE_DESCEND_SPEED, FAST_DESCEND_SPEED); + } + return SETTLE_DESCEND_SPEED; } private double findSupportHeight(AntarchyGravityDirection gravityDirection) { diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/royal/PrinceEntity.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/royal/PrinceEntity.java new file mode 100644 index 00000000..75a340bb --- /dev/null +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/royal/PrinceEntity.java @@ -0,0 +1,29 @@ +package com.craisinlord.antarchy.content.entity.royal; + +import com.craisinlord.antarchy.content.AntarchyObjects; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.ai.attributes.AttributeSupplier; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.level.Level; + +public class PrinceEntity extends RoyalMountEntity { + public PrinceEntity(EntityType entityType, Level level) { + super(entityType, level); + } + + public static AttributeSupplier.Builder createAttributes() { + return RoyalMountEntity.createBaseAttributes() + .add(Attributes.MAX_HEALTH, 120.0D) + .add(Attributes.ATTACK_DAMAGE, 14.0D); + } + + @Override + protected String geoName() { + return "prince"; + } + + @Override + protected EntityType boltType() { + return AntarchyObjects.ROYAL_BOLT.get(); + } +} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/royal/PrincessEntity.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/royal/PrincessEntity.java new file mode 100644 index 00000000..6c84aeca --- /dev/null +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/royal/PrincessEntity.java @@ -0,0 +1,30 @@ +package com.craisinlord.antarchy.content.entity.royal; + +import com.craisinlord.antarchy.content.AntarchyObjects; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.ai.attributes.AttributeSupplier; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.level.Level; + +public class PrincessEntity extends RoyalMountEntity { + public PrincessEntity(EntityType entityType, Level level) { + super(entityType, level); + } + + public static AttributeSupplier.Builder createAttributes() { + return RoyalMountEntity.createBaseAttributes() + .add(Attributes.MAX_HEALTH, 110.0D) + .add(Attributes.ATTACK_DAMAGE, 10.0D) + .add(Attributes.FLYING_SPEED, 0.95D); + } + + @Override + protected String geoName() { + return "princess"; + } + + @Override + protected EntityType boltType() { + return AntarchyObjects.ROYAL_BOLT.get(); + } +} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/royal/RoyalBoltEntity.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/royal/RoyalBoltEntity.java new file mode 100644 index 00000000..1e593b10 --- /dev/null +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/royal/RoyalBoltEntity.java @@ -0,0 +1,70 @@ +package com.craisinlord.antarchy.content.entity.royal; + +import com.craisinlord.antarchy.config.AntarchySettings; +import net.minecraft.core.particles.ParticleOptions; +import net.minecraft.core.particles.ParticleTypes; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.projectile.AbstractHurtingProjectile; +import net.minecraft.world.level.Level; +import net.minecraft.world.phys.EntityHitResult; +import net.minecraft.world.phys.HitResult; + +public class RoyalBoltEntity extends AbstractHurtingProjectile { + public RoyalBoltEntity(EntityType entityType, Level level) { + super(entityType, level); + } + + @Override + protected double getDefaultGravity() { + return 0.02D; + } + + @Override + protected float getInertia() { + return 0.97F; + } + + @Override + protected boolean shouldBurn() { + return false; + } + + @Override + protected ParticleOptions getTrailParticle() { + return ParticleTypes.END_ROD; + } + + @Override + protected void onHitEntity(EntityHitResult result) { + super.onHitEntity(result); + if (this.level().isClientSide) { + return; + } + Entity target = result.getEntity(); + Entity owner = this.getOwner(); + if (target == owner || (owner != null && target == owner.getVehicle())) { + return; + } + float damage = (float) AntarchySettings.royalBoltDamage(); + target.hurt(this.damageSources().mobProjectile(this, owner instanceof LivingEntity le ? le : null), damage); + if (target instanceof LivingEntity living) { + living.knockback(0.35D, this.getX() - target.getX(), this.getZ() - target.getZ()); + } + } + + @Override + protected void onHit(HitResult result) { + super.onHit(result); + if (!this.level().isClientSide) { + this.level().broadcastEntityEvent(this, (byte) 3); + this.discard(); + } + } + + @Override + public boolean isPickable() { + return false; + } +} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/royal/RoyalMountEntity.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/royal/RoyalMountEntity.java new file mode 100644 index 00000000..33cd1e06 --- /dev/null +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/royal/RoyalMountEntity.java @@ -0,0 +1,603 @@ +package com.craisinlord.antarchy.content.entity.royal; + +import com.craisinlord.antarchy.config.AntarchySettings; +import java.util.UUID; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.network.syncher.EntityDataAccessor; +import net.minecraft.network.syncher.EntityDataSerializers; +import net.minecraft.network.syncher.SynchedEntityData; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.util.Mth; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.entity.AgeableMob; +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.MoverType; +import net.minecraft.world.entity.TamableAnimal; +import net.minecraft.world.entity.ai.attributes.AttributeSupplier; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.ai.control.FlyingMoveControl; +import net.minecraft.world.entity.ai.control.MoveControl; +import net.minecraft.world.entity.ai.goal.FloatGoal; +import net.minecraft.world.entity.ai.goal.LookAtPlayerGoal; +import net.minecraft.world.entity.ai.goal.RandomLookAroundGoal; +import net.minecraft.world.entity.ai.goal.SitWhenOrderedToGoal; +import net.minecraft.world.entity.ai.goal.WaterAvoidingRandomStrollGoal; +import net.minecraft.world.entity.ai.goal.target.HurtByTargetGoal; +import net.minecraft.world.entity.ai.goal.target.OwnerHurtByTargetGoal; +import net.minecraft.world.entity.ai.goal.target.OwnerHurtTargetGoal; +import net.minecraft.world.entity.ai.navigation.FlyingPathNavigation; +import net.minecraft.world.entity.ai.navigation.GroundPathNavigation; +import net.minecraft.world.entity.ai.navigation.PathNavigation; +import net.minecraft.world.entity.animal.FlyingAnimal; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.pathfinder.PathType; +import net.minecraft.world.phys.Vec3; +import org.jetbrains.annotations.Nullable; +import software.bernie.geckolib.animatable.GeoEntity; +import software.bernie.geckolib.animatable.instance.AnimatableInstanceCache; +import software.bernie.geckolib.animation.AnimatableManager; +import software.bernie.geckolib.animation.AnimationController; +import software.bernie.geckolib.animation.AnimationState; +import software.bernie.geckolib.animation.PlayState; +import software.bernie.geckolib.animation.RawAnimation; +import software.bernie.geckolib.util.GeckoLibUtil; + +public abstract class RoyalMountEntity extends TamableAnimal implements GeoEntity, FlyingAnimal { + public static final int ANIM_IDLE = 0; + public static final int ANIM_WALK = 1; + public static final int ANIM_FLY = 2; + public static final int ANIM_BITE = 3; + public static final int ANIM_FLY_BITE = 4; + public static final int ANIM_SHOOT = 5; + public static final int ANIM_FLY_SHOOT = 6; + + private static final EntityDataAccessor ANIM_STATE = + SynchedEntityData.defineId(RoyalMountEntity.class, EntityDataSerializers.INT); + private static final EntityDataAccessor FLYING = + SynchedEntityData.defineId(RoyalMountEntity.class, EntityDataSerializers.BOOLEAN); + private static final EntityDataAccessor SADDLED = + SynchedEntityData.defineId(RoyalMountEntity.class, EntityDataSerializers.BOOLEAN); + + private static final RawAnimation IDLE_ANIM = RawAnimation.begin().thenLoop("idle"); + private static final RawAnimation QUIRK_ANIM = RawAnimation.begin().thenLoop("quirk"); + private static final RawAnimation WALK_ANIM = RawAnimation.begin().thenLoop("walk"); + private static final RawAnimation FLY_ANIM = RawAnimation.begin().thenLoop("fly"); + private static final RawAnimation BITE_ANIM = RawAnimation.begin().thenPlay("bite"); + private static final RawAnimation FLY_BITE_ANIM = RawAnimation.begin().thenPlay("fly_bite"); + private static final RawAnimation SHOOT_ANIM = RawAnimation.begin().thenPlay("shoot"); + private static final RawAnimation FLY_SHOOT_ANIM = RawAnimation.begin().thenPlay("fly_shoot"); + + private static final int ACTION_TICKS = 12; + private static final int BITE_HIT_TICK = 6; + private static final int GROW_TICKS = 24000; + + private final AnimatableInstanceCache geoCache = GeckoLibUtil.createInstanceCache(this); + private final MoveControl groundMoveControl; + private final MoveControl flyingMoveControl; + private final PathNavigation groundNavigation; + private final PathNavigation flyingNavigation; + + private int actionTicks; + private boolean actionHit; + private int spitCooldown; + private int quirkTimer; + private boolean riderAscendPressed; + private boolean riderDescendPressed; + + protected RoyalMountEntity(EntityType entityType, Level level) { + super(entityType, level); + this.groundMoveControl = new MoveControl(this); + this.flyingMoveControl = new FlyingMoveControl(this, 20, true); + this.groundNavigation = new GroundPathNavigation(this, level); + FlyingPathNavigation flying = new FlyingPathNavigation(this, level); + flying.setCanFloat(true); + this.flyingNavigation = flying; + this.moveControl = this.groundMoveControl; + this.navigation = this.groundNavigation; + this.setPathfindingMalus(PathType.WATER, -1.0F); + this.setPathfindingMalus(PathType.LAVA, -1.0F); + this.xpReward = 20; + } + + public static AttributeSupplier.Builder createBaseAttributes() { + return Mob.createMobAttributes() + .add(Attributes.MAX_HEALTH, 120.0D) + .add(Attributes.ATTACK_DAMAGE, 12.0D) + .add(Attributes.MOVEMENT_SPEED, 0.28D) + .add(Attributes.FLYING_SPEED, 0.9D) + .add(Attributes.FOLLOW_RANGE, 48.0D) + .add(Attributes.KNOCKBACK_RESISTANCE, 0.6D) + .add(Attributes.ARMOR, 10.0D) + .add(Attributes.STEP_HEIGHT, 1.5D); + } + + protected abstract String geoName(); + + protected abstract EntityType boltType(); + + @Override + protected PathNavigation createNavigation(Level level) { + GroundPathNavigation navigation = new GroundPathNavigation(this, level); + navigation.setCanFloat(true); + return navigation; + } + + @Override + protected void registerGoals() { + this.goalSelector.addGoal(0, new FloatGoal(this)); + this.goalSelector.addGoal(1, new SitWhenOrderedToGoal(this)); + this.goalSelector.addGoal(2, new RoyalMountSpitGoal(this)); + this.goalSelector.addGoal(3, new net.minecraft.world.entity.ai.goal.MeleeAttackGoal(this, 1.2D, true) { + @Override + protected void checkAndPerformAttack(LivingEntity target) { + if (this.getTicksUntilNextAttack() <= 0 && this.canPerformAttack(target)) { + this.resetAttackCooldown(); + RoyalMountEntity.this.startBite(); + } + } + + @Override + public boolean canUse() { + return !RoyalMountEntity.this.isBaby() && !RoyalMountEntity.this.isVehicle() && super.canUse(); + } + }); + this.goalSelector.addGoal(4, new RoyalMountFollowOwnerGoal(this)); + this.goalSelector.addGoal(6, new WaterAvoidingRandomStrollGoal(this, 0.8D) { + @Override + public boolean canUse() { + return !RoyalMountEntity.this.isVehicle() && !RoyalMountEntity.this.isOrderedToSit() && super.canUse(); + } + }); + this.goalSelector.addGoal(7, new LookAtPlayerGoal(this, Player.class, 12.0F)); + this.goalSelector.addGoal(8, new RandomLookAroundGoal(this)); + this.targetSelector.addGoal(1, new OwnerHurtByTargetGoal(this)); + this.targetSelector.addGoal(2, new OwnerHurtTargetGoal(this)); + this.targetSelector.addGoal(3, new HurtByTargetGoal(this).setAlertOthers()); + } + + @Override + protected void defineSynchedData(SynchedEntityData.Builder builder) { + super.defineSynchedData(builder); + builder.define(ANIM_STATE, ANIM_IDLE); + builder.define(FLYING, false); + builder.define(SADDLED, false); + } + + @Override + public void addAdditionalSaveData(CompoundTag tag) { + super.addAdditionalSaveData(tag); + tag.putBoolean("Saddled", this.isSaddled()); + tag.putBoolean("Flying", this.isFlying()); + } + + @Override + public void readAdditionalSaveData(CompoundTag tag) { + super.readAdditionalSaveData(tag); + this.setSaddled(tag.getBoolean("Saddled")); + this.setFlying(tag.getBoolean("Flying")); + } + + public boolean isFlying() { + return this.entityData.get(FLYING); + } + + public void setFlying(boolean flying) { + if (this.entityData.get(FLYING) != flying) { + this.entityData.set(FLYING, flying); + this.moveControl = flying ? this.flyingMoveControl : this.groundMoveControl; + this.navigation = flying ? this.flyingNavigation : this.groundNavigation; + this.setNoGravity(flying); + } + } + + public boolean isSaddled() { + return this.entityData.get(SADDLED); + } + + public void setSaddled(boolean saddled) { + this.entityData.set(SADDLED, saddled); + } + + public int getAnimState() { + return this.entityData.get(ANIM_STATE); + } + + private void setAnimState(int state) { + this.entityData.set(ANIM_STATE, state); + } + + public float getAgeScale() { + if (!this.isBaby()) { + return 1.0F; + } + float progress = 1.0F - Mth.clamp(-this.getAge() / (float) GROW_TICKS, 0.0F, 1.0F); + return 0.35F + 0.65F * progress; + } + + @Override + public boolean isFood(ItemStack stack) { + return isGoldenTreat(stack); + } + + public static boolean isGoldenTreat(ItemStack stack) { + if (stack.isEmpty()) { + return false; + } + String path = net.minecraft.core.registries.BuiltInRegistries.ITEM.getKey(stack.getItem()).getPath(); + return path.contains("gold") || path.contains("golden"); + } + + @Override + public InteractionResult mobInteract(Player player, InteractionHand hand) { + ItemStack stack = player.getItemInHand(hand); + + if (this.isFood(stack)) { + if (!this.level().isClientSide) { + if (!player.getAbilities().instabuild) { + stack.shrink(1); + } + this.heal(8.0F); + if (this.isBaby()) { + this.ageUp((int) (-this.getAge() * 0.1F), true); + } + if (!this.isTame() && this.random.nextInt(3) == 0) { + this.tame(player); + this.level().broadcastEntityEvent(this, (byte) 7); + } else { + this.level().broadcastEntityEvent(this, (byte) 6); + } + } + return InteractionResult.sidedSuccess(this.level().isClientSide); + } + + if (this.isTame() && this.isOwnedBy(player)) { + if (!this.isSaddled() && stack.is(Items.SADDLE)) { + if (!this.level().isClientSide) { + this.setSaddled(true); + if (!player.getAbilities().instabuild) { + stack.shrink(1); + } + this.playSound(SoundEvents.HORSE_SADDLE, 1.0F, 1.0F); + } + return InteractionResult.sidedSuccess(this.level().isClientSide); + } + + if (stack.isEmpty() && player.isSecondaryUseActive()) { + if (this.isSaddled()) { + if (!this.level().isClientSide) { + this.setSaddled(false); + this.spawnAtLocation(new ItemStack(Items.SADDLE)); + } + } else if (!this.level().isClientSide) { + this.setOrderedToSit(!this.isOrderedToSit()); + this.setInSittingPose(this.isOrderedToSit()); + this.navigation.stop(); + this.setTarget(null); + } + return InteractionResult.sidedSuccess(this.level().isClientSide); + } + + if (stack.isEmpty() && this.isSaddled() && !this.isBaby() && !player.isPassenger()) { + if (!this.level().isClientSide) { + this.setOrderedToSit(false); + this.setInSittingPose(false); + player.startRiding(this); + } + return InteractionResult.sidedSuccess(this.level().isClientSide); + } + } + + return super.mobInteract(player, hand); + } + + @Nullable + @Override + public AgeableMob getBreedOffspring(ServerLevel level, AgeableMob other) { + return null; + } + + @Override + public boolean canMate(net.minecraft.world.entity.animal.Animal other) { + return false; + } + + @Override + public void tick() { + super.tick(); + + if (this.isBaby()) { + this.refreshDimensions(); + } + + if (this.level().isClientSide) { + return; + } + + if (this.spitCooldown > 0) { + this.spitCooldown--; + } + + if (this.actionTicks > 0) { + this.actionTicks--; + if (!this.actionHit && this.actionTicks <= ACTION_TICKS - BITE_HIT_TICK + && (this.getAnimState() == ANIM_BITE || this.getAnimState() == ANIM_FLY_BITE)) { + this.actionHit = true; + this.applyBiteDamage(); + } + if (this.actionTicks == 0) { + this.updateAmbientAnimState(); + } + return; + } + + this.tickFlightState(); + this.updateAmbientAnimState(); + + if (this.quirkTimer > 0) { + this.quirkTimer--; + } + if (this.getAnimState() == ANIM_IDLE && this.quirkTimer == 0 && this.random.nextInt(600) == 0) { + this.quirkTimer = 80; + } + } + + private void tickFlightState() { + if (this.isVehicle()) { + return; + } + if (this.isFlying() && this.onGround() && this.getTarget() == null) { + this.setFlying(false); + } + } + + private void updateAmbientAnimState() { + if (this.actionTicks > 0) { + return; + } + if (this.isFlying() || !this.onGround()) { + this.setAnimState(ANIM_FLY); + return; + } + boolean moving; + if (this.getControllingPassenger() instanceof Player rider) { + moving = Math.abs(rider.zza) > 0.05F || Math.abs(rider.xxa) > 0.05F; + } else { + moving = this.getDeltaMovement().horizontalDistanceSqr() > 0.0025D; + } + this.setAnimState(moving ? ANIM_WALK : ANIM_IDLE); + } + + public void startBite() { + if (this.actionTicks > 0) { + return; + } + this.actionTicks = ACTION_TICKS; + this.actionHit = false; + this.setAnimState(this.isFlying() ? ANIM_FLY_BITE : ANIM_BITE); + this.triggerAnim("main", this.isFlying() ? "fly_bite" : "bite"); + } + + private void applyBiteDamage() { + LivingEntity target = this.getTarget(); + if (target == null && this.getControllingPassenger() instanceof Player) { + target = this.frontTarget(); + } + if (target != null && target.distanceTo(this) < 5.0D) { + target.hurt(this.damageSources().mobAttack(this), (float) this.getAttributeValue(Attributes.ATTACK_DAMAGE)); + } + } + + @Nullable + private LivingEntity frontTarget() { + Vec3 look = this.getLookAngle(); + Vec3 eye = this.getEyePosition(); + LivingEntity best = null; + double bestDot = 0.3D; + for (LivingEntity candidate : this.level().getEntitiesOfClass(LivingEntity.class, this.getBoundingBox().inflate(6.0D))) { + if (candidate == this || candidate == this.getControllingPassenger() || candidate == this.getOwner()) { + continue; + } + Vec3 to = candidate.getEyePosition().subtract(eye); + double dist = to.length(); + if (dist > 6.0D || dist < 1.0E-3D) { + continue; + } + double dot = to.scale(1.0D / dist).dot(look); + if (dot > bestDot) { + bestDot = dot; + best = candidate; + } + } + return best; + } + + public void startSpitVolley(@Nullable LivingEntity target) { + if (this.spitCooldown > 0 || this.level().isClientSide) { + return; + } + this.spitCooldown = 40; + this.actionTicks = ACTION_TICKS; + this.actionHit = true; + this.setAnimState(this.isFlying() ? ANIM_FLY_SHOOT : ANIM_SHOOT); + this.triggerAnim("main", this.isFlying() ? "fly_shoot" : "shoot"); + + Vec3 aim; + if (target != null) { + aim = target.getEyePosition().subtract(this.getEyePosition()).normalize(); + } else if (this.getControllingPassenger() instanceof Player rider) { + aim = rider.getLookAngle(); + } else { + aim = this.getLookAngle(); + } + + Vec3 right = new Vec3(-aim.z, 0.0D, aim.x).normalize(); + for (int i = -1; i <= 1; i++) { + Vec3 dir = aim.add(right.scale(i * 0.14D)).normalize(); + RoyalBoltEntity bolt = new RoyalBoltEntity(this.boltType(), this.level()); + bolt.setOwner(this); + Vec3 spawn = this.getEyePosition().add(aim.scale(1.6D)).add(right.scale(i * 0.9D)); + bolt.setPos(spawn.x, spawn.y, spawn.z); + bolt.shoot(dir.x, dir.y, dir.z, 1.4F, 1.0F); + this.level().addFreshEntity(bolt); + } + this.playSound(SoundEvents.BREEZE_SHOOT, 1.2F, 0.9F); + } + + public boolean toggleMountedFlight(ServerPlayer player) { + if (!this.canControl(player)) { + return false; + } + this.setFlying(!this.isFlying()); + if (this.isFlying()) { + this.setDeltaMovement(this.getDeltaMovement().add(0.0D, 0.4D, 0.0D)); + this.hasImpulse = true; + } + return true; + } + + public void handleMountedBite(ServerPlayer player) { + if (this.canControl(player)) { + this.startBite(); + } + } + + public void handleMountedSpit(ServerPlayer player) { + if (this.canControl(player)) { + this.startSpitVolley(null); + } + } + + public void setRiderAscend(boolean pressed) { + this.riderAscendPressed = pressed; + } + + public void setRiderDescend(boolean pressed) { + this.riderDescendPressed = pressed; + } + + private boolean canControl(ServerPlayer player) { + return this.isTame() && this.isOwnedBy(player) && this.getControllingPassenger() == player; + } + + @Nullable + @Override + public LivingEntity getControllingPassenger() { + return this.getFirstPassenger() instanceof Player player && this.isSaddled() && this.isOwnedBy(player) ? player : null; + } + + @Override + public boolean canAddPassenger(Entity passenger) { + return this.getPassengers().isEmpty(); + } + + @Override + protected void positionRider(Entity passenger, MoveFunction moveFunction) { + if (!this.hasPassenger(passenger)) { + return; + } + double yOffset = (this.isFlying() ? 1.55D : 1.35D) * this.getAgeScale(); + Vec3 back = this.getLookAngle().scale(-0.35D * this.getAgeScale()); + moveFunction.accept(passenger, this.getX() + back.x, this.getY() + yOffset, this.getZ() + back.z); + } + + @Override + protected Vec3 getRiddenInput(Player rider, Vec3 travelVector) { + double vertical = 0.0D; + if (this.isFlying()) { + if (this.riderAscendPressed) { + vertical += 0.4D; + } + if (this.riderDescendPressed || rider.isSecondaryUseActive()) { + vertical -= 0.4D; + } + if (rider.zza > 0.0F) { + vertical -= Math.sin(Math.toRadians(rider.getXRot())) * 0.6D; + } + } + return new Vec3(rider.xxa * 0.35D, vertical, rider.zza); + } + + @Override + protected float getRiddenSpeed(Player rider) { + return (float) this.getAttributeValue(this.isFlying() ? Attributes.FLYING_SPEED : Attributes.MOVEMENT_SPEED) + * (this.isFlying() ? 0.4F : 1.0F); + } + + @Override + public void travel(Vec3 travelVector) { + if (!(this.getControllingPassenger() instanceof Player rider) || !this.isVehicle()) { + super.travel(travelVector); + return; + } + + this.setYRot(rider.getYRot()); + this.yBodyRot = this.getYRot(); + this.yHeadRot = this.getYRot(); + this.setXRot(rider.getXRot() * 0.5F); + + Vec3 input = this.getRiddenInput(rider, travelVector); + this.setSpeed(this.getRiddenSpeed(rider)); + + if (this.isFlying()) { + this.moveRelative(this.getSpeed(), new Vec3(input.x, 0.0D, input.z)); + Vec3 motion = this.getDeltaMovement(); + this.setDeltaMovement(motion.x, (motion.y + input.y) * 0.9D, motion.z); + this.move(MoverType.SELF, this.getDeltaMovement()); + this.setDeltaMovement(this.getDeltaMovement().scale(0.91D)); + this.fallDistance = 0.0F; + } else { + super.travel(new Vec3(input.x, travelVector.y, input.z)); + } + } + + @Override + public boolean causeFallDamage(float fallDistance, float multiplier, DamageSource source) { + return false; + } + + @Override + public float maxUpStep() { + return 1.5F; + } + + @Override + public boolean removeWhenFarAway(double distanceToClosestPlayer) { + return false; + } + + @Override + public void registerControllers(AnimatableManager.ControllerRegistrar controllers) { + controllers.add(new AnimationController<>(this, "main", 2, this::animController) + .triggerableAnim("bite", BITE_ANIM) + .triggerableAnim("fly_bite", FLY_BITE_ANIM) + .triggerableAnim("shoot", SHOOT_ANIM) + .triggerableAnim("fly_shoot", FLY_SHOOT_ANIM)); + } + + private PlayState animController(AnimationState state) { + return switch (this.getAnimState()) { + case ANIM_WALK -> state.setAndContinue(WALK_ANIM); + case ANIM_FLY, ANIM_FLY_BITE, ANIM_FLY_SHOOT -> state.setAndContinue(FLY_ANIM); + default -> state.setAndContinue(this.quirkTimer > 0 ? QUIRK_ANIM : IDLE_ANIM); + }; + } + + @Override + public AnimatableInstanceCache getAnimatableInstanceCache() { + return this.geoCache; + } + + public String geoNameForRender() { + return this.geoName(); + } +} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/royal/RoyalMountFollowOwnerGoal.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/royal/RoyalMountFollowOwnerGoal.java new file mode 100644 index 00000000..b85c10b3 --- /dev/null +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/royal/RoyalMountFollowOwnerGoal.java @@ -0,0 +1,84 @@ +package com.craisinlord.antarchy.content.entity.royal; + +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.ai.goal.Goal; +import net.minecraft.world.phys.Vec3; + +public class RoyalMountFollowOwnerGoal extends Goal { + private static final double START_DISTANCE = 12.0D; + private static final double STOP_DISTANCE = 6.0D; + private static final double TELEPORT_DISTANCE = 48.0D; + + private final RoyalMountEntity mount; + private LivingEntity owner; + private int recalcTimer; + + public RoyalMountFollowOwnerGoal(RoyalMountEntity mount) { + this.mount = mount; + } + + @Override + public boolean canUse() { + if (!this.mount.isTame() || this.mount.isVehicle() || this.mount.isOrderedToSit()) { + return false; + } + LivingEntity potentialOwner = this.mount.getOwner(); + if (potentialOwner == null || potentialOwner.isSpectator()) { + return false; + } + if (this.mount.distanceToSqr(potentialOwner) < START_DISTANCE * START_DISTANCE) { + return false; + } + this.owner = potentialOwner; + return true; + } + + @Override + public boolean canContinueToUse() { + return !this.mount.getNavigation().isDone() + && this.mount.distanceToSqr(this.owner) > STOP_DISTANCE * STOP_DISTANCE + && !this.mount.isOrderedToSit(); + } + + @Override + public void start() { + this.recalcTimer = 0; + } + + @Override + public void stop() { + this.owner = null; + this.mount.getNavigation().stop(); + this.mount.setFlying(false); + } + + @Override + public void tick() { + this.mount.getLookControl().setLookAt(this.owner, 10.0F, this.mount.getMaxHeadXRot()); + + double distanceSqr = this.mount.distanceToSqr(this.owner); + if (distanceSqr > TELEPORT_DISTANCE * TELEPORT_DISTANCE) { + this.mount.teleportTo(this.owner.getX(), this.owner.getY(), this.owner.getZ()); + return; + } + + boolean ownerAirborne = !this.owner.onGround() || (this.owner.getY() - this.mount.getY()) > 3.0D; + this.mount.setFlying(ownerAirborne || distanceSqr > 24.0D * 24.0D); + + if (--this.recalcTimer <= 0) { + this.recalcTimer = 10; + if (this.mount.isFlying()) { + Vec3 to = this.owner.position().subtract(this.mount.position()); + Vec3 step = this.mount.position().add(to.normalize().scale(Math.min(to.length(), 8.0D))); + this.mount.getMoveControl().setWantedPosition(step.x, step.y + 1.0D, step.z, 1.2D); + } else { + this.mount.getNavigation().moveTo(this.owner, 1.1D); + } + } + } + + @Override + public boolean requiresUpdateEveryTick() { + return true; + } +} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/royal/RoyalMountSpitGoal.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/royal/RoyalMountSpitGoal.java new file mode 100644 index 00000000..09358abb --- /dev/null +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/royal/RoyalMountSpitGoal.java @@ -0,0 +1,49 @@ +package com.craisinlord.antarchy.content.entity.royal; + +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.ai.goal.Goal; + +public class RoyalMountSpitGoal extends Goal { + private final RoyalMountEntity mount; + private int cooldown; + + public RoyalMountSpitGoal(RoyalMountEntity mount) { + this.mount = mount; + } + + @Override + public boolean canUse() { + if (this.mount.isBaby() || this.mount.isVehicle() || this.mount.isOrderedToSit()) { + return false; + } + LivingEntity target = this.mount.getTarget(); + if (target == null || !target.isAlive()) { + return false; + } + double distance = this.mount.distanceTo(target); + return distance > 5.0D && distance < 20.0D && this.mount.hasLineOfSight(target); + } + + @Override + public void start() { + this.cooldown = 20; + } + + @Override + public void tick() { + LivingEntity target = this.mount.getTarget(); + if (target == null) { + return; + } + this.mount.getLookControl().setLookAt(target, 30.0F, 30.0F); + if (this.cooldown-- <= 0) { + this.mount.startSpitVolley(target); + this.cooldown = 60; + } + } + + @Override + public boolean requiresUpdateEveryTick() { + return true; + } +} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/vortex/WindVortexEntity.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/vortex/WindVortexEntity.java index 519ce1f8..d1d67a6b 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/vortex/WindVortexEntity.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/vortex/WindVortexEntity.java @@ -58,6 +58,10 @@ public class WindVortexEntity extends Entity { private static final String AXIS_X_KEY = "AxisX"; private static final String AXIS_Y_KEY = "AxisY"; private static final String AXIS_Z_KEY = "AxisZ"; + private static final String TRAVEL_X_KEY = "TravelX"; + private static final String TRAVEL_Y_KEY = "TravelY"; + private static final String TRAVEL_Z_KEY = "TravelZ"; + private static final String TRAVELLING_KEY = "Travelling"; private static final double BASE_RADIUS = 0.35D; private static final double DRIFT_FRICTION = 0.96D; @@ -65,13 +69,17 @@ public class WindVortexEntity extends Entity { public enum VortexMode { UPWARD, LENS_PULL, - LENS_PUSH + LENS_PUSH, + GATHER_RETURN } private int age; private int durationTicks = 140; private double pullStrength = 0.32D; private double launchStrength = 1.0D; + private float damageOverride = -1.0F; + private Vec3 travelVelocity = Vec3.ZERO; + private boolean travelling = false; private final Map carriedProgress = new HashMap<>(); @Nullable private UUID ownerUuid; @@ -130,9 +138,22 @@ public class WindVortexEntity extends Entity { return; } - Vec3 drift = this.getDeltaMovement().multiply(DRIFT_FRICTION, DRIFT_FRICTION, DRIFT_FRICTION); - this.setDeltaMovement(drift); - this.move(net.minecraft.world.entity.MoverType.SELF, drift); + if (this.travelling) { + Vec3 from = this.position(); + Vec3 to = from.add(this.travelVelocity); + HitResult blockHit = this.level().clip( + new ClipContext(from, to, ClipContext.Block.COLLIDER, ClipContext.Fluid.NONE, this)); + if (blockHit.getType() != HitResult.Type.MISS) { + this.fadeOut(); + return; + } + this.setDeltaMovement(this.travelVelocity); + this.move(net.minecraft.world.entity.MoverType.SELF, this.travelVelocity); + } else { + Vec3 drift = this.getDeltaMovement().multiply(DRIFT_FRICTION, DRIFT_FRICTION, DRIFT_FRICTION); + this.setDeltaMovement(drift); + this.move(net.minecraft.world.entity.MoverType.SELF, drift); + } if ((this.tickCount & 1) == 0) { this.applyVortexForces(); @@ -210,6 +231,12 @@ public class WindVortexEntity extends Entity { continue; } + if (mode == VortexMode.GATHER_RETURN && this.age >= this.gatherReturnAtAge()) { + this.launchTowardOwner(entity); + iterator.remove(); + continue; + } + if (mode == VortexMode.UPWARD && progress >= 0.92D) { this.launch(entity, this.radialVectorAt(entity, progress, basis), progress, basis); iterator.remove(); @@ -264,7 +291,7 @@ public class WindVortexEntity extends Entity { double horizontal = Math.max(0.08D, radialVector.length()); Vec3 radial = radialVector.lengthSqr() < 1.0E-6D ? basis.sideA : radialVector.scale(1.0D / horizontal); Vec3 tangent = basis.axis.cross(radial).normalize(); - double targetRadius = mode == VortexMode.LENS_PULL + double targetRadius = mode == VortexMode.LENS_PULL || mode == VortexMode.GATHER_RETURN ? Math.max(0.05D, radius * 0.18D) : Mth.lerp(shapeProgress, BASE_RADIUS, radius * 0.82D); double radialError = targetRadius - horizontal; @@ -276,6 +303,7 @@ public class WindVortexEntity extends Entity { case LENS_PULL -> -(0.18D + (1.0D - progress) * 0.18D) * massScale; case LENS_PUSH -> (0.18D + progress * 0.22D) * massScale; case UPWARD -> (0.13D + progress * 0.16D) * massScale; + case GATHER_RETURN -> (0.05D + progress * 0.08D) * massScale; } * playerScale; if (mode == VortexMode.UPWARD && entity instanceof Player && entity.onGround()) { axialSpeed = Math.max(axialSpeed, 0.38D); @@ -315,8 +343,36 @@ public class WindVortexEntity extends Entity { if (living.getType().is(AntarchyTags.Entities.WIND_VORTEX_IMMUNE)) { return; } - float damage = (float) (2.0D * Mth.clamp(this.getTopRadius() / 1.5D, 0.5D, 3.0D)); - living.hurt(this.damageSource(), damage); + living.hurt(this.damageSource(), this.resolveDamage()); + } + + private float resolveDamage() { + if (this.damageOverride >= 0.0F) { + return this.damageOverride; + } + return (float) (2.0D * Mth.clamp(this.getTopRadius() / 1.5D, 0.5D, 3.0D)); + } + + private int gatherReturnAtAge() { + return Math.max(10, (int) (this.durationTicks * 0.55D)); + } + + private void launchTowardOwner(Entity entity) { + Entity owner = this.getOwnerEntity(); + Vec3 target = owner != null ? owner.getEyePosition() : this.position().add(0.0D, 1.0D, 0.0D); + Vec3 toOwner = target.subtract(entity.position()); + double distance = toOwner.length(); + Vec3 direction = distance < 1.0E-4D ? new Vec3(0.0D, 1.0D, 0.0D) : toOwner.scale(1.0D / distance); + double arc = Mth.clamp(distance * 0.06D, 0.25D, 1.1D); + double power = this.launchStrength * Mth.clamp(distance / 6.0D, 0.6D, 2.0D); + entity.setDeltaMovement(direction.scale(power).add(0.0D, arc, 0.0D)); + entity.fallDistance = 0.0F; + entity.hasImpulse = true; + entity.hurtMarked = true; + if (this.isDamaging() && entity instanceof LivingEntity living + && !living.getType().is(AntarchyTags.Entities.WIND_VORTEX_IMMUNE)) { + living.hurt(this.damageSource(), this.resolveDamage()); + } } private DamageSource damageSource() { @@ -393,11 +449,21 @@ public class WindVortexEntity extends Entity { this.age = 0; } + public void setTravel(Vec3 velocity) { + this.travelVelocity = velocity; + this.travelling = true; + this.noPhysics = true; + } + public void setVortexStrengths(double pullStrength, double launchStrength) { this.pullStrength = Math.max(0.0D, pullStrength); this.launchStrength = Math.max(0.0D, launchStrength); } + public void setDamageOverride(float damage) { + this.damageOverride = damage; + } + public void removeFromLens() { this.fadeOut(); } @@ -424,6 +490,11 @@ public class WindVortexEntity extends Entity { this.setDamaging(tag.getBoolean(DAMAGING_KEY)); this.setMode(VortexMode.values()[Mth.clamp(tag.getInt(MODE_KEY), 0, VortexMode.values().length - 1)]); this.setAxis(new Vec3(tag.getFloat(AXIS_X_KEY), tag.getFloat(AXIS_Y_KEY), tag.getFloat(AXIS_Z_KEY))); + this.travelling = tag.getBoolean(TRAVELLING_KEY); + this.travelVelocity = new Vec3(tag.getDouble(TRAVEL_X_KEY), tag.getDouble(TRAVEL_Y_KEY), tag.getDouble(TRAVEL_Z_KEY)); + if (this.travelling) { + this.noPhysics = true; + } if (tag.hasUUID(OWNER_KEY)) { this.ownerUuid = tag.getUUID(OWNER_KEY); } @@ -442,6 +513,10 @@ public class WindVortexEntity extends Entity { tag.putFloat(AXIS_X_KEY, (float) this.getAxis().x); tag.putFloat(AXIS_Y_KEY, (float) this.getAxis().y); tag.putFloat(AXIS_Z_KEY, (float) this.getAxis().z); + tag.putBoolean(TRAVELLING_KEY, this.travelling); + tag.putDouble(TRAVEL_X_KEY, this.travelVelocity.x); + tag.putDouble(TRAVEL_Y_KEY, this.travelVelocity.y); + tag.putDouble(TRAVEL_Z_KEY, this.travelVelocity.z); if (this.ownerUuid != null) { tag.putUUID(OWNER_KEY, this.ownerUuid); } diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/EyeOfTheStormItem.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/EyeOfTheStormItem.java new file mode 100644 index 00000000..0133bdb5 --- /dev/null +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/EyeOfTheStormItem.java @@ -0,0 +1,181 @@ +package com.craisinlord.antarchy.content.item; + +import com.craisinlord.antarchy.config.AntarchySettings; +import com.craisinlord.antarchy.content.AntarchyObjects; +import com.craisinlord.antarchy.content.client.model.ResourceBackedGeoItemModel; +import com.craisinlord.antarchy.content.client.renderer.AnimatedHeldItemRenderer; +import com.craisinlord.antarchy.content.entity.vortex.WindVortexEntity; +import java.util.List; +import java.util.Map; +import java.util.UUID; +import java.util.concurrent.ConcurrentHashMap; +import java.util.function.Consumer; +import net.minecraft.ChatFormatting; +import net.minecraft.core.Direction; +import net.minecraft.network.chat.Component; +import net.minecraft.network.protocol.game.ClientboundSetEntityMotionPacket; +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.stats.Stats; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResultHolder; +import net.minecraft.world.entity.EquipmentSlot; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.TooltipFlag; +import net.minecraft.world.item.UseAnim; +import net.minecraft.world.level.Level; +import net.minecraft.world.phys.Vec3; +import software.bernie.geckolib.animatable.GeoItem; +import software.bernie.geckolib.animatable.client.GeoRenderProvider; +import software.bernie.geckolib.animatable.instance.AnimatableInstanceCache; +import software.bernie.geckolib.animation.AnimatableManager; +import software.bernie.geckolib.animation.AnimationController; +import software.bernie.geckolib.animation.RawAnimation; +import software.bernie.geckolib.util.GeckoLibUtil; + +public class EyeOfTheStormItem extends Item implements GeoItem { + private static final ResourceLocation MODEL_LOCATION = ResourceLocation.fromNamespaceAndPath("antarchy", "geo/eye_of_the_storm.geo.json"); + private static final ResourceLocation TEXTURE_LOCATION = ResourceLocation.fromNamespaceAndPath("antarchy", "textures/item/eye_of_the_storm/eye_of_the_storm.png"); + private static final ResourceLocation ANIMATION_LOCATION = ResourceLocation.fromNamespaceAndPath("antarchy", "animations/eye_of_the_storm.animation.json"); + private static final String IDLE_CONTROLLER = "idle_controller"; + private static final String IDLE_ANIMATION = "spinning_idle"; + private static final Map LAST_UPDRAFT_TICK = new ConcurrentHashMap<>(); + private static final Map LAST_SURGE_TICK = new ConcurrentHashMap<>(); + private static final float SURGE_PROJECTILE_SPEED = 0.9F; + + private final AnimatableInstanceCache geoCache = GeckoLibUtil.createInstanceCache(this); + + public EyeOfTheStormItem(Properties properties) { + super(properties); + GeoItem.registerSyncedAnimatable(this); + } + + @Override + public InteractionResultHolder use(Level level, Player player, InteractionHand usedHand) { + ItemStack stack = player.getItemInHand(usedHand); + if (!AntarchySettings.eyeOfTheStormEnabled()) { + return InteractionResultHolder.fail(stack); + } + if (level.isClientSide) { + return InteractionResultHolder.consume(stack); + } + + long now = level.getGameTime(); + Long last = LAST_UPDRAFT_TICK.get(player.getUUID()); + if (last != null && now - last < AntarchySettings.eyeOfTheStormUpdraftCooldownTicks()) { + return InteractionResultHolder.fail(stack); + } + LAST_UPDRAFT_TICK.put(player.getUUID(), now); + + ServerLevel serverLevel = (ServerLevel) level; + WindVortexEntity vortex = WindVortexEntity.create( + serverLevel, + AntarchyObjects.WIND_VORTEX.get(), + player.position(), + Vec3.ZERO, + player, + false + ); + vortex.setMode(WindVortexEntity.VortexMode.UPWARD); + vortex.setAxis(Direction.UP); + vortex.setVortexSize((float) AntarchySettings.eyeOfTheStormUpdraftHeight(), (float) AntarchySettings.eyeOfTheStormUpdraftRadius()); + vortex.setVortexDurationTicks(AntarchySettings.eyeOfTheStormUpdraftDurationTicks()); + serverLevel.addFreshEntity(vortex); + + player.setDeltaMovement(player.getDeltaMovement().add(0.0D, AntarchySettings.eyeOfTheStormUpdraftLaunchStrength(), 0.0D)); + player.hasImpulse = true; + player.resetFallDistance(); + if (player instanceof ServerPlayer serverPlayer) { + serverPlayer.connection.send(new ClientboundSetEntityMotionPacket(serverPlayer)); + } + + serverLevel.playSound(null, player.getX(), player.getY(), player.getZ(), + SoundEvents.BREEZE_WIND_CHARGE_BURST, SoundSource.PLAYERS, 0.9F, 1.1F); + + player.awardStat(Stats.ITEM_USED.get(this)); + stack.hurtAndBreak(1, player, usedHand == InteractionHand.MAIN_HAND ? EquipmentSlot.MAINHAND : EquipmentSlot.OFFHAND); + return InteractionResultHolder.consume(stack); + } + + public void firePrimary(ServerLevel level, Player player, ItemStack stack) { + if (!AntarchySettings.eyeOfTheStormEnabled() || player.getMainHandItem() != stack) { + return; + } + + long now = level.getGameTime(); + Long last = LAST_SURGE_TICK.get(player.getUUID()); + if (last != null && now - last < AntarchySettings.eyeOfTheStormSurgeCooldownTicks()) { + return; + } + LAST_SURGE_TICK.put(player.getUUID(), now); + + Vec3 look = player.getViewVector(1.0F); + Vec3 spawn = player.getEyePosition().add(look); + + WindVortexEntity vortex = WindVortexEntity.create( + level, + AntarchyObjects.WIND_VORTEX.get(), + spawn, + Vec3.ZERO, + player, + true + ); + vortex.setMode(WindVortexEntity.VortexMode.UPWARD); + vortex.setAxis(Direction.UP); + vortex.setVortexSize((float) AntarchySettings.eyeOfTheStormSurgeHeight(), (float) AntarchySettings.eyeOfTheStormSurgeRadius()); + vortex.setVortexDurationTicks(AntarchySettings.eyeOfTheStormSurgeDurationTicks()); + vortex.setVortexStrengths(AntarchySettings.eyeOfTheStormSurgePullStrength(), AntarchySettings.eyeOfTheStormSurgeReturnStrength()); + vortex.setDamageOverride(AntarchySettings.eyeOfTheStormSurgeDamage()); + vortex.setTravel(look.scale(SURGE_PROJECTILE_SPEED)); + level.addFreshEntity(vortex); + + level.playSound(null, spawn.x, spawn.y, spawn.z, + SoundEvents.BREEZE_WIND_CHARGE_BURST, SoundSource.PLAYERS, 1.0F, 0.8F); + + player.awardStat(Stats.ITEM_USED.get(this)); + stack.hurtAndBreak(1, player, EquipmentSlot.MAINHAND); + } + + @Override + public UseAnim getUseAnimation(ItemStack stack) { + return UseAnim.NONE; + } + + @Override + public void appendHoverText(ItemStack stack, Item.TooltipContext context, List tooltipComponents, TooltipFlag tooltipFlag) { + tooltipComponents.add(Component.translatable("tooltip.antarchy.eye_of_the_storm.updraft").withStyle(ChatFormatting.AQUA)); + tooltipComponents.add(Component.translatable("tooltip.antarchy.eye_of_the_storm.surge").withStyle(ChatFormatting.AQUA)); + super.appendHoverText(stack, context, tooltipComponents, tooltipFlag); + } + + @Override + public void registerControllers(AnimatableManager.ControllerRegistrar controllers) { + controllers.add(new AnimationController<>(this, IDLE_CONTROLLER, state -> + state.setAndContinue(RawAnimation.begin().thenLoop(IDLE_ANIMATION)))); + } + + @Override + public AnimatableInstanceCache getAnimatableInstanceCache() { + return this.geoCache; + } + + @Override + public void createGeoRenderer(Consumer consumer) { + consumer.accept(new GeoRenderProvider() { + private AnimatedHeldItemRenderer renderer; + + @Override + public net.minecraft.client.renderer.BlockEntityWithoutLevelRenderer getGeoItemRenderer() { + if (this.renderer == null) { + this.renderer = new AnimatedHeldItemRenderer<>(new ResourceBackedGeoItemModel<>(MODEL_LOCATION, TEXTURE_LOCATION, ANIMATION_LOCATION)); + } + return this.renderer; + } + }); + } +} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/RoyalAssailantArmorItem.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/RoyalAssailantArmorItem.java new file mode 100644 index 00000000..6801f2cd --- /dev/null +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/RoyalAssailantArmorItem.java @@ -0,0 +1,157 @@ +package com.craisinlord.antarchy.content.item; + +import com.craisinlord.antarchy.config.AntarchySettings; +import com.craisinlord.antarchy.content.AntarchyObjects; +import com.craisinlord.antarchy.content.item.royal.RoyalGearHelper; +import java.util.List; +import net.minecraft.ChatFormatting; +import net.minecraft.core.Holder; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EquipmentSlot; +import net.minecraft.world.entity.EquipmentSlotGroup; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.ai.attributes.AttributeModifier; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ArmorItem; +import net.minecraft.world.item.ArmorMaterial; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.TooltipFlag; +import net.minecraft.world.item.component.ItemAttributeModifiers; +import net.minecraft.world.level.Level; + +public class RoyalAssailantArmorItem extends ArmorItem { + private final Type armorType; + + public RoyalAssailantArmorItem(Holder material, Type type, Properties properties) { + super(material, type, properties.stacksTo(1).durability(type.getDurability(AntarchySettings.royalArmorDurabilityMultiplier()))); + this.armorType = type; + } + + public Type getArmorType() { + return this.armorType; + } + + @Override + public int getDefense() { + return switch (this.armorType) { + case HELMET -> AntarchySettings.royalAssailantHelmetArmorValue(); + case CHESTPLATE, BODY -> AntarchySettings.royalAssailantChestplateArmorValue(); + case LEGGINGS -> AntarchySettings.royalAssailantLeggingsArmorValue(); + case BOOTS -> AntarchySettings.royalAssailantBootsArmorValue(); + }; + } + + @Override + public float getToughness() { + return (float) AntarchySettings.royalAssailantArmorToughness(); + } + + private double getDoubleDamageChance() { + return switch (this.armorType) { + case HELMET -> AntarchySettings.royalAssailantHelmetDoubleDamageChance(); + case CHESTPLATE, BODY -> AntarchySettings.royalAssailantChestplateDoubleDamageChance(); + case LEGGINGS -> AntarchySettings.royalAssailantLeggingsDoubleDamageChance(); + case BOOTS -> AntarchySettings.royalAssailantBootsDoubleDamageChance(); + }; + } + + @Override + public ItemAttributeModifiers getDefaultAttributeModifiers() { + String prefix = "royal_assailant_" + this.armorType.getName(); + EquipmentSlotGroup slot = EquipmentSlotGroup.bySlot(this.armorType.getSlot()); + ItemAttributeModifiers.Builder builder = ItemAttributeModifiers.builder() + .add(Attributes.ARMOR, + new AttributeModifier(ResourceLocation.withDefaultNamespace(prefix + "_armor"), getDefense(), AttributeModifier.Operation.ADD_VALUE), + slot) + .add(Attributes.ARMOR_TOUGHNESS, + new AttributeModifier(ResourceLocation.withDefaultNamespace(prefix + "_armor_toughness"), getToughness(), AttributeModifier.Operation.ADD_VALUE), + slot); + + float knockbackResistance = (float) AntarchySettings.royalAssailantArmorKnockbackResistance(); + if (knockbackResistance > 0.0F) { + builder.add(Attributes.KNOCKBACK_RESISTANCE, + new AttributeModifier(ResourceLocation.withDefaultNamespace(prefix + "_knockback_resistance"), knockbackResistance, AttributeModifier.Operation.ADD_VALUE), + slot); + } + + double doubleDamageChance = getDoubleDamageChance(); + if (doubleDamageChance > 0.0) { + builder.add(AntarchyObjects.DOUBLE_DAMAGE_CHANCE.get(), + new AttributeModifier(ResourceLocation.fromNamespaceAndPath("antarchy", prefix + "_double_damage_chance"), doubleDamageChance, AttributeModifier.Operation.ADD_VALUE), + slot); + } + return builder.build(); + } + + @Override + public boolean isEnchantable(ItemStack stack) { + return stack.getCount() == 1; + } + + @Override + public int getEnchantmentValue() { + return AntarchySettings.royalArmorEnchantability(); + } + + @Override + public void inventoryTick(ItemStack stack, Level level, Entity entity, int slotId, boolean isSelected) { + super.inventoryTick(stack, level, entity, slotId, isSelected); + RoyalGearHelper.ensureRoyalArmorEnchantments(stack, level.registryAccess()); + + if (level.isClientSide || this.armorType != Type.CHESTPLATE || !(entity instanceof LivingEntity living)) { + return; + } + if (!isWearingChestplate(living)) { + clearToggledInversion(living); + } + } + + @Override + public void onCraftedBy(ItemStack stack, Level level, Player player) { + super.onCraftedBy(stack, level, player); + RoyalGearHelper.ensureRoyalArmorEnchantments(stack, level.registryAccess()); + } + + @Override + public void appendHoverText(ItemStack stack, Item.TooltipContext context, List tooltipComponents, TooltipFlag tooltipFlag) { + int pct = (int) Math.round(getDoubleDamageChance() * 100); + tooltipComponents.add(Component.translatable("tooltip.antarchy.nightmare_armor_double_damage", pct).withStyle(ChatFormatting.LIGHT_PURPLE)); + if (this.armorType == Type.CHESTPLATE) { + tooltipComponents.add(Component.translatable("tooltip.antarchy.royal_assailant_chestplate.invert").withStyle(ChatFormatting.AQUA)); + } + if (this.armorType == Type.BOOTS) { + tooltipComponents.add(Component.translatable("tooltip.antarchy.royal_assailant_boots.fall").withStyle(ChatFormatting.AQUA)); + } + super.appendHoverText(stack, context, tooltipComponents, tooltipFlag); + } + + public static boolean isWearingChestplate(LivingEntity entity) { + return entity.getItemBySlot(EquipmentSlot.CHEST).getItem() instanceof RoyalAssailantArmorItem armor + && armor.armorType == Type.CHESTPLATE; + } + + public static void toggleInversion(ServerPlayer player) { + if (!isWearingChestplate(player)) { + return; + } + MobEffectInstance existing = player.getEffect(AntarchyObjects.INVERTED_EFFECT.get()); + if (existing != null && existing.isInfiniteDuration()) { + player.removeEffect(AntarchyObjects.INVERTED_EFFECT.get()); + } else { + player.addEffect(new MobEffectInstance(AntarchyObjects.INVERTED_EFFECT.get(), -1, 0, false, false, true)); + } + } + + private static void clearToggledInversion(LivingEntity entity) { + MobEffectInstance existing = entity.getEffect(AntarchyObjects.INVERTED_EFFECT.get()); + if (existing != null && existing.isInfiniteDuration()) { + entity.removeEffect(AntarchyObjects.INVERTED_EFFECT.get()); + } + } +} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/RoyalAssailantBattleAxeItem.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/RoyalAssailantBattleAxeItem.java new file mode 100644 index 00000000..5b5dc7b9 --- /dev/null +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/RoyalAssailantBattleAxeItem.java @@ -0,0 +1,49 @@ +package com.craisinlord.antarchy.content.item; + +import com.craisinlord.antarchy.config.AntarchySettings; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.EquipmentSlotGroup; +import net.minecraft.world.entity.ai.attributes.AttributeModifier; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.item.AxeItem; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Tier; +import net.minecraft.world.item.component.ItemAttributeModifiers; + +public class RoyalAssailantBattleAxeItem extends AxeItem { + private static final ResourceLocation REACH_MODIFIER_ID = ResourceLocation.fromNamespaceAndPath("antarchy", "royal_assailant_battleaxe_reach"); + private static final ResourceLocation KNOCKBACK_MODIFIER_ID = ResourceLocation.fromNamespaceAndPath("antarchy", "royal_assailant_battleaxe_knockback"); + private final Tier tier; + + public RoyalAssailantBattleAxeItem(Tier tier, Item.Properties properties) { + super(tier, properties); + this.tier = tier; + } + + @Override + public ItemAttributeModifiers getDefaultAttributeModifiers() { + return AxeItem.createAttributes( + this.tier, + (float) AntarchySettings.royalAssailantBattleAxeAttackDamage(), + (float) AntarchySettings.royalAssailantBattleAxeAttackSpeed()) + .withModifierAdded( + Attributes.ENTITY_INTERACTION_RANGE, + new AttributeModifier(REACH_MODIFIER_ID, AntarchySettings.royalWeaponAttackReachBonus(), AttributeModifier.Operation.ADD_VALUE), + EquipmentSlotGroup.MAINHAND) + .withModifierAdded( + Attributes.ATTACK_KNOCKBACK, + new AttributeModifier(KNOCKBACK_MODIFIER_ID, AntarchySettings.royalWeaponAttackKnockbackBonus() + 1.0D, AttributeModifier.Operation.ADD_VALUE), + EquipmentSlotGroup.MAINHAND); + } + + @Override + public boolean isEnchantable(ItemStack stack) { + return stack.getCount() == 1; + } + + @Override + public int getEnchantmentValue() { + return AntarchySettings.royalWeaponEnchantability(); + } +} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/RoyalGuardianArmorItem.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/RoyalGuardianArmorItem.java new file mode 100644 index 00000000..73b234ef --- /dev/null +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/RoyalGuardianArmorItem.java @@ -0,0 +1,87 @@ +package com.craisinlord.antarchy.content.item; + +import com.craisinlord.antarchy.config.AntarchySettings; +import com.craisinlord.antarchy.content.item.royal.RoyalGearHelper; +import net.minecraft.core.Holder; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EquipmentSlotGroup; +import net.minecraft.world.entity.ai.attributes.AttributeModifier; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ArmorItem; +import net.minecraft.world.item.ArmorMaterial; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.component.ItemAttributeModifiers; +import net.minecraft.world.level.Level; + +public class RoyalGuardianArmorItem extends ArmorItem { + private final Type armorType; + + public RoyalGuardianArmorItem(Holder material, Type type, Properties properties) { + super(material, type, properties.stacksTo(1).durability(type.getDurability(AntarchySettings.royalArmorDurabilityMultiplier()))); + this.armorType = type; + } + + public Type getArmorType() { + return this.armorType; + } + + @Override + public int getDefense() { + return switch (this.armorType) { + case HELMET -> AntarchySettings.royalGuardianHelmetArmorValue(); + case CHESTPLATE, BODY -> AntarchySettings.royalGuardianChestplateArmorValue(); + case LEGGINGS -> AntarchySettings.royalGuardianLeggingsArmorValue(); + case BOOTS -> AntarchySettings.royalGuardianBootsArmorValue(); + }; + } + + @Override + public float getToughness() { + return (float) AntarchySettings.royalGuardianArmorToughness(); + } + + @Override + public ItemAttributeModifiers getDefaultAttributeModifiers() { + String prefix = "royal_guardian_" + this.armorType.getName(); + EquipmentSlotGroup slot = EquipmentSlotGroup.bySlot(this.armorType.getSlot()); + ItemAttributeModifiers.Builder builder = ItemAttributeModifiers.builder() + .add(Attributes.ARMOR, + new AttributeModifier(ResourceLocation.withDefaultNamespace(prefix + "_armor"), getDefense(), AttributeModifier.Operation.ADD_VALUE), + slot) + .add(Attributes.ARMOR_TOUGHNESS, + new AttributeModifier(ResourceLocation.withDefaultNamespace(prefix + "_armor_toughness"), getToughness(), AttributeModifier.Operation.ADD_VALUE), + slot); + + float knockbackResistance = (float) AntarchySettings.royalGuardianArmorKnockbackResistance(); + if (knockbackResistance > 0.0F) { + builder.add(Attributes.KNOCKBACK_RESISTANCE, + new AttributeModifier(ResourceLocation.withDefaultNamespace(prefix + "_knockback_resistance"), knockbackResistance, AttributeModifier.Operation.ADD_VALUE), + slot); + } + return builder.build(); + } + + @Override + public boolean isEnchantable(ItemStack stack) { + return stack.getCount() == 1; + } + + @Override + public int getEnchantmentValue() { + return AntarchySettings.royalArmorEnchantability(); + } + + @Override + public void inventoryTick(ItemStack stack, Level level, Entity entity, int slotId, boolean isSelected) { + super.inventoryTick(stack, level, entity, slotId, isSelected); + RoyalGearHelper.ensureRoyalArmorEnchantments(stack, level.registryAccess()); + } + + @Override + public void onCraftedBy(ItemStack stack, Level level, Player player) { + super.onCraftedBy(stack, level, player); + RoyalGearHelper.ensureRoyalArmorEnchantments(stack, level.registryAccess()); + } +} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/RoyalGuardianShieldItem.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/RoyalGuardianShieldItem.java new file mode 100644 index 00000000..649f5c28 --- /dev/null +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/RoyalGuardianShieldItem.java @@ -0,0 +1,37 @@ +package com.craisinlord.antarchy.content.item; + +import com.craisinlord.antarchy.config.AntarchySettings; +import java.util.List; +import java.util.function.Supplier; +import net.minecraft.ChatFormatting; +import net.minecraft.network.chat.Component; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.ShieldItem; +import net.minecraft.world.item.TooltipFlag; +import net.minecraft.world.item.crafting.Ingredient; + +public class RoyalGuardianShieldItem extends ShieldItem { + private final Supplier repairIngredient; + + public RoyalGuardianShieldItem(Item.Properties properties, Supplier repairIngredient) { + super(properties); + this.repairIngredient = repairIngredient; + } + + @Override + public boolean isValidRepairItem(ItemStack stack, ItemStack repairCandidate) { + return this.repairIngredient.get().test(repairCandidate) || super.isValidRepairItem(stack, repairCandidate); + } + + @Override + public int getEnchantmentValue() { + return AntarchySettings.royalWeaponEnchantability(); + } + + @Override + public void appendHoverText(ItemStack stack, Item.TooltipContext context, List tooltipComponents, TooltipFlag tooltipFlag) { + tooltipComponents.add(Component.translatable("tooltip.antarchy.royal_guardian_shield").withStyle(ChatFormatting.GOLD)); + super.appendHoverText(stack, context, tooltipComponents, tooltipFlag); + } +} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/RoyalGuardianSwordItem.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/RoyalGuardianSwordItem.java new file mode 100644 index 00000000..0dcf72eb --- /dev/null +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/RoyalGuardianSwordItem.java @@ -0,0 +1,49 @@ +package com.craisinlord.antarchy.content.item; + +import com.craisinlord.antarchy.config.AntarchySettings; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.EquipmentSlotGroup; +import net.minecraft.world.entity.ai.attributes.AttributeModifier; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.SwordItem; +import net.minecraft.world.item.Tier; +import net.minecraft.world.item.component.ItemAttributeModifiers; + +public class RoyalGuardianSwordItem extends SwordItem { + private static final ResourceLocation REACH_MODIFIER_ID = ResourceLocation.fromNamespaceAndPath("antarchy", "royal_guardian_sword_reach"); + private static final ResourceLocation KNOCKBACK_MODIFIER_ID = ResourceLocation.fromNamespaceAndPath("antarchy", "royal_guardian_sword_knockback"); + private final Tier tier; + + public RoyalGuardianSwordItem(Tier tier, Item.Properties properties) { + super(tier, properties); + this.tier = tier; + } + + @Override + public ItemAttributeModifiers getDefaultAttributeModifiers() { + return SwordItem.createAttributes( + this.tier, + (int) Math.round(AntarchySettings.royalGuardianSwordAttackDamage()), + (float) AntarchySettings.royalGuardianSwordAttackSpeed()) + .withModifierAdded( + Attributes.ENTITY_INTERACTION_RANGE, + new AttributeModifier(REACH_MODIFIER_ID, AntarchySettings.royalWeaponAttackReachBonus(), AttributeModifier.Operation.ADD_VALUE), + EquipmentSlotGroup.MAINHAND) + .withModifierAdded( + Attributes.ATTACK_KNOCKBACK, + new AttributeModifier(KNOCKBACK_MODIFIER_ID, AntarchySettings.royalWeaponAttackKnockbackBonus(), AttributeModifier.Operation.ADD_VALUE), + EquipmentSlotGroup.MAINHAND); + } + + @Override + public boolean isEnchantable(ItemStack stack) { + return stack.getCount() == 1; + } + + @Override + public int getEnchantmentValue() { + return AntarchySettings.royalWeaponEnchantability(); + } +} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/royal/RoyalGearHelper.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/royal/RoyalGearHelper.java new file mode 100644 index 00000000..1bb9bdeb --- /dev/null +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/royal/RoyalGearHelper.java @@ -0,0 +1,51 @@ +package com.craisinlord.antarchy.content.item.royal; + +import com.craisinlord.antarchy.config.AntarchySettings; +import com.craisinlord.antarchy.content.item.RoyalAssailantArmorItem; +import net.minecraft.core.HolderLookup; +import net.minecraft.core.registries.Registries; +import net.minecraft.resources.ResourceKey; +import net.minecraft.world.entity.EquipmentSlot; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.enchantment.Enchantment; +import net.minecraft.world.item.enchantment.EnchantmentHelper; +import net.minecraft.world.item.enchantment.Enchantments; +import net.minecraft.world.item.enchantment.ItemEnchantments; + +public final class RoyalGearHelper { + private RoyalGearHelper() { + } + + public static ItemStack createRoyalArmorStack(net.minecraft.world.item.Item item, HolderLookup.Provider registries) { + ItemStack stack = new ItemStack(item); + ensureRoyalArmorEnchantments(stack, registries); + return stack; + } + + public static void ensureRoyalArmorEnchantments(ItemStack stack, HolderLookup.Provider registries) { + if (!AntarchySettings.royalArmorComesEnchanted()) { + return; + } + int level = AntarchySettings.royalArmorProtectionLevel(); + ItemEnchantments.Mutable enchantments = new ItemEnchantments.Mutable(stack.getEnchantments()); + setLevel(enchantments, registries, Enchantments.PROTECTION, level); + setLevel(enchantments, registries, Enchantments.FIRE_PROTECTION, level); + setLevel(enchantments, registries, Enchantments.PROJECTILE_PROTECTION, level); + setLevel(enchantments, registries, Enchantments.BLAST_PROTECTION, level); + EnchantmentHelper.setEnchantments(stack, enchantments.toImmutable().withTooltip(true)); + } + + private static void setLevel(ItemEnchantments.Mutable enchantments, HolderLookup.Provider registries, + ResourceKey key, int level) { + var enchantment = registries.lookupOrThrow(Registries.ENCHANTMENT).getOrThrow(key); + if (enchantments.getLevel(enchantment) < level) { + enchantments.set(enchantment, level); + } + } + + public static boolean hasUpwardFallImmunityBoots(LivingEntity entity) { + return entity.getItemBySlot(EquipmentSlot.FEET).getItem() instanceof RoyalAssailantArmorItem armor + && armor.getArmorType() == net.minecraft.world.item.ArmorItem.Type.BOOTS; + } +} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/network/EyeOfStormPrimaryPayload.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/network/EyeOfStormPrimaryPayload.java new file mode 100644 index 00000000..e7a2faba --- /dev/null +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/network/EyeOfStormPrimaryPayload.java @@ -0,0 +1,17 @@ +package com.craisinlord.antarchy.content.network; + +import com.craisinlord.antarchy.Antarchy; +import io.netty.buffer.ByteBuf; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.network.protocol.common.custom.CustomPacketPayload; +import net.minecraft.resources.ResourceLocation; + +public record EyeOfStormPrimaryPayload() implements CustomPacketPayload { + public static final Type TYPE = new Type<>(ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "eye_of_storm_primary")); + public static final StreamCodec STREAM_CODEC = StreamCodec.unit(new EyeOfStormPrimaryPayload()); + + @Override + public Type type() { + return TYPE; + } +} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/network/RoyalMountActionPayload.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/network/RoyalMountActionPayload.java new file mode 100644 index 00000000..276117be --- /dev/null +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/network/RoyalMountActionPayload.java @@ -0,0 +1,26 @@ +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 RoyalMountActionPayload(int action) implements CustomPacketPayload { + public static final int FLIGHT_TOGGLE = 0; + public static final int BITE = 1; + public static final int SPIT = 2; + + public static final Type TYPE = + new Type<>(ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "royal_mount_action")); + public static final StreamCodec STREAM_CODEC = StreamCodec.composite( + ByteBufCodecs.VAR_INT, RoyalMountActionPayload::action, + RoyalMountActionPayload::new + ); + + @Override + public Type type() { + return TYPE; + } +} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/network/RoyalMountVerticalPayload.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/network/RoyalMountVerticalPayload.java new file mode 100644 index 00000000..48498a7e --- /dev/null +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/network/RoyalMountVerticalPayload.java @@ -0,0 +1,23 @@ +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 RoyalMountVerticalPayload(boolean ascend, boolean descend) implements CustomPacketPayload { + public static final Type TYPE = + new Type<>(ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "royal_mount_vertical")); + public static final StreamCodec STREAM_CODEC = StreamCodec.composite( + ByteBufCodecs.BOOL, RoyalMountVerticalPayload::ascend, + ByteBufCodecs.BOOL, RoyalMountVerticalPayload::descend, + RoyalMountVerticalPayload::new + ); + + @Override + public Type type() { + return TYPE; + } +} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/network/ToggleRoyalInversionPayload.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/network/ToggleRoyalInversionPayload.java new file mode 100644 index 00000000..6d0216a1 --- /dev/null +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/network/ToggleRoyalInversionPayload.java @@ -0,0 +1,18 @@ +package com.craisinlord.antarchy.content.network; + +import com.craisinlord.antarchy.Antarchy; +import io.netty.buffer.ByteBuf; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.network.protocol.common.custom.CustomPacketPayload; +import net.minecraft.resources.ResourceLocation; + +public record ToggleRoyalInversionPayload() implements CustomPacketPayload { + public static final Type TYPE = + new Type<>(ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "toggle_royal_inversion")); + public static final StreamCodec STREAM_CODEC = StreamCodec.unit(new ToggleRoyalInversionPayload()); + + @Override + public Type type() { + return TYPE; + } +} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/worldgen/royal/RoyalTreeConfiguration.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/worldgen/royal/RoyalTreeConfiguration.java new file mode 100644 index 00000000..5e8186aa --- /dev/null +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/worldgen/royal/RoyalTreeConfiguration.java @@ -0,0 +1,29 @@ +package com.craisinlord.antarchy.content.worldgen.royal; + +import com.mojang.serialization.Codec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import net.minecraft.util.valueproviders.IntProvider; +import net.minecraft.world.level.levelgen.feature.configurations.FeatureConfiguration; +import net.minecraft.world.level.levelgen.feature.stateproviders.BlockStateProvider; + +public record RoyalTreeConfiguration( + BlockStateProvider trunkProvider, + BlockStateProvider leavesProvider, + IntProvider height, + IntProvider trunkDrift, + IntProvider canopyRadius, + IntProvider canopyLayers, + IntProvider branchCount, + IntProvider strutCount +) implements FeatureConfiguration { + public static final Codec CODEC = RecordCodecBuilder.create(instance -> instance.group( + BlockStateProvider.CODEC.fieldOf("trunk_provider").forGetter(RoyalTreeConfiguration::trunkProvider), + BlockStateProvider.CODEC.fieldOf("leaves_provider").forGetter(RoyalTreeConfiguration::leavesProvider), + IntProvider.codec(6, 48).fieldOf("height").forGetter(RoyalTreeConfiguration::height), + IntProvider.codec(0, 12).fieldOf("trunk_drift").forGetter(RoyalTreeConfiguration::trunkDrift), + IntProvider.codec(2, 14).fieldOf("canopy_radius").forGetter(RoyalTreeConfiguration::canopyRadius), + IntProvider.codec(1, 8).fieldOf("canopy_layers").forGetter(RoyalTreeConfiguration::canopyLayers), + IntProvider.codec(0, 8).fieldOf("branch_count").forGetter(RoyalTreeConfiguration::branchCount), + IntProvider.codec(0, 4).fieldOf("strut_count").forGetter(RoyalTreeConfiguration::strutCount) + ).apply(instance, RoyalTreeConfiguration::new)); +} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/worldgen/royal/RoyalTreeFeature.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/worldgen/royal/RoyalTreeFeature.java new file mode 100644 index 00000000..37d9700c --- /dev/null +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/worldgen/royal/RoyalTreeFeature.java @@ -0,0 +1,266 @@ +package com.craisinlord.antarchy.content.worldgen.royal; + +import com.craisinlord.antarchy.content.block.RoyalLeavesBlock; +import com.mojang.serialization.Codec; +import java.util.ArrayDeque; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Random; +import java.util.Set; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.util.Mth; +import net.minecraft.util.RandomSource; +import net.minecraft.world.level.WorldGenLevel; +import net.minecraft.world.level.block.LeavesBlock; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.levelgen.feature.Feature; +import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext; + +public class RoyalTreeFeature extends Feature { + public RoyalTreeFeature(Codec codec) { + super(codec); + } + + @Override + public boolean place(FeaturePlaceContext context) { + WorldGenLevel level = context.level(); + BlockPos origin = context.origin(); + RandomSource random = context.random(); + RoyalTreeConfiguration config = context.config(); + + for (int dx = 0; dx <= 1; dx++) { + for (int dz = 0; dz <= 1; dz++) { + BlockPos ground = origin.offset(dx, -1, dz); + if (!level.getBlockState(ground).isFaceSturdy(level, ground, Direction.UP)) { + return false; + } + if (!canReplace(level, origin.offset(dx, 0, dz))) { + return false; + } + } + } + + Set logs = new HashSet<>(); + Set leaves = new HashSet<>(); + + int height = config.height().sample(random); + int drift = config.trunkDrift().sample(random); + int backBend = Math.round(drift * 0.45F); + Direction driftDir = Direction.Plane.HORIZONTAL.getRandomDirection(random); + + int splitLen = 2 + random.nextInt(3); + int splitStartY = Math.max(2, height - splitLen); + + int[] topOffset = curveOffset(splitStartY, height, drift, backBend, driftDir); + + for (int y = 0; y < splitStartY; y++) { + int[] off = curveOffset(y, height, drift, backBend, driftDir); + for (int dx = 0; dx <= 1; dx++) { + for (int dz = 0; dz <= 1; dz++) { + placeLog(level, random, config, origin.offset(off[0] + dx, y, off[1] + dz), logs); + } + } + } + + placeButtress(level, random, config, origin, logs); + + int struts = Mth.clamp(config.strutCount().sample(random), 0, 4); + int[][] corners = {{0, 0}, {1, 0}, {0, 1}, {1, 1}}; + List pool = new ArrayList<>(List.of(corners)); + Collections.shuffle(pool, new Random(random.nextLong())); + for (int i = 0; i < struts && i < pool.size(); i++) { + int[] corner = pool.get(i); + int outX = corner[0] == 1 ? 1 : -1; + int outZ = corner[1] == 1 ? 1 : -1; + for (int y = splitStartY; y <= height; y++) { + int spread = Math.min((y - splitStartY + 1) / 2, 2); + int sx = topOffset[0] + corner[0] + outX * spread; + int sz = topOffset[1] + corner[1] + outZ * spread; + placeLog(level, random, config, origin.offset(sx, y, sz), logs); + } + } + + int radius = config.canopyRadius().sample(random); + int layers = config.canopyLayers().sample(random); + BlockPos canopyCenter = origin.offset(topOffset[0], height, topOffset[1]); + placeCanopy(level, random, config, canopyCenter, radius, layers, 2, 2, leaves); + + int branches = Mth.clamp(config.branchCount().sample(random), 0, 8); + int branchSpan = Math.max(1, height - 6); + for (int b = 0; b < branches; b++) { + int startY = 3 + random.nextInt(branchSpan); + int[] branchOff = curveOffset(startY, height, drift, backBend, driftDir); + Direction branchDir = Direction.Plane.HORIZONTAL.getRandomDirection(random); + int branchLen = 2 + random.nextInt(5); + int bx = branchOff[0] + (branchDir.getStepX() > 0 ? 1 : 0); + int bz = branchOff[1] + (branchDir.getStepZ() > 0 ? 1 : 0); + BlockPos cursor = origin.offset(bx, startY, bz); + for (int s = 1; s <= branchLen; s++) { + cursor = cursor.relative(branchDir); + if (s % 2 == 0) { + cursor = cursor.above(); + } + placeLog(level, random, config, cursor, logs); + } + int padRadius = 2 + random.nextInt(3); + placeCanopy(level, random, config, cursor.above(), padRadius, Math.max(2, padRadius - 1), 1, 0, leaves); + } + + refreshLeafDistances(level, leaves, logs); + + return true; + } + + private void placeButtress(WorldGenLevel level, RandomSource random, RoyalTreeConfiguration config, BlockPos origin, Set logs) { + int legs = 2 + random.nextInt(3); + List dirs = new ArrayList<>(Direction.Plane.HORIZONTAL.stream().toList()); + Collections.shuffle(dirs, new Random(random.nextLong())); + for (int i = 0; i < legs && i < dirs.size(); i++) { + Direction dir = dirs.get(i); + int len = 2 + random.nextInt(3); + int startX = dir.getStepX() > 0 ? 1 : 0; + int startZ = dir.getStepZ() > 0 ? 1 : 0; + BlockPos cursor = origin.offset(startX, 0, startZ); + for (int s = 1; s <= len; s++) { + cursor = cursor.relative(dir); + int downY = -(s / 2); + BlockPos upper = cursor.offset(0, downY, 0); + BlockPos lower = cursor.offset(0, downY - 1, 0); + setBlock(level, upper, config.trunkProvider().getState(random, upper)); + setBlock(level, lower, config.trunkProvider().getState(random, lower)); + logs.add(upper.immutable()); + logs.add(lower.immutable()); + } + } + } + + private void placeCanopy( + WorldGenLevel level, + RandomSource random, + RoyalTreeConfiguration config, + BlockPos center, + int radius, + int layers, + int shell, + int bottomRecess, + Set leaves + ) { + float rf = Math.max(1.0F, radius); + for (int dx = -radius - 1; dx <= radius + 1; dx++) { + for (int dz = -radius - 1; dz <= radius + 1; dz++) { + float d = Mth.sqrt(dx * dx + dz * dz); + float norm = d / rf; + if (norm > 1.05F) { + continue; + } + + int rimCut = 0; + if (norm > 0.7F && random.nextFloat() < 0.38F) { + rimCut = 1; + } + if (d - rimCut > rf) { + continue; + } + + int topY = Math.round(layers * Mth.sqrt(Math.max(0.0F, 1.0F - norm * norm))); + if (topY < 1) { + topY = 1; + } + int bottomY = Math.round(bottomRecess * (1.0F - Math.min(1.0F, norm))); + if (bottomY > topY) { + continue; + } + + for (int y = bottomY; y <= topY; y++) { + boolean interior = topY - y >= shell && y - bottomY >= shell && rf - d >= shell; + if (interior) { + continue; + } + placeLeaf(level, random, config, center.offset(dx, y, dz), leaves); + } + } + } + } + + private void placeLog(WorldGenLevel level, RandomSource random, RoyalTreeConfiguration config, BlockPos pos, Set logs) { + if (!canReplace(level, pos)) { + return; + } + setBlock(level, pos, config.trunkProvider().getState(random, pos)); + logs.add(pos.immutable()); + } + + private void placeLeaf(WorldGenLevel level, RandomSource random, RoyalTreeConfiguration config, BlockPos pos, Set leaves) { + BlockState existing = level.getBlockState(pos); + if (!existing.isAir() && !existing.canBeReplaced() && !(existing.getBlock() instanceof LeavesBlock)) { + return; + } + setBlock(level, pos, config.leavesProvider().getState(random, pos)); + leaves.add(pos.immutable()); + } + + private void refreshLeafDistances(WorldGenLevel level, Set leafPositions, Set logPositions) { + ArrayDeque queue = new ArrayDeque<>(logPositions); + Map distances = new HashMap<>(); + for (BlockPos logPos : logPositions) { + distances.put(logPos, 0); + } + + while (!queue.isEmpty()) { + BlockPos current = queue.removeFirst(); + int currentDistance = distances.getOrDefault(current, 0); + if (currentDistance >= RoyalLeavesBlock.ROYAL_MAX_DISTANCE) { + continue; + } + + for (Direction direction : Direction.values()) { + BlockPos next = current.relative(direction); + if (distances.containsKey(next)) { + continue; + } + if (!(level.getBlockState(next).getBlock() instanceof LeavesBlock)) { + continue; + } + distances.put(next, currentDistance + 1); + queue.addLast(next); + } + } + + for (BlockPos pos : leafPositions) { + BlockState state = level.getBlockState(pos); + if (!(state.getBlock() instanceof RoyalLeavesBlock)) { + continue; + } + int distance = Math.min( + RoyalLeavesBlock.ROYAL_DECAY_DISTANCE, + distances.getOrDefault(pos, RoyalLeavesBlock.ROYAL_DECAY_DISTANCE) + ); + if (state.getValue(RoyalLeavesBlock.ROYAL_DISTANCE) != distance) { + setBlock(level, pos, RoyalLeavesBlock.setRoyalDistanceForWorldgen(state, distance)); + } + } + } + + private static boolean canReplace(WorldGenLevel level, BlockPos pos) { + BlockState state = level.getBlockState(pos); + return state.isAir() || state.canBeReplaced() || state.getBlock() instanceof LeavesBlock; + } + + private static int[] curveOffset(int y, int height, int drift, int backBend, Direction dir) { + float f = height <= 1 ? 0.0F : (float) y / (height - 1); + float outPhase = smoothstep(0.0F, 0.6F, f); + float backPhase = smoothstep(0.55F, 1.0F, f); + int step = Math.round(drift * outPhase - backBend * backPhase); + return new int[]{dir.getStepX() * step, dir.getStepZ() * step}; + } + + private static float smoothstep(float edge0, float edge1, float x) { + float t = Mth.clamp((x - edge0) / (edge1 - edge0), 0.0F, 1.0F); + return t * t * (3.0F - 2.0F * t); + } +} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/worldgen/royal/RoyalTreeGrowers.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/worldgen/royal/RoyalTreeGrowers.java new file mode 100644 index 00000000..bd4b7676 --- /dev/null +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/worldgen/royal/RoyalTreeGrowers.java @@ -0,0 +1,20 @@ +package com.craisinlord.antarchy.content.worldgen.royal; + +import com.craisinlord.antarchy.Antarchy; +import net.minecraft.core.registries.Registries; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.levelgen.feature.ConfiguredFeature; + +public final class RoyalTreeGrowers { + public static final ResourceKey> ROYAL_TREE_SMALL = featureKey("royal_tree_small"); + public static final ResourceKey> ROYAL_TREE_MEDIUM = featureKey("royal_tree_medium"); + public static final ResourceKey> ROYAL_TREE_LARGE = featureKey("royal_tree_large"); + + private RoyalTreeGrowers() { + } + + private static ResourceKey> featureKey(String path) { + return ResourceKey.create(Registries.CONFIGURED_FEATURE, ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, path)); + } +} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/worldgen/truffalo/TruffaloTreeFeature.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/worldgen/truffalo/TruffaloTreeFeature.java index e741835f..25dd4374 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/worldgen/truffalo/TruffaloTreeFeature.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/worldgen/truffalo/TruffaloTreeFeature.java @@ -51,17 +51,19 @@ public class TruffaloTreeFeature extends Feature { for (int i = 0; i < height; i++) { trunk[i] = origin.above(i); } - BlockPos capCenter = trunk[height - 1].above(); + BlockPos capBase = trunk[height - 1].above(); for (BlockPos pos : trunk) { if (!canReplace(level, pos)) { return false; } } - for (int dx = -1; dx <= 1; dx++) { - for (int dz = -1; dz <= 1; dz++) { - if (!canReplace(level, capCenter.offset(dx, 0, dz))) { - return false; + for (int dy = 0; dy <= 2; dy++) { + for (int dx = -1; dx <= 1; dx++) { + for (int dz = -1; dz <= 1; dz++) { + if (!canReplace(level, capBase.offset(dx, dy, dz))) { + return false; + } } } } @@ -72,9 +74,11 @@ public class TruffaloTreeFeature extends Feature { Block tuft = BuiltInRegistries.BLOCK.get(ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, color.getName() + "_truffalo_tuft")); BlockState tuftState = tuft.defaultBlockState(); - for (int dx = -1; dx <= 1; dx++) { - for (int dz = -1; dz <= 1; dz++) { - setBlock(level, capCenter.offset(dx, 0, dz), tuftState); + for (int dy = 0; dy <= 2; dy++) { + for (int dx = -1; dx <= 1; dx++) { + for (int dz = -1; dz <= 1; dz++) { + setBlock(level, capBase.offset(dx, dy, dz), tuftState); + } } } diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/PlayerAttackMixin.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/PlayerAttackMixin.java index 2ea84d5c..0feef624 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/PlayerAttackMixin.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/gravity/PlayerAttackMixin.java @@ -1,6 +1,7 @@ package com.craisinlord.antarchy.mixins.gravity; import com.craisinlord.antarchy.config.AntarchySettings; +import com.craisinlord.antarchy.content.item.EyeOfTheStormItem; import com.craisinlord.antarchy.content.item.GravityGunItem; import com.craisinlord.antarchy.content.item.PrimordialArmorItem; import com.llamalad7.mixinextras.injector.wrapoperation.Operation; @@ -22,13 +23,13 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; public abstract class PlayerAttackMixin { @Inject(method = "attack", at = @At("HEAD"), cancellable = true) private void antarchy$blockGravityGunMelee(Entity target, CallbackInfo ci) { - if (!AntarchySettings.gravityGunEnabled()) { - return; - } - Player player = (Player) (Object) this; ItemStack mainHand = player.getMainHandItem(); - if (mainHand.getItem() instanceof GravityGunItem) { + if (AntarchySettings.gravityGunEnabled() && mainHand.getItem() instanceof GravityGunItem) { + ci.cancel(); + return; + } + if (AntarchySettings.eyeOfTheStormEnabled() && mainHand.getItem() instanceof EyeOfTheStormItem) { ci.cancel(); } } diff --git a/common-1.21.1/src/main/resources/assets/antarchy/animations/prince.animation.json b/common-1.21.1/src/main/resources/assets/antarchy/animations/prince.animation.json new file mode 100644 index 00000000..24799b15 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/animations/prince.animation.json @@ -0,0 +1,7144 @@ +{ + "format_version": "1.8.0", + "animations": { + "idle": { + "loop": true, + "animation_length": 4, + "bones": { + "torso": { + "rotation": { + "0.0": { + "post": { + "vector": [-12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [-12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck": { + "rotation": { + "0.0": { + "post": { + "vector": [-30, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [-30, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck2": { + "rotation": { + "0.0": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck3": { + "rotation": { + "0.0": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 15, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 15, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail": { + "rotation": { + "0.0": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.4167": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail2": { + "rotation": { + "0.0": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail3": { + "rotation": { + "0.0": { + "post": { + "vector": [27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.4583": { + "post": { + "vector": [-10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [0, -15, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, -15, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "jaw": { + "rotation": { + "0.0": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_right": { + "rotation": { + "0.0": { + "post": { + "vector": [5.63422, -17.07457, -3.43487] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [5.63422, -17.07457, -3.43487] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_right2": { + "rotation": { + "0.0": { + "post": { + "vector": [25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [32.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [25, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_right3": { + "rotation": { + "0.0": { + "post": { + "vector": [-10.23772, -12.3071, 2.20462] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-17.73772, -12.3071, 2.20462] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [-10.23772, -12.3071, 2.20462] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head_right": { + "rotation": { + "0.0": { + "post": { + "vector": [-9.21712, -8.44624, 11.33916] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-16.71712, -8.44624, 11.33916] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [-9.21712, -8.44624, 11.33916] + }, + "lerp_mode": "catmullrom" + } + } + }, + "jaw_right": { + "rotation": { + "0.0": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_left": { + "rotation": { + "0.0": { + "post": { + "vector": [5.63422, 17.07457, 3.43487] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [5.63422, 17.07457, 3.43487] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_left2": { + "rotation": { + "0.0": { + "post": { + "vector": [25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [32.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [25, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_left3": { + "rotation": { + "0.0": { + "post": { + "vector": [-10.23772, 12.3071, -2.20462] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-17.73772, 12.3071, -2.20462] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [-10.23772, 12.3071, -2.20462] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head_left": { + "rotation": { + "0.0": { + "post": { + "vector": [-9.21712, 8.44624, -11.33916] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-16.71712, 8.44624, -11.33916] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [-9.21712, 8.44624, -11.33916] + }, + "lerp_mode": "catmullrom" + } + } + }, + "jaw_left": { + "rotation": { + "0.0": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_upper_wing": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 45] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 40] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, 45] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_upper_wing2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -67.5] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, -47.5] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, -67.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_upper_wing": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -45] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, -40] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, -45] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_upper_wing2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 67.5] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 47.5] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, 67.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_lower_wing2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -25] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, -35] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, -25] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_lower_wing3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 45] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 27.5] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, 45] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_lower_wing2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 25] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 35] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, 25] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_lower_wing3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -45] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, -27.5] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, -45] + }, + "lerp_mode": "catmullrom" + } + } + } + } + }, + "walk": { + "loop": true, + "animation_length": 1, + "bones": { + "torso": { + "rotation": { + "0.0": { + "post": { + "vector": [-12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [-7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [-12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [-7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [-12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [0, -1, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [0, -1, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck": { + "rotation": { + "0.0": { + "post": { + "vector": [-30, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [-25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-30, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck2": { + "rotation": { + "0.0": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck3": { + "rotation": { + "0.0": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-45, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [-45, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "vector": [0, 0, 4] + }, + "0.2083": { + "vector": [0, 2, 1.08] + }, + "0.5": { + "vector": [0, -0.25, -4] + }, + "0.5833": { + "vector": [0, -0.25, -4] + }, + "1.0": { + "vector": [0, 0, 4] + } + } + }, + "tail": { + "rotation": { + "0.0": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail2": { + "rotation": { + "0.0": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail3": { + "rotation": { + "0.0": { + "post": { + "vector": [27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [-7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [-45, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.0833": { + "post": { + "vector": [-45, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-45, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "vector": [0, -0.25, -4] + }, + "0.0833": { + "vector": [0, -0.25, -4] + }, + "0.5": { + "vector": [0, 0, 4] + }, + "0.7083": { + "vector": [0, 2, 1.08] + }, + "1.0": { + "vector": [0, -0.25, -4] + } + } + }, + "right_foot": { + "rotation": { + "0.0": { + "post": { + "vector": [-12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [45, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [40, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.875": { + "post": { + "vector": [13.36, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_foot": { + "rotation": { + "0.0": { + "post": { + "vector": [45, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [40, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [13.36, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.9167": { + "post": { + "vector": [57.13, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [45, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "jaw": { + "rotation": { + "0.0": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [2.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_right": { + "rotation": { + "0.0": { + "post": { + "vector": [5.63422, -17.07457, -3.43487] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0.63422, -17.07457, -3.43487] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [5.63422, -17.07457, -3.43487] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_right2": { + "rotation": { + "0.0": { + "post": { + "vector": [25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [25, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_right3": { + "rotation": { + "0.0": { + "post": { + "vector": [-10.23772, -12.3071, 2.20462] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-17.73772, -12.3071, 2.20462] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-10.23772, -12.3071, 2.20462] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head_right": { + "rotation": { + "0.0": { + "post": { + "vector": [-9.21712, -8.44624, 11.33916] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-16.71712, -8.44624, 11.33916] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-9.21712, -8.44624, 11.33916] + }, + "lerp_mode": "catmullrom" + } + } + }, + "jaw_right": { + "rotation": { + "0.0": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [2.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_left": { + "rotation": { + "0.0": { + "post": { + "vector": [5.63422, 17.07457, 3.43487] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0.63422, 17.07457, 3.43487] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [5.63422, 17.07457, 3.43487] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_left2": { + "rotation": { + "0.0": { + "post": { + "vector": [25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [25, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_left3": { + "rotation": { + "0.0": { + "post": { + "vector": [-10.23772, 12.3071, -2.20462] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-17.73772, 12.3071, -2.20462] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-10.23772, 12.3071, -2.20462] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head_left": { + "rotation": { + "0.0": { + "post": { + "vector": [-9.21712, 8.44624, -11.33916] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-16.71712, 8.44624, -11.33916] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-9.21712, 8.44624, -11.33916] + }, + "lerp_mode": "catmullrom" + } + } + }, + "jaw_left": { + "rotation": { + "0.0": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [2.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_upper_wing": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 17.5] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, -10] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 17.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_upper_wing2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 42.5] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [0, 0, -12.5] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 42.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_upper_wing": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -17.5] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 10] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, -17.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_upper_wing2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -42.5] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [0, 0, 12.5] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, -42.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_lower_wing2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -25] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, -37.5] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, -25] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_lower_wing3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 45] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 32.5] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 45] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_lower_wing2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 25] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 37.5] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 25] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_lower_wing3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -45] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, -32.5] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, -45] + }, + "lerp_mode": "catmullrom" + } + } + } + } + }, + "fly": { + "loop": true, + "animation_length": 0.7917, + "bones": { + "neck": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [-7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5417": { + "post": { + "vector": [-12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [50, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail": { + "rotation": { + "0.0": { + "post": { + "vector": [-17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [-17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail2": { + "rotation": { + "0.0": { + "post": { + "vector": [-20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [-20, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail3": { + "rotation": { + "0.0": { + "post": { + "vector": [-20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [30, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [-20, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_foot": { + "rotation": { + "0.0": { + "post": { + "vector": [27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [50, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_foot": { + "rotation": { + "0.0": { + "post": { + "vector": [27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "jaw": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_right2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_right3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [12.4954, 0.23276, 0.2745] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head_right": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_left2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_left3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [12.4954, -0.23276, -0.2745] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head_left": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_upper_wing": { + "rotation": { + "0.0": { + "post": { + "vector": [-17.5, 0, 42.5] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [2.34229, 20.55558, -53.81138] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [-17.5, 0, 42.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_upper_wing2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [0, 0, 32.5] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, -47.5] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_upper_wing": { + "rotation": { + "0.0": { + "post": { + "vector": [-17.5, 0, -42.5] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [2.34229, -20.55558, 53.81138] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [-17.5, 0, -42.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_upper_wing2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [0, 0, -32.5] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 47.5] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_lower_wing2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 12.5] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [0, 0, -10] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [0, 0, -75] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [3.31914, 14.63639, -62.07362] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, 12.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_lower_wing3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [0, 0, -60] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_lower_wing2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -12.5] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [0, 0, 10] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [0, 0, 75] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [3.31914, -14.63639, 62.07362] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, -12.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_lower_wing3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [0, 0, 60] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "prince": { + "position": { + "0.0": { + "post": { + "vector": [0, 6, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [0, 12, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [0, 6, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, 12, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 6, 0] + }, + "lerp_mode": "catmullrom" + } + } + } + } + }, + "quirk": { + "loop": true, + "animation_length": 4, + "bones": { + "torso": { + "rotation": { + "0.0": { + "post": { + "vector": [-12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0417": { + "post": { + "vector": [-9.81103, -12.29231, 2.14121] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [7.56411, -13.13766, 2.28847] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [-12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "vector": [0, 0, 0] + }, + "1.25": { + "vector": [0, 3, 0] + }, + "4.0": { + "vector": [0, 0, 0] + } + } + }, + "neck": { + "rotation": { + "0.0": { + "post": { + "vector": [-30, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [-44.33, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [-30, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck2": { + "rotation": { + "0.0": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [17.7, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [-7.21, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [21.6, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.3333": { + "post": { + "vector": [17.7, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5417": { + "post": { + "vector": [-7.21, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck3": { + "rotation": { + "0.0": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [35.29, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [42.95, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [-4.99, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [24.24, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.3333": { + "post": { + "vector": [35.29, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.4167": { + "post": { + "vector": [42.95, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5417": { + "post": { + "vector": [-4.99, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 15, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [0, 15, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.9583": { + "post": { + "vector": [-14.99655, 15, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.125": { + "post": { + "vector": [0.11231, 15, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 15, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.8333": { + "vector": [0, 0, 0] + }, + "1.0417": { + "vector": [0, 4, 0] + }, + "1.125": { + "vector": [-2, 0, -6] + }, + "4.0": { + "vector": [0, 0, 0] + } + } + }, + "tail": { + "rotation": { + "0.0": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.4167": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail2": { + "rotation": { + "0.0": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.3333": { + "post": { + "vector": [26.27, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail3": { + "rotation": { + "0.0": { + "post": { + "vector": [27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.3333": { + "post": { + "vector": [33.58, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.4583": { + "post": { + "vector": [-10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [0, -15, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, -15, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [34.71, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [48.97, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [-16.71, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.3333": { + "post": { + "vector": [34.71, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.4583": { + "post": { + "vector": [48.97, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5417": { + "post": { + "vector": [-16.71, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "jaw": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [38, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [1.34, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.4583": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5417": { + "post": { + "vector": [38, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_right": { + "rotation": { + "0.0": { + "post": { + "vector": [5.63422, -17.07457, -3.43487] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [5.63422, -17.07457, -3.43487] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_right2": { + "rotation": { + "0.0": { + "post": { + "vector": [25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.4167": { + "post": { + "vector": [48.46, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [32.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [25, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_right3": { + "rotation": { + "0.0": { + "post": { + "vector": [-10.23772, -12.3071, 2.20462] + }, + "lerp_mode": "catmullrom" + }, + "1.4167": { + "post": { + "vector": [-28.73897, -12.3071, 2.20462] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-17.73772, -12.3071, 2.20462] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [-10.23772, -12.3071, 2.20462] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head_right": { + "rotation": { + "0.0": { + "post": { + "vector": [-9.21712, -8.44624, 11.33916] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [-14.47444, -37.68306, 18.44903] + }, + "lerp_mode": "catmullrom" + }, + "1.4167": { + "post": { + "vector": [-34.12541, -21.56564, 14.52957] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-16.71712, -8.44624, 11.33916] + }, + "lerp_mode": "catmullrom" + }, + "2.7917": { + "post": { + "vector": [16.7792, -7.75782, 11.17175] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [-9.21712, -8.44624, 11.33916] + }, + "lerp_mode": "catmullrom" + } + } + }, + "jaw_right": { + "rotation": { + "0.0": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.2083": { + "post": { + "vector": [22.79, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5417": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_left": { + "rotation": { + "0.0": { + "post": { + "vector": [5.63422, 17.07457, 3.43487] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [5.63422, 17.07457, 3.43487] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_left2": { + "rotation": { + "0.0": { + "post": { + "vector": [25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.875": { + "post": { + "vector": [27.23421, -6.99078, 13.30456] + }, + "lerp_mode": "catmullrom" + }, + "1.0417": { + "post": { + "vector": [24.51172, 15.38736, -29.84292] + }, + "lerp_mode": "catmullrom" + }, + "1.2917": { + "post": { + "vector": [27.23421, -6.99078, 13.30456] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [22.22056, 18.68378, -37.70361] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [32.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [25, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_left3": { + "rotation": { + "0.0": { + "post": { + "vector": [-10.23772, 12.3071, -2.20462] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [-10.23772, 12.3071, -2.20462] + }, + "lerp_mode": "catmullrom" + }, + "0.875": { + "post": { + "vector": [-9.61769, 15.30092, 12.93508] + }, + "lerp_mode": "catmullrom" + }, + "1.0417": { + "post": { + "vector": [-18.04272, 3.46685, -31.97249] + }, + "lerp_mode": "catmullrom" + }, + "1.2917": { + "post": { + "vector": [-9.61769, 15.30092, 12.93508] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [-17.90194, -4.42641, -56.62924] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-17.73772, 12.3071, -2.20462] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [-10.23772, 12.3071, -2.20462] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head_left": { + "rotation": { + "0.0": { + "post": { + "vector": [-9.21712, 8.44624, -11.33916] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [-9.21712, 8.44624, -11.33916] + }, + "lerp_mode": "catmullrom" + }, + "0.875": { + "post": { + "vector": [-3.2996, 14.49432, 31.65044] + }, + "lerp_mode": "catmullrom" + }, + "1.0417": { + "post": { + "vector": [-9.21569, -15.35169, 13.44653] + }, + "lerp_mode": "catmullrom" + }, + "1.2917": { + "post": { + "vector": [-3.2996, 14.49432, 31.65044] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [-3.99029, 5.4146, 29.85092] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-16.71712, 8.44624, -11.33916] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [-9.21712, 8.44624, -11.33916] + }, + "lerp_mode": "catmullrom" + } + } + }, + "jaw_left": { + "rotation": { + "0.0": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_upper_wing": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 45] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [0, 0, 73.68] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 40] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, 45] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_upper_wing2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -67.5] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [0, 0, -12.23] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, -47.5] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, -67.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_upper_wing": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -45] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, -40] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, -45] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_upper_wing2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 67.5] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [0, 0, 12.23] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 47.5] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, 67.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_lower_wing2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -25] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, -35] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, -25] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_lower_wing3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 45] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 27.5] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, 45] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_lower_wing2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 25] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 35] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, 25] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_lower_wing3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -45] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, -27.5] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, -45] + }, + "lerp_mode": "catmullrom" + } + } + } + } + }, + "bite": { + "loop": true, + "animation_length": 0.5, + "bones": { + "torso": { + "rotation": { + "0.0": { + "post": { + "vector": [-12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.0833": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.0833": { + "post": { + "vector": [0, 0, 4] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [0, 0, 4] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck": { + "rotation": { + "0.0": { + "post": { + "vector": [-30, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.0833": { + "post": { + "vector": [-62.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [-62.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [-15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-30, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [0, 0.5221, -3.96578] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0.5221, -3.96578] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck2": { + "rotation": { + "0.0": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.0833": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [-10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck3": { + "rotation": { + "0.0": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.0833": { + "post": { + "vector": [30, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [30, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 15, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 15, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.0417": { + "post": { + "vector": [0, 2, -1.75] + }, + "lerp_mode": "catmullrom" + }, + "0.0833": { + "post": { + "vector": [0, 0, -4] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [0, 0, -4] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [0, 0.86, -0.65] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail": { + "rotation": { + "0.0": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.0833": { + "post": { + "vector": [-2.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [-2.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail2": { + "rotation": { + "0.0": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.0833": { + "post": { + "vector": [-11.73095, -2.9701, -13.84724] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [-11.73095, -2.9701, -13.84724] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [50.76905, -2.9701, -13.84724] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [50.76905, -2.9701, -13.84724] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail3": { + "rotation": { + "0.0": { + "post": { + "vector": [27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.0833": { + "post": { + "vector": [-20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [-20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [32.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [32.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [0, -15, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, -15, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.0833": { + "post": { + "vector": [0, 0, 3] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [0, 0, 3] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [0, 3, 4] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, 4] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "jaw": { + "rotation": { + "0.0": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.0833": { + "post": { + "vector": [32.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [32.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_right": { + "rotation": { + "0.0": { + "post": { + "vector": [5.63422, -17.07457, -3.43487] + }, + "lerp_mode": "catmullrom" + }, + "0.0833": { + "post": { + "vector": [23.13422, -17.07457, -3.43487] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [23.13422, -17.07457, -3.43487] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [5.63422, -17.07457, -3.43487] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [0, 0.26105, -1.98289] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0.26105, -1.98289] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_right2": { + "rotation": { + "0.0": { + "post": { + "vector": [25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.0833": { + "post": { + "vector": [-10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [-10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [-20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [25, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_right3": { + "rotation": { + "0.0": { + "post": { + "vector": [-10.23772, -12.3071, 2.20462] + }, + "lerp_mode": "catmullrom" + }, + "0.0833": { + "post": { + "vector": [-20.23772, -12.3071, 2.20462] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [-20.23772, -12.3071, 2.20462] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [7.26228, -12.3071, 2.20462] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [7.26228, -12.3071, 2.20462] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-10.23772, -12.3071, 2.20462] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head_right": { + "rotation": { + "0.0": { + "post": { + "vector": [-9.21712, -8.44624, 11.33916] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [-19.21712, -8.44624, 11.33916] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-19.21712, -8.44624, 11.33916] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-9.21712, -8.44624, 11.33916] + }, + "lerp_mode": "catmullrom" + } + } + }, + "jaw_right": { + "rotation": { + "0.0": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.0833": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_left": { + "rotation": { + "0.0": { + "post": { + "vector": [5.63422, 17.07457, 3.43487] + }, + "lerp_mode": "catmullrom" + }, + "0.0833": { + "post": { + "vector": [23.13422, 17.07457, 3.43487] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [23.13422, 17.07457, 3.43487] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [5.63422, 17.07457, 3.43487] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [0, 0.26105, -1.98289] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0.26105, -1.98289] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_left2": { + "rotation": { + "0.0": { + "post": { + "vector": [25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.0833": { + "post": { + "vector": [-10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [-10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [-20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [25, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_left3": { + "rotation": { + "0.0": { + "post": { + "vector": [-10.23772, 12.3071, -2.20462] + }, + "lerp_mode": "catmullrom" + }, + "0.0833": { + "post": { + "vector": [-20.23772, 12.3071, -2.20462] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [-20.23772, 12.3071, -2.20462] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [7.26228, 12.3071, -2.20462] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [7.26228, 12.3071, -2.20462] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-10.23772, 12.3071, -2.20462] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head_left": { + "rotation": { + "0.0": { + "post": { + "vector": [-9.21712, 8.44624, -11.33916] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [-19.21712, 8.44624, -11.33916] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-19.21712, 8.44624, -11.33916] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-9.21712, 8.44624, -11.33916] + }, + "lerp_mode": "catmullrom" + } + } + }, + "jaw_left": { + "rotation": { + "0.0": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.0833": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_upper_wing": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 45] + }, + "lerp_mode": "catmullrom" + }, + "0.0833": { + "post": { + "vector": [0, 0, 30] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [0, 0, 30] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 45] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_upper_wing2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -67.5] + }, + "lerp_mode": "catmullrom" + }, + "0.0833": { + "post": { + "vector": [0, 0, 25] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [0, 0, 25] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, -67.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_upper_wing": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -45] + }, + "lerp_mode": "catmullrom" + }, + "0.0833": { + "post": { + "vector": [0, 0, -30] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [0, 0, -30] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, -45] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_upper_wing2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 67.5] + }, + "lerp_mode": "catmullrom" + }, + "0.0833": { + "post": { + "vector": [0, 0, -25] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [0, 0, -25] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 67.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_lower_wing2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -25] + }, + "lerp_mode": "catmullrom" + }, + "0.0833": { + "post": { + "vector": [0, 0, -2.5] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [0, 0, -2.5] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, -25] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_lower_wing3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 45] + }, + "lerp_mode": "catmullrom" + }, + "0.0833": { + "post": { + "vector": [0, 0, -42.5] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [0, 0, -42.5] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 45] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_lower_wing2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 25] + }, + "lerp_mode": "catmullrom" + }, + "0.0833": { + "post": { + "vector": [0, 0, 2.5] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [0, 0, 2.5] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 25] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_lower_wing3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -45] + }, + "lerp_mode": "catmullrom" + }, + "0.0833": { + "post": { + "vector": [0, 0, 42.5] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [0, 0, 42.5] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, -45] + }, + "lerp_mode": "catmullrom" + } + } + } + } + }, + "fly_bite": { + "loop": true, + "animation_length": 0.7917, + "bones": { + "neck": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [11.57, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [14.07, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [-11.67, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [-1.59, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 1, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [0, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [0, 1, 3] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [0, 1, -1] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 1, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [26.25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [26.25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [-1.81, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [23.38, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [23.38, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [3.7, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [50, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail": { + "rotation": { + "0.0": { + "post": { + "vector": [-17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [-47.58, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [-17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail2": { + "rotation": { + "0.0": { + "post": { + "vector": [-20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [-43.75, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [-20, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail3": { + "rotation": { + "0.0": { + "post": { + "vector": [-20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [30, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [-45.82, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [-20, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_foot": { + "rotation": { + "0.0": { + "post": { + "vector": [27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [50, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_foot": { + "rotation": { + "0.0": { + "post": { + "vector": [27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [-29.8, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [-29.8, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [4.35, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "jaw": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [30.74, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [30.74, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [-0.41, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_right2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_right3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [12.4954, 0.23276, 0.2745] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head_right": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_left2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_left3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [12.4954, -0.23276, -0.2745] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head_left": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_upper_wing": { + "rotation": { + "0.0": { + "post": { + "vector": [-17.5, 0, 42.5] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [2.34229, 20.55558, -53.81138] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [-17.5, 0, 42.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_upper_wing2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [0, 0, 32.5] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, -47.5] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_upper_wing": { + "rotation": { + "0.0": { + "post": { + "vector": [-17.5, 0, -42.5] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [2.34229, -20.55558, 53.81138] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [-17.5, 0, -42.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_upper_wing2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [0, 0, -32.5] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 47.5] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_lower_wing2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 12.5] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [0, 0, -10] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [0, 0, -75] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [3.31914, 14.63639, -62.07362] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, 12.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_lower_wing3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [0, 0, -60] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_lower_wing2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -12.5] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [0, 0, 10] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [0, 0, 75] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [3.31914, -14.63639, 62.07362] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, -12.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_lower_wing3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [0, 0, 60] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "prince": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [-15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 6, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [0, 12, 11] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [0, 6, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, 12, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 6, 0] + }, + "lerp_mode": "catmullrom" + } + } + } + } + }, + "fly_shoot": { + "loop": true, + "animation_length": 0.7917, + "bones": { + "neck": { + "rotation": { + "0.0": { + "post": { + "vector": [-30, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [-7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [-7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [-30, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck2": { + "rotation": { + "0.0": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [-15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck3": { + "rotation": { + "0.0": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [-30, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [50, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail": { + "rotation": { + "0.0": { + "post": { + "vector": [-17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [-17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail2": { + "rotation": { + "0.0": { + "post": { + "vector": [-20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [-20, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail3": { + "rotation": { + "0.0": { + "post": { + "vector": [-20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [30, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [-20, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_foot": { + "rotation": { + "0.0": { + "post": { + "vector": [27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [50, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_foot": { + "rotation": { + "0.0": { + "post": { + "vector": [27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [-20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [-5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [-5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "jaw": { + "rotation": { + "0.0": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [42.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [42.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_right": { + "rotation": { + "0.0": { + "post": { + "vector": [5.63422, -17.07457, -3.43487] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [-24.36578, -17.07457, -3.43487] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [5.63422, -17.07457, -3.43487] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [5.63422, -17.07457, -3.43487] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [5.63422, -17.07457, -3.43487] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [0, -0.64932, -2.92889] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [0, -0.64932, -2.92889] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_right2": { + "rotation": { + "0.0": { + "post": { + "vector": [25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [-15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [25, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_right3": { + "rotation": { + "0.0": { + "post": { + "vector": [-10.23772, -12.3071, 2.20462] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [-25.23772, -12.3071, 2.20462] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [-10.23772, -12.3071, 2.20462] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [-10.23772, -12.3071, 2.20462] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [-10.23772, -12.3071, 2.20462] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head_right": { + "rotation": { + "0.0": { + "post": { + "vector": [-9.21712, -8.44624, 11.33916] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [-34.21712, -8.44624, 11.33916] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [-9.21712, -8.44624, 11.33916] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [-9.21712, -8.44624, 11.33916] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [-9.21712, -8.44624, 11.33916] + }, + "lerp_mode": "catmullrom" + } + } + }, + "jaw_right": { + "rotation": { + "0.0": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_left": { + "rotation": { + "0.0": { + "post": { + "vector": [5.63422, 17.07457, 3.43487] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [-24.36578, 17.07457, 3.43487] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [5.63422, 17.07457, 3.43487] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [5.63422, 17.07457, 3.43487] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [5.63422, 17.07457, 3.43487] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [0, -0.64932, -2.92889] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [0, -0.64932, -2.92889] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_left2": { + "rotation": { + "0.0": { + "post": { + "vector": [25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [-15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [25, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_left3": { + "rotation": { + "0.0": { + "post": { + "vector": [-10.23772, 12.3071, -2.20462] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [-25.23772, 12.3071, -2.20462] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [-10.23772, 12.3071, -2.20462] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [-10.23772, 12.3071, -2.20462] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [-10.23772, 12.3071, -2.20462] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head_left": { + "rotation": { + "0.0": { + "post": { + "vector": [-9.21712, 8.44624, -11.33916] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [-34.21712, 8.44624, -11.33916] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [-9.21712, 8.44624, -11.33916] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [-9.21712, 8.44624, -11.33916] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [-9.21712, 8.44624, -11.33916] + }, + "lerp_mode": "catmullrom" + } + } + }, + "jaw_left": { + "rotation": { + "0.0": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_upper_wing": { + "rotation": { + "0.0": { + "post": { + "vector": [-17.5, 0, 42.5] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [2.34229, 20.55558, -53.81138] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [-17.5, 0, 42.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_upper_wing2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [0, 0, 32.5] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, -47.5] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_upper_wing": { + "rotation": { + "0.0": { + "post": { + "vector": [-17.5, 0, -42.5] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [2.34229, -20.55558, 53.81138] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [-17.5, 0, -42.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_upper_wing2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [0, 0, -32.5] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 47.5] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_lower_wing2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 12.5] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [0, 0, -10] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [0, 0, -75] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [3.31914, 14.63639, -62.07362] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, 12.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_lower_wing3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [0, 0, -60] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_lower_wing2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -12.5] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [0, 0, 10] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [0, 0, 75] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [3.31914, -14.63639, 62.07362] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, -12.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_lower_wing3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [0, 0, 60] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "prince": { + "position": { + "0.0": { + "post": { + "vector": [0, 6, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [0, 12, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [0, 6, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, 12, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 6, 0] + }, + "lerp_mode": "catmullrom" + } + } + } + } + }, + "shoot": { + "animation_length": 1, + "bones": { + "torso": { + "rotation": { + "0.0": { + "post": { + "vector": [-12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [-22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [-22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [-12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [0, 0, 3] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [0, 0, 3] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, -4] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, 0, -4] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck": { + "rotation": { + "0.0": { + "post": { + "vector": [-30, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [-7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-30, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck2": { + "rotation": { + "0.0": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [-15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [-15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck3": { + "rotation": { + "0.0": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [-30, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [-30, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 15, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 15, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, 15, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 15, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail": { + "rotation": { + "0.0": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [35, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [35, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail2": { + "rotation": { + "0.0": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [-12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [-12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [50, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [50, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail3": { + "rotation": { + "0.0": { + "post": { + "vector": [27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [-2.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [-2.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [42.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [42.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [0, -15, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, -15, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, -15, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, -15, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [-20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [-20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [-5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "jaw": { + "rotation": { + "0.0": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [42.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [42.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_right": { + "rotation": { + "0.0": { + "post": { + "vector": [5.63422, -17.07457, -3.43487] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [-24.36578, -17.07457, -3.43487] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [-24.36578, -17.07457, -3.43487] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [5.63422, -17.07457, -3.43487] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [5.63422, -17.07457, -3.43487] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [5.63422, -17.07457, -3.43487] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, -0.64932, -2.92889] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, -0.64932, -2.92889] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_right2": { + "rotation": { + "0.0": { + "post": { + "vector": [25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [-15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [-15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [25, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_right3": { + "rotation": { + "0.0": { + "post": { + "vector": [-10.23772, -12.3071, 2.20462] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [-25.23772, -12.3071, 2.20462] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [-25.23772, -12.3071, 2.20462] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-10.23772, -12.3071, 2.20462] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [-10.23772, -12.3071, 2.20462] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-10.23772, -12.3071, 2.20462] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head_right": { + "rotation": { + "0.0": { + "post": { + "vector": [-9.21712, -8.44624, 11.33916] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [-34.21712, -8.44624, 11.33916] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [-34.21712, -8.44624, 11.33916] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-9.21712, -8.44624, 11.33916] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [-9.21712, -8.44624, 11.33916] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-9.21712, -8.44624, 11.33916] + }, + "lerp_mode": "catmullrom" + } + } + }, + "jaw_right": { + "rotation": { + "0.0": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_left": { + "rotation": { + "0.0": { + "post": { + "vector": [5.63422, 17.07457, 3.43487] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [-24.36578, 17.07457, 3.43487] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [-24.36578, 17.07457, 3.43487] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [5.63422, 17.07457, 3.43487] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [5.63422, 17.07457, 3.43487] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [5.63422, 17.07457, 3.43487] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, -0.64932, -2.92889] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, -0.64932, -2.92889] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_left2": { + "rotation": { + "0.0": { + "post": { + "vector": [25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [-15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [-15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [25, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_left3": { + "rotation": { + "0.0": { + "post": { + "vector": [-10.23772, 12.3071, -2.20462] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [-25.23772, 12.3071, -2.20462] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [-25.23772, 12.3071, -2.20462] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-10.23772, 12.3071, -2.20462] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [-10.23772, 12.3071, -2.20462] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-10.23772, 12.3071, -2.20462] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head_left": { + "rotation": { + "0.0": { + "post": { + "vector": [-9.21712, 8.44624, -11.33916] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [-34.21712, 8.44624, -11.33916] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [-34.21712, 8.44624, -11.33916] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-9.21712, 8.44624, -11.33916] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [-9.21712, 8.44624, -11.33916] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-9.21712, 8.44624, -11.33916] + }, + "lerp_mode": "catmullrom" + } + } + }, + "jaw_left": { + "rotation": { + "0.0": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_upper_wing": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 45] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [-32.15172, 20.43663, 74.0527] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [-32.15172, 20.43663, 74.0527] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 77.5] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, 0, 77.5] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 45] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_upper_wing2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -67.5] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [0, 0, 50] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [0, 0, 50] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 37.5] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, 0, 37.5] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, -67.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_upper_wing": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -45] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [-32.15172, -20.43663, -74.0527] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [-32.15172, -20.43663, -74.0527] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, -77.5] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, 0, -77.5] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, -45] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_upper_wing2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 67.5] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [0, 0, -50] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [0, 0, -50] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, -37.5] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, 0, -37.5] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 67.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_lower_wing2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -25] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [0, 37.5, -25] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [0, 37.5, -25] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, -25] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, 0, -25] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, -25] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_lower_wing3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 45] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 45] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, 0, 45] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 45] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_lower_wing2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 25] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [0, -37.5, 25] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [0, -37.5, 25] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 25] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, 0, 25] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 25] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_lower_wing3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -45] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, -45] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, 0, -45] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, -45] + }, + "lerp_mode": "catmullrom" + } + } + } + } + } + } +} \ No newline at end of file diff --git a/common-1.21.1/src/main/resources/assets/antarchy/animations/princess.animation.json b/common-1.21.1/src/main/resources/assets/antarchy/animations/princess.animation.json new file mode 100644 index 00000000..1f4d2bb0 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/animations/princess.animation.json @@ -0,0 +1,7840 @@ +{ + "format_version": "1.8.0", + "animations": { + "idle": { + "loop": true, + "animation_length": 4, + "bones": { + "torso": { + "rotation": { + "0.0": { + "post": { + "vector": [-12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [-12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck": { + "rotation": { + "0.0": { + "post": { + "vector": [-30, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [-30, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck2": { + "rotation": { + "0.0": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck3": { + "rotation": { + "0.0": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 15, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 15, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail": { + "rotation": { + "0.0": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.4167": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail2": { + "rotation": { + "0.0": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail3": { + "rotation": { + "0.0": { + "post": { + "vector": [27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.4583": { + "post": { + "vector": [-10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [0, -15, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, -15, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "orb_center": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5833": { + "post": { + "vector": [0, 0, 360] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "orb_right": { + "rotation": { + "0.0": { + "post": { + "vector": [10.54684, -44.0238, -10.54684] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 360] + }, + "lerp_mode": "catmullrom" + }, + "3.0": { + "post": { + "vector": [10.54684, -44.0238, -10.54684] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [10.54684, -44.0238, -10.54684] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, -1, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "orb_left": { + "rotation": { + "0.0": { + "post": { + "vector": [10.54684, 44.0238, 10.54684] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, -360] + }, + "lerp_mode": "catmullrom" + }, + "3.0": { + "post": { + "vector": [10.54684, 44.0238, 10.54684] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [10.54684, 44.0238, 10.54684] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, -1, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "jaw": { + "rotation": { + "0.0": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_right": { + "rotation": { + "0.0": { + "post": { + "vector": [5.63422, -17.07457, -3.43487] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [5.63422, -17.07457, -3.43487] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_right2": { + "rotation": { + "0.0": { + "post": { + "vector": [25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [32.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [25, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_right3": { + "rotation": { + "0.0": { + "post": { + "vector": [-10.23772, -12.3071, 2.20462] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-17.73772, -12.3071, 2.20462] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [-10.23772, -12.3071, 2.20462] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head_right": { + "rotation": { + "0.0": { + "post": { + "vector": [-9.21712, -8.44624, 11.33916] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-16.71712, -8.44624, 11.33916] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [-9.21712, -8.44624, 11.33916] + }, + "lerp_mode": "catmullrom" + } + } + }, + "jaw_right": { + "rotation": { + "0.0": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_left": { + "rotation": { + "0.0": { + "post": { + "vector": [5.63422, 17.07457, 3.43487] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [5.63422, 17.07457, 3.43487] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_left2": { + "rotation": { + "0.0": { + "post": { + "vector": [25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [32.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [25, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_left3": { + "rotation": { + "0.0": { + "post": { + "vector": [-10.23772, 12.3071, -2.20462] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-17.73772, 12.3071, -2.20462] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [-10.23772, 12.3071, -2.20462] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head_left": { + "rotation": { + "0.0": { + "post": { + "vector": [-9.21712, 8.44624, -11.33916] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-16.71712, 8.44624, -11.33916] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [-9.21712, 8.44624, -11.33916] + }, + "lerp_mode": "catmullrom" + } + } + }, + "jaw_left": { + "rotation": { + "0.0": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_upper_wing": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 45] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 40] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, 45] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_upper_wing2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -67.5] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, -47.5] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, -67.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_upper_wing": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -45] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, -40] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, -45] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_upper_wing2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 67.5] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 47.5] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, 67.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_lower_wing2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -25] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, -35] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, -25] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_lower_wing3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 45] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 27.5] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, 45] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_lower_wing2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 25] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 35] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, 25] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_lower_wing3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -45] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, -27.5] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, -45] + }, + "lerp_mode": "catmullrom" + } + } + } + } + }, + "walk": { + "loop": true, + "animation_length": 1, + "bones": { + "torso": { + "rotation": { + "0.0": { + "post": { + "vector": [-12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [-7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [-12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [-7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [-12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [0, -1, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [0, -1, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck": { + "rotation": { + "0.0": { + "post": { + "vector": [-30, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [-25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-30, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck2": { + "rotation": { + "0.0": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck3": { + "rotation": { + "0.0": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-45, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [-45, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "vector": [0, 0, 4] + }, + "0.2083": { + "vector": [0, 2, 1.08] + }, + "0.5": { + "vector": [0, -0.25, -4] + }, + "0.5833": { + "vector": [0, -0.25, -4] + }, + "1.0": { + "vector": [0, 0, 4] + } + } + }, + "tail": { + "rotation": { + "0.0": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail2": { + "rotation": { + "0.0": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail3": { + "rotation": { + "0.0": { + "post": { + "vector": [27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [-7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [-45, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.0833": { + "post": { + "vector": [-45, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-45, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "vector": [0, -0.25, -4] + }, + "0.0833": { + "vector": [0, -0.25, -4] + }, + "0.5": { + "vector": [0, 0, 4] + }, + "0.7083": { + "vector": [0, 2, 1.08] + }, + "1.0": { + "vector": [0, -0.25, -4] + } + } + }, + "right_foot": { + "rotation": { + "0.0": { + "post": { + "vector": [-12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [45, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [40, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.875": { + "post": { + "vector": [13.36, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_foot": { + "rotation": { + "0.0": { + "post": { + "vector": [45, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [40, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [13.36, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.9167": { + "post": { + "vector": [57.13, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [45, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "orb_center": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "orb_right": { + "rotation": { + "0.0": { + "post": { + "vector": [10.54684, -44.0238, -10.54684] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "orb_left": { + "rotation": { + "0.0": { + "post": { + "vector": [10.54684, 44.0238, 10.54684] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "jaw": { + "rotation": { + "0.0": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [2.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_right": { + "rotation": { + "0.0": { + "post": { + "vector": [5.63422, -17.07457, -3.43487] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0.63422, -17.07457, -3.43487] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [5.63422, -17.07457, -3.43487] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_right2": { + "rotation": { + "0.0": { + "post": { + "vector": [25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [25, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_right3": { + "rotation": { + "0.0": { + "post": { + "vector": [-10.23772, -12.3071, 2.20462] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-17.73772, -12.3071, 2.20462] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-10.23772, -12.3071, 2.20462] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head_right": { + "rotation": { + "0.0": { + "post": { + "vector": [-9.21712, -8.44624, 11.33916] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-16.71712, -8.44624, 11.33916] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-9.21712, -8.44624, 11.33916] + }, + "lerp_mode": "catmullrom" + } + } + }, + "jaw_right": { + "rotation": { + "0.0": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [2.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_left": { + "rotation": { + "0.0": { + "post": { + "vector": [5.63422, 17.07457, 3.43487] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0.63422, 17.07457, 3.43487] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [5.63422, 17.07457, 3.43487] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_left2": { + "rotation": { + "0.0": { + "post": { + "vector": [25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [25, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_left3": { + "rotation": { + "0.0": { + "post": { + "vector": [-10.23772, 12.3071, -2.20462] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-17.73772, 12.3071, -2.20462] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-10.23772, 12.3071, -2.20462] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head_left": { + "rotation": { + "0.0": { + "post": { + "vector": [-9.21712, 8.44624, -11.33916] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-16.71712, 8.44624, -11.33916] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-9.21712, 8.44624, -11.33916] + }, + "lerp_mode": "catmullrom" + } + } + }, + "jaw_left": { + "rotation": { + "0.0": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [2.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_upper_wing": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 17.5] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, -10] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 17.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_upper_wing2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 42.5] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [0, 0, -12.5] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 42.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_upper_wing": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -17.5] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 10] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, -17.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_upper_wing2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -42.5] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [0, 0, 12.5] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, -42.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_lower_wing2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -25] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, -37.5] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, -25] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_lower_wing3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 45] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 32.5] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 45] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_lower_wing2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 25] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 37.5] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 25] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_lower_wing3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -45] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, -32.5] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, -45] + }, + "lerp_mode": "catmullrom" + } + } + } + } + }, + "fly": { + "loop": true, + "animation_length": 0.7917, + "bones": { + "neck": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [-7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5417": { + "post": { + "vector": [-12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [50, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail": { + "rotation": { + "0.0": { + "post": { + "vector": [-17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [-17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail2": { + "rotation": { + "0.0": { + "post": { + "vector": [-20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [-20, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail3": { + "rotation": { + "0.0": { + "post": { + "vector": [-20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [30, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [-20, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_foot": { + "rotation": { + "0.0": { + "post": { + "vector": [27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [50, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_foot": { + "rotation": { + "0.0": { + "post": { + "vector": [27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "jaw": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_right2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_right3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [12.4954, 0.23276, 0.2745] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head_right": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_left2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_left3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [12.4954, -0.23276, -0.2745] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head_left": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_upper_wing": { + "rotation": { + "0.0": { + "post": { + "vector": [-17.5, 0, 42.5] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [2.34229, 20.55558, -53.81138] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [-17.5, 0, 42.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_upper_wing2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [0, 0, 32.5] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, -47.5] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_upper_wing": { + "rotation": { + "0.0": { + "post": { + "vector": [-17.5, 0, -42.5] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [2.34229, -20.55558, 53.81138] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [-17.5, 0, -42.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_upper_wing2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [0, 0, -32.5] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 47.5] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_lower_wing2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 12.5] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [0, 0, -10] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [0, 0, -75] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [3.31914, 14.63639, -62.07362] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, 12.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_lower_wing3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [0, 0, -60] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_lower_wing2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -12.5] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [0, 0, 10] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [0, 0, 75] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [3.31914, -14.63639, 62.07362] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, -12.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_lower_wing3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [0, 0, 60] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "princess": { + "position": { + "0.0": { + "post": { + "vector": [0, 6, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [0, 12, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [0, 6, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, 12, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 6, 0] + }, + "lerp_mode": "catmullrom" + } + } + } + } + }, + "quirk": { + "loop": true, + "animation_length": 4, + "bones": { + "torso": { + "rotation": { + "0.0": { + "post": { + "vector": [-12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0417": { + "post": { + "vector": [-9.81103, -12.29231, 2.14121] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [7.56411, -13.13766, 2.28847] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [-12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "vector": [0, 0, 0] + }, + "1.25": { + "vector": [0, 3, 0] + }, + "4.0": { + "vector": [0, 0, 0] + } + } + }, + "neck": { + "rotation": { + "0.0": { + "post": { + "vector": [-30, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [-44.33, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [-30, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck2": { + "rotation": { + "0.0": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [17.7, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [-7.21, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [21.6, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.3333": { + "post": { + "vector": [17.7, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5417": { + "post": { + "vector": [-7.21, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck3": { + "rotation": { + "0.0": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [35.29, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [42.95, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [-4.99, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [24.24, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.3333": { + "post": { + "vector": [35.29, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.4167": { + "post": { + "vector": [42.95, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5417": { + "post": { + "vector": [-4.99, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 15, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.8333": { + "post": { + "vector": [0, 15, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.9583": { + "post": { + "vector": [-14.99655, 15, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.125": { + "post": { + "vector": [0.11231, 15, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 15, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.8333": { + "vector": [0, 0, 0] + }, + "1.0417": { + "vector": [0, 4, 0] + }, + "1.125": { + "vector": [-2, 0, -6] + }, + "4.0": { + "vector": [0, 0, 0] + } + } + }, + "tail": { + "rotation": { + "0.0": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.4167": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail2": { + "rotation": { + "0.0": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.3333": { + "post": { + "vector": [26.27, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail3": { + "rotation": { + "0.0": { + "post": { + "vector": [27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.3333": { + "post": { + "vector": [33.58, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.4583": { + "post": { + "vector": [-10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [0, -15, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, -15, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [34.71, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [48.97, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [-16.71, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.3333": { + "post": { + "vector": [34.71, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.4583": { + "post": { + "vector": [48.97, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5417": { + "post": { + "vector": [-16.71, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "orb_center": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5833": { + "post": { + "vector": [0, 0, 360] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "orb_right": { + "rotation": { + "0.0": { + "post": { + "vector": [10.54684, -44.0238, -10.54684] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 360] + }, + "lerp_mode": "catmullrom" + }, + "3.0": { + "post": { + "vector": [10.54684, -44.0238, -10.54684] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [10.54684, -44.0238, -10.54684] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, -1, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "orb_left": { + "rotation": { + "0.0": { + "post": { + "vector": [10.54684, 44.0238, 10.54684] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, -360] + }, + "lerp_mode": "catmullrom" + }, + "3.0": { + "post": { + "vector": [10.54684, 44.0238, 10.54684] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [10.54684, 44.0238, 10.54684] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, -1, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "jaw": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [38, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [1.34, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.4583": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.5417": { + "post": { + "vector": [38, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_right": { + "rotation": { + "0.0": { + "post": { + "vector": [5.63422, -17.07457, -3.43487] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [5.63422, -17.07457, -3.43487] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_right2": { + "rotation": { + "0.0": { + "post": { + "vector": [25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.4167": { + "post": { + "vector": [48.46, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [32.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [25, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_right3": { + "rotation": { + "0.0": { + "post": { + "vector": [-10.23772, -12.3071, 2.20462] + }, + "lerp_mode": "catmullrom" + }, + "1.4167": { + "post": { + "vector": [-28.73897, -12.3071, 2.20462] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-17.73772, -12.3071, 2.20462] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [-10.23772, -12.3071, 2.20462] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head_right": { + "rotation": { + "0.0": { + "post": { + "vector": [-9.21712, -8.44624, 11.33916] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [-14.47444, -37.68306, 18.44903] + }, + "lerp_mode": "catmullrom" + }, + "1.4167": { + "post": { + "vector": [-34.12541, -21.56564, 14.52957] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-16.71712, -8.44624, 11.33916] + }, + "lerp_mode": "catmullrom" + }, + "2.7917": { + "post": { + "vector": [16.7792, -7.75782, 11.17175] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [-9.21712, -8.44624, 11.33916] + }, + "lerp_mode": "catmullrom" + } + } + }, + "jaw_right": { + "rotation": { + "0.0": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.2083": { + "post": { + "vector": [22.79, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.5417": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_left": { + "rotation": { + "0.0": { + "post": { + "vector": [5.63422, 17.07457, 3.43487] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [5.63422, 17.07457, 3.43487] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_left2": { + "rotation": { + "0.0": { + "post": { + "vector": [25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.875": { + "post": { + "vector": [27.23421, -6.99078, 13.30456] + }, + "lerp_mode": "catmullrom" + }, + "1.0417": { + "post": { + "vector": [24.51172, 15.38736, -29.84292] + }, + "lerp_mode": "catmullrom" + }, + "1.2917": { + "post": { + "vector": [27.23421, -6.99078, 13.30456] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [22.22056, 18.68378, -37.70361] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [32.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [25, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_left3": { + "rotation": { + "0.0": { + "post": { + "vector": [-10.23772, 12.3071, -2.20462] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [-10.23772, 12.3071, -2.20462] + }, + "lerp_mode": "catmullrom" + }, + "0.875": { + "post": { + "vector": [-9.61769, 15.30092, 12.93508] + }, + "lerp_mode": "catmullrom" + }, + "1.0417": { + "post": { + "vector": [-18.04272, 3.46685, -31.97249] + }, + "lerp_mode": "catmullrom" + }, + "1.2917": { + "post": { + "vector": [-9.61769, 15.30092, 12.93508] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [-17.90194, -4.42641, -56.62924] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-17.73772, 12.3071, -2.20462] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [-10.23772, 12.3071, -2.20462] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head_left": { + "rotation": { + "0.0": { + "post": { + "vector": [-9.21712, 8.44624, -11.33916] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [-9.21712, 8.44624, -11.33916] + }, + "lerp_mode": "catmullrom" + }, + "0.875": { + "post": { + "vector": [-3.2996, 14.49432, 31.65044] + }, + "lerp_mode": "catmullrom" + }, + "1.0417": { + "post": { + "vector": [-9.21569, -15.35169, 13.44653] + }, + "lerp_mode": "catmullrom" + }, + "1.2917": { + "post": { + "vector": [-3.2996, 14.49432, 31.65044] + }, + "lerp_mode": "catmullrom" + }, + "1.5": { + "post": { + "vector": [-3.99029, 5.4146, 29.85092] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [-16.71712, 8.44624, -11.33916] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [-9.21712, 8.44624, -11.33916] + }, + "lerp_mode": "catmullrom" + } + } + }, + "jaw_left": { + "rotation": { + "0.0": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_upper_wing": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 45] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [0, 0, 73.68] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 40] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, 45] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_upper_wing2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -67.5] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [0, 0, -12.23] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, -47.5] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, -67.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_upper_wing": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -45] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, -40] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, -45] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_upper_wing2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 67.5] + }, + "lerp_mode": "catmullrom" + }, + "0.6667": { + "post": { + "vector": [0, 0, 12.23] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 47.5] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, 67.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_lower_wing2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -25] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, -35] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, -25] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_lower_wing3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 45] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 27.5] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, 45] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_lower_wing2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 25] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, 35] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, 25] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_lower_wing3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -45] + }, + "lerp_mode": "catmullrom" + }, + "2.0": { + "post": { + "vector": [0, 0, -27.5] + }, + "lerp_mode": "catmullrom" + }, + "4.0": { + "post": { + "vector": [0, 0, -45] + }, + "lerp_mode": "catmullrom" + } + } + } + } + }, + "bite": { + "loop": true, + "animation_length": 0.5, + "bones": { + "torso": { + "rotation": { + "0.0": { + "post": { + "vector": [-12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.0833": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.0833": { + "post": { + "vector": [0, 0, 4] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [0, 0, 4] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck": { + "rotation": { + "0.0": { + "post": { + "vector": [-30, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.0833": { + "post": { + "vector": [-62.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [-62.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [-15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-30, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [0, 0.5221, -3.96578] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0.5221, -3.96578] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck2": { + "rotation": { + "0.0": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.0833": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [-10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck3": { + "rotation": { + "0.0": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.0833": { + "post": { + "vector": [30, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [30, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 15, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 15, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.0417": { + "post": { + "vector": [0, 2, -1.75] + }, + "lerp_mode": "catmullrom" + }, + "0.0833": { + "post": { + "vector": [0, 0, -4] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [0, 0, -4] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [0, 0.86, -0.65] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail": { + "rotation": { + "0.0": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.0833": { + "post": { + "vector": [-2.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [-2.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail2": { + "rotation": { + "0.0": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.0833": { + "post": { + "vector": [-11.73095, -2.9701, -13.84724] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [-11.73095, -2.9701, -13.84724] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [50.76905, -2.9701, -13.84724] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [50.76905, -2.9701, -13.84724] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail3": { + "rotation": { + "0.0": { + "post": { + "vector": [27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.0833": { + "post": { + "vector": [-20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [-20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [32.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [32.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [0, -15, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, -15, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.0833": { + "post": { + "vector": [0, 0, 3] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [0, 0, 3] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [0, 3, 4] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, 4] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "orb_center": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "orb_right": { + "rotation": { + "0.0": { + "post": { + "vector": [10.54684, -44.0238, -10.54684] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [10.54684, -44.0238, -10.54684] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "orb_left": { + "rotation": { + "0.0": { + "post": { + "vector": [10.54684, 44.0238, 10.54684] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [10.54684, 44.0238, 10.54684] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "jaw": { + "rotation": { + "0.0": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.0833": { + "post": { + "vector": [32.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [32.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_right": { + "rotation": { + "0.0": { + "post": { + "vector": [5.63422, -17.07457, -3.43487] + }, + "lerp_mode": "catmullrom" + }, + "0.0833": { + "post": { + "vector": [23.13422, -17.07457, -3.43487] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [23.13422, -17.07457, -3.43487] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [5.63422, -17.07457, -3.43487] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [0, 0.26105, -1.98289] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0.26105, -1.98289] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_right2": { + "rotation": { + "0.0": { + "post": { + "vector": [25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.0833": { + "post": { + "vector": [-10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [-10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [-20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [25, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_right3": { + "rotation": { + "0.0": { + "post": { + "vector": [-10.23772, -12.3071, 2.20462] + }, + "lerp_mode": "catmullrom" + }, + "0.0833": { + "post": { + "vector": [-20.23772, -12.3071, 2.20462] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [-20.23772, -12.3071, 2.20462] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [7.26228, -12.3071, 2.20462] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [7.26228, -12.3071, 2.20462] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-10.23772, -12.3071, 2.20462] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head_right": { + "rotation": { + "0.0": { + "post": { + "vector": [-9.21712, -8.44624, 11.33916] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [-19.21712, -8.44624, 11.33916] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-19.21712, -8.44624, 11.33916] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-9.21712, -8.44624, 11.33916] + }, + "lerp_mode": "catmullrom" + } + } + }, + "jaw_right": { + "rotation": { + "0.0": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.0833": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_left": { + "rotation": { + "0.0": { + "post": { + "vector": [5.63422, 17.07457, 3.43487] + }, + "lerp_mode": "catmullrom" + }, + "0.0833": { + "post": { + "vector": [23.13422, 17.07457, 3.43487] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [23.13422, 17.07457, 3.43487] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [5.63422, 17.07457, 3.43487] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [0, 0.26105, -1.98289] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0.26105, -1.98289] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_left2": { + "rotation": { + "0.0": { + "post": { + "vector": [25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.0833": { + "post": { + "vector": [-10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [-10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [-20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [25, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_left3": { + "rotation": { + "0.0": { + "post": { + "vector": [-10.23772, 12.3071, -2.20462] + }, + "lerp_mode": "catmullrom" + }, + "0.0833": { + "post": { + "vector": [-20.23772, 12.3071, -2.20462] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [-20.23772, 12.3071, -2.20462] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [7.26228, 12.3071, -2.20462] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [7.26228, 12.3071, -2.20462] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-10.23772, 12.3071, -2.20462] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head_left": { + "rotation": { + "0.0": { + "post": { + "vector": [-9.21712, 8.44624, -11.33916] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [-19.21712, 8.44624, -11.33916] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-19.21712, 8.44624, -11.33916] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-9.21712, 8.44624, -11.33916] + }, + "lerp_mode": "catmullrom" + } + } + }, + "jaw_left": { + "rotation": { + "0.0": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.0833": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_upper_wing": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 45] + }, + "lerp_mode": "catmullrom" + }, + "0.0833": { + "post": { + "vector": [0, 0, 30] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [0, 0, 30] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 45] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_upper_wing2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -67.5] + }, + "lerp_mode": "catmullrom" + }, + "0.0833": { + "post": { + "vector": [0, 0, 25] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [0, 0, 25] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, -67.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_upper_wing": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -45] + }, + "lerp_mode": "catmullrom" + }, + "0.0833": { + "post": { + "vector": [0, 0, -30] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [0, 0, -30] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, -45] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_upper_wing2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 67.5] + }, + "lerp_mode": "catmullrom" + }, + "0.0833": { + "post": { + "vector": [0, 0, -25] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [0, 0, -25] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 67.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_lower_wing2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -25] + }, + "lerp_mode": "catmullrom" + }, + "0.0833": { + "post": { + "vector": [0, 0, -2.5] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [0, 0, -2.5] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, -25] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_lower_wing3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 45] + }, + "lerp_mode": "catmullrom" + }, + "0.0833": { + "post": { + "vector": [0, 0, -42.5] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [0, 0, -42.5] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 45] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_lower_wing2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 25] + }, + "lerp_mode": "catmullrom" + }, + "0.0833": { + "post": { + "vector": [0, 0, 2.5] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [0, 0, 2.5] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 25] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_lower_wing3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -45] + }, + "lerp_mode": "catmullrom" + }, + "0.0833": { + "post": { + "vector": [0, 0, 42.5] + }, + "lerp_mode": "catmullrom" + }, + "0.125": { + "post": { + "vector": [0, 0, 42.5] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, -45] + }, + "lerp_mode": "catmullrom" + } + } + } + } + }, + "fly_bite": { + "loop": true, + "animation_length": 0.7917, + "bones": { + "neck": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [11.57, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [14.07, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [-11.67, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [-1.59, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 1, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [0, 1, 1] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [0, 1, 3] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [0, 1, -1] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 1, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [26.25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [26.25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [-1.81, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [23.38, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [23.38, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [3.7, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [50, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail": { + "rotation": { + "0.0": { + "post": { + "vector": [-17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [-47.58, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [-17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail2": { + "rotation": { + "0.0": { + "post": { + "vector": [-20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [-43.75, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [-20, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail3": { + "rotation": { + "0.0": { + "post": { + "vector": [-20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [30, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [-45.82, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [-20, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_foot": { + "rotation": { + "0.0": { + "post": { + "vector": [27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [50, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_foot": { + "rotation": { + "0.0": { + "post": { + "vector": [27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [-29.8, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [-29.8, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [4.35, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "jaw": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [30.74, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [30.74, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [-0.41, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_right2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_right3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [12.4954, 0.23276, 0.2745] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head_right": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_left2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_left3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [12.4954, -0.23276, -0.2745] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head_left": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_upper_wing": { + "rotation": { + "0.0": { + "post": { + "vector": [-17.5, 0, 42.5] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [2.34229, 20.55558, -53.81138] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [-17.5, 0, 42.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_upper_wing2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [0, 0, 32.5] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, -47.5] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_upper_wing": { + "rotation": { + "0.0": { + "post": { + "vector": [-17.5, 0, -42.5] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [2.34229, -20.55558, 53.81138] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [-17.5, 0, -42.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_upper_wing2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [0, 0, -32.5] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 47.5] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_lower_wing2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 12.5] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [0, 0, -10] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [0, 0, -75] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [3.31914, 14.63639, -62.07362] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, 12.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_lower_wing3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [0, 0, -60] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_lower_wing2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -12.5] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [0, 0, 10] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [0, 0, 75] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [3.31914, -14.63639, 62.07362] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, -12.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_lower_wing3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [0, 0, 60] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "princess": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [-15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 6, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [0, 12, 11] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [0, 6, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, 12, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 6, 0] + }, + "lerp_mode": "catmullrom" + } + } + } + } + }, + "fly_shoot": { + "loop": true, + "animation_length": 0.7917, + "bones": { + "neck": { + "rotation": { + "0.0": { + "post": { + "vector": [-30, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [-7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [-7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [-30, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck2": { + "rotation": { + "0.0": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [-15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck3": { + "rotation": { + "0.0": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [-30, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [50, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail": { + "rotation": { + "0.0": { + "post": { + "vector": [-17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [-17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail2": { + "rotation": { + "0.0": { + "post": { + "vector": [-20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [-20, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail3": { + "rotation": { + "0.0": { + "post": { + "vector": [-20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [30, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [-20, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_foot": { + "rotation": { + "0.0": { + "post": { + "vector": [27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [50, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_foot": { + "rotation": { + "0.0": { + "post": { + "vector": [27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [-20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [-5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [-5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "orb_center": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [67.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "scale": { + "0.0": { + "vector": [1, 1, 1] + }, + "0.125": { + "vector": [1.2, 1.2, 1] + }, + "0.7917": { + "vector": [1, 1, 1] + } + } + }, + "orb_right": { + "rotation": { + "0.0": { + "post": { + "vector": [10.54684, -44.0238, -10.54684] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [-3.16162, -55.11366, 102.14289] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [10.54684, -44.0238, -10.54684] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [10.54684, -44.0238, -10.54684] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "scale": { + "0.0": { + "vector": [1, 1, 1] + }, + "0.125": { + "vector": [1.2, 1.2, 1] + }, + "0.7917": { + "vector": [1, 1, 1] + } + } + }, + "orb_left": { + "rotation": { + "0.0": { + "post": { + "vector": [10.54684, 44.0238, 10.54684] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [-3.16162, 55.11366, -102.14289] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [10.54684, 44.0238, 10.54684] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [10.54684, 44.0238, 10.54684] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "scale": { + "0.0": { + "vector": [1, 1, 1] + }, + "0.125": { + "vector": [1.2, 1.2, 1] + }, + "0.7917": { + "vector": [1, 1, 1] + } + } + }, + "jaw": { + "rotation": { + "0.0": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [42.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [42.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_right": { + "rotation": { + "0.0": { + "post": { + "vector": [5.63422, -17.07457, -3.43487] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [-24.36578, -17.07457, -3.43487] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [5.63422, -17.07457, -3.43487] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [5.63422, -17.07457, -3.43487] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [5.63422, -17.07457, -3.43487] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [0, -0.64932, -2.92889] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [0, -0.64932, -2.92889] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_right2": { + "rotation": { + "0.0": { + "post": { + "vector": [25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [-15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [25, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_right3": { + "rotation": { + "0.0": { + "post": { + "vector": [-10.23772, -12.3071, 2.20462] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [-25.23772, -12.3071, 2.20462] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [-10.23772, -12.3071, 2.20462] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [-10.23772, -12.3071, 2.20462] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [-10.23772, -12.3071, 2.20462] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head_right": { + "rotation": { + "0.0": { + "post": { + "vector": [-9.21712, -8.44624, 11.33916] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [-34.21712, -8.44624, 11.33916] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [-9.21712, -8.44624, 11.33916] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [-9.21712, -8.44624, 11.33916] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [-9.21712, -8.44624, 11.33916] + }, + "lerp_mode": "catmullrom" + } + } + }, + "jaw_right": { + "rotation": { + "0.0": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_left": { + "rotation": { + "0.0": { + "post": { + "vector": [5.63422, 17.07457, 3.43487] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [-24.36578, 17.07457, 3.43487] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [5.63422, 17.07457, 3.43487] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [5.63422, 17.07457, 3.43487] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [5.63422, 17.07457, 3.43487] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [0, -0.64932, -2.92889] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [0, -0.64932, -2.92889] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_left2": { + "rotation": { + "0.0": { + "post": { + "vector": [25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [-15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [25, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_left3": { + "rotation": { + "0.0": { + "post": { + "vector": [-10.23772, 12.3071, -2.20462] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [-25.23772, 12.3071, -2.20462] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [-10.23772, 12.3071, -2.20462] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [-10.23772, 12.3071, -2.20462] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [-10.23772, 12.3071, -2.20462] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head_left": { + "rotation": { + "0.0": { + "post": { + "vector": [-9.21712, 8.44624, -11.33916] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [-34.21712, 8.44624, -11.33916] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [-9.21712, 8.44624, -11.33916] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [-9.21712, 8.44624, -11.33916] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [-9.21712, 8.44624, -11.33916] + }, + "lerp_mode": "catmullrom" + } + } + }, + "jaw_left": { + "rotation": { + "0.0": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4583": { + "post": { + "vector": [37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_upper_wing": { + "rotation": { + "0.0": { + "post": { + "vector": [-17.5, 0, 42.5] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [2.34229, 20.55558, -53.81138] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [-17.5, 0, 42.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_upper_wing2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [0, 0, 32.5] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, -47.5] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_upper_wing": { + "rotation": { + "0.0": { + "post": { + "vector": [-17.5, 0, -42.5] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [2.34229, -20.55558, 53.81138] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [-17.5, 0, -42.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_upper_wing2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2917": { + "post": { + "vector": [0, 0, -32.5] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 47.5] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_lower_wing2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 12.5] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [0, 0, -10] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [0, 0, -75] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [3.31914, 14.63639, -62.07362] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, 12.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_lower_wing3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [0, 0, -60] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_lower_wing2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -12.5] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [0, 0, 10] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [0, 0, 75] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [3.31914, -14.63639, 62.07362] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, -12.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_lower_wing3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5833": { + "post": { + "vector": [0, 0, 60] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "princess": { + "position": { + "0.0": { + "post": { + "vector": [0, 6, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.2083": { + "post": { + "vector": [0, 12, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.4167": { + "post": { + "vector": [0, 6, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, 12, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 6, 0] + }, + "lerp_mode": "catmullrom" + } + } + } + } + }, + "shoot": { + "animation_length": 1, + "bones": { + "torso": { + "rotation": { + "0.0": { + "post": { + "vector": [-12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [-22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [-22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [-12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [0, 0, 3] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [0, 0, 3] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, -4] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, 0, -4] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck": { + "rotation": { + "0.0": { + "post": { + "vector": [-30, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [-7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-30, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck2": { + "rotation": { + "0.0": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [-15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [-15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck3": { + "rotation": { + "0.0": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [-30, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [-30, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 15, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 15, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, 15, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 15, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail": { + "rotation": { + "0.0": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [17.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [35, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [35, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [7.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail2": { + "rotation": { + "0.0": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [-12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [-12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [50, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [50, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "tail3": { + "rotation": { + "0.0": { + "post": { + "vector": [27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [-2.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [-2.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [42.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [42.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [27.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_leg": { + "rotation": { + "0.0": { + "post": { + "vector": [0, -15, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, -15, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, -15, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, -15, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head": { + "rotation": { + "0.0": { + "post": { + "vector": [22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [-20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [-20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [-5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "orb_center": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [67.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "scale": { + "0.0": { + "vector": [1, 1, 1] + }, + "0.2917": { + "vector": [1.2, 1.2, 1] + }, + "1.0": { + "vector": [1, 1, 1] + } + } + }, + "orb_right": { + "rotation": { + "0.0": { + "post": { + "vector": [10.54684, -44.0238, -10.54684] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-3.16162, -55.11366, 102.14289] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [10.54684, -44.0238, -10.54684] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [10.54684, -44.0238, -10.54684] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "scale": { + "0.0": { + "vector": [1, 1, 1] + }, + "0.2917": { + "vector": [1.2, 1.2, 1] + }, + "1.0": { + "vector": [1, 1, 1] + } + } + }, + "orb_left": { + "rotation": { + "0.0": { + "post": { + "vector": [10.54684, 44.0238, 10.54684] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-3.16162, 55.11366, -102.14289] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [10.54684, 44.0238, 10.54684] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [10.54684, 44.0238, 10.54684] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "scale": { + "0.0": { + "vector": [1, 1, 1] + }, + "0.2917": { + "vector": [1.2, 1.2, 1] + }, + "1.0": { + "vector": [1, 1, 1] + } + } + }, + "jaw": { + "rotation": { + "0.0": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [42.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [42.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_right": { + "rotation": { + "0.0": { + "post": { + "vector": [5.63422, -17.07457, -3.43487] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [-24.36578, -17.07457, -3.43487] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [-24.36578, -17.07457, -3.43487] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [5.63422, -17.07457, -3.43487] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [5.63422, -17.07457, -3.43487] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [5.63422, -17.07457, -3.43487] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, -0.64932, -2.92889] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, -0.64932, -2.92889] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_right2": { + "rotation": { + "0.0": { + "post": { + "vector": [25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [-15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [-15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [25, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_right3": { + "rotation": { + "0.0": { + "post": { + "vector": [-10.23772, -12.3071, 2.20462] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [-25.23772, -12.3071, 2.20462] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [-25.23772, -12.3071, 2.20462] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-10.23772, -12.3071, 2.20462] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [-10.23772, -12.3071, 2.20462] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-10.23772, -12.3071, 2.20462] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head_right": { + "rotation": { + "0.0": { + "post": { + "vector": [-9.21712, -8.44624, 11.33916] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [-34.21712, -8.44624, 11.33916] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [-34.21712, -8.44624, 11.33916] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-9.21712, -8.44624, 11.33916] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [-9.21712, -8.44624, 11.33916] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-9.21712, -8.44624, 11.33916] + }, + "lerp_mode": "catmullrom" + } + } + }, + "jaw_right": { + "rotation": { + "0.0": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_left": { + "rotation": { + "0.0": { + "post": { + "vector": [5.63422, 17.07457, 3.43487] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [-24.36578, 17.07457, 3.43487] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [-24.36578, 17.07457, 3.43487] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [5.63422, 17.07457, 3.43487] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [5.63422, 17.07457, 3.43487] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [5.63422, 17.07457, 3.43487] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, -0.64932, -2.92889] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, -0.64932, -2.92889] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_left2": { + "rotation": { + "0.0": { + "post": { + "vector": [25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [-15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [-15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [25, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [25, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "neck_left3": { + "rotation": { + "0.0": { + "post": { + "vector": [-10.23772, 12.3071, -2.20462] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [-25.23772, 12.3071, -2.20462] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [-25.23772, 12.3071, -2.20462] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-10.23772, 12.3071, -2.20462] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [-10.23772, 12.3071, -2.20462] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-10.23772, 12.3071, -2.20462] + }, + "lerp_mode": "catmullrom" + } + } + }, + "head_left": { + "rotation": { + "0.0": { + "post": { + "vector": [-9.21712, 8.44624, -11.33916] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [-34.21712, 8.44624, -11.33916] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [-34.21712, 8.44624, -11.33916] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [-9.21712, 8.44624, -11.33916] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [-9.21712, 8.44624, -11.33916] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [-9.21712, 8.44624, -11.33916] + }, + "lerp_mode": "catmullrom" + } + } + }, + "jaw_left": { + "rotation": { + "0.0": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [37.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [15, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_upper_wing": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 45] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [-32.15172, 20.43663, 74.0527] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [-32.15172, 20.43663, 74.0527] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 77.5] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, 0, 77.5] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 45] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_upper_wing2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -67.5] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [0, 0, 50] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [0, 0, 50] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 37.5] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, 0, 37.5] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, -67.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_upper_wing": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -45] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [-32.15172, -20.43663, -74.0527] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [-32.15172, -20.43663, -74.0527] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, -77.5] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, 0, -77.5] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, -45] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_upper_wing2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 67.5] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [0, 0, -50] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [0, 0, -50] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, -37.5] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, 0, -37.5] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 67.5] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_lower_wing2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -25] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [0, 37.5, -25] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [0, 37.5, -25] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, -25] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, 0, -25] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, -25] + }, + "lerp_mode": "catmullrom" + } + } + }, + "right_lower_wing3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 45] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 45] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, 0, 45] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 45] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_lower_wing2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 25] + }, + "lerp_mode": "catmullrom" + }, + "0.1667": { + "post": { + "vector": [0, -37.5, 25] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [0, -37.5, 25] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 25] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, 0, 25] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, 25] + }, + "lerp_mode": "catmullrom" + } + } + }, + "left_lower_wing3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, -45] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, -45] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [0, 0, -45] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 0, -45] + }, + "lerp_mode": "catmullrom" + } + } + } + } + } + } +} \ No newline at end of file diff --git a/common-1.21.1/src/main/resources/assets/antarchy/blockstates/prince_egg.json b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/prince_egg.json new file mode 100644 index 00000000..ab78d2c4 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/prince_egg.json @@ -0,0 +1,13 @@ +{ + "variants": { + "hatch=0": { + "model": "antarchy:block/prince_egg" + }, + "hatch=1": { + "model": "antarchy:block/prince_egg" + }, + "hatch=2": { + "model": "antarchy:block/prince_egg" + } + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/blockstates/princess_egg.json b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/princess_egg.json new file mode 100644 index 00000000..54582800 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/princess_egg.json @@ -0,0 +1,13 @@ +{ + "variants": { + "hatch=0": { + "model": "antarchy:block/princess_egg" + }, + "hatch=1": { + "model": "antarchy:block/princess_egg" + }, + "hatch=2": { + "model": "antarchy:block/princess_egg" + } + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/geo/prince.geo.json b/common-1.21.1/src/main/resources/assets/antarchy/geo/prince.geo.json new file mode 100644 index 00000000..64990852 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/geo/prince.geo.json @@ -0,0 +1,313 @@ +{ + "format_version": "1.12.0", + "minecraft:geometry": [ + { + "description": { + "identifier": "geometry.unknown", + "texture_width": 128, + "texture_height": 128, + "visible_bounds_width": 8, + "visible_bounds_height": 2.5, + "visible_bounds_offset": [0, 0.75, 0] + }, + "bones": [ + { + "name": "prince", + "pivot": [0, 8.16667, 7.33333] + }, + { + "name": "body", + "parent": "prince", + "pivot": [0, 8.16667, 7.33333] + }, + { + "name": "right_leg", + "parent": "body", + "pivot": [-6.25, 10.75, 8.5], + "cubes": [ + {"origin": [-9, 4, 5], "size": [5, 9, 8], "inflate": 0.1, "uv": [0, 68]} + ] + }, + { + "name": "right_foot", + "parent": "right_leg", + "pivot": [-6, 4.91667, 10.58333], + "cubes": [ + {"origin": [-8, 0, 8], "size": [4, 5, 5], "uv": [90, 90]}, + {"origin": [-8, 0, 6], "size": [4, 2, 2], "uv": [56, 25]}, + {"origin": [-8, 2, 8], "size": [4, 2, 5], "inflate": 0.05, "uv": [74, 42]} + ] + }, + { + "name": "left_leg", + "parent": "body", + "pivot": [6.25, 10.75, 8.5], + "cubes": [ + {"origin": [4, 4, 5], "size": [5, 9, 8], "inflate": 0.1, "uv": [74, 25]} + ] + }, + { + "name": "left_foot", + "parent": "left_leg", + "pivot": [6, 4.91667, 10.58333], + "cubes": [ + {"origin": [4, 0, 8], "size": [4, 5, 5], "uv": [92, 63]}, + {"origin": [4, 0, 6], "size": [4, 2, 2], "uv": [94, 16]}, + {"origin": [4, 2, 8], "size": [4, 2, 5], "inflate": 0.05, "uv": [88, 9]} + ] + }, + { + "name": "torso", + "parent": "body", + "pivot": [0, 3, 5], + "cubes": [ + {"origin": [-6, 3, -3], "size": [12, 14, 16], "uv": [0, 0]}, + {"origin": [-1, 17, 2], "size": [2, 5, 4], "uv": [0, 0]} + ] + }, + { + "name": "tail", + "parent": "torso", + "pivot": [0, 12.75, 13], + "cubes": [ + {"origin": [-4, 6.75, 11], "size": [8, 10, 12], "uv": [0, 30]} + ] + }, + { + "name": "tail2", + "parent": "tail", + "pivot": [0, 13, 23], + "cubes": [ + {"origin": [-3, 8.5, 22], "size": [6, 8, 11], "uv": [40, 30]} + ] + }, + { + "name": "tail3", + "parent": "tail2", + "pivot": [0, 13.25, 32], + "cubes": [ + {"origin": [-2, 10.25, 32], "size": [4, 6, 11], "uv": [32, 65]}, + {"origin": [-6, 12.25, 41], "size": [12, 2, 7], "uv": [56, 16]}, + {"origin": [-1.5, 12.25, 48], "size": [3, 2, 4], "uv": [92, 42]} + ] + }, + { + "name": "neck", + "parent": "torso", + "pivot": [0, 13.5, -1.16667], + "cubes": [ + {"origin": [-3.5, 9, -8], "size": [7, 8, 8], "inflate": 0.1, "uv": [62, 65]} + ] + }, + { + "name": "neck2", + "parent": "neck", + "pivot": [0, 13.75, -6], + "cubes": [ + {"origin": [-3, 10.5, -14], "size": [6, 6, 8], "inflate": 0.1, "uv": [72, 49]} + ] + }, + { + "name": "neck3", + "parent": "neck2", + "pivot": [0, 14, -12], + "cubes": [ + {"origin": [-2.5, 11.5, -20], "size": [5, 5, 8], "uv": [26, 82]} + ] + }, + { + "name": "head", + "parent": "neck3", + "pivot": [0, 14, -20], + "cubes": [ + {"origin": [-3.5, 11.5, -27], "size": [7, 5, 7], "uv": [82, 112]}, + {"origin": [-4.5, 12.5, -22], "size": [2, 2, 4], "pivot": [-7, 14, -23.5], "rotation": [67.5, 0, 0], "uv": [92, 73]}, + {"origin": [-6.5, 12.5, -20], "size": [2, 2, 4], "pivot": [-7, 14, -23.5], "rotation": [67.5, 0, 0], "uv": [52, 93]}, + {"origin": [2.5, 12.5, -22], "size": [2, 2, 4], "pivot": [7, 14, -23.5], "rotation": [67.5, 0, 0], "uv": [64, 93]}, + {"origin": [4.5, 12.5, -20], "size": [2, 2, 4], "pivot": [7, 14, -23.5], "rotation": [67.5, 0, 0], "uv": [76, 93]}, + {"origin": [-2.5, 11.5, -34], "size": [5, 5, 7], "uv": [0, 85]}, + {"origin": [-2.5, 10.25, -34], "size": [5, 2, 7], "inflate": -0.1, "uv": [0, 97]}, + {"origin": [-0.5, 16.5, -32], "size": [1, 2, 2], "uv": [32, 59]} + ] + }, + { + "name": "jaw", + "parent": "head", + "pivot": [0, 11.5, -20], + "cubes": [ + {"origin": [-3.5, 9.5, -27], "size": [7, 2, 7], "uv": [88, 0]}, + {"origin": [-3.5, 11.5, -24], "size": [0, 3, 4], "inflate": 0.05, "uv": [32, 52]}, + {"origin": [3.5, 11.5, -24], "size": [0, 3, 4], "inflate": 0.05, "uv": [52, 82]}, + {"origin": [-2.5, 9.5, -34], "size": [5, 2, 7], "uv": [90, 81]} + ] + }, + { + "name": "neck_right", + "parent": "torso", + "pivot": [-3.87868, 13.25, 0.95465], + "rotation": [0, 45, 0], + "cubes": [ + {"origin": [-7.37868, 8.75, -5.87868], "size": [7, 8, 8], "inflate": 0.1, "uv": [62, 65]} + ] + }, + { + "name": "neck_right2", + "parent": "neck_right", + "pivot": [-3.87868, 13.5, -3.87868], + "cubes": [ + {"origin": [-6.87868, 10.25, -11.87868], "size": [6, 6, 8], "inflate": 0.1, "uv": [72, 49]} + ] + }, + { + "name": "neck_right3", + "parent": "neck_right2", + "pivot": [-3.87868, 13.75, -9.87868], + "cubes": [ + {"origin": [-6.37868, 11.25, -17.87868], "size": [5, 5, 8], "uv": [26, 82]} + ] + }, + { + "name": "head_right", + "parent": "neck_right3", + "pivot": [-3.87868, 13.75, -17.87868], + "cubes": [ + {"origin": [-7.37868, 11.25, -24.87868], "size": [7, 5, 7], "uv": [82, 100]}, + {"origin": [-8.37868, 12.25, -19.87868], "size": [2, 2, 4], "pivot": [-10.87868, 13.75, -21.37868], "rotation": [67.5, 0, 0], "uv": [92, 73]}, + {"origin": [-8.37868, 8.25, -21.87868], "size": [2, 2, 4], "pivot": [-10.87868, 13.75, -21.37868], "rotation": [67.5, 0, 0], "uv": [92, 51]}, + {"origin": [-8.37868, 8.25, -17.87868], "size": [2, 4, 2], "pivot": [-10.87868, 13.75, -21.37868], "rotation": [67.5, 0, 0], "uv": [51, 70]}, + {"origin": [-1.62132, 12.25, -19.87868], "size": [2, 2, 4], "pivot": [10.87868, 13.75, -21.37868], "rotation": [67.5, 0, 0], "uv": [92, 73], "mirror": true}, + {"origin": [-1.62132, 8.25, -17.87868], "size": [2, 4, 2], "pivot": [10.87868, 13.75, -21.37868], "rotation": [67.5, 0, 0], "uv": [51, 70], "mirror": true}, + {"origin": [-1.62132, 8.25, -21.87868], "size": [2, 2, 4], "pivot": [10.87868, 13.75, -21.37868], "rotation": [67.5, 0, 0], "uv": [92, 51], "mirror": true}, + {"origin": [-6.37868, 11.25, -31.87868], "size": [5, 5, 7], "uv": [0, 85]}, + {"origin": [-6.37868, 10, -31.87868], "size": [5, 2, 7], "inflate": -0.1, "uv": [0, 97]}, + {"origin": [-4.37868, 16.25, -29.87868], "size": [1, 2, 2], "uv": [32, 59]} + ] + }, + { + "name": "jaw_right", + "parent": "head_right", + "pivot": [-3.87868, 11.25, -17.87868], + "cubes": [ + {"origin": [-7.37868, 9.25, -24.87868], "size": [7, 2, 7], "uv": [88, 0]}, + {"origin": [-7.37868, 11.25, -21.87868], "size": [0, 3, 4], "inflate": 0.05, "uv": [32, 52]}, + {"origin": [-0.37868, 11.25, -21.87868], "size": [0, 3, 4], "inflate": 0.05, "uv": [52, 82]}, + {"origin": [-6.37868, 9.25, -31.87868], "size": [5, 2, 7], "uv": [90, 81]} + ] + }, + { + "name": "neck_left", + "parent": "torso", + "pivot": [3.87868, 13.25, 0.95465], + "rotation": [0, -45, 0], + "cubes": [ + {"origin": [0.37868, 8.75, -5.87868], "size": [7, 8, 8], "inflate": 0.1, "uv": [62, 65], "mirror": true} + ] + }, + { + "name": "neck_left2", + "parent": "neck_left", + "pivot": [3.87868, 13.5, -3.87868], + "cubes": [ + {"origin": [0.87868, 10.25, -11.87868], "size": [6, 6, 8], "inflate": 0.1, "uv": [72, 49], "mirror": true} + ] + }, + { + "name": "neck_left3", + "parent": "neck_left2", + "pivot": [3.87868, 13.75, -9.87868], + "cubes": [ + {"origin": [1.37868, 11.25, -17.87868], "size": [5, 5, 8], "uv": [26, 82], "mirror": true} + ] + }, + { + "name": "head_left", + "parent": "neck_left3", + "pivot": [3.87868, 13.75, -17.87868], + "cubes": [ + {"origin": [0.37868, 11.25, -24.87868], "size": [7, 5, 7], "uv": [62, 81], "mirror": true}, + {"origin": [6.37868, 12.25, -17.87868], "size": [2, 2, 4], "pivot": [10.87868, 13.75, -19.37868], "rotation": [135, 0, 0], "uv": [92, 73], "mirror": true}, + {"origin": [-0.62132, 12.25, -17.87868], "size": [2, 2, 4], "pivot": [-3.12132, 13.75, -19.37868], "rotation": [135, 0, 0], "uv": [64, 93], "mirror": true}, + {"origin": [1.37868, 11.25, -31.87868], "size": [5, 5, 7], "uv": [0, 85], "mirror": true}, + {"origin": [1.37868, 10, -31.87868], "size": [5, 2, 7], "inflate": -0.1, "uv": [0, 97], "mirror": true}, + {"origin": [3.37868, 16.25, -29.87868], "size": [1, 2, 2], "uv": [32, 59], "mirror": true} + ] + }, + { + "name": "jaw_left", + "parent": "head_left", + "pivot": [3.87868, 11.25, -17.87868], + "cubes": [ + {"origin": [0.37868, 9.25, -24.87868], "size": [7, 2, 7], "uv": [88, 0], "mirror": true}, + {"origin": [7.37868, 11.25, -21.87868], "size": [0, 3, 4], "inflate": 0.05, "uv": [32, 52], "mirror": true}, + {"origin": [0.37868, 11.25, -21.87868], "size": [0, 3, 4], "inflate": 0.05, "uv": [52, 82], "mirror": true}, + {"origin": [1.37868, 9.25, -31.87868], "size": [5, 2, 7], "uv": [90, 81], "mirror": true} + ] + }, + { + "name": "right_upper_wing", + "parent": "torso", + "pivot": [-6, 17, -3], + "cubes": [ + {"origin": [-18, 17, -3], "size": [12, 0, 16], "uv": [8, 95]} + ] + }, + { + "name": "right_upper_wing2", + "parent": "right_upper_wing", + "pivot": [-18, 17, -3], + "cubes": [ + {"origin": [-35, 17, -3], "size": [17, 0, 16], "uv": [32, 99]} + ] + }, + { + "name": "right_lower_wing2", + "parent": "torso", + "pivot": [-6, 13, -3], + "cubes": [ + {"origin": [-18, 13, -3], "size": [12, 0, 16], "uv": [8, 95]} + ] + }, + { + "name": "right_lower_wing3", + "parent": "right_lower_wing2", + "pivot": [-18, 13, -3], + "cubes": [ + {"origin": [-35, 13, -3], "size": [17, 0, 16], "uv": [32, 99]} + ] + }, + { + "name": "left_lower_wing2", + "parent": "torso", + "pivot": [6, 13, -3], + "cubes": [ + {"origin": [6, 13, -3], "size": [12, 0, 16], "uv": [8, 95], "mirror": true} + ] + }, + { + "name": "left_lower_wing3", + "parent": "left_lower_wing2", + "pivot": [18, 13, -3], + "cubes": [ + {"origin": [18, 13, -3], "size": [17, 0, 16], "uv": [32, 99], "mirror": true} + ] + }, + { + "name": "left_upper_wing", + "parent": "torso", + "pivot": [6, 17, -3], + "cubes": [ + {"origin": [6, 17, -3], "size": [12, 0, 16], "uv": [8, 95], "mirror": true} + ] + }, + { + "name": "left_upper_wing2", + "parent": "left_upper_wing", + "pivot": [18, 17, -3], + "cubes": [ + {"origin": [18, 17, -3], "size": [17, 0, 16], "uv": [32, 99], "mirror": true} + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/common-1.21.1/src/main/resources/assets/antarchy/geo/princess.geo.json b/common-1.21.1/src/main/resources/assets/antarchy/geo/princess.geo.json new file mode 100644 index 00000000..d8a183b6 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/geo/princess.geo.json @@ -0,0 +1,339 @@ +{ + "format_version": "1.12.0", + "minecraft:geometry": [ + { + "description": { + "identifier": "geometry.unknown", + "texture_width": 128, + "texture_height": 128, + "visible_bounds_width": 8, + "visible_bounds_height": 2.5, + "visible_bounds_offset": [0, 0.75, 0] + }, + "bones": [ + { + "name": "princess", + "pivot": [0, 8.16667, 7.33333] + }, + { + "name": "body", + "parent": "princess", + "pivot": [0, 8.16667, 7.33333] + }, + { + "name": "right_leg", + "parent": "body", + "pivot": [-6.25, 10.75, 8.5], + "cubes": [ + {"origin": [-9, 4, 5], "size": [5, 9, 8], "inflate": 0.1, "uv": [0, 68]} + ] + }, + { + "name": "right_foot", + "parent": "right_leg", + "pivot": [-6, 4.91667, 10.58333], + "cubes": [ + {"origin": [-8, 0, 8], "size": [4, 5, 5], "uv": [90, 90]}, + {"origin": [-8, 0, 6], "size": [4, 2, 2], "uv": [56, 25]}, + {"origin": [-8, 2, 8], "size": [4, 2, 5], "inflate": 0.05, "uv": [74, 42]} + ] + }, + { + "name": "left_leg", + "parent": "body", + "pivot": [6.25, 10.75, 8.5], + "cubes": [ + {"origin": [4, 4, 5], "size": [5, 9, 8], "inflate": 0.1, "uv": [74, 25]} + ] + }, + { + "name": "left_foot", + "parent": "left_leg", + "pivot": [6, 4.91667, 10.58333], + "cubes": [ + {"origin": [4, 0, 8], "size": [4, 5, 5], "uv": [92, 63]}, + {"origin": [4, 0, 6], "size": [4, 2, 2], "uv": [94, 16]}, + {"origin": [4, 2, 8], "size": [4, 2, 5], "inflate": 0.05, "uv": [88, 9]} + ] + }, + { + "name": "torso", + "parent": "body", + "pivot": [0, 3, 5], + "cubes": [ + {"origin": [-6, 3, -3], "size": [12, 14, 16], "uv": [0, 0]}, + {"origin": [-1, 17, 2], "size": [2, 5, 4], "uv": [0, 0]} + ] + }, + { + "name": "tail", + "parent": "torso", + "pivot": [0, 12.75, 13], + "cubes": [ + {"origin": [-4, 6.75, 11], "size": [8, 10, 12], "uv": [0, 30]} + ] + }, + { + "name": "tail2", + "parent": "tail", + "pivot": [0, 13, 23], + "cubes": [ + {"origin": [-3, 8.5, 22], "size": [6, 8, 11], "uv": [40, 30]} + ] + }, + { + "name": "tail3", + "parent": "tail2", + "pivot": [0, 13.25, 32], + "cubes": [ + {"origin": [-2, 10.25, 32], "size": [4, 6, 11], "uv": [32, 65]}, + {"origin": [-6, 12.25, 41], "size": [12, 2, 7], "uv": [56, 16]}, + {"origin": [-1.5, 12.25, 48], "size": [3, 2, 4], "uv": [92, 42]} + ] + }, + { + "name": "neck", + "parent": "torso", + "pivot": [0, 13.5, -1.16667], + "cubes": [ + {"origin": [-3.5, 9, -8], "size": [7, 8, 8], "inflate": 0.1, "uv": [62, 65]} + ] + }, + { + "name": "neck2", + "parent": "neck", + "pivot": [0, 13.75, -6], + "cubes": [ + {"origin": [-3, 10.5, -14], "size": [6, 6, 8], "inflate": 0.1, "uv": [72, 49]} + ] + }, + { + "name": "neck3", + "parent": "neck2", + "pivot": [0, 14, -12], + "cubes": [ + {"origin": [-2.5, 11.5, -20], "size": [5, 5, 8], "uv": [26, 82]} + ] + }, + { + "name": "head", + "parent": "neck3", + "pivot": [0, 14, -20], + "cubes": [ + {"origin": [-3.5, 11.5, -27], "size": [7, 5, 7], "uv": [62, 81]}, + {"origin": [-4.5, 12.5, -22], "size": [2, 2, 4], "pivot": [-7, 14, -23.5], "rotation": [67.5, 0, 0], "uv": [92, 73]}, + {"origin": [-6.5, 12.5, -20], "size": [2, 2, 4], "pivot": [-7, 14, -23.5], "rotation": [67.5, 0, 0], "uv": [52, 93]}, + {"origin": [2.5, 12.5, -22], "size": [2, 2, 4], "pivot": [7, 14, -23.5], "rotation": [67.5, 0, 0], "uv": [64, 93]}, + {"origin": [4.5, 12.5, -20], "size": [2, 2, 4], "pivot": [7, 14, -23.5], "rotation": [67.5, 0, 0], "uv": [76, 93]}, + {"origin": [-2.5, 11.5, -34], "size": [5, 5, 7], "uv": [0, 85]}, + {"origin": [-2.5, 10.25, -34], "size": [5, 2, 7], "inflate": -0.1, "uv": [0, 97]}, + {"origin": [-0.5, 16.5, -32], "size": [1, 2, 2], "uv": [32, 59]} + ] + }, + { + "name": "jaw", + "parent": "head", + "pivot": [0, 11.5, -20], + "cubes": [ + {"origin": [-3.5, 9.5, -27], "size": [7, 2, 7], "uv": [88, 0]}, + {"origin": [-3.5, 11.5, -24], "size": [0, 3, 4], "inflate": 0.05, "uv": [32, 52]}, + {"origin": [3.5, 11.5, -24], "size": [0, 3, 4], "inflate": 0.05, "uv": [52, 82]}, + {"origin": [-2.5, 9.5, -34], "size": [5, 2, 7], "uv": [90, 81]} + ] + }, + { + "name": "neck_right", + "parent": "torso", + "pivot": [-3.87868, 13.25, 0.95465], + "rotation": [0, 45, 0], + "cubes": [ + {"origin": [-7.37868, 8.75, -5.87868], "size": [7, 8, 8], "inflate": 0.1, "uv": [62, 65]} + ] + }, + { + "name": "neck_right2", + "parent": "neck_right", + "pivot": [-3.87868, 13.5, -3.87868], + "cubes": [ + {"origin": [-6.87868, 10.25, -11.87868], "size": [6, 6, 8], "inflate": 0.1, "uv": [72, 49]} + ] + }, + { + "name": "neck_right3", + "parent": "neck_right2", + "pivot": [-3.87868, 13.75, -9.87868], + "cubes": [ + {"origin": [-6.37868, 11.25, -17.87868], "size": [5, 5, 8], "uv": [26, 82]} + ] + }, + { + "name": "head_right", + "parent": "neck_right3", + "pivot": [-3.87868, 13.75, -17.87868], + "cubes": [ + {"origin": [-7.37868, 11.25, -24.87868], "size": [7, 5, 7], "uv": [62, 81]}, + {"origin": [-8.37868, 12.25, -19.87868], "size": [2, 2, 4], "pivot": [-10.87868, 13.75, -21.37868], "rotation": [67.5, 0, 0], "uv": [92, 73]}, + {"origin": [-8.37868, 8.25, -21.87868], "size": [2, 2, 4], "pivot": [-10.87868, 13.75, -21.37868], "rotation": [67.5, 0, 0], "uv": [92, 51]}, + {"origin": [-8.37868, 8.25, -17.87868], "size": [2, 4, 2], "pivot": [-10.87868, 13.75, -21.37868], "rotation": [67.5, 0, 0], "uv": [51, 70]}, + {"origin": [-1.62132, 12.25, -19.87868], "size": [2, 2, 4], "pivot": [10.87868, 13.75, -21.37868], "rotation": [67.5, 0, 0], "uv": [92, 73], "mirror": true}, + {"origin": [-1.62132, 8.25, -17.87868], "size": [2, 4, 2], "pivot": [10.87868, 13.75, -21.37868], "rotation": [67.5, 0, 0], "uv": [51, 70], "mirror": true}, + {"origin": [-1.62132, 8.25, -21.87868], "size": [2, 2, 4], "pivot": [10.87868, 13.75, -21.37868], "rotation": [67.5, 0, 0], "uv": [92, 51], "mirror": true}, + {"origin": [-6.37868, 11.25, -31.87868], "size": [5, 5, 7], "uv": [0, 85]}, + {"origin": [-6.37868, 10, -31.87868], "size": [5, 2, 7], "inflate": -0.1, "uv": [0, 97]}, + {"origin": [-4.37868, 16.25, -29.87868], "size": [1, 2, 2], "uv": [32, 59]} + ] + }, + { + "name": "jaw_right", + "parent": "head_right", + "pivot": [-3.87868, 11.25, -17.87868], + "cubes": [ + {"origin": [-7.37868, 9.25, -24.87868], "size": [7, 2, 7], "uv": [88, 0]}, + {"origin": [-7.37868, 11.25, -21.87868], "size": [0, 3, 4], "inflate": 0.05, "uv": [32, 52]}, + {"origin": [-0.37868, 11.25, -21.87868], "size": [0, 3, 4], "inflate": 0.05, "uv": [52, 82]}, + {"origin": [-6.37868, 9.25, -31.87868], "size": [5, 2, 7], "uv": [90, 81]} + ] + }, + { + "name": "neck_left", + "parent": "torso", + "pivot": [3.87868, 13.25, 0.95465], + "rotation": [0, -45, 0], + "cubes": [ + {"origin": [0.37868, 8.75, -5.87868], "size": [7, 8, 8], "inflate": 0.1, "uv": [62, 65], "mirror": true} + ] + }, + { + "name": "neck_left2", + "parent": "neck_left", + "pivot": [3.87868, 13.5, -3.87868], + "cubes": [ + {"origin": [0.87868, 10.25, -11.87868], "size": [6, 6, 8], "inflate": 0.1, "uv": [72, 49], "mirror": true} + ] + }, + { + "name": "neck_left3", + "parent": "neck_left2", + "pivot": [3.87868, 13.75, -9.87868], + "cubes": [ + {"origin": [1.37868, 11.25, -17.87868], "size": [5, 5, 8], "uv": [26, 82], "mirror": true} + ] + }, + { + "name": "head_left", + "parent": "neck_left3", + "pivot": [3.87868, 13.75, -17.87868], + "cubes": [ + {"origin": [0.37868, 11.25, -24.87868], "size": [7, 5, 7], "uv": [62, 81], "mirror": true}, + {"origin": [6.37868, 12.25, -17.87868], "size": [2, 2, 4], "pivot": [10.87868, 13.75, -19.37868], "rotation": [135, 0, 0], "uv": [92, 73], "mirror": true}, + {"origin": [-0.62132, 12.25, -17.87868], "size": [2, 2, 4], "pivot": [-3.12132, 13.75, -19.37868], "rotation": [135, 0, 0], "uv": [64, 93], "mirror": true}, + {"origin": [1.37868, 11.25, -31.87868], "size": [5, 5, 7], "uv": [0, 85], "mirror": true}, + {"origin": [1.37868, 10, -31.87868], "size": [5, 2, 7], "inflate": -0.1, "uv": [0, 97], "mirror": true}, + {"origin": [3.37868, 16.25, -29.87868], "size": [1, 2, 2], "uv": [32, 59], "mirror": true} + ] + }, + { + "name": "jaw_left", + "parent": "head_left", + "pivot": [3.87868, 11.25, -17.87868], + "cubes": [ + {"origin": [0.37868, 9.25, -24.87868], "size": [7, 2, 7], "uv": [88, 0], "mirror": true}, + {"origin": [7.37868, 11.25, -21.87868], "size": [0, 3, 4], "inflate": 0.05, "uv": [32, 52], "mirror": true}, + {"origin": [0.37868, 11.25, -21.87868], "size": [0, 3, 4], "inflate": 0.05, "uv": [52, 82], "mirror": true}, + {"origin": [1.37868, 9.25, -31.87868], "size": [5, 2, 7], "uv": [90, 81], "mirror": true} + ] + }, + { + "name": "right_upper_wing", + "parent": "torso", + "pivot": [-6, 17, -3], + "cubes": [ + {"origin": [-18, 17, -3], "size": [12, 0, 16], "uv": [8, 95]} + ] + }, + { + "name": "right_upper_wing2", + "parent": "right_upper_wing", + "pivot": [-18, 17, -3], + "cubes": [ + {"origin": [-35, 17, -3], "size": [17, 0, 16], "uv": [32, 99]} + ] + }, + { + "name": "right_lower_wing2", + "parent": "torso", + "pivot": [-6, 13, -3], + "cubes": [ + {"origin": [-18, 13, -3], "size": [12, 0, 16], "uv": [8, 95]} + ] + }, + { + "name": "right_lower_wing3", + "parent": "right_lower_wing2", + "pivot": [-18, 13, -3], + "cubes": [ + {"origin": [-35, 13, -3], "size": [17, 0, 16], "uv": [32, 99]} + ] + }, + { + "name": "left_lower_wing2", + "parent": "torso", + "pivot": [6, 13, -3], + "cubes": [ + {"origin": [6, 13, -3], "size": [12, 0, 16], "uv": [8, 95], "mirror": true} + ] + }, + { + "name": "left_lower_wing3", + "parent": "left_lower_wing2", + "pivot": [18, 13, -3], + "cubes": [ + {"origin": [18, 13, -3], "size": [17, 0, 16], "uv": [32, 99], "mirror": true} + ] + }, + { + "name": "left_upper_wing", + "parent": "torso", + "pivot": [6, 17, -3], + "cubes": [ + {"origin": [6, 17, -3], "size": [12, 0, 16], "uv": [8, 95], "mirror": true} + ] + }, + { + "name": "left_upper_wing2", + "parent": "left_upper_wing", + "pivot": [18, 17, -3], + "cubes": [ + {"origin": [18, 17, -3], "size": [17, 0, 16], "uv": [32, 99], "mirror": true} + ] + }, + { + "name": "orb_center", + "parent": "torso", + "pivot": [0, 6, -1], + "cubes": [ + {"origin": [-4, 2, -9], "size": [8, 8, 8], "uv": [40, 49]} + ] + }, + { + "name": "orb_right", + "parent": "torso", + "pivot": [-3.58579, 5, 0.41421], + "rotation": [0, 45, 0], + "cubes": [ + {"origin": [-7.58579, 1, -7.58579], "size": [8, 8, 8], "uv": [0, 52]} + ] + }, + { + "name": "orb_left", + "parent": "torso", + "pivot": [3.58579, 5, 0.41421], + "rotation": [0, -45, 0], + "cubes": [ + {"origin": [-0.41421, 1, -7.58579], "size": [8, 8, 8], "uv": [56, 0]} + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/common-1.21.1/src/main/resources/assets/antarchy/geo/royal_guardian_sword.geo.json b/common-1.21.1/src/main/resources/assets/antarchy/geo/royal_guardian_sword.geo.json new file mode 100644 index 00000000..24e29db7 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/geo/royal_guardian_sword.geo.json @@ -0,0 +1,225 @@ +{ + "format_version": "1.21.110", + "minecraft:geometry": [ + { + "description": { + "identifier": "geometry.royal_guardian_sword - Converted", + "texture_width": 64, + "texture_height": 64, + "visible_bounds_width": 2, + "visible_bounds_height": 4, + "visible_bounds_offset": [0, 1, 0] + }, + "bones": [ + { + "name": "royal_guardian_sword", + "pivot": [0.35, -7.75, 0] + }, + { + "name": "guard", + "parent": "royal_guardian_sword", + "pivot": [0.35, -7.75, 0], + "cubes": [ + { + "origin": [-1.5, -6.5, -1.25], + "size": [3, 1, 2.5], + "uv": { + "north": {"uv": [31, 9], "uv_size": [3, 1]}, + "east": {"uv": [22, 9], "uv_size": [3, 1]}, + "south": {"uv": [31, 9], "uv_size": [3, 1]}, + "west": {"uv": [28, 9], "uv_size": [3, 1]}, + "up": {"uv": [25, 6], "uv_size": [3, 2.5]}, + "down": {"uv": [28, 8.5], "uv_size": [3, -2.5]} + } + }, + { + "origin": [-1, -9.5, -1], + "size": [2, 3, 2], + "uv": { + "north": {"uv": [16, 24], "uv_size": [2, 3]}, + "east": {"uv": [14, 24], "uv_size": [2, 3]}, + "south": {"uv": [20, 24], "uv_size": [2, 3]}, + "west": {"uv": [18, 24], "uv_size": [2, 3]}, + "up": {"uv": [16, 22], "uv_size": [2, 2]}, + "down": {"uv": [18, 24], "uv_size": [2, -2]} + } + }, + { + "origin": [0.2, -9.5, -5.2], + "size": [0, 3, 4], + "pivot": [0.2, -8, -0.2], + "rotation": [0, -45, 0], + "uv": { + "north": {"uv": [26, 14], "uv_size": [0, 3]}, + "east": {"uv": [30, 14], "uv_size": [-4, 3]}, + "south": {"uv": [30, 14], "uv_size": [0, 3]}, + "west": {"uv": [26, 14], "uv_size": [4, 3]}, + "up": {"uv": [26, 10], "uv_size": [0, 4]}, + "down": {"uv": [26, 14], "uv_size": [0, -4]} + } + } + ] + }, + { + "name": "group2", + "parent": "guard", + "pivot": [-3.1, -7.05, 0.5], + "cubes": [ + { + "origin": [-0.41644, -5.62638, -1.25], + "size": [1, 5, 2.5], + "inflate": -0.005, + "pivot": [-0.5, -6.43592, 0.75], + "rotation": [0, 0, -100], + "uv": { + "north": {"uv": [21, 17], "uv_size": [1, 5]}, + "east": {"uv": [18.5, 17], "uv_size": [2.5, 5]}, + "south": {"uv": [22, 17], "uv_size": [-1, 5]}, + "west": {"uv": [14.5, 17], "uv_size": [2.5, 5]}, + "up": {"uv": [17, 14.5], "uv_size": [1, 2.5]}, + "down": {"uv": [17, 17], "uv_size": [1, -2.5]} + } + }, + { + "origin": [-0.58356, -5.62638, -1.25], + "size": [1, 5, 2.5], + "inflate": -0.005, + "pivot": [0.5, -6.43592, 0.75], + "rotation": [0, 0, 100], + "uv": { + "north": {"uv": [22, 17], "uv_size": [-1, 5]}, + "east": {"uv": [14.5, 17], "uv_size": [2.5, 5]}, + "south": {"uv": [21, 17], "uv_size": [1, 5]}, + "west": {"uv": [18.5, 17], "uv_size": [2.5, 5]}, + "up": {"uv": [17, 14.5], "uv_size": [1, 2.5]}, + "down": {"uv": [17, 17], "uv_size": [1, -2.5]} + } + } + ] + }, + { + "name": "group", + "parent": "guard", + "pivot": [-3.1, -7.05, 0.5] + }, + { + "name": "handle", + "parent": "royal_guardian_sword", + "pivot": [3, -15, -3], + "cubes": [ + { + "origin": [-0.5, -14, -0.5], + "size": [1, 7, 1], + "uv": { + "north": {"uv": [27, 18], "uv_size": [1, 7]}, + "east": {"uv": [26, 18], "uv_size": [1, 7]}, + "south": {"uv": [29, 18], "uv_size": [1, 7]}, + "west": {"uv": [28, 18], "uv_size": [1, 7]}, + "up": {"uv": [27, 17], "uv_size": [1, 1]}, + "down": {"uv": [28, 18], "uv_size": [1, -1]} + } + }, + { + "origin": [-0.5, -14, -0.5], + "size": [1, 8, 1], + "inflate": 0.2, + "uv": { + "north": {"uv": [23, 18], "uv_size": [1, 8]}, + "east": {"uv": [22, 18], "uv_size": [1, 8]}, + "south": {"uv": [25, 18], "uv_size": [1, 8]}, + "west": {"uv": [24, 18], "uv_size": [1, 8]}, + "up": {"uv": [23, 17], "uv_size": [1, 1]}, + "down": {"uv": [24, 18], "uv_size": [1, -1]} + } + }, + { + "origin": [-1.5, -16, -1.5], + "size": [3, 3, 3], + "uv": { + "north": {"uv": [23, 3], "uv_size": [3, 3]}, + "east": {"uv": [23, 3], "uv_size": [3, 3]}, + "south": {"uv": [23, 3], "uv_size": [3, 3]}, + "west": {"uv": [23, 3], "uv_size": [3, 3]}, + "up": {"uv": [17, 0], "uv_size": [3, 3]}, + "down": {"uv": [20, 3], "uv_size": [3, -3]} + } + } + ] + }, + { + "name": "blade", + "parent": "royal_guardian_sword", + "pivot": [6, -5, -3], + "cubes": [ + { + "origin": [1.5, -6, 0], + "size": [1, 34, 0], + "uv": { + "north": {"uv": [10, 0], "uv_size": [1, 34]}, + "east": {"uv": [10, 0], "uv_size": [0, 34]}, + "south": {"uv": [11, 0], "uv_size": [1, 34]}, + "west": {"uv": [11, 0], "uv_size": [0, 34]}, + "up": {"uv": [10, 0], "uv_size": [1, 0]}, + "down": {"uv": [11, 0], "uv_size": [1, 0]} + } + }, + { + "origin": [-2, -6, -0.5], + "size": [4, 33.625, 1], + "uv": { + "north": {"uv": [1, 1], "uv_size": [4, 33]}, + "east": {"uv": [0, 1], "uv_size": [1, 33]}, + "south": {"uv": [6, 1], "uv_size": [4, 33]}, + "west": {"uv": [5, 1], "uv_size": [1, 33]}, + "up": {"uv": [1, 0], "uv_size": [4, 1]}, + "down": {"uv": [5, 1], "uv_size": [4, -1]} + } + }, + { + "origin": [-2.1, 26.525, -0.5], + "size": [2.8, 2.8, 1], + "inflate": 0.005, + "pivot": [0, 28.625, 0], + "rotation": [0, 0, -45], + "uv": { + "north": {"uv": [27, 1], "uv_size": [2, 2]}, + "east": {"uv": [26, 1], "uv_size": [1, 2]}, + "south": {"uv": [30, 1], "uv_size": [2, 2]}, + "west": {"uv": [29, 1], "uv_size": [1, 2]}, + "up": {"uv": [27, 0], "uv_size": [2, 1]}, + "down": {"uv": [29, 1], "uv_size": [2, -1]} + } + }, + { + "origin": [-1.9, 26.3, 0], + "size": [3.525, 3.525, 0], + "inflate": 0.005, + "pivot": [0, 28.2, 0], + "rotation": [0, 0, -45], + "uv": { + "north": {"uv": [26, 3], "uv_size": [3, 3]}, + "east": {"uv": [26, 3], "uv_size": [0, 3]}, + "south": {"uv": [29, 3], "uv_size": [3, 3]}, + "west": {"uv": [29, 3], "uv_size": [0, 3]}, + "up": {"uv": [26, 3], "uv_size": [3, 0]}, + "down": {"uv": [29, 3], "uv_size": [3, 0]} + } + }, + { + "origin": [-2.5, -6, 0], + "size": [1, 34, 0], + "uv": { + "north": {"uv": [12, 0], "uv_size": [1, 34]}, + "east": {"uv": [12, 0], "uv_size": [0, 34]}, + "south": {"uv": [13, 0], "uv_size": [1, 34]}, + "west": {"uv": [13, 0], "uv_size": [0, 34]}, + "up": {"uv": [12, 0], "uv_size": [1, 0]}, + "down": {"uv": [13, 0], "uv_size": [1, 0]} + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/common-1.21.1/src/main/resources/assets/antarchy/lang/en_us.json b/common-1.21.1/src/main/resources/assets/antarchy/lang/en_us.json index a4e033bf..27fd3ee1 100644 --- a/common-1.21.1/src/main/resources/assets/antarchy/lang/en_us.json +++ b/common-1.21.1/src/main/resources/assets/antarchy/lang/en_us.json @@ -526,6 +526,23 @@ "tooltip.antarchy.blood_crystal_katana.launch": "Launches you forward on hit.", "tooltip.antarchy.blood_crystal_katana.dash": "Reaches distant targets you look at; a full swing grants brief immunity.", "tooltip.antarchy.blood_crystal_katana.trail": "Leaves a crimson trail behind you.", + "item.antarchy.eye_of_the_storm": "Eye of the Storm", + "tooltip.antarchy.eye_of_the_storm.updraft": "Use to summon a vortex beneath you that flings you skyward.", + "tooltip.antarchy.eye_of_the_storm.surge": "Attack to hurl a vortex that gathers foes, batters them, and flings them back at you.", + "item.antarchy.royal_guardian_helmet": "Royal Guardian Helmet", + "item.antarchy.royal_guardian_chestplate": "Royal Guardian Chestplate", + "item.antarchy.royal_guardian_leggings": "Royal Guardian Leggings", + "item.antarchy.royal_guardian_boots": "Royal Guardian Boots", + "item.antarchy.royal_guardian_sword": "Royal Guardian Sword", + "item.antarchy.royal_guardian_shield": "Royal Guardian Shield", + "item.antarchy.royal_assailant_helmet": "Royal Assailant Helmet", + "item.antarchy.royal_assailant_chestplate": "Royal Assailant Chestplate", + "item.antarchy.royal_assailant_leggings": "Royal Assailant Leggings", + "item.antarchy.royal_assailant_boots": "Royal Assailant Boots", + "item.antarchy.royal_assailant_battleaxe": "Royal Assailant Battle Axe", + "tooltip.antarchy.royal_guardian_shield": "An upgraded shield fit for a king's guard.", + "tooltip.antarchy.royal_assailant_chestplate.invert": "Press the inversion key to toggle inverted gravity on and off.", + "tooltip.antarchy.royal_assailant_boots.fall": "Cancels fall damage while falling upward.", "item.antarchy.mantis_claw": "Mantis Claw", "tooltip.antarchy.mantis_claw.wall_cling": "Dual wield to cling to walls and jump upward.", "item.antarchy.king_scale": "King Scale", @@ -533,8 +550,8 @@ "item.antarchy.jerry_nucleus": "Jerry Nucleus", "tooltip.antarchy.jerry_nucleus.hatch": "While holding, interact with any bug egg or turtle egg to hatch it instantly.", "key.antarchy.dorrie_charge_jump": "Dorrie Charge Jump", - "key.antarchy.hercules_beetle_charge": "Hercules Beetle Charge", - "key.antarchy.hercules_beetle_flight_toggle": "Hercules Beetle Flight Toggle", + "key.antarchy.mount_special": "Mount: Special / Charge", + "key.antarchy.mount_flight_toggle": "Mount: Toggle Flight", "item.antarchy.jumpy_bug_leg": "Jumpy Bug Leg", "item.antarchy.jumpy_boots": "Jumpy Boots", "tooltip.antarchy.jumpy_boots": "Sneak to charge, then jump to spring upward.", @@ -683,6 +700,7 @@ "item.antarchy.alpha_mantis_spawn_egg": "Alpha Mantis Spawn Egg", "biome.antarchy.moleworm_caves": "Moleworm Caves", "biome.antarchy.elythia_meadow": "Elythian Meadows", + "biome.antarchy.truffalo_forest": "Truffalo Forest", "biome.antarchy.elythia_ocean": "Elythian Ocean", "biome.antarchy.butterfly_fields": "Butterfly Fields", "biome.antarchy.ouranwood_forest": "Ouranwood Forest", @@ -1117,6 +1135,11 @@ "entity.antarchy.creeping_horror": "Creeping Horror", "entity.antarchy.lurking_terror": "Lurking Terror", "entity.antarchy.hercules_beetle": "Hercules Beetle", + "entity.antarchy.prince": "Prince", + "entity.antarchy.princess": "Princess", + "entity.antarchy.royal_bolt": "Royal Bolt", + "block.antarchy.prince_egg": "Prince Egg", + "block.antarchy.princess_egg": "Princess Egg", "item.antarchy.jumpy_bug_spawn_egg": "Jumpy Bug Spawn Egg", "item.antarchy.spit_bug_spawn_egg": "Spit Bug Spawn Egg", "item.antarchy.stink_bug_spawn_egg": "Stink Bug Spawn Egg", @@ -1217,6 +1240,7 @@ "item.antarchy.tigers_eye_armor.activate": "Press %s to mimic the block beneath you", "item.antarchy.tigers_eye_armor.active_bonus": "Doubles detection reduction while active", "key.antarchy.tigers_eye_camouflage": "Adaptive Camouflage", + "key.antarchy.royal_inversion_toggle": "Royal Assailant: Toggle Inversion", "message.antarchy.tiger_eye_camouflage.activated": "Adaptive Camouflage activated", "message.antarchy.tiger_eye_camouflage.disabled": "Adaptive Camouflage disabled", "message.antarchy.tiger_eye_camouflage.full_set_required": "A full set of Tiger's Eye armor is required", diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/prince_egg.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/prince_egg.json index ac4ec554..c3bca09d 100644 --- a/common-1.21.1/src/main/resources/assets/antarchy/models/block/prince_egg.json +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/prince_egg.json @@ -1,104 +1,498 @@ { - "ambientocclusion": false, + "format_version": "1.21.11", + "credit": "Made with Blockbench", + "parent": "block/block", + "texture_size": [ + 64, + 64 + ], "textures": { - "particle": "minecraft:block/flower_pot", - "flowerpot": "minecraft:block/flower_pot", - "dirt": "minecraft:block/dirt", - "stem": "antarchy:block/spider_lily_stem", - "flower": "antarchy:block/spider_lily_top" + "1": "antarchy:block/prince_egg", + "particle": "antarchy:block/prince_egg" }, "elements": [ { - "from": [5, 0, 5], - "to": [6, 6, 11], + "from": [ + 6, + 15, + 6 + ], + "to": [ + 10, + 16, + 10 + ], "faces": { - "down": { "uv": [5, 5, 6, 11], "texture": "#flowerpot", "cullface": "down" }, - "up": { "uv": [5, 5, 6, 11], "texture": "#flowerpot" }, - "north": { "uv": [10, 10, 11, 16], "texture": "#flowerpot" }, - "south": { "uv": [5, 10, 6, 16], "texture": "#flowerpot" }, - "west": { "uv": [5, 10, 11, 16], "texture": "#flowerpot" }, - "east": { "uv": [5, 10, 11, 16], "texture": "#flowerpot" } + "north": { + "uv": [ + 6, + 5.5, + 7, + 5.75 + ], + "texture": "#1" + }, + "east": { + "uv": [ + 6, + 5.5, + 7, + 5.75 + ], + "texture": "#1" + }, + "south": { + "uv": [ + 6, + 5.5, + 7, + 5.75 + ], + "texture": "#1" + }, + "west": { + "uv": [ + 6, + 5.5, + 7, + 5.75 + ], + "texture": "#1" + }, + "up": { + "uv": [ + 6, + 7, + 5, + 6 + ], + "texture": "#1", + "cullface": "up" + } } }, { - "from": [10, 0, 5], - "to": [11, 6, 11], + "from": [ + 5, + 14, + 5 + ], + "to": [ + 11, + 15, + 11 + ], "faces": { - "down": { "uv": [10, 5, 11, 11], "texture": "#flowerpot", "cullface": "down" }, - "up": { "uv": [10, 5, 11, 11], "texture": "#flowerpot" }, - "north": { "uv": [5, 10, 6, 16], "texture": "#flowerpot" }, - "south": { "uv": [10, 10, 11, 16], "texture": "#flowerpot" }, - "west": { "uv": [5, 10, 11, 16], "texture": "#flowerpot" }, - "east": { "uv": [5, 10, 11, 16], "texture": "#flowerpot" } + "north": { + "uv": [ + 6, + 5.25, + 7.5, + 5.5 + ], + "texture": "#1" + }, + "east": { + "uv": [ + 6, + 5.25, + 7.5, + 5.5 + ], + "texture": "#1" + }, + "south": { + "uv": [ + 6, + 5.25, + 7.5, + 5.5 + ], + "texture": "#1" + }, + "west": { + "uv": [ + 6, + 5.25, + 7.5, + 5.5 + ], + "texture": "#1" + }, + "up": { + "uv": [ + 7.5, + 5.25, + 6, + 3.75 + ], + "texture": "#1" + } } }, { - "from": [6, 0, 5], - "to": [10, 6, 6], + "from": [ + 4, + 13, + 4 + ], + "to": [ + 12, + 14, + 12 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 0, + -1, + 0 + ] + }, "faces": { - "down": { "uv": [6, 10, 10, 11], "texture": "#flowerpot", "cullface": "down" }, - "up": { "uv": [6, 5, 10, 6], "texture": "#flowerpot" }, - "north": { "uv": [6, 10, 10, 16], "texture": "#flowerpot" }, - "south": { "uv": [6, 10, 10, 16], "texture": "#flowerpot" } + "north": { + "uv": [ + 3.5, + 3.25, + 5.5, + 3.5 + ], + "texture": "#1" + }, + "east": { + "uv": [ + 3.5, + 3.25, + 5.5, + 3.5 + ], + "texture": "#1" + }, + "south": { + "uv": [ + 3.5, + 3.25, + 5.5, + 3.5 + ], + "texture": "#1" + }, + "west": { + "uv": [ + 3.5, + 3.25, + 5.5, + 3.5 + ], + "texture": "#1" + }, + "up": { + "uv": [ + 5, + 8, + 3, + 6 + ], + "texture": "#1" + } } }, { - "from": [6, 0, 10], - "to": [10, 6, 11], + "from": [ + 3, + 0, + 3 + ], + "to": [ + 13, + 13, + 13 + ], "faces": { - "down": { "uv": [6, 5, 10, 6], "texture": "#flowerpot", "cullface": "down" }, - "up": { "uv": [6, 10, 10, 11], "texture": "#flowerpot" }, - "north": { "uv": [6, 10, 10, 16], "texture": "#flowerpot" }, - "south": { "uv": [6, 10, 10, 16], "texture": "#flowerpot" } + "north": { + "uv": [ + 3.5, + 0, + 6, + 3.25 + ], + "texture": "#1" + }, + "east": { + "uv": [ + 3.5, + 0, + 6, + 3.25 + ], + "texture": "#1" + }, + "south": { + "uv": [ + 3.5, + 0, + 6, + 3.25 + ], + "texture": "#1" + }, + "west": { + "uv": [ + 3.5, + 0, + 6, + 3.25 + ], + "texture": "#1" + }, + "up": { + "uv": [ + 8.5, + 2.5, + 6, + 0 + ], + "texture": "#1" + }, + "down": { + "uv": [ + 8.5, + 0, + 6, + 2.5 + ], + "texture": "#1", + "cullface": "down" + } } }, { - "from": [6, 0, 6], - "to": [10, 4, 10], + "from": [ + 2, + 1, + 2 + ], + "to": [ + 14, + 11, + 14 + ], "faces": { - "down": { "uv": [6, 12, 10, 16], "texture": "#flowerpot", "cullface": "down" }, - "up": { "uv": [6, 6, 10, 10], "texture": "#dirt" } + "north": { + "uv": [ + 3, + 3.5, + 6, + 6 + ], + "texture": "#1" + }, + "east": { + "uv": [ + 3, + 3.5, + 6, + 6 + ], + "texture": "#1" + }, + "south": { + "uv": [ + 3, + 3.5, + 6, + 6 + ], + "texture": "#1" + }, + "west": { + "uv": [ + 3, + 3.5, + 6, + 6 + ], + "texture": "#1" + }, + "up": { + "uv": [ + 3, + 6.5, + 0, + 3.5 + ], + "texture": "#1" + }, + "down": { + "uv": [ + 3, + 3.5, + 0, + 6.5 + ], + "texture": "#1" + } } }, { - "from": [2.6, 4, 8], - "to": [13.4, 16, 8], - "rotation": { "origin": [8, 8, 8], "axis": "y", "angle": 45, "rescale": true }, - "shade": false, + "from": [ + 1, + 3, + 1 + ], + "to": [ + 15, + 8, + 15 + ], "faces": { - "north": { "uv": [0, 0, 16, 16], "texture": "#stem", "tintindex": 0 }, - "south": { "uv": [0, 0, 16, 16], "texture": "#stem", "tintindex": 0 } - } - }, - { - "from": [8, 4, 2.6], - "to": [8, 16, 13.4], - "rotation": { "origin": [8, 8, 8], "axis": "y", "angle": 45, "rescale": true }, - "shade": false, - "faces": { - "west": { "uv": [0, 0, 16, 16], "texture": "#stem", "tintindex": 0 }, - "east": { "uv": [0, 0, 16, 16], "texture": "#stem", "tintindex": 0 } - } - }, - { - "from": [2.6, 4, 8], - "to": [13.4, 16, 8], - "rotation": { "origin": [8, 8, 8], "axis": "y", "angle": 45, "rescale": true }, - "shade": false, - "faces": { - "north": { "uv": [0, 0, 16, 16], "texture": "#flower" }, - "south": { "uv": [0, 0, 16, 16], "texture": "#flower" } - } - }, - { - "from": [8, 4, 2.6], - "to": [8, 16, 13.4], - "rotation": { "origin": [8, 8, 8], "axis": "y", "angle": 45, "rescale": true }, - "shade": false, - "faces": { - "west": { "uv": [0, 0, 16, 16], "texture": "#flower" }, - "east": { "uv": [0, 0, 16, 16], "texture": "#flower" } + "north": { + "uv": [ + 6, + 2.5, + 9.5, + 3.75 + ], + "texture": "#1" + }, + "east": { + "uv": [ + 6, + 2.5, + 9.5, + 3.75 + ], + "texture": "#1" + }, + "south": { + "uv": [ + 6, + 2.5, + 9.5, + 3.75 + ], + "texture": "#1" + }, + "west": { + "uv": [ + 6, + 2.5, + 9.5, + 3.75 + ], + "texture": "#1" + }, + "up": { + "uv": [ + 3.5, + 3.5, + 0, + 0 + ], + "texture": "#1" + }, + "down": { + "uv": [ + 3.5, + 0, + 0, + 3.5 + ], + "texture": "#1" + } } } - ] + ], + "display": { + "thirdperson_righthand": { + "rotation": [ + 75, + 45, + 0 + ], + "translation": [ + 0, + 2.5, + 0 + ], + "scale": [ + 0.375, + 0.375, + 0.375 + ] + }, + "thirdperson_lefthand": { + "rotation": [ + 75, + 45, + 0 + ], + "translation": [ + 0, + 2.5, + 0 + ], + "scale": [ + 0.375, + 0.375, + 0.375 + ] + }, + "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 + ] + } + } } diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/princess_egg.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/princess_egg.json index ac4ec554..e3ba976c 100644 --- a/common-1.21.1/src/main/resources/assets/antarchy/models/block/princess_egg.json +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/princess_egg.json @@ -1,104 +1,498 @@ { - "ambientocclusion": false, + "format_version": "1.21.11", + "credit": "Made with Blockbench", + "parent": "block/block", + "texture_size": [ + 64, + 64 + ], "textures": { - "particle": "minecraft:block/flower_pot", - "flowerpot": "minecraft:block/flower_pot", - "dirt": "minecraft:block/dirt", - "stem": "antarchy:block/spider_lily_stem", - "flower": "antarchy:block/spider_lily_top" + "1": "antarchy:block/princess_egg", + "particle": "antarchy:block/princess_egg" }, "elements": [ { - "from": [5, 0, 5], - "to": [6, 6, 11], + "from": [ + 6, + 15, + 6 + ], + "to": [ + 10, + 16, + 10 + ], "faces": { - "down": { "uv": [5, 5, 6, 11], "texture": "#flowerpot", "cullface": "down" }, - "up": { "uv": [5, 5, 6, 11], "texture": "#flowerpot" }, - "north": { "uv": [10, 10, 11, 16], "texture": "#flowerpot" }, - "south": { "uv": [5, 10, 6, 16], "texture": "#flowerpot" }, - "west": { "uv": [5, 10, 11, 16], "texture": "#flowerpot" }, - "east": { "uv": [5, 10, 11, 16], "texture": "#flowerpot" } + "north": { + "uv": [ + 6, + 5.5, + 7, + 5.75 + ], + "texture": "#1" + }, + "east": { + "uv": [ + 6, + 5.5, + 7, + 5.75 + ], + "texture": "#1" + }, + "south": { + "uv": [ + 6, + 5.5, + 7, + 5.75 + ], + "texture": "#1" + }, + "west": { + "uv": [ + 6, + 5.5, + 7, + 5.75 + ], + "texture": "#1" + }, + "up": { + "uv": [ + 6, + 7, + 5, + 6 + ], + "texture": "#1", + "cullface": "up" + } } }, { - "from": [10, 0, 5], - "to": [11, 6, 11], + "from": [ + 5, + 14, + 5 + ], + "to": [ + 11, + 15, + 11 + ], "faces": { - "down": { "uv": [10, 5, 11, 11], "texture": "#flowerpot", "cullface": "down" }, - "up": { "uv": [10, 5, 11, 11], "texture": "#flowerpot" }, - "north": { "uv": [5, 10, 6, 16], "texture": "#flowerpot" }, - "south": { "uv": [10, 10, 11, 16], "texture": "#flowerpot" }, - "west": { "uv": [5, 10, 11, 16], "texture": "#flowerpot" }, - "east": { "uv": [5, 10, 11, 16], "texture": "#flowerpot" } + "north": { + "uv": [ + 6, + 5.25, + 7.5, + 5.5 + ], + "texture": "#1" + }, + "east": { + "uv": [ + 6, + 5.25, + 7.5, + 5.5 + ], + "texture": "#1" + }, + "south": { + "uv": [ + 6, + 5.25, + 7.5, + 5.5 + ], + "texture": "#1" + }, + "west": { + "uv": [ + 6, + 5.25, + 7.5, + 5.5 + ], + "texture": "#1" + }, + "up": { + "uv": [ + 7.5, + 5.25, + 6, + 3.75 + ], + "texture": "#1" + } } }, { - "from": [6, 0, 5], - "to": [10, 6, 6], + "from": [ + 4, + 13, + 4 + ], + "to": [ + 12, + 14, + 12 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 0, + -1, + 0 + ] + }, "faces": { - "down": { "uv": [6, 10, 10, 11], "texture": "#flowerpot", "cullface": "down" }, - "up": { "uv": [6, 5, 10, 6], "texture": "#flowerpot" }, - "north": { "uv": [6, 10, 10, 16], "texture": "#flowerpot" }, - "south": { "uv": [6, 10, 10, 16], "texture": "#flowerpot" } + "north": { + "uv": [ + 3.5, + 3.25, + 5.5, + 3.5 + ], + "texture": "#1" + }, + "east": { + "uv": [ + 3.5, + 3.25, + 5.5, + 3.5 + ], + "texture": "#1" + }, + "south": { + "uv": [ + 3.5, + 3.25, + 5.5, + 3.5 + ], + "texture": "#1" + }, + "west": { + "uv": [ + 3.5, + 3.25, + 5.5, + 3.5 + ], + "texture": "#1" + }, + "up": { + "uv": [ + 5, + 8, + 3, + 6 + ], + "texture": "#1" + } } }, { - "from": [6, 0, 10], - "to": [10, 6, 11], + "from": [ + 3, + 0, + 3 + ], + "to": [ + 13, + 13, + 13 + ], "faces": { - "down": { "uv": [6, 5, 10, 6], "texture": "#flowerpot", "cullface": "down" }, - "up": { "uv": [6, 10, 10, 11], "texture": "#flowerpot" }, - "north": { "uv": [6, 10, 10, 16], "texture": "#flowerpot" }, - "south": { "uv": [6, 10, 10, 16], "texture": "#flowerpot" } + "north": { + "uv": [ + 3.5, + 0, + 6, + 3.25 + ], + "texture": "#1" + }, + "east": { + "uv": [ + 3.5, + 0, + 6, + 3.25 + ], + "texture": "#1" + }, + "south": { + "uv": [ + 3.5, + 0, + 6, + 3.25 + ], + "texture": "#1" + }, + "west": { + "uv": [ + 3.5, + 0, + 6, + 3.25 + ], + "texture": "#1" + }, + "up": { + "uv": [ + 8.5, + 2.5, + 6, + 0 + ], + "texture": "#1" + }, + "down": { + "uv": [ + 8.5, + 0, + 6, + 2.5 + ], + "texture": "#1", + "cullface": "down" + } } }, { - "from": [6, 0, 6], - "to": [10, 4, 10], + "from": [ + 2, + 1, + 2 + ], + "to": [ + 14, + 11, + 14 + ], "faces": { - "down": { "uv": [6, 12, 10, 16], "texture": "#flowerpot", "cullface": "down" }, - "up": { "uv": [6, 6, 10, 10], "texture": "#dirt" } + "north": { + "uv": [ + 3, + 3.5, + 6, + 6 + ], + "texture": "#1" + }, + "east": { + "uv": [ + 3, + 3.5, + 6, + 6 + ], + "texture": "#1" + }, + "south": { + "uv": [ + 3, + 3.5, + 6, + 6 + ], + "texture": "#1" + }, + "west": { + "uv": [ + 3, + 3.5, + 6, + 6 + ], + "texture": "#1" + }, + "up": { + "uv": [ + 3, + 6.5, + 0, + 3.5 + ], + "texture": "#1" + }, + "down": { + "uv": [ + 3, + 3.5, + 0, + 6.5 + ], + "texture": "#1" + } } }, { - "from": [2.6, 4, 8], - "to": [13.4, 16, 8], - "rotation": { "origin": [8, 8, 8], "axis": "y", "angle": 45, "rescale": true }, - "shade": false, + "from": [ + 1, + 3, + 1 + ], + "to": [ + 15, + 8, + 15 + ], "faces": { - "north": { "uv": [0, 0, 16, 16], "texture": "#stem", "tintindex": 0 }, - "south": { "uv": [0, 0, 16, 16], "texture": "#stem", "tintindex": 0 } - } - }, - { - "from": [8, 4, 2.6], - "to": [8, 16, 13.4], - "rotation": { "origin": [8, 8, 8], "axis": "y", "angle": 45, "rescale": true }, - "shade": false, - "faces": { - "west": { "uv": [0, 0, 16, 16], "texture": "#stem", "tintindex": 0 }, - "east": { "uv": [0, 0, 16, 16], "texture": "#stem", "tintindex": 0 } - } - }, - { - "from": [2.6, 4, 8], - "to": [13.4, 16, 8], - "rotation": { "origin": [8, 8, 8], "axis": "y", "angle": 45, "rescale": true }, - "shade": false, - "faces": { - "north": { "uv": [0, 0, 16, 16], "texture": "#flower" }, - "south": { "uv": [0, 0, 16, 16], "texture": "#flower" } - } - }, - { - "from": [8, 4, 2.6], - "to": [8, 16, 13.4], - "rotation": { "origin": [8, 8, 8], "axis": "y", "angle": 45, "rescale": true }, - "shade": false, - "faces": { - "west": { "uv": [0, 0, 16, 16], "texture": "#flower" }, - "east": { "uv": [0, 0, 16, 16], "texture": "#flower" } + "north": { + "uv": [ + 6, + 2.5, + 9.5, + 3.75 + ], + "texture": "#1" + }, + "east": { + "uv": [ + 6, + 2.5, + 9.5, + 3.75 + ], + "texture": "#1" + }, + "south": { + "uv": [ + 6, + 2.5, + 9.5, + 3.75 + ], + "texture": "#1" + }, + "west": { + "uv": [ + 6, + 2.5, + 9.5, + 3.75 + ], + "texture": "#1" + }, + "up": { + "uv": [ + 3.5, + 3.5, + 0, + 0 + ], + "texture": "#1" + }, + "down": { + "uv": [ + 3.5, + 0, + 0, + 3.5 + ], + "texture": "#1" + } } } - ] + ], + "display": { + "thirdperson_righthand": { + "rotation": [ + 75, + 45, + 0 + ], + "translation": [ + 0, + 2.5, + 0 + ], + "scale": [ + 0.375, + 0.375, + 0.375 + ] + }, + "thirdperson_lefthand": { + "rotation": [ + 75, + 45, + 0 + ], + "translation": [ + 0, + 2.5, + 0 + ], + "scale": [ + 0.375, + 0.375, + 0.375 + ] + }, + "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 + ] + } + } } diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_tuft_template.json b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_tuft_template.json index 1203bbe9..153b48e3 100644 --- a/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_tuft_template.json +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/block/truffalo_tuft_template.json @@ -9,286 +9,3616 @@ }, "elements": [ { - "from": [0, 0, 0], - "to": [16, 16, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]}, + "from": [ + 0, + 0, + 0 + ], + "to": [ + 16, + 16, + 16 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 8, + 8, + 8 + ] + }, "faces": { - "north": {"uv": [0, 0, 16, 16], "texture": "#0"}, - "east": {"uv": [0, 0, 16, 16], "texture": "#0"}, - "south": {"uv": [0, 0, 16, 16], "texture": "#0"}, - "west": {"uv": [0, 0, 16, 16], "texture": "#0"}, - "up": {"uv": [0, 0, 16, 16], "texture": "#1"}, - "down": {"uv": [0, 0, 16, 16], "texture": "#1"} + "north": { + "uv": [ + 0, + 0, + 16, + 16 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 0, + 16, + 16 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 0, + 0, + 16, + 16 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 0, + 0, + 16, + 16 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 0, + 0, + 16, + 16 + ], + "texture": "#1" + }, + "down": { + "uv": [ + 0, + 0, + 16, + 16 + ], + "texture": "#1" + } } }, { - "from": [0, 8, 1], - "to": [0, 14, 15], - "rotation": {"angle": -22.5, "axis": "z", "origin": [0, 14, 8]}, + "from": [ + 0, + 8, + 1 + ], + "to": [ + 0, + 14, + 2 + ], + "rotation": { + "angle": -22.5, + "axis": "z", + "origin": [ + 0, + 14, + 8 + ] + }, "faces": { - "north": {"uv": [0, 0, 0, 6], "texture": "#2"}, - "east": {"uv": [0, 0, 14, 6], "texture": "#2"}, - "south": {"uv": [0, 0, 0, 6], "texture": "#2"}, - "west": {"uv": [0, 0, 14, 6], "texture": "#2"}, - "up": {"uv": [0, 0, 0, 14], "texture": "#2"}, - "down": {"uv": [0, 0, 0, 14], "texture": "#2"} + "east": { + "uv": [ + 0, + 0, + 1, + 6 + ], + "texture": "#2" + }, + "west": { + "uv": [ + 0, + 0, + 1, + 6 + ], + "texture": "#2" + } } }, { - "from": [1, 8, 0], - "to": [15, 14, 0], - "rotation": {"angle": 22.5, "axis": "x", "origin": [8, 14, 0]}, + "from": [ + 0, + 8, + 3 + ], + "to": [ + 0, + 14, + 4 + ], + "rotation": { + "angle": -22.5, + "axis": "z", + "origin": [ + 0, + 14, + 8 + ] + }, "faces": { - "north": {"uv": [0, 0, 14, 6], "texture": "#2"}, - "east": {"uv": [0, 0, 0, 6], "texture": "#2"}, - "south": {"uv": [0, 0, 14, 6], "texture": "#2"}, - "west": {"uv": [0, 0, 0, 6], "texture": "#2"}, - "up": {"uv": [0, 0, 14, 0], "texture": "#2"}, - "down": {"uv": [0, 0, 14, 0], "texture": "#2"} + "east": { + "uv": [ + 2, + 0, + 3, + 6 + ], + "texture": "#2" + }, + "west": { + "uv": [ + 2, + 0, + 3, + 6 + ], + "texture": "#2" + } } }, { - "from": [1, 8, 16], - "to": [15, 14, 16], - "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 14, 16]}, + "from": [ + 0, + 8, + 5 + ], + "to": [ + 0, + 14, + 6 + ], + "rotation": { + "angle": -22.5, + "axis": "z", + "origin": [ + 0, + 14, + 8 + ] + }, "faces": { - "north": {"uv": [14, 0, 0, 6], "texture": "#2"}, - "east": {"uv": [0, 0, 0, 6], "texture": "#2"}, - "south": {"uv": [14, 0, 0, 6], "texture": "#2"}, - "west": {"uv": [0, 0, 0, 6], "texture": "#2"}, - "up": {"uv": [0, 0, 14, 0], "texture": "#2"}, - "down": {"uv": [0, 0, 14, 0], "texture": "#2"} + "east": { + "uv": [ + 4, + 0, + 5, + 6 + ], + "texture": "#2" + }, + "west": { + "uv": [ + 4, + 0, + 5, + 6 + ], + "texture": "#2" + } } }, { - "from": [1, 4, 0], - "to": [15, 10, 0], - "rotation": {"angle": 22.5, "axis": "x", "origin": [8, 10, 0]}, + "from": [ + 0, + 8, + 7 + ], + "to": [ + 0, + 14, + 8 + ], + "rotation": { + "angle": -22.5, + "axis": "z", + "origin": [ + 0, + 14, + 8 + ] + }, "faces": { - "north": {"uv": [0, 0, 14, 6], "texture": "#2"}, - "east": {"uv": [0, 0, 0, 6], "texture": "#2"}, - "south": {"uv": [0, 0, 14, 6], "texture": "#2"}, - "west": {"uv": [0, 0, 0, 6], "texture": "#2"}, - "up": {"uv": [0, 0, 14, 0], "texture": "#2"}, - "down": {"uv": [0, 0, 14, 0], "texture": "#2"} + "east": { + "uv": [ + 6, + 0, + 7, + 6 + ], + "texture": "#2" + }, + "west": { + "uv": [ + 6, + 0, + 7, + 6 + ], + "texture": "#2" + } } }, { - "from": [1, 4, 16], - "to": [15, 10, 16], - "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 10, 16]}, + "from": [ + 0, + 8, + 9 + ], + "to": [ + 0, + 14, + 10 + ], + "rotation": { + "angle": -22.5, + "axis": "z", + "origin": [ + 0, + 14, + 8 + ] + }, "faces": { - "north": {"uv": [14, 0, 0, 6], "texture": "#2"}, - "east": {"uv": [0, 0, 0, 6], "texture": "#2"}, - "south": {"uv": [14, 0, 0, 6], "texture": "#2"}, - "west": {"uv": [0, 0, 0, 6], "texture": "#2"}, - "up": {"uv": [0, 0, 14, 0], "texture": "#2"}, - "down": {"uv": [0, 0, 14, 0], "texture": "#2"} + "east": { + "uv": [ + 8, + 0, + 9, + 6 + ], + "texture": "#2" + }, + "west": { + "uv": [ + 8, + 0, + 9, + 6 + ], + "texture": "#2" + } } }, { - "from": [1, 0, 0], - "to": [15, 6, 0], - "rotation": {"angle": 22.5, "axis": "x", "origin": [8, 6, 0]}, + "from": [ + 0, + 8, + 11 + ], + "to": [ + 0, + 14, + 12 + ], + "rotation": { + "angle": -22.5, + "axis": "z", + "origin": [ + 0, + 14, + 8 + ] + }, "faces": { - "north": {"uv": [0, 0, 14, 6], "texture": "#2"}, - "east": {"uv": [0, 0, 0, 6], "texture": "#2"}, - "south": {"uv": [0, 0, 14, 6], "texture": "#2"}, - "west": {"uv": [0, 0, 0, 6], "texture": "#2"}, - "up": {"uv": [0, 0, 14, 0], "texture": "#2"}, - "down": {"uv": [0, 0, 14, 0], "texture": "#2"} + "east": { + "uv": [ + 10, + 0, + 11, + 6 + ], + "texture": "#2" + }, + "west": { + "uv": [ + 10, + 0, + 11, + 6 + ], + "texture": "#2" + } } }, { - "from": [1, 0, 16], - "to": [15, 6, 16], - "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 6, 16]}, + "from": [ + 0, + 8, + 13 + ], + "to": [ + 0, + 14, + 14 + ], + "rotation": { + "angle": -22.5, + "axis": "z", + "origin": [ + 0, + 14, + 8 + ] + }, "faces": { - "north": {"uv": [14, 0, 0, 6], "texture": "#2"}, - "east": {"uv": [0, 0, 0, 6], "texture": "#2"}, - "south": {"uv": [14, 0, 0, 6], "texture": "#2"}, - "west": {"uv": [0, 0, 0, 6], "texture": "#2"}, - "up": {"uv": [0, 0, 14, 0], "texture": "#2"}, - "down": {"uv": [0, 0, 14, 0], "texture": "#2"} + "east": { + "uv": [ + 12, + 0, + 13, + 6 + ], + "texture": "#2" + }, + "west": { + "uv": [ + 12, + 0, + 13, + 6 + ], + "texture": "#2" + } } }, { - "from": [16, 8, 1], - "to": [16, 14, 15], - "rotation": {"angle": 22.5, "axis": "z", "origin": [16, 14, 8]}, + "from": [ + 0, + 4, + 2 + ], + "to": [ + 0, + 10, + 3 + ], + "rotation": { + "angle": -22.5, + "axis": "z", + "origin": [ + 0, + 10, + 8 + ] + }, "faces": { - "north": {"uv": [0, 0, 0, 6], "texture": "#2"}, - "east": {"uv": [14, 0, 0, 6], "texture": "#2"}, - "south": {"uv": [0, 0, 0, 6], "texture": "#2"}, - "west": {"uv": [14, 0, 0, 6], "texture": "#2"}, - "up": {"uv": [0, 0, 0, 14], "texture": "#2"}, - "down": {"uv": [0, 0, 0, 14], "texture": "#2"} + "east": { + "uv": [ + 1, + 0, + 2, + 6 + ], + "texture": "#2" + }, + "west": { + "uv": [ + 1, + 0, + 2, + 6 + ], + "texture": "#2" + } } }, { - "from": [0, 4, 1], - "to": [0, 10, 15], - "rotation": {"angle": -22.5, "axis": "z", "origin": [0, 10, 8]}, + "from": [ + 0, + 4, + 4 + ], + "to": [ + 0, + 10, + 5 + ], + "rotation": { + "angle": -22.5, + "axis": "z", + "origin": [ + 0, + 10, + 8 + ] + }, "faces": { - "north": {"uv": [0, 0, 0, 6], "texture": "#2"}, - "east": {"uv": [0, 0, 14, 6], "texture": "#2"}, - "south": {"uv": [0, 0, 0, 6], "texture": "#2"}, - "west": {"uv": [0, 0, 14, 6], "texture": "#2"}, - "up": {"uv": [0, 0, 0, 14], "texture": "#2"}, - "down": {"uv": [0, 0, 0, 14], "texture": "#2"} + "east": { + "uv": [ + 3, + 0, + 4, + 6 + ], + "texture": "#2" + }, + "west": { + "uv": [ + 3, + 0, + 4, + 6 + ], + "texture": "#2" + } } }, { - "from": [16, 4, 1], - "to": [16, 10, 15], - "rotation": {"angle": 22.5, "axis": "z", "origin": [16, 10, 8]}, + "from": [ + 0, + 4, + 6 + ], + "to": [ + 0, + 10, + 7 + ], + "rotation": { + "angle": -22.5, + "axis": "z", + "origin": [ + 0, + 10, + 8 + ] + }, "faces": { - "north": {"uv": [0, 0, 0, 6], "texture": "#2"}, - "east": {"uv": [14, 0, 0, 6], "texture": "#2"}, - "south": {"uv": [0, 0, 0, 6], "texture": "#2"}, - "west": {"uv": [14, 0, 0, 6], "texture": "#2"}, - "up": {"uv": [0, 0, 0, 14], "texture": "#2"}, - "down": {"uv": [0, 0, 0, 14], "texture": "#2"} + "east": { + "uv": [ + 5, + 0, + 6, + 6 + ], + "texture": "#2" + }, + "west": { + "uv": [ + 5, + 0, + 6, + 6 + ], + "texture": "#2" + } } }, { - "from": [0, 1, 1], - "to": [0, 7, 15], - "rotation": {"angle": -22.5, "axis": "z", "origin": [0, 7, 8]}, + "from": [ + 0, + 4, + 8 + ], + "to": [ + 0, + 10, + 9 + ], + "rotation": { + "angle": -22.5, + "axis": "z", + "origin": [ + 0, + 10, + 8 + ] + }, "faces": { - "north": {"uv": [0, 0, 0, 6], "texture": "#2"}, - "east": {"uv": [0, 0, 14, 6], "texture": "#2"}, - "south": {"uv": [0, 0, 0, 6], "texture": "#2"}, - "west": {"uv": [0, 0, 14, 6], "texture": "#2"}, - "up": {"uv": [0, 0, 0, 14], "texture": "#2"}, - "down": {"uv": [0, 0, 0, 14], "texture": "#2"} + "east": { + "uv": [ + 7, + 0, + 8, + 6 + ], + "texture": "#2" + }, + "west": { + "uv": [ + 7, + 0, + 8, + 6 + ], + "texture": "#2" + } } }, { - "from": [16, 1, 1], - "to": [16, 7, 15], - "rotation": {"angle": 22.5, "axis": "z", "origin": [16, 7, 8]}, + "from": [ + 0, + 4, + 10 + ], + "to": [ + 0, + 10, + 11 + ], + "rotation": { + "angle": -22.5, + "axis": "z", + "origin": [ + 0, + 10, + 8 + ] + }, "faces": { - "north": {"uv": [0, 0, 0, 6], "texture": "#2"}, - "east": {"uv": [14, 0, 0, 6], "texture": "#2"}, - "south": {"uv": [0, 0, 0, 6], "texture": "#2"}, - "west": {"uv": [14, 0, 0, 6], "texture": "#2"}, - "up": {"uv": [0, 0, 0, 14], "texture": "#2"}, - "down": {"uv": [0, 0, 0, 14], "texture": "#2"} + "east": { + "uv": [ + 9, + 0, + 10, + 6 + ], + "texture": "#2" + }, + "west": { + "uv": [ + 9, + 0, + 10, + 6 + ], + "texture": "#2" + } + } + }, + { + "from": [ + 0, + 4, + 12 + ], + "to": [ + 0, + 10, + 13 + ], + "rotation": { + "angle": -22.5, + "axis": "z", + "origin": [ + 0, + 10, + 8 + ] + }, + "faces": { + "east": { + "uv": [ + 11, + 0, + 12, + 6 + ], + "texture": "#2" + }, + "west": { + "uv": [ + 11, + 0, + 12, + 6 + ], + "texture": "#2" + } + } + }, + { + "from": [ + 0, + 4, + 14 + ], + "to": [ + 0, + 10, + 15 + ], + "rotation": { + "angle": -22.5, + "axis": "z", + "origin": [ + 0, + 10, + 8 + ] + }, + "faces": { + "east": { + "uv": [ + 13, + 0, + 14, + 6 + ], + "texture": "#2" + }, + "west": { + "uv": [ + 13, + 0, + 14, + 6 + ], + "texture": "#2" + } + } + }, + { + "from": [ + 0, + 1, + 1 + ], + "to": [ + 0, + 7, + 2 + ], + "rotation": { + "angle": -22.5, + "axis": "z", + "origin": [ + 0, + 7, + 8 + ] + }, + "faces": { + "east": { + "uv": [ + 0, + 0, + 1, + 6 + ], + "texture": "#2" + }, + "west": { + "uv": [ + 0, + 0, + 1, + 6 + ], + "texture": "#2" + } + } + }, + { + "from": [ + 0, + 1, + 3 + ], + "to": [ + 0, + 7, + 4 + ], + "rotation": { + "angle": -22.5, + "axis": "z", + "origin": [ + 0, + 7, + 8 + ] + }, + "faces": { + "east": { + "uv": [ + 2, + 0, + 3, + 6 + ], + "texture": "#2" + }, + "west": { + "uv": [ + 2, + 0, + 3, + 6 + ], + "texture": "#2" + } + } + }, + { + "from": [ + 0, + 1, + 5 + ], + "to": [ + 0, + 7, + 6 + ], + "rotation": { + "angle": -22.5, + "axis": "z", + "origin": [ + 0, + 7, + 8 + ] + }, + "faces": { + "east": { + "uv": [ + 4, + 0, + 5, + 6 + ], + "texture": "#2" + }, + "west": { + "uv": [ + 4, + 0, + 5, + 6 + ], + "texture": "#2" + } + } + }, + { + "from": [ + 0, + 1, + 7 + ], + "to": [ + 0, + 7, + 8 + ], + "rotation": { + "angle": -22.5, + "axis": "z", + "origin": [ + 0, + 7, + 8 + ] + }, + "faces": { + "east": { + "uv": [ + 6, + 0, + 7, + 6 + ], + "texture": "#2" + }, + "west": { + "uv": [ + 6, + 0, + 7, + 6 + ], + "texture": "#2" + } + } + }, + { + "from": [ + 0, + 1, + 9 + ], + "to": [ + 0, + 7, + 10 + ], + "rotation": { + "angle": -22.5, + "axis": "z", + "origin": [ + 0, + 7, + 8 + ] + }, + "faces": { + "east": { + "uv": [ + 8, + 0, + 9, + 6 + ], + "texture": "#2" + }, + "west": { + "uv": [ + 8, + 0, + 9, + 6 + ], + "texture": "#2" + } + } + }, + { + "from": [ + 0, + 1, + 11 + ], + "to": [ + 0, + 7, + 12 + ], + "rotation": { + "angle": -22.5, + "axis": "z", + "origin": [ + 0, + 7, + 8 + ] + }, + "faces": { + "east": { + "uv": [ + 10, + 0, + 11, + 6 + ], + "texture": "#2" + }, + "west": { + "uv": [ + 10, + 0, + 11, + 6 + ], + "texture": "#2" + } + } + }, + { + "from": [ + 0, + 1, + 13 + ], + "to": [ + 0, + 7, + 14 + ], + "rotation": { + "angle": -22.5, + "axis": "z", + "origin": [ + 0, + 7, + 8 + ] + }, + "faces": { + "east": { + "uv": [ + 12, + 0, + 13, + 6 + ], + "texture": "#2" + }, + "west": { + "uv": [ + 12, + 0, + 13, + 6 + ], + "texture": "#2" + } + } + }, + { + "from": [ + 16, + 8, + 1 + ], + "to": [ + 16, + 14, + 2 + ], + "rotation": { + "angle": 22.5, + "axis": "z", + "origin": [ + 16, + 14, + 8 + ] + }, + "faces": { + "east": { + "uv": [ + 14, + 0, + 13, + 6 + ], + "texture": "#2" + }, + "west": { + "uv": [ + 14, + 0, + 13, + 6 + ], + "texture": "#2" + } + } + }, + { + "from": [ + 16, + 8, + 3 + ], + "to": [ + 16, + 14, + 4 + ], + "rotation": { + "angle": 22.5, + "axis": "z", + "origin": [ + 16, + 14, + 8 + ] + }, + "faces": { + "east": { + "uv": [ + 12, + 0, + 11, + 6 + ], + "texture": "#2" + }, + "west": { + "uv": [ + 12, + 0, + 11, + 6 + ], + "texture": "#2" + } + } + }, + { + "from": [ + 16, + 8, + 5 + ], + "to": [ + 16, + 14, + 6 + ], + "rotation": { + "angle": 22.5, + "axis": "z", + "origin": [ + 16, + 14, + 8 + ] + }, + "faces": { + "east": { + "uv": [ + 10, + 0, + 9, + 6 + ], + "texture": "#2" + }, + "west": { + "uv": [ + 10, + 0, + 9, + 6 + ], + "texture": "#2" + } + } + }, + { + "from": [ + 16, + 8, + 7 + ], + "to": [ + 16, + 14, + 8 + ], + "rotation": { + "angle": 22.5, + "axis": "z", + "origin": [ + 16, + 14, + 8 + ] + }, + "faces": { + "east": { + "uv": [ + 8, + 0, + 7, + 6 + ], + "texture": "#2" + }, + "west": { + "uv": [ + 8, + 0, + 7, + 6 + ], + "texture": "#2" + } + } + }, + { + "from": [ + 16, + 8, + 9 + ], + "to": [ + 16, + 14, + 10 + ], + "rotation": { + "angle": 22.5, + "axis": "z", + "origin": [ + 16, + 14, + 8 + ] + }, + "faces": { + "east": { + "uv": [ + 6, + 0, + 5, + 6 + ], + "texture": "#2" + }, + "west": { + "uv": [ + 6, + 0, + 5, + 6 + ], + "texture": "#2" + } + } + }, + { + "from": [ + 16, + 8, + 11 + ], + "to": [ + 16, + 14, + 12 + ], + "rotation": { + "angle": 22.5, + "axis": "z", + "origin": [ + 16, + 14, + 8 + ] + }, + "faces": { + "east": { + "uv": [ + 4, + 0, + 3, + 6 + ], + "texture": "#2" + }, + "west": { + "uv": [ + 4, + 0, + 3, + 6 + ], + "texture": "#2" + } + } + }, + { + "from": [ + 16, + 8, + 13 + ], + "to": [ + 16, + 14, + 14 + ], + "rotation": { + "angle": 22.5, + "axis": "z", + "origin": [ + 16, + 14, + 8 + ] + }, + "faces": { + "east": { + "uv": [ + 2, + 0, + 1, + 6 + ], + "texture": "#2" + }, + "west": { + "uv": [ + 2, + 0, + 1, + 6 + ], + "texture": "#2" + } + } + }, + { + "from": [ + 16, + 4, + 2 + ], + "to": [ + 16, + 10, + 3 + ], + "rotation": { + "angle": 22.5, + "axis": "z", + "origin": [ + 16, + 10, + 8 + ] + }, + "faces": { + "east": { + "uv": [ + 13, + 0, + 12, + 6 + ], + "texture": "#2" + }, + "west": { + "uv": [ + 13, + 0, + 12, + 6 + ], + "texture": "#2" + } + } + }, + { + "from": [ + 16, + 4, + 4 + ], + "to": [ + 16, + 10, + 5 + ], + "rotation": { + "angle": 22.5, + "axis": "z", + "origin": [ + 16, + 10, + 8 + ] + }, + "faces": { + "east": { + "uv": [ + 11, + 0, + 10, + 6 + ], + "texture": "#2" + }, + "west": { + "uv": [ + 11, + 0, + 10, + 6 + ], + "texture": "#2" + } + } + }, + { + "from": [ + 16, + 4, + 6 + ], + "to": [ + 16, + 10, + 7 + ], + "rotation": { + "angle": 22.5, + "axis": "z", + "origin": [ + 16, + 10, + 8 + ] + }, + "faces": { + "east": { + "uv": [ + 9, + 0, + 8, + 6 + ], + "texture": "#2" + }, + "west": { + "uv": [ + 9, + 0, + 8, + 6 + ], + "texture": "#2" + } + } + }, + { + "from": [ + 16, + 4, + 8 + ], + "to": [ + 16, + 10, + 9 + ], + "rotation": { + "angle": 22.5, + "axis": "z", + "origin": [ + 16, + 10, + 8 + ] + }, + "faces": { + "east": { + "uv": [ + 7, + 0, + 6, + 6 + ], + "texture": "#2" + }, + "west": { + "uv": [ + 7, + 0, + 6, + 6 + ], + "texture": "#2" + } + } + }, + { + "from": [ + 16, + 4, + 10 + ], + "to": [ + 16, + 10, + 11 + ], + "rotation": { + "angle": 22.5, + "axis": "z", + "origin": [ + 16, + 10, + 8 + ] + }, + "faces": { + "east": { + "uv": [ + 5, + 0, + 4, + 6 + ], + "texture": "#2" + }, + "west": { + "uv": [ + 5, + 0, + 4, + 6 + ], + "texture": "#2" + } + } + }, + { + "from": [ + 16, + 4, + 12 + ], + "to": [ + 16, + 10, + 13 + ], + "rotation": { + "angle": 22.5, + "axis": "z", + "origin": [ + 16, + 10, + 8 + ] + }, + "faces": { + "east": { + "uv": [ + 3, + 0, + 2, + 6 + ], + "texture": "#2" + }, + "west": { + "uv": [ + 3, + 0, + 2, + 6 + ], + "texture": "#2" + } + } + }, + { + "from": [ + 16, + 4, + 14 + ], + "to": [ + 16, + 10, + 15 + ], + "rotation": { + "angle": 22.5, + "axis": "z", + "origin": [ + 16, + 10, + 8 + ] + }, + "faces": { + "east": { + "uv": [ + 1, + 0, + 0, + 6 + ], + "texture": "#2" + }, + "west": { + "uv": [ + 1, + 0, + 0, + 6 + ], + "texture": "#2" + } + } + }, + { + "from": [ + 16, + 1, + 1 + ], + "to": [ + 16, + 7, + 2 + ], + "rotation": { + "angle": 22.5, + "axis": "z", + "origin": [ + 16, + 7, + 8 + ] + }, + "faces": { + "east": { + "uv": [ + 14, + 0, + 13, + 6 + ], + "texture": "#2" + }, + "west": { + "uv": [ + 14, + 0, + 13, + 6 + ], + "texture": "#2" + } + } + }, + { + "from": [ + 16, + 1, + 3 + ], + "to": [ + 16, + 7, + 4 + ], + "rotation": { + "angle": 22.5, + "axis": "z", + "origin": [ + 16, + 7, + 8 + ] + }, + "faces": { + "east": { + "uv": [ + 12, + 0, + 11, + 6 + ], + "texture": "#2" + }, + "west": { + "uv": [ + 12, + 0, + 11, + 6 + ], + "texture": "#2" + } + } + }, + { + "from": [ + 16, + 1, + 5 + ], + "to": [ + 16, + 7, + 6 + ], + "rotation": { + "angle": 22.5, + "axis": "z", + "origin": [ + 16, + 7, + 8 + ] + }, + "faces": { + "east": { + "uv": [ + 10, + 0, + 9, + 6 + ], + "texture": "#2" + }, + "west": { + "uv": [ + 10, + 0, + 9, + 6 + ], + "texture": "#2" + } + } + }, + { + "from": [ + 16, + 1, + 7 + ], + "to": [ + 16, + 7, + 8 + ], + "rotation": { + "angle": 22.5, + "axis": "z", + "origin": [ + 16, + 7, + 8 + ] + }, + "faces": { + "east": { + "uv": [ + 8, + 0, + 7, + 6 + ], + "texture": "#2" + }, + "west": { + "uv": [ + 8, + 0, + 7, + 6 + ], + "texture": "#2" + } + } + }, + { + "from": [ + 16, + 1, + 9 + ], + "to": [ + 16, + 7, + 10 + ], + "rotation": { + "angle": 22.5, + "axis": "z", + "origin": [ + 16, + 7, + 8 + ] + }, + "faces": { + "east": { + "uv": [ + 6, + 0, + 5, + 6 + ], + "texture": "#2" + }, + "west": { + "uv": [ + 6, + 0, + 5, + 6 + ], + "texture": "#2" + } + } + }, + { + "from": [ + 16, + 1, + 11 + ], + "to": [ + 16, + 7, + 12 + ], + "rotation": { + "angle": 22.5, + "axis": "z", + "origin": [ + 16, + 7, + 8 + ] + }, + "faces": { + "east": { + "uv": [ + 4, + 0, + 3, + 6 + ], + "texture": "#2" + }, + "west": { + "uv": [ + 4, + 0, + 3, + 6 + ], + "texture": "#2" + } + } + }, + { + "from": [ + 16, + 1, + 13 + ], + "to": [ + 16, + 7, + 14 + ], + "rotation": { + "angle": 22.5, + "axis": "z", + "origin": [ + 16, + 7, + 8 + ] + }, + "faces": { + "east": { + "uv": [ + 2, + 0, + 1, + 6 + ], + "texture": "#2" + }, + "west": { + "uv": [ + 2, + 0, + 1, + 6 + ], + "texture": "#2" + } + } + }, + { + "from": [ + 1, + 8, + 0 + ], + "to": [ + 2, + 14, + 0 + ], + "rotation": { + "angle": 22.5, + "axis": "x", + "origin": [ + 8, + 14, + 0 + ] + }, + "faces": { + "north": { + "uv": [ + 0, + 0, + 1, + 6 + ], + "texture": "#2" + }, + "south": { + "uv": [ + 0, + 0, + 1, + 6 + ], + "texture": "#2" + } + } + }, + { + "from": [ + 3, + 8, + 0 + ], + "to": [ + 4, + 14, + 0 + ], + "rotation": { + "angle": 22.5, + "axis": "x", + "origin": [ + 8, + 14, + 0 + ] + }, + "faces": { + "north": { + "uv": [ + 2, + 0, + 3, + 6 + ], + "texture": "#2" + }, + "south": { + "uv": [ + 2, + 0, + 3, + 6 + ], + "texture": "#2" + } + } + }, + { + "from": [ + 5, + 8, + 0 + ], + "to": [ + 6, + 14, + 0 + ], + "rotation": { + "angle": 22.5, + "axis": "x", + "origin": [ + 8, + 14, + 0 + ] + }, + "faces": { + "north": { + "uv": [ + 4, + 0, + 5, + 6 + ], + "texture": "#2" + }, + "south": { + "uv": [ + 4, + 0, + 5, + 6 + ], + "texture": "#2" + } + } + }, + { + "from": [ + 7, + 8, + 0 + ], + "to": [ + 8, + 14, + 0 + ], + "rotation": { + "angle": 22.5, + "axis": "x", + "origin": [ + 8, + 14, + 0 + ] + }, + "faces": { + "north": { + "uv": [ + 6, + 0, + 7, + 6 + ], + "texture": "#2" + }, + "south": { + "uv": [ + 6, + 0, + 7, + 6 + ], + "texture": "#2" + } + } + }, + { + "from": [ + 9, + 8, + 0 + ], + "to": [ + 10, + 14, + 0 + ], + "rotation": { + "angle": 22.5, + "axis": "x", + "origin": [ + 8, + 14, + 0 + ] + }, + "faces": { + "north": { + "uv": [ + 8, + 0, + 9, + 6 + ], + "texture": "#2" + }, + "south": { + "uv": [ + 8, + 0, + 9, + 6 + ], + "texture": "#2" + } + } + }, + { + "from": [ + 11, + 8, + 0 + ], + "to": [ + 12, + 14, + 0 + ], + "rotation": { + "angle": 22.5, + "axis": "x", + "origin": [ + 8, + 14, + 0 + ] + }, + "faces": { + "north": { + "uv": [ + 10, + 0, + 11, + 6 + ], + "texture": "#2" + }, + "south": { + "uv": [ + 10, + 0, + 11, + 6 + ], + "texture": "#2" + } + } + }, + { + "from": [ + 13, + 8, + 0 + ], + "to": [ + 14, + 14, + 0 + ], + "rotation": { + "angle": 22.5, + "axis": "x", + "origin": [ + 8, + 14, + 0 + ] + }, + "faces": { + "north": { + "uv": [ + 12, + 0, + 13, + 6 + ], + "texture": "#2" + }, + "south": { + "uv": [ + 12, + 0, + 13, + 6 + ], + "texture": "#2" + } + } + }, + { + "from": [ + 2, + 4, + 0 + ], + "to": [ + 3, + 10, + 0 + ], + "rotation": { + "angle": 22.5, + "axis": "x", + "origin": [ + 8, + 10, + 0 + ] + }, + "faces": { + "north": { + "uv": [ + 1, + 0, + 2, + 6 + ], + "texture": "#2" + }, + "south": { + "uv": [ + 1, + 0, + 2, + 6 + ], + "texture": "#2" + } + } + }, + { + "from": [ + 4, + 4, + 0 + ], + "to": [ + 5, + 10, + 0 + ], + "rotation": { + "angle": 22.5, + "axis": "x", + "origin": [ + 8, + 10, + 0 + ] + }, + "faces": { + "north": { + "uv": [ + 3, + 0, + 4, + 6 + ], + "texture": "#2" + }, + "south": { + "uv": [ + 3, + 0, + 4, + 6 + ], + "texture": "#2" + } + } + }, + { + "from": [ + 6, + 4, + 0 + ], + "to": [ + 7, + 10, + 0 + ], + "rotation": { + "angle": 22.5, + "axis": "x", + "origin": [ + 8, + 10, + 0 + ] + }, + "faces": { + "north": { + "uv": [ + 5, + 0, + 6, + 6 + ], + "texture": "#2" + }, + "south": { + "uv": [ + 5, + 0, + 6, + 6 + ], + "texture": "#2" + } + } + }, + { + "from": [ + 8, + 4, + 0 + ], + "to": [ + 9, + 10, + 0 + ], + "rotation": { + "angle": 22.5, + "axis": "x", + "origin": [ + 8, + 10, + 0 + ] + }, + "faces": { + "north": { + "uv": [ + 7, + 0, + 8, + 6 + ], + "texture": "#2" + }, + "south": { + "uv": [ + 7, + 0, + 8, + 6 + ], + "texture": "#2" + } + } + }, + { + "from": [ + 10, + 4, + 0 + ], + "to": [ + 11, + 10, + 0 + ], + "rotation": { + "angle": 22.5, + "axis": "x", + "origin": [ + 8, + 10, + 0 + ] + }, + "faces": { + "north": { + "uv": [ + 9, + 0, + 10, + 6 + ], + "texture": "#2" + }, + "south": { + "uv": [ + 9, + 0, + 10, + 6 + ], + "texture": "#2" + } + } + }, + { + "from": [ + 12, + 4, + 0 + ], + "to": [ + 13, + 10, + 0 + ], + "rotation": { + "angle": 22.5, + "axis": "x", + "origin": [ + 8, + 10, + 0 + ] + }, + "faces": { + "north": { + "uv": [ + 11, + 0, + 12, + 6 + ], + "texture": "#2" + }, + "south": { + "uv": [ + 11, + 0, + 12, + 6 + ], + "texture": "#2" + } + } + }, + { + "from": [ + 14, + 4, + 0 + ], + "to": [ + 15, + 10, + 0 + ], + "rotation": { + "angle": 22.5, + "axis": "x", + "origin": [ + 8, + 10, + 0 + ] + }, + "faces": { + "north": { + "uv": [ + 13, + 0, + 14, + 6 + ], + "texture": "#2" + }, + "south": { + "uv": [ + 13, + 0, + 14, + 6 + ], + "texture": "#2" + } + } + }, + { + "from": [ + 1, + 0, + 0 + ], + "to": [ + 2, + 6, + 0 + ], + "rotation": { + "angle": 22.5, + "axis": "x", + "origin": [ + 8, + 6, + 0 + ] + }, + "faces": { + "north": { + "uv": [ + 0, + 0, + 1, + 6 + ], + "texture": "#2" + }, + "south": { + "uv": [ + 0, + 0, + 1, + 6 + ], + "texture": "#2" + } + } + }, + { + "from": [ + 3, + 0, + 0 + ], + "to": [ + 4, + 6, + 0 + ], + "rotation": { + "angle": 22.5, + "axis": "x", + "origin": [ + 8, + 6, + 0 + ] + }, + "faces": { + "north": { + "uv": [ + 2, + 0, + 3, + 6 + ], + "texture": "#2" + }, + "south": { + "uv": [ + 2, + 0, + 3, + 6 + ], + "texture": "#2" + } + } + }, + { + "from": [ + 5, + 0, + 0 + ], + "to": [ + 6, + 6, + 0 + ], + "rotation": { + "angle": 22.5, + "axis": "x", + "origin": [ + 8, + 6, + 0 + ] + }, + "faces": { + "north": { + "uv": [ + 4, + 0, + 5, + 6 + ], + "texture": "#2" + }, + "south": { + "uv": [ + 4, + 0, + 5, + 6 + ], + "texture": "#2" + } + } + }, + { + "from": [ + 7, + 0, + 0 + ], + "to": [ + 8, + 6, + 0 + ], + "rotation": { + "angle": 22.5, + "axis": "x", + "origin": [ + 8, + 6, + 0 + ] + }, + "faces": { + "north": { + "uv": [ + 6, + 0, + 7, + 6 + ], + "texture": "#2" + }, + "south": { + "uv": [ + 6, + 0, + 7, + 6 + ], + "texture": "#2" + } + } + }, + { + "from": [ + 9, + 0, + 0 + ], + "to": [ + 10, + 6, + 0 + ], + "rotation": { + "angle": 22.5, + "axis": "x", + "origin": [ + 8, + 6, + 0 + ] + }, + "faces": { + "north": { + "uv": [ + 8, + 0, + 9, + 6 + ], + "texture": "#2" + }, + "south": { + "uv": [ + 8, + 0, + 9, + 6 + ], + "texture": "#2" + } + } + }, + { + "from": [ + 11, + 0, + 0 + ], + "to": [ + 12, + 6, + 0 + ], + "rotation": { + "angle": 22.5, + "axis": "x", + "origin": [ + 8, + 6, + 0 + ] + }, + "faces": { + "north": { + "uv": [ + 10, + 0, + 11, + 6 + ], + "texture": "#2" + }, + "south": { + "uv": [ + 10, + 0, + 11, + 6 + ], + "texture": "#2" + } + } + }, + { + "from": [ + 13, + 0, + 0 + ], + "to": [ + 14, + 6, + 0 + ], + "rotation": { + "angle": 22.5, + "axis": "x", + "origin": [ + 8, + 6, + 0 + ] + }, + "faces": { + "north": { + "uv": [ + 12, + 0, + 13, + 6 + ], + "texture": "#2" + }, + "south": { + "uv": [ + 12, + 0, + 13, + 6 + ], + "texture": "#2" + } + } + }, + { + "from": [ + 1, + 8, + 16 + ], + "to": [ + 2, + 14, + 16 + ], + "rotation": { + "angle": -22.5, + "axis": "x", + "origin": [ + 8, + 14, + 16 + ] + }, + "faces": { + "north": { + "uv": [ + 14, + 0, + 13, + 6 + ], + "texture": "#2" + }, + "south": { + "uv": [ + 14, + 0, + 13, + 6 + ], + "texture": "#2" + } + } + }, + { + "from": [ + 3, + 8, + 16 + ], + "to": [ + 4, + 14, + 16 + ], + "rotation": { + "angle": -22.5, + "axis": "x", + "origin": [ + 8, + 14, + 16 + ] + }, + "faces": { + "north": { + "uv": [ + 12, + 0, + 11, + 6 + ], + "texture": "#2" + }, + "south": { + "uv": [ + 12, + 0, + 11, + 6 + ], + "texture": "#2" + } + } + }, + { + "from": [ + 5, + 8, + 16 + ], + "to": [ + 6, + 14, + 16 + ], + "rotation": { + "angle": -22.5, + "axis": "x", + "origin": [ + 8, + 14, + 16 + ] + }, + "faces": { + "north": { + "uv": [ + 10, + 0, + 9, + 6 + ], + "texture": "#2" + }, + "south": { + "uv": [ + 10, + 0, + 9, + 6 + ], + "texture": "#2" + } + } + }, + { + "from": [ + 7, + 8, + 16 + ], + "to": [ + 8, + 14, + 16 + ], + "rotation": { + "angle": -22.5, + "axis": "x", + "origin": [ + 8, + 14, + 16 + ] + }, + "faces": { + "north": { + "uv": [ + 8, + 0, + 7, + 6 + ], + "texture": "#2" + }, + "south": { + "uv": [ + 8, + 0, + 7, + 6 + ], + "texture": "#2" + } + } + }, + { + "from": [ + 9, + 8, + 16 + ], + "to": [ + 10, + 14, + 16 + ], + "rotation": { + "angle": -22.5, + "axis": "x", + "origin": [ + 8, + 14, + 16 + ] + }, + "faces": { + "north": { + "uv": [ + 6, + 0, + 5, + 6 + ], + "texture": "#2" + }, + "south": { + "uv": [ + 6, + 0, + 5, + 6 + ], + "texture": "#2" + } + } + }, + { + "from": [ + 11, + 8, + 16 + ], + "to": [ + 12, + 14, + 16 + ], + "rotation": { + "angle": -22.5, + "axis": "x", + "origin": [ + 8, + 14, + 16 + ] + }, + "faces": { + "north": { + "uv": [ + 4, + 0, + 3, + 6 + ], + "texture": "#2" + }, + "south": { + "uv": [ + 4, + 0, + 3, + 6 + ], + "texture": "#2" + } + } + }, + { + "from": [ + 13, + 8, + 16 + ], + "to": [ + 14, + 14, + 16 + ], + "rotation": { + "angle": -22.5, + "axis": "x", + "origin": [ + 8, + 14, + 16 + ] + }, + "faces": { + "north": { + "uv": [ + 2, + 0, + 1, + 6 + ], + "texture": "#2" + }, + "south": { + "uv": [ + 2, + 0, + 1, + 6 + ], + "texture": "#2" + } + } + }, + { + "from": [ + 2, + 4, + 16 + ], + "to": [ + 3, + 10, + 16 + ], + "rotation": { + "angle": -22.5, + "axis": "x", + "origin": [ + 8, + 10, + 16 + ] + }, + "faces": { + "north": { + "uv": [ + 13, + 0, + 12, + 6 + ], + "texture": "#2" + }, + "south": { + "uv": [ + 13, + 0, + 12, + 6 + ], + "texture": "#2" + } + } + }, + { + "from": [ + 4, + 4, + 16 + ], + "to": [ + 5, + 10, + 16 + ], + "rotation": { + "angle": -22.5, + "axis": "x", + "origin": [ + 8, + 10, + 16 + ] + }, + "faces": { + "north": { + "uv": [ + 11, + 0, + 10, + 6 + ], + "texture": "#2" + }, + "south": { + "uv": [ + 11, + 0, + 10, + 6 + ], + "texture": "#2" + } + } + }, + { + "from": [ + 6, + 4, + 16 + ], + "to": [ + 7, + 10, + 16 + ], + "rotation": { + "angle": -22.5, + "axis": "x", + "origin": [ + 8, + 10, + 16 + ] + }, + "faces": { + "north": { + "uv": [ + 9, + 0, + 8, + 6 + ], + "texture": "#2" + }, + "south": { + "uv": [ + 9, + 0, + 8, + 6 + ], + "texture": "#2" + } + } + }, + { + "from": [ + 8, + 4, + 16 + ], + "to": [ + 9, + 10, + 16 + ], + "rotation": { + "angle": -22.5, + "axis": "x", + "origin": [ + 8, + 10, + 16 + ] + }, + "faces": { + "north": { + "uv": [ + 7, + 0, + 6, + 6 + ], + "texture": "#2" + }, + "south": { + "uv": [ + 7, + 0, + 6, + 6 + ], + "texture": "#2" + } + } + }, + { + "from": [ + 10, + 4, + 16 + ], + "to": [ + 11, + 10, + 16 + ], + "rotation": { + "angle": -22.5, + "axis": "x", + "origin": [ + 8, + 10, + 16 + ] + }, + "faces": { + "north": { + "uv": [ + 5, + 0, + 4, + 6 + ], + "texture": "#2" + }, + "south": { + "uv": [ + 5, + 0, + 4, + 6 + ], + "texture": "#2" + } + } + }, + { + "from": [ + 12, + 4, + 16 + ], + "to": [ + 13, + 10, + 16 + ], + "rotation": { + "angle": -22.5, + "axis": "x", + "origin": [ + 8, + 10, + 16 + ] + }, + "faces": { + "north": { + "uv": [ + 3, + 0, + 2, + 6 + ], + "texture": "#2" + }, + "south": { + "uv": [ + 3, + 0, + 2, + 6 + ], + "texture": "#2" + } + } + }, + { + "from": [ + 14, + 4, + 16 + ], + "to": [ + 15, + 10, + 16 + ], + "rotation": { + "angle": -22.5, + "axis": "x", + "origin": [ + 8, + 10, + 16 + ] + }, + "faces": { + "north": { + "uv": [ + 1, + 0, + 0, + 6 + ], + "texture": "#2" + }, + "south": { + "uv": [ + 1, + 0, + 0, + 6 + ], + "texture": "#2" + } + } + }, + { + "from": [ + 1, + 0, + 16 + ], + "to": [ + 2, + 6, + 16 + ], + "rotation": { + "angle": -22.5, + "axis": "x", + "origin": [ + 8, + 6, + 16 + ] + }, + "faces": { + "north": { + "uv": [ + 14, + 0, + 13, + 6 + ], + "texture": "#2" + }, + "south": { + "uv": [ + 14, + 0, + 13, + 6 + ], + "texture": "#2" + } + } + }, + { + "from": [ + 3, + 0, + 16 + ], + "to": [ + 4, + 6, + 16 + ], + "rotation": { + "angle": -22.5, + "axis": "x", + "origin": [ + 8, + 6, + 16 + ] + }, + "faces": { + "north": { + "uv": [ + 12, + 0, + 11, + 6 + ], + "texture": "#2" + }, + "south": { + "uv": [ + 12, + 0, + 11, + 6 + ], + "texture": "#2" + } + } + }, + { + "from": [ + 5, + 0, + 16 + ], + "to": [ + 6, + 6, + 16 + ], + "rotation": { + "angle": -22.5, + "axis": "x", + "origin": [ + 8, + 6, + 16 + ] + }, + "faces": { + "north": { + "uv": [ + 10, + 0, + 9, + 6 + ], + "texture": "#2" + }, + "south": { + "uv": [ + 10, + 0, + 9, + 6 + ], + "texture": "#2" + } + } + }, + { + "from": [ + 7, + 0, + 16 + ], + "to": [ + 8, + 6, + 16 + ], + "rotation": { + "angle": -22.5, + "axis": "x", + "origin": [ + 8, + 6, + 16 + ] + }, + "faces": { + "north": { + "uv": [ + 8, + 0, + 7, + 6 + ], + "texture": "#2" + }, + "south": { + "uv": [ + 8, + 0, + 7, + 6 + ], + "texture": "#2" + } + } + }, + { + "from": [ + 9, + 0, + 16 + ], + "to": [ + 10, + 6, + 16 + ], + "rotation": { + "angle": -22.5, + "axis": "x", + "origin": [ + 8, + 6, + 16 + ] + }, + "faces": { + "north": { + "uv": [ + 6, + 0, + 5, + 6 + ], + "texture": "#2" + }, + "south": { + "uv": [ + 6, + 0, + 5, + 6 + ], + "texture": "#2" + } + } + }, + { + "from": [ + 11, + 0, + 16 + ], + "to": [ + 12, + 6, + 16 + ], + "rotation": { + "angle": -22.5, + "axis": "x", + "origin": [ + 8, + 6, + 16 + ] + }, + "faces": { + "north": { + "uv": [ + 4, + 0, + 3, + 6 + ], + "texture": "#2" + }, + "south": { + "uv": [ + 4, + 0, + 3, + 6 + ], + "texture": "#2" + } + } + }, + { + "from": [ + 13, + 0, + 16 + ], + "to": [ + 14, + 6, + 16 + ], + "rotation": { + "angle": -22.5, + "axis": "x", + "origin": [ + 8, + 6, + 16 + ] + }, + "faces": { + "north": { + "uv": [ + 2, + 0, + 1, + 6 + ], + "texture": "#2" + }, + "south": { + "uv": [ + 2, + 0, + 1, + 6 + ], + "texture": "#2" + } } } ], "display": { "thirdperson_righthand": { - "rotation": [75, 45, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] + "rotation": [ + 75, + 45, + 0 + ], + "translation": [ + 0, + 2.5, + 0 + ], + "scale": [ + 0.375, + 0.375, + 0.375 + ] }, "thirdperson_lefthand": { - "rotation": [75, 45, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] + "rotation": [ + 75, + 45, + 0 + ], + "translation": [ + 0, + 2.5, + 0 + ], + "scale": [ + 0.375, + 0.375, + 0.375 + ] }, "firstperson_righthand": { - "rotation": [0, 45, 0], - "scale": [0.4, 0.4, 0.4] + "rotation": [ + 0, + 45, + 0 + ], + "scale": [ + 0.4, + 0.4, + 0.4 + ] }, "firstperson_lefthand": { - "rotation": [0, 225, 0], - "scale": [0.4, 0.4, 0.4] + "rotation": [ + 0, + 225, + 0 + ], + "scale": [ + 0.4, + 0.4, + 0.4 + ] }, "ground": { - "translation": [0, 3, 0], - "scale": [0.25, 0.25, 0.25] + "translation": [ + 0, + 3, + 0 + ], + "scale": [ + 0.25, + 0.25, + 0.25 + ] }, "gui": { - "rotation": [30, 225, 0], - "scale": [0.625, 0.625, 0.625] + "rotation": [ + 30, + 225, + 0 + ], + "scale": [ + 0.625, + 0.625, + 0.625 + ] }, "fixed": { - "scale": [0.5, 0.5, 0.5] - } - }, - "groups": [ - { - "name": "block", - "origin": [0, 0, 0], - "color": 0, - "children": [ - 0, - { - "name": "group", - "origin": [8, 8, 8], - "color": 0, - "children": [1] - }, - { - "name": "group", - "origin": [8, 8, 8], - "color": 0, - "children": [2] - }, - { - "name": "group", - "origin": [8, 8, 8], - "color": 0, - "children": [3] - }, - { - "name": "group", - "origin": [8, 8, 8], - "color": 0, - "children": [4] - }, - { - "name": "group", - "origin": [8, 8, 8], - "color": 0, - "children": [5] - }, - { - "name": "group", - "origin": [8, 8, 8], - "color": 0, - "children": [6] - }, - { - "name": "group", - "origin": [8, 8, 8], - "color": 0, - "children": [7] - }, - { - "name": "group", - "origin": [8, 8, 8], - "color": 0, - "children": [8] - }, - { - "name": "group", - "origin": [8, 8, 8], - "color": 0, - "children": [9] - }, - { - "name": "group", - "origin": [8, 8, 8], - "color": 0, - "children": [10] - }, - { - "name": "group", - "origin": [8, 8, 8], - "color": 0, - "children": [11] - }, - { - "name": "group", - "origin": [8, 8, 8], - "color": 0, - "children": [12] - } + "scale": [ + 0.5, + 0.5, + 0.5 ] } - ] -} \ No newline at end of file + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/item/eye_of_the_storm_gui.json b/common-1.21.1/src/main/resources/assets/antarchy/models/item/eye_of_the_storm_gui.json new file mode 100644 index 00000000..c0b6a793 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/item/eye_of_the_storm_gui.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "gui_light": "front", + "textures": { + "layer0": "antarchy:item/eye_of_the_storm/eye_of_the_storm_item" + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/item/eye_of_the_storm_held_geo.json b/common-1.21.1/src/main/resources/assets/antarchy/models/item/eye_of_the_storm_held_geo.json new file mode 100644 index 00000000..5774eca1 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/item/eye_of_the_storm_held_geo.json @@ -0,0 +1,138 @@ +{ + "parent": "builtin/entity", + "display": { + "thirdperson_righthand": { + "rotation": [ + 0, + 0, + -90 + ], + "translation": [ + -5.25, + -1.85, + -5 + ], + "scale": [ + 0.8, + 0.8, + 0.8 + ] + }, + "thirdperson_lefthand": { + "rotation": [ + 0, + 0, + -90 + ], + "translation": [ + -5.25, + -1.85, + -5 + ], + "scale": [ + 0.8, + 0.8, + 0.8 + ] + }, + "firstperson_righthand": { + "rotation": [ + 10, + 0, + 0 + ], + "translation": [ + -1, + 0, + 0.5 + ], + "scale": [ + 0.6, + 0.6, + 0.6 + ] + }, + "firstperson_lefthand": { + "rotation": [ + 10, + 0, + 0 + ], + "translation": [ + -1, + 0, + 0.5 + ], + "scale": [ + 0.6, + 0.6, + 0.6 + ] + }, + "ground": { + "translation": [ + 0, + 2, + 0 + ], + "scale": [ + 0.5, + 0.5, + 0.5 + ] + }, + "gui": { + "rotation": [ + 30, + -135, + 0 + ], + "translation": [ + 0.25, + -4.75, + 0 + ], + "scale": [ + 0.85, + 0.85, + 0.85 + ] + }, + "head": { + "translation": [ + 0, + 0, + -8.25 + ] + }, + "fixed": { + "rotation": [ + 90, + 45, + 90 + ], + "translation": [ + 5.25, + 3.75, + 0 + ] + }, + "on_shelf": { + "rotation": [ + 90, + 0, + 90 + ], + "translation": [ + 8.25, + 0, + 0 + ], + "scale": [ + 1.3, + 1.3, + 1.3 + ] + } + } +} \ No newline at end of file diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/item/prince_egg.json b/common-1.21.1/src/main/resources/assets/antarchy/models/item/prince_egg.json new file mode 100644 index 00000000..c70786c8 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/item/prince_egg.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/prince_egg" +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/item/princess_egg.json b/common-1.21.1/src/main/resources/assets/antarchy/models/item/princess_egg.json new file mode 100644 index 00000000..39c3e5f3 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/item/princess_egg.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:block/princess_egg" +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_assailant_battleaxe.json b/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_assailant_battleaxe.json new file mode 100644 index 00000000..c6ede5e2 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_assailant_battleaxe.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:item/royal_assailant_battleaxe_held" +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_assailant_battleaxe_gui.json b/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_assailant_battleaxe_gui.json new file mode 100644 index 00000000..1d6a7932 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_assailant_battleaxe_gui.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "gui_light": "front", + "textures": { + "layer0": "antarchy:item/royal_assailant/royal_assailant_battleaxe_item" + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_assailant_battleaxe_held.json b/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_assailant_battleaxe_held.json new file mode 100644 index 00000000..493b9d97 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_assailant_battleaxe_held.json @@ -0,0 +1,2422 @@ +{ + "format_version": "1.21.11", + "credit": "Made with Blockbench", + "texture_size": [ + 64, + 64 + ], + "textures": { + "0": "antarchy:item/royal_assailant/royal_assailant_battleaxe", + "particle": "antarchy:item/royal_assailant/royal_assailant_battleaxe" + }, + "elements": [ + { + "from": [ + 7.5, + -14, + 7.5 + ], + "to": [ + 8.5, + -7, + 8.5 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 5, + -15, + 5 + ] + }, + "faces": { + "north": { + "uv": [ + 5.25, + 9.75, + 5.5, + 11.5 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 5, + 9.75, + 5.25, + 11.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 5.75, + 9.75, + 6, + 11.5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 5.5, + 9.75, + 5.75, + 11.5 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 5.5, + 9.75, + 5.25, + 9.5 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 5.75, + 9.5, + 5.5, + 9.75 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 7.3, + -14.2, + 7.3 + ], + "to": [ + 8.7, + 29, + 8.7 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 5, + -15, + 5 + ] + }, + "faces": { + "north": { + "uv": [ + 0.25, + 0.25, + 0.5, + 10.75 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0.5, + 0.25, + 0.25, + 10.75 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 0.75, + 0.25, + 1, + 10.75 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 1, + 0.25, + 0.75, + 10.75 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 0.5, + 0.25, + 0.25, + 0 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 0.75, + 0, + 0.5, + 0.25 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 6.5, + -16, + 6.5 + ], + "to": [ + 9.5, + -13, + 9.5 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 5, + -19, + 5 + ] + }, + "faces": { + "north": { + "uv": [ + 4.75, + 7.25, + 5.5, + 8 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 4.75, + 7.25, + 5.5, + 8 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 4.75, + 7.25, + 5.5, + 8 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 4.75, + 7.25, + 5.5, + 8 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 5.5, + 7.25, + 4.75, + 6.5 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 6.25, + 6.5, + 5.5, + 7.25 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 6.5, + 29, + 6.5 + ], + "to": [ + 9.5, + 32, + 9.5 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 5, + 26, + 5 + ] + }, + "faces": { + "north": { + "uv": [ + 4.75, + 7.25, + 5.5, + 8 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 4.75, + 7.25, + 5.5, + 8 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 4.75, + 7.25, + 5.5, + 8 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 4.75, + 7.25, + 5.5, + 8 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 5.5, + 8, + 4.75, + 7.25 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 6.25, + 6.5, + 5.5, + 7.25 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 9.27, + 24.995, + 7.745 + ], + "to": [ + 18.28, + 28.005, + 8.255 + ], + "rotation": { + "angle": 22.5, + "axis": "z", + "origin": [ + 14.275, + 25, + 8 + ] + }, + "faces": { + "north": { + "uv": [ + 5.25, + 3.75, + 7.5, + 4.5 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 5, + 3.75, + 5.25, + 4.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 7.5, + 3.75, + 5.25, + 4.5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 7.5, + 3.75, + 7.75, + 4.5 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 7.5, + 3.625, + 5.25, + 3.5 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 9.75, + 3.5, + 7.5, + 3.75 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 10, + 20.5, + 7.75 + ], + "to": [ + 18.5, + 26.5, + 8.25 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 11.5, + 15.5, + 4.5 + ] + }, + "faces": { + "north": { + "uv": [ + 1.25, + 0.25, + 3.375, + 1.75 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 1, + 0.25, + 1.25, + 1.75 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 3.375, + 0.25, + 1.25, + 1.75 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 3.5, + 0.25, + 3.75, + 1.75 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 3.5, + 0.25, + 1.25, + 0 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 5.75, + 0, + 3.5, + 0.25 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 8.145, + 19.245, + 7.745 + ], + "to": [ + 17.155, + 22.255, + 8.255 + ], + "rotation": { + "angle": -22.5, + "axis": "z", + "origin": [ + 13.15, + 19.25, + 8 + ] + }, + "faces": { + "north": { + "uv": [ + 5.25, + 4.75, + 7.5, + 5.5 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 5, + 4.75, + 5.25, + 5.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 7.5, + 4.75, + 5.25, + 5.5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 7.5, + 4.75, + 7.75, + 5.5 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 7.5, + 4.75, + 5.25, + 4.5 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 9.75, + 4.5, + 7.5, + 4.75 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 16.17, + 14.27, + 7.22 + ], + "to": [ + 18.08, + 22.68, + 8.73 + ], + "rotation": { + "angle": -22.5, + "axis": "z", + "origin": [ + 13.075, + 19.275, + 8.225 + ] + }, + "faces": { + "north": { + "uv": [ + 7.5, + 7, + 8, + 9 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 7.125, + 7, + 7.5, + 9 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 8, + 7, + 7.5, + 9 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 8, + 7.25, + 8.375, + 8.975 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 8, + 7, + 7.5, + 6.5 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 8.5, + 6.5, + 8, + 6.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 15.57, + 13.77, + 7.995 + ], + "to": [ + 18.58, + 22.88, + 8.005 + ], + "rotation": { + "angle": -22.5, + "axis": "z", + "origin": [ + 13.075, + 19.275, + 8 + ] + }, + "faces": { + "north": { + "uv": [ + 9.25, + 1, + 10, + 3.25 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 9.25, + 1, + 9.375, + 3.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 10, + 1, + 9.25, + 3.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 9.25, + 1, + 9.375, + 3.25 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 9.25, + 1, + 10, + 3.25 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 9.25, + 3.125, + 10, + 3.25 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 18, + 20.5, + 8 + ], + "to": [ + 19.55, + 26.5, + 8 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 12.5, + 15.5, + 4.5 + ] + }, + "faces": { + "north": { + "uv": [ + 10.25, + 10, + 10.5, + 11.5 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 10.25, + 10, + 10.5, + 11.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 10.5, + 10, + 10.25, + 11.5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 10.25, + 10, + 10.5, + 11.5 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 10.25, + 10, + 10.5, + 11.5 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 10.25, + 10, + 10.5, + 11.5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 17, + 20.5, + 7.225 + ], + "to": [ + 19, + 26.5, + 8.725 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 11.5, + 15.5, + 4.725 + ] + }, + "faces": { + "north": { + "uv": [ + 9.5, + 7, + 10, + 8.5 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 9.125, + 7, + 9.5, + 8.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 10, + 7, + 9.5, + 8.5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 10, + 7, + 10.375, + 8.5 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 10, + 7, + 9.5, + 6.5 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 10.5, + 6.5, + 10, + 7 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 17.5, + 26.5, + 7.225 + ], + "to": [ + 18.5, + 27.5, + 8.725 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 12, + 16.5, + 4.725 + ] + }, + "faces": { + "north": { + "uv": [ + 9.625, + 7, + 9.875, + 7.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 9.125, + 7, + 9.5, + 8.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 9.875, + 7, + 9.625, + 7.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 10, + 7, + 10.5, + 8.5 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 10, + 7, + 9.5, + 6.5 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 10.5, + 6.5, + 10, + 7 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 17.5, + 19.5, + 7.225 + ], + "to": [ + 18.5, + 20.5, + 8.725 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 12, + 9.5, + 4.725 + ] + }, + "faces": { + "north": { + "uv": [ + 9.625, + 8.375, + 9.875, + 8.5 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 9.125, + 7, + 9.5, + 8.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 9.875, + 8.375, + 9.625, + 8.5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 10, + 7, + 10.5, + 8.5 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 10, + 7, + 9.5, + 6.5 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 10.5, + 6.5, + 10, + 7 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 16.72, + 24.345, + 7.995 + ], + "to": [ + 19.73, + 30.455, + 8.005 + ], + "rotation": { + "angle": 22.5, + "axis": "z", + "origin": [ + 14.225, + 24.95, + 8 + ] + }, + "faces": { + "north": { + "uv": [ + 10.25, + 5, + 11, + 6.5 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 10.25, + 5, + 10.375, + 6.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 11, + 5, + 10.25, + 6.5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 10.25, + 5, + 10.375, + 6.5 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 10.25, + 5, + 11, + 5.125 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 10.25, + 5, + 11, + 6.5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 17.32, + 24.545, + 7.22 + ], + "to": [ + 19.23, + 29.955, + 8.73 + ], + "rotation": { + "angle": 22.5, + "axis": "z", + "origin": [ + 14.225, + 24.95, + 8.225 + ] + }, + "faces": { + "north": { + "uv": [ + 3.5, + 10, + 4, + 11.25 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 3.125, + 10, + 3.5, + 11.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 4, + 10, + 3.5, + 11.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 4, + 10, + 4.375, + 11.225 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 4, + 9.875, + 3.5, + 9.5 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 4.5, + 9.5, + 4, + 10 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 5.75, + 20, + 6 + ], + "to": [ + 10.25, + 27, + 10 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 4.75, + 17, + 4.5 + ] + }, + "faces": { + "north": { + "uv": [ + 2, + 4.5, + 3.125, + 6.25 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 1, + 4.5, + 2, + 6.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 3.125, + 4.5, + 2, + 6.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 1, + 4.5, + 2, + 6.25 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 3, + 4.5, + 1.875, + 3.5 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 3, + 3.5, + 1.875, + 4.5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 6.5, + 15, + 6.5 + ], + "to": [ + 9.5, + 18, + 9.5 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 5, + 12, + 5 + ] + }, + "faces": { + "north": { + "uv": [ + 4.75, + 7.25, + 5.5, + 8 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 4.75, + 7.25, + 5.5, + 8 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 4.75, + 7.25, + 5.5, + 8 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 4.75, + 7.25, + 5.5, + 8 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 5.5, + 7.25, + 4.75, + 6.5 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 6.25, + 6.5, + 5.5, + 7.25 + ], + "texture": "#0" + } + } + }, + { + "from": [ + -2.28, + 24.995, + 7.745 + ], + "to": [ + 6.73, + 28.005, + 8.255 + ], + "rotation": { + "angle": -22.5, + "axis": "z", + "origin": [ + 1.725, + 25, + 8 + ] + }, + "faces": { + "north": { + "uv": [ + 7.5, + 3.75, + 5.25, + 4.5 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 7.75, + 3.75, + 7.5, + 4.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 5.25, + 3.75, + 7.5, + 4.5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 5.25, + 3.75, + 5, + 4.5 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 5.25, + 3.625, + 7.5, + 3.5 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 7.5, + 3.5, + 9.75, + 3.75 + ], + "texture": "#0" + } + } + }, + { + "from": [ + -2.5, + 20.5, + 7.75 + ], + "to": [ + 6, + 26.5, + 8.25 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 4.5, + 15.5, + 4.5 + ] + }, + "faces": { + "north": { + "uv": [ + 3.375, + 0.25, + 1.25, + 1.75 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 3.75, + 0.25, + 3.5, + 1.75 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 1.25, + 0.25, + 3.375, + 1.75 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 1.25, + 0.25, + 1, + 1.75 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 1.25, + 0.25, + 3.5, + 0 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 3.5, + 0, + 5.75, + 0.25 + ], + "texture": "#0" + } + } + }, + { + "from": [ + -1.155, + 19.245, + 7.745 + ], + "to": [ + 7.855, + 22.255, + 8.255 + ], + "rotation": { + "angle": 22.5, + "axis": "z", + "origin": [ + 2.85, + 19.25, + 8 + ] + }, + "faces": { + "north": { + "uv": [ + 7.5, + 4.75, + 5.25, + 5.5 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 7.75, + 4.75, + 7.5, + 5.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 5.25, + 4.75, + 7.5, + 5.5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 5.25, + 4.75, + 5, + 5.5 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 5.25, + 4.75, + 7.5, + 4.5 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 7.5, + 4.5, + 9.75, + 4.75 + ], + "texture": "#0" + } + } + }, + { + "from": [ + -2.08, + 14.27, + 7.22 + ], + "to": [ + -0.17, + 22.68, + 8.73 + ], + "rotation": { + "angle": 22.5, + "axis": "z", + "origin": [ + 2.925, + 19.275, + 8.225 + ] + }, + "faces": { + "north": { + "uv": [ + 8, + 7, + 7.5, + 9 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 8.375, + 7.25, + 8, + 8.975 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 7.5, + 7, + 8, + 9 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 7.5, + 7, + 7.125, + 9 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 7.5, + 7, + 8, + 6.5 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 8, + 6.5, + 8.5, + 6.875 + ], + "texture": "#0" + } + } + }, + { + "from": [ + -2.58, + 13.77, + 7.995 + ], + "to": [ + 0.43, + 22.88, + 8.005 + ], + "rotation": { + "angle": 22.5, + "axis": "z", + "origin": [ + 2.925, + 19.275, + 8 + ] + }, + "faces": { + "north": { + "uv": [ + 10, + 1, + 9.25, + 3.25 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 9.375, + 1, + 9.25, + 3.25 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 9.25, + 1, + 10, + 3.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 9.375, + 1, + 9.25, + 3.25 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 10, + 1, + 9.25, + 3.25 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 10, + 3.125, + 9.25, + 3.25 + ], + "texture": "#0" + } + } + }, + { + "from": [ + -3.55, + 20.5, + 8 + ], + "to": [ + -2, + 26.5, + 8 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 3.5, + 15.5, + 4.5 + ] + }, + "faces": { + "north": { + "uv": [ + 10.5, + 10, + 10.25, + 11.5 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 10.5, + 10, + 10.25, + 11.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 10.25, + 10, + 10.5, + 11.5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 10.5, + 10, + 10.25, + 11.5 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 10.5, + 10, + 10.25, + 11.5 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 10.5, + 10, + 10.25, + 11.5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + -3, + 20.5, + 7.225 + ], + "to": [ + -1, + 26.5, + 8.725 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 4.5, + 15.5, + 4.725 + ] + }, + "faces": { + "north": { + "uv": [ + 10, + 7, + 9.5, + 8.5 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 10.375, + 7, + 10, + 8.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 9.5, + 7, + 10, + 8.5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 9.5, + 7, + 9.125, + 8.5 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 9.5, + 7, + 10, + 6.5 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 10, + 6.5, + 10.5, + 7 + ], + "texture": "#0" + } + } + }, + { + "from": [ + -2.5, + 26.5, + 7.225 + ], + "to": [ + -1.5, + 27.5, + 8.725 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 4, + 16.5, + 4.725 + ] + }, + "faces": { + "north": { + "uv": [ + 9.875, + 7, + 9.625, + 7.125 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 10.5, + 7, + 10, + 8.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 9.625, + 7, + 9.875, + 7.125 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 9.5, + 7, + 9.125, + 8.5 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 9.5, + 7, + 10, + 6.5 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 10, + 6.5, + 10.5, + 7 + ], + "texture": "#0" + } + } + }, + { + "from": [ + -2.5, + 19.5, + 7.225 + ], + "to": [ + -1.5, + 20.5, + 8.725 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 4, + 9.5, + 4.725 + ] + }, + "faces": { + "north": { + "uv": [ + 9.875, + 8.375, + 9.625, + 8.5 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 10.5, + 7, + 10, + 8.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 9.625, + 8.375, + 9.875, + 8.5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 9.5, + 7, + 9.125, + 8.5 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 9.5, + 7, + 10, + 6.5 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 10, + 6.5, + 10.5, + 7 + ], + "texture": "#0" + } + } + }, + { + "from": [ + -3.73, + 24.345, + 7.995 + ], + "to": [ + -0.72, + 30.455, + 8.005 + ], + "rotation": { + "angle": -22.5, + "axis": "z", + "origin": [ + 1.775, + 24.95, + 8 + ] + }, + "faces": { + "north": { + "uv": [ + 11, + 5, + 10.25, + 6.5 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 10.375, + 5, + 10.25, + 6.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 10.25, + 5, + 11, + 6.5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 10.375, + 5, + 10.25, + 6.5 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 11, + 5, + 10.25, + 5.125 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 11, + 5, + 10.25, + 6.5 + ], + "texture": "#0" + } + } + }, + { + "from": [ + -3.23, + 24.545, + 7.22 + ], + "to": [ + -1.32, + 29.955, + 8.73 + ], + "rotation": { + "angle": -22.5, + "axis": "z", + "origin": [ + 1.775, + 24.95, + 8.225 + ] + }, + "faces": { + "north": { + "uv": [ + 4, + 10, + 3.5, + 11.25 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 4.375, + 10, + 4, + 11.225 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 3.5, + 10, + 4, + 11.25 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 3.5, + 10, + 3.125, + 11.25 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 3.5, + 9.875, + 4, + 9.5 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 4, + 9.5, + 4.5, + 10 + ], + "texture": "#0" + } + } + } + ], + "gui_light": "front", + "display": { + "thirdperson_righthand": { + "rotation": [ + 0, + -90, + 0 + ], + "translation": [ + 0, + 37.5, + 1.5 + ], + "scale": [ + 2, + 2, + 2 + ] + }, + "thirdperson_lefthand": { + "rotation": [ + 0, + -90, + 0 + ], + "translation": [ + 0, + 37.5, + 1.5 + ], + "scale": [ + 2, + 2, + 2 + ] + }, + "firstperson_righthand": { + "rotation": [ + 0, + -90, + 5 + ], + "translation": [ + 2, + 8, + 1.5 + ], + "scale": [ + 0.5, + 0.5, + 0.5 + ] + }, + "firstperson_lefthand": { + "rotation": [ + 0, + 90, + -5 + ], + "translation": [ + 2, + 8, + 1.5 + ], + "scale": [ + 0.5, + 0.5, + 0.5 + ] + }, + "ground": { + "rotation": [ + -90, + 0, + 0 + ], + "scale": [ + 0.2, + 0.2, + 0.2 + ] + }, + "gui": { + "rotation": [ + 0, + 0, + -45 + ], + "scale": [ + 0.4, + 0.4, + 0.4 + ] + }, + "head": { + "translation": [ + 0, + 45.25, + 0 + ], + "scale": [ + 2, + 2, + 2 + ] + }, + "fixed": { + "rotation": [ + 0, + 0, + 45 + ], + "scale": [ + 0.5, + 0.5, + 0.5 + ] + }, + "on_shelf": { + "scale": [ + 0.5, + 0.5, + 0.5 + ] + } + }, + "groups": [ + { + "name": "royal_assailant_battleaxe", + "origin": [ + 7.65, + -7.75, + 8 + ], + "scope": 0, + "color": 0, + "children": [ + { + "name": "handle", + "origin": [ + 5, + -15, + 5 + ], + "scope": 0, + "color": 0, + "children": [ + 0, + 1, + 2, + 3, + { + "name": "head", + "origin": [ + 14.275, + 23, + 8 + ], + "scope": 0, + "color": 0, + "children": [ + { + "name": "left", + "origin": [ + 14.275, + 23, + 8 + ], + "scope": 0, + "color": 0, + "children": [ + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14 + ] + }, + 15, + 16 + ] + } + ] + } + ] + }, + { + "name": "royal_assailant_battleaxe", + "origin": [ + 8.35, + -7.75, + 8 + ], + "scope": 0, + "color": 0, + "children": [ + { + "name": "handle", + "origin": [ + 11, + -15, + 5 + ], + "scope": 0, + "color": 0, + "children": [ + { + "name": "head", + "origin": [ + 1.725, + 23, + 8 + ], + "scope": 0, + "color": 0, + "children": [ + { + "name": "right", + "origin": [ + 1.725, + 23, + 8 + ], + "scope": 0, + "color": 0, + "children": [ + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27 + ] + } + ] + } + ] + } + ] + } + ] +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_assailant_boots.json b/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_assailant_boots.json new file mode 100644 index 00000000..946c57e4 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_assailant_boots.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/royal_assailant/royal_assailant_boots" + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_assailant_chestplate.json b/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_assailant_chestplate.json new file mode 100644 index 00000000..f008da1a --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_assailant_chestplate.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/royal_assailant/royal_assailant_chestplate" + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_assailant_helmet.json b/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_assailant_helmet.json new file mode 100644 index 00000000..eb1b1568 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_assailant_helmet.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/royal_assailant/royal_assailant_helmet" + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_assailant_leggings.json b/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_assailant_leggings.json new file mode 100644 index 00000000..86c0a4fd --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_assailant_leggings.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/royal_assailant/royal_assailant_leggings" + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_guardian_boots.json b/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_guardian_boots.json new file mode 100644 index 00000000..26c2c0d9 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_guardian_boots.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/royal_guardian/royal_guardian_boots" + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_guardian_chestplate.json b/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_guardian_chestplate.json new file mode 100644 index 00000000..089cf9e0 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_guardian_chestplate.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/royal_guardian/royal_guardian_chestplate" + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_guardian_helmet.json b/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_guardian_helmet.json new file mode 100644 index 00000000..ca1c2762 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_guardian_helmet.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/royal_guardian/royal_guardian_helmet" + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_guardian_leggings.json b/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_guardian_leggings.json new file mode 100644 index 00000000..5a367fbc --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_guardian_leggings.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "antarchy:item/royal_guardian/royal_guardian_leggings" + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_guardian_shield.json b/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_guardian_shield.json index 3f0cdcee..06f63826 100644 --- a/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_guardian_shield.json +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_guardian_shield.json @@ -1,156 +1,641 @@ { - "format_version": "1.21.11", - "credit": "Made with Blockbench", - "texture_size": [64, 64], - "textures": { - "0": "royal_guardian_shield", - "particle": "royal_guardian_shield" - }, - "elements": [ - { - "from": [7, 2, 9], - "to": [9, 8, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [0.5, -3, 7]}, - "faces": { - "north": {"uv": [10.75, 10.25, 11.25, 11.75], "texture": "#0"}, - "east": {"uv": [6, 9, 7.25, 10.5], "texture": "#0"}, - "south": {"uv": [2, 11, 2.5, 12.5], "texture": "#0"}, - "west": {"uv": [6, 10.5, 7.25, 12], "texture": "#0"}, - "up": {"uv": [3, 12.25, 2.5, 11], "texture": "#0"}, - "down": {"uv": [3.5, 11, 3, 12.25], "texture": "#0"} - } - }, - { - "from": [-2.185, -5.81, 6.99], - "to": [9.11, 5.485, 9.01], - "rotation": {"angle": 45, "axis": "z", "origin": [8, 4.375, 8]}, - "faces": { - "north": {"uv": [8, 0, 10.75, 2.75], "texture": "#0"}, - "east": {"uv": [7.25, 9, 7.75, 11.75], "texture": "#0"}, - "south": {"uv": [8, 2.75, 10.75, 5.5], "texture": "#0"}, - "west": {"uv": [10.75, 0, 11.25, 2.75], "texture": "#0"}, - "up": {"uv": [13.5, 3.25, 10.75, 2.75], "texture": "#0"}, - "down": {"uv": [13.5, 3.25, 10.75, 3.75], "texture": "#0"} - } - }, - { - "from": [0, -2, 7], - "to": [16, 16, 9], - "rotation": {"angle": 0, "axis": "y", "origin": [0.5, 0, 7]}, - "faces": { - "north": {"uv": [0, 0, 4, 4.5], "texture": "#0"}, - "east": {"uv": [0, 9, 0.5, 13.5], "texture": "#0"}, - "south": {"uv": [4, 0, 8, 4.5], "texture": "#0"}, - "west": {"uv": [0.5, 9, 1, 13.5], "texture": "#0"}, - "up": {"uv": [6, 9.5, 2, 9], "texture": "#0"}, - "down": {"uv": [6, 9.5, 2, 10], "texture": "#0"} - } - }, - { - "from": [0, -10, 7], - "to": [16, -2, 9], - "rotation": {"angle": 0, "axis": "y", "origin": [0.5, -8, 7]}, - "faces": { - "north": {"uv": [12, 12, 16, 14], "texture": "#0"}, - "east": {"uv": [11.5, 11.5, 12, 16], "texture": "#0"}, - "south": {"uv": [12, 14, 16, 16], "texture": "#0"}, - "west": {"uv": [11.5, 11.5, 12, 16], "texture": "#0"}, - "up": {"uv": [6, 9.5, 2, 9], "texture": "#0"}, - "down": {"uv": [6, 9.5, 2, 10], "texture": "#0"} - } - }, - { - "from": [-2.535, -6.36, 6.59], - "to": [9.41, 5.585, 9.41], - "rotation": {"angle": 45, "axis": "z", "origin": [8, 4.175, 8]}, - "faces": { - "north": {"uv": [8, 5.5, 10.75, 8.25], "texture": "#0"}, - "east": {"uv": [10.75, 3.75, 11.25, 6.5], "texture": "#0"}, - "south": {"uv": [8, 5.5, 10.75, 8.25], "rotation": 90, "texture": "#0"}, - "west": {"uv": [10.75, 6.5, 11.25, 9.25], "texture": "#0"}, - "up": {"uv": [13.5, 9.75, 10.75, 9.25], "texture": "#0"}, - "down": {"uv": [13.5, 9.75, 10.75, 10.25], "texture": "#0"} - } - }, - { - "from": [-0.4, -2.3, 6.6], - "to": [16.4, 16.5, 9.4], - "rotation": {"angle": 0, "axis": "y", "origin": [0.5, 0.1, 7]}, - "faces": { - "north": {"uv": [0, 4.5, 4, 9], "texture": "#0"}, - "east": {"uv": [1, 9, 1.5, 13.5], "texture": "#0"}, - "south": {"uv": [0, 4.5, 4, 9], "texture": "#0"}, - "west": {"uv": [1.5, 9, 2, 13.5], "texture": "#0"}, - "up": {"uv": [6, 10.5, 2, 10], "texture": "#0"}, - "down": {"uv": [6, 10.5, 2, 11], "texture": "#0"} - } - } - ], - "display": { - "thirdperson_righthand": { - "rotation": [0, -90, 0], - "translation": [3.75, 1, 2.5] - }, - "thirdperson_lefthand": { - "rotation": [0, -90, 0], - "translation": [3.5, 1, 2.5] - }, - "firstperson_righthand": { - "rotation": [-5, 0, 5], - "translation": [0.5, 1, 0.5], - "scale": [0.6, 0.6, 0.6] - }, - "firstperson_lefthand": { - "rotation": [-5, 0, 5], - "translation": [0.5, 1, 0.5], - "scale": [0.6, 0.6, 0.6] - }, - "ground": { - "translation": [0, 4, 0], - "scale": [0.25, 0.25, 0.25] - }, - "gui": { - "rotation": [-154.79, 33.92, -172.56], - "translation": [0, 1.5, 0], - "scale": [0.5, 0.5, 0.5] - }, - "fixed": { - "translation": [0, 3, 0], - "scale": [0.5, 0.5, 0.5] - }, - "on_shelf": { - "rotation": [0, -180, 0] - } - }, - "groups": [ - { - "name": "royal_guardian_shield", - "origin": [8, 5.075, 1], - "scope": 0, - "color": 0, - "children": [ - { - "name": "handle", - "origin": [0, -3, 0], - "scope": 0, - "color": 0, - "children": [0] - }, - { - "name": "shield_base", - "origin": [8, 5.075, 1], - "scope": 0, - "color": 0, - "children": [1, 2, 3] - }, - { - "name": "shield_border", - "origin": [8, 5.075, 1], - "scope": 0, - "color": 0, - "children": [4, 5] - } - ] - } - ] -} \ No newline at end of file + "format_version": "1.21.11", + "credit": "Made with Blockbench", + "texture_size": [ + 64, + 64 + ], + "textures": { + "0": "antarchy:item/royal_guardian/royal_guardian_shield", + "particle": "antarchy:item/royal_guardian/royal_guardian_shield" + }, + "elements": [ + { + "from": [ + 7, + 2, + 9 + ], + "to": [ + 9, + 8, + 14 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 0.5, + -3, + 7 + ] + }, + "faces": { + "north": { + "uv": [ + 10.75, + 10.25, + 11.25, + 11.75 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 6, + 9, + 7.25, + 10.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 2, + 11, + 2.5, + 12.5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 6, + 10.5, + 7.25, + 12 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 3, + 12.25, + 2.5, + 11 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 3.5, + 11, + 3, + 12.25 + ], + "texture": "#0" + } + } + }, + { + "from": [ + -2.185, + -5.81, + 6.99 + ], + "to": [ + 9.11, + 5.485, + 9.01 + ], + "rotation": { + "angle": 45, + "axis": "z", + "origin": [ + 8, + 4.375, + 8 + ] + }, + "faces": { + "north": { + "uv": [ + 8, + 0, + 10.75, + 2.75 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 7.25, + 9, + 7.75, + 11.75 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 8, + 2.75, + 10.75, + 5.5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 10.75, + 0, + 11.25, + 2.75 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 13.5, + 3.25, + 10.75, + 2.75 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 13.5, + 3.25, + 10.75, + 3.75 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 0, + -2, + 7 + ], + "to": [ + 16, + 16, + 9 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 0.5, + 0, + 7 + ] + }, + "faces": { + "north": { + "uv": [ + 0, + 0, + 4, + 4.5 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 0, + 9, + 0.5, + 13.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 4, + 0, + 8, + 4.5 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 0.5, + 9, + 1, + 13.5 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 6, + 9.5, + 2, + 9 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 6, + 9.5, + 2, + 10 + ], + "texture": "#0" + } + } + }, + { + "from": [ + 0, + -10, + 7 + ], + "to": [ + 16, + -2, + 9 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 0.5, + -8, + 7 + ] + }, + "faces": { + "north": { + "uv": [ + 12, + 12, + 16, + 14 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 11.5, + 11.5, + 12, + 16 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 12, + 14, + 16, + 16 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 11.5, + 11.5, + 12, + 16 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 6, + 9.5, + 2, + 9 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 6, + 9.5, + 2, + 10 + ], + "texture": "#0" + } + } + }, + { + "from": [ + -2.535, + -6.36, + 6.59 + ], + "to": [ + 9.41, + 5.585, + 9.41 + ], + "rotation": { + "angle": 45, + "axis": "z", + "origin": [ + 8, + 4.175, + 8 + ] + }, + "faces": { + "north": { + "uv": [ + 8, + 5.5, + 10.75, + 8.25 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 10.75, + 3.75, + 11.25, + 6.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 8, + 5.5, + 10.75, + 8.25 + ], + "rotation": 90, + "texture": "#0" + }, + "west": { + "uv": [ + 10.75, + 6.5, + 11.25, + 9.25 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 13.5, + 9.75, + 10.75, + 9.25 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 13.5, + 9.75, + 10.75, + 10.25 + ], + "texture": "#0" + } + } + }, + { + "from": [ + -0.4, + -2.3, + 6.6 + ], + "to": [ + 16.4, + 16.5, + 9.4 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 0.5, + 0.1, + 7 + ] + }, + "faces": { + "north": { + "uv": [ + 0, + 4.5, + 4, + 9 + ], + "texture": "#0" + }, + "east": { + "uv": [ + 1, + 9, + 1.5, + 13.5 + ], + "texture": "#0" + }, + "south": { + "uv": [ + 0, + 4.5, + 4, + 9 + ], + "texture": "#0" + }, + "west": { + "uv": [ + 1.5, + 9, + 2, + 13.5 + ], + "texture": "#0" + }, + "up": { + "uv": [ + 6, + 10.5, + 2, + 10 + ], + "texture": "#0" + }, + "down": { + "uv": [ + 6, + 10.5, + 2, + 11 + ], + "texture": "#0" + } + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [ + 0, + -90, + 0 + ], + "translation": [ + 3.75, + 1, + 2.5 + ] + }, + "thirdperson_lefthand": { + "rotation": [ + 0, + -90, + 0 + ], + "translation": [ + 3.5, + 1, + 2.5 + ] + }, + "firstperson_righthand": { + "rotation": [ + -5, + 0, + 5 + ], + "translation": [ + 0.5, + 1, + 0.5 + ], + "scale": [ + 0.6, + 0.6, + 0.6 + ] + }, + "firstperson_lefthand": { + "rotation": [ + -5, + 0, + 5 + ], + "translation": [ + 0.5, + 1, + 0.5 + ], + "scale": [ + 0.6, + 0.6, + 0.6 + ] + }, + "ground": { + "translation": [ + 0, + 4, + 0 + ], + "scale": [ + 0.25, + 0.25, + 0.25 + ] + }, + "gui": { + "rotation": [ + -154.79, + 33.92, + -172.56 + ], + "translation": [ + 0, + 1.5, + 0 + ], + "scale": [ + 0.5, + 0.5, + 0.5 + ] + }, + "fixed": { + "translation": [ + 0, + 3, + 0 + ], + "scale": [ + 0.5, + 0.5, + 0.5 + ] + }, + "on_shelf": { + "rotation": [ + 0, + -180, + 0 + ] + } + }, + "groups": [ + { + "name": "royal_guardian_shield", + "origin": [ + 8, + 5.075, + 1 + ], + "scope": 0, + "color": 0, + "children": [ + { + "name": "handle", + "origin": [ + 0, + -3, + 0 + ], + "scope": 0, + "color": 0, + "children": [ + 0 + ] + }, + { + "name": "shield_base", + "origin": [ + 8, + 5.075, + 1 + ], + "scope": 0, + "color": 0, + "children": [ + 1, + 2, + 3 + ] + }, + { + "name": "shield_border", + "origin": [ + 8, + 5.075, + 1 + ], + "scope": 0, + "color": 0, + "children": [ + 4, + 5 + ] + } + ] + } + ] +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_guardian_sword.json b/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_guardian_sword.json new file mode 100644 index 00000000..52bdad62 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_guardian_sword.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:item/royal_guardian_sword_held" +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_guardian_sword_gui.json b/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_guardian_sword_gui.json new file mode 100644 index 00000000..b5d36e70 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_guardian_sword_gui.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "gui_light": "front", + "textures": { + "layer0": "antarchy:item/royal_guardian/royal_guardian_sword_item" + } +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_guardian_sword_held.json b/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_guardian_sword_held.json new file mode 100644 index 00000000..fb2f7bd5 --- /dev/null +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_guardian_sword_held.json @@ -0,0 +1,1227 @@ +{ + "format_version": "1.21.11", + "credit": "Made with Blockbench", + "texture_size": [ + 64, + 64 + ], + "textures": { + "1": "antarchy:item/royal_guardian/royal_guardian_sword", + "particle": "antarchy:item/royal_guardian/royal_guardian_sword" + }, + "elements": [ + { + "from": [ + 7.42144, + -5.62138, + 6.755 + ], + "to": [ + 8.41144, + -0.63138, + 9.245 + ], + "rotation": { + "angle": -45, + "axis": "z", + "origin": [ + 8.5, + -6.43592, + 8.75 + ] + }, + "faces": { + "north": { + "uv": [ + 5.25, + 4.25, + 5.5, + 5.5 + ], + "texture": "#1" + }, + "east": { + "uv": [ + 4.625, + 4.25, + 5.25, + 5.5 + ], + "texture": "#1" + }, + "south": { + "uv": [ + 5.5, + 4.25, + 5.25, + 5.5 + ], + "texture": "#1" + }, + "west": { + "uv": [ + 3.625, + 4.25, + 4.25, + 5.5 + ], + "texture": "#1" + }, + "up": { + "uv": [ + 4.5, + 4.25, + 4.25, + 3.625 + ], + "texture": "#1" + }, + "down": { + "uv": [ + 4.5, + 3.625, + 4.25, + 4.25 + ], + "texture": "#1" + } + } + }, + { + "from": [ + 7.58856, + -5.62138, + 6.755 + ], + "to": [ + 8.57856, + -0.63138, + 9.245 + ], + "rotation": { + "angle": 45, + "axis": "z", + "origin": [ + 7.5, + -6.43592, + 8.75 + ] + }, + "faces": { + "north": { + "uv": [ + 5.5, + 4.25, + 5.25, + 5.5 + ], + "texture": "#1" + }, + "east": { + "uv": [ + 3.625, + 4.25, + 4.25, + 5.5 + ], + "texture": "#1" + }, + "south": { + "uv": [ + 5.25, + 4.25, + 5.5, + 5.5 + ], + "texture": "#1" + }, + "west": { + "uv": [ + 4.625, + 4.25, + 5.25, + 5.5 + ], + "texture": "#1" + }, + "up": { + "uv": [ + 4.5, + 4.25, + 4.25, + 3.625 + ], + "texture": "#1" + }, + "down": { + "uv": [ + 4.5, + 3.625, + 4.25, + 4.25 + ], + "texture": "#1" + } + } + }, + { + "from": [ + 6.5, + -6.5, + 6.75 + ], + "to": [ + 9.5, + -5.5, + 9.25 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 5.5, + -5.5, + 6 + ] + }, + "faces": { + "north": { + "uv": [ + 7.75, + 2.25, + 8.5, + 2.5 + ], + "texture": "#1" + }, + "east": { + "uv": [ + 5.5, + 2.25, + 6.25, + 2.5 + ], + "texture": "#1" + }, + "south": { + "uv": [ + 7.75, + 2.25, + 8.5, + 2.5 + ], + "texture": "#1" + }, + "west": { + "uv": [ + 7, + 2.25, + 7.75, + 2.5 + ], + "texture": "#1" + }, + "up": { + "uv": [ + 7, + 2.125, + 6.25, + 1.5 + ], + "texture": "#1" + }, + "down": { + "uv": [ + 7.75, + 1.5, + 7, + 2.125 + ], + "texture": "#1" + } + } + }, + { + "from": [ + 7, + -9.5, + 7 + ], + "to": [ + 9, + -6.5, + 9 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 5.5, + -6.5, + 6.5 + ] + }, + "faces": { + "north": { + "uv": [ + 4, + 6, + 4.5, + 6.75 + ], + "texture": "#1" + }, + "east": { + "uv": [ + 3.5, + 6, + 4, + 6.75 + ], + "texture": "#1" + }, + "south": { + "uv": [ + 5, + 6, + 5.5, + 6.75 + ], + "texture": "#1" + }, + "west": { + "uv": [ + 4.5, + 6, + 5, + 6.75 + ], + "texture": "#1" + }, + "up": { + "uv": [ + 4.5, + 6, + 4, + 5.5 + ], + "texture": "#1" + }, + "down": { + "uv": [ + 5, + 5.5, + 4.5, + 6 + ], + "texture": "#1" + } + } + }, + { + "from": [ + 7.8, + -9.5, + 2.8 + ], + "to": [ + 7.8, + -6.5, + 6.8 + ], + "rotation": { + "angle": 45, + "axis": "y", + "origin": [ + 7.8, + -8, + 7.8 + ] + }, + "faces": { + "north": { + "uv": [ + 6.5, + 3.5, + 6.5, + 4.25 + ], + "texture": "#1" + }, + "east": { + "uv": [ + 7.5, + 3.5, + 6.5, + 4.25 + ], + "texture": "#1" + }, + "south": { + "uv": [ + 7.5, + 3.5, + 7.5, + 4.25 + ], + "texture": "#1" + }, + "west": { + "uv": [ + 6.5, + 3.5, + 7.5, + 4.25 + ], + "texture": "#1" + }, + "up": { + "uv": [ + 6.5, + 3.5, + 6.5, + 2.5 + ], + "texture": "#1" + }, + "down": { + "uv": [ + 6.5, + 2.5, + 6.5, + 3.5 + ], + "texture": "#1" + } + } + }, + { + "from": [ + 7.5, + -14, + 7.5 + ], + "to": [ + 8.5, + -7, + 8.5 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 5, + -15, + 5 + ] + }, + "faces": { + "north": { + "uv": [ + 6.75, + 4.5, + 7, + 6.25 + ], + "texture": "#1" + }, + "east": { + "uv": [ + 6.5, + 4.5, + 6.75, + 6.25 + ], + "texture": "#1" + }, + "south": { + "uv": [ + 7.25, + 4.5, + 7.5, + 6.25 + ], + "texture": "#1" + }, + "west": { + "uv": [ + 7, + 4.5, + 7.25, + 6.25 + ], + "texture": "#1" + }, + "up": { + "uv": [ + 7, + 4.5, + 6.75, + 4.25 + ], + "texture": "#1" + }, + "down": { + "uv": [ + 7.25, + 4.25, + 7, + 4.5 + ], + "texture": "#1" + } + } + }, + { + "from": [ + 7.3, + -14.2, + 7.3 + ], + "to": [ + 8.7, + -5.8, + 8.7 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 5, + -15, + 5 + ] + }, + "faces": { + "north": { + "uv": [ + 5.75, + 4.5, + 6, + 6.5 + ], + "texture": "#1" + }, + "east": { + "uv": [ + 5.5, + 4.5, + 5.75, + 6.5 + ], + "texture": "#1" + }, + "south": { + "uv": [ + 6.25, + 4.5, + 6.5, + 6.5 + ], + "texture": "#1" + }, + "west": { + "uv": [ + 6, + 4.5, + 6.25, + 6.5 + ], + "texture": "#1" + }, + "up": { + "uv": [ + 6, + 4.5, + 5.75, + 4.25 + ], + "texture": "#1" + }, + "down": { + "uv": [ + 6.25, + 4.25, + 6, + 4.5 + ], + "texture": "#1" + } + } + }, + { + "from": [ + 6.5, + -16, + 6.5 + ], + "to": [ + 9.5, + -13, + 9.5 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 5, + -19, + 5 + ] + }, + "faces": { + "north": { + "uv": [ + 5.75, + 0.75, + 6.5, + 1.5 + ], + "texture": "#1" + }, + "east": { + "uv": [ + 5.75, + 0.75, + 6.5, + 1.5 + ], + "texture": "#1" + }, + "south": { + "uv": [ + 5.75, + 0.75, + 6.5, + 1.5 + ], + "texture": "#1" + }, + "west": { + "uv": [ + 5.75, + 0.75, + 6.5, + 1.5 + ], + "texture": "#1" + }, + "up": { + "uv": [ + 5, + 0.75, + 4.25, + 0 + ], + "texture": "#1" + }, + "down": { + "uv": [ + 5.75, + 0, + 5, + 0.75 + ], + "texture": "#1" + } + } + }, + { + "from": [ + 5.5, + -6, + 8 + ], + "to": [ + 6.5, + 28, + 8 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 1.5, + -5, + 5 + ] + }, + "faces": { + "north": { + "uv": [ + 2.5, + 0, + 2.75, + 8.5 + ], + "texture": "#1" + }, + "east": { + "uv": [ + 2.5, + 0, + 2.5, + 8.5 + ], + "texture": "#1" + }, + "south": { + "uv": [ + 2.75, + 0, + 3, + 8.5 + ], + "texture": "#1" + }, + "west": { + "uv": [ + 2.75, + 0, + 2.75, + 8.5 + ], + "texture": "#1" + }, + "up": { + "uv": [ + 2.75, + 0, + 2.5, + 0 + ], + "texture": "#1" + }, + "down": { + "uv": [ + 3, + 0, + 2.75, + 0 + ], + "texture": "#1" + } + } + }, + { + "from": [ + 6, + -6, + 7.5 + ], + "to": [ + 10, + 27.625, + 8.5 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 5.5, + -5, + 5 + ] + }, + "faces": { + "north": { + "uv": [ + 0.25, + 0.25, + 1.25, + 8.5 + ], + "texture": "#1" + }, + "east": { + "uv": [ + 0, + 0.25, + 0.25, + 8.5 + ], + "texture": "#1" + }, + "south": { + "uv": [ + 1.5, + 0.25, + 2.5, + 8.5 + ], + "texture": "#1" + }, + "west": { + "uv": [ + 1.25, + 0.25, + 1.5, + 8.5 + ], + "texture": "#1" + }, + "up": { + "uv": [ + 1.25, + 0.25, + 0.25, + 0 + ], + "texture": "#1" + }, + "down": { + "uv": [ + 2.25, + 0, + 1.25, + 0.25 + ], + "texture": "#1" + } + } + }, + { + "from": [ + 7.295, + 26.52, + 7.495 + ], + "to": [ + 10.105, + 29.33, + 8.505 + ], + "rotation": { + "angle": -45, + "axis": "z", + "origin": [ + 8, + 28.625, + 8 + ] + }, + "faces": { + "north": { + "uv": [ + 6.75, + 0.25, + 7.25, + 0.75 + ], + "texture": "#1" + }, + "east": { + "uv": [ + 6.5, + 0.25, + 6.75, + 0.75 + ], + "texture": "#1" + }, + "south": { + "uv": [ + 7.5, + 0.25, + 8, + 0.75 + ], + "texture": "#1" + }, + "west": { + "uv": [ + 7.25, + 0.25, + 7.5, + 0.75 + ], + "texture": "#1" + }, + "up": { + "uv": [ + 7.25, + 0.25, + 6.75, + 0 + ], + "texture": "#1" + }, + "down": { + "uv": [ + 7.75, + 0, + 7.25, + 0.25 + ], + "texture": "#1" + } + } + }, + { + "from": [ + 6.37, + 26.295, + 7.995 + ], + "to": [ + 9.905, + 29.83, + 8.005 + ], + "rotation": { + "angle": -45, + "axis": "z", + "origin": [ + 8, + 28.2, + 8 + ] + }, + "faces": { + "north": { + "uv": [ + 6.5, + 0.75, + 7.25, + 1.5 + ], + "texture": "#1" + }, + "east": { + "uv": [ + 6.5, + 0.75, + 6.5, + 1.5 + ], + "texture": "#1" + }, + "south": { + "uv": [ + 7.25, + 0.75, + 8, + 1.5 + ], + "texture": "#1" + }, + "west": { + "uv": [ + 7.25, + 0.75, + 7.25, + 1.5 + ], + "texture": "#1" + }, + "up": { + "uv": [ + 7.25, + 0.75, + 6.5, + 0.75 + ], + "texture": "#1" + }, + "down": { + "uv": [ + 8, + 0.75, + 7.25, + 0.75 + ], + "texture": "#1" + } + } + }, + { + "from": [ + 9.5, + -6, + 8 + ], + "to": [ + 10.5, + 28, + 8 + ], + "rotation": { + "angle": 0, + "axis": "y", + "origin": [ + 5.5, + -5, + 5 + ] + }, + "faces": { + "north": { + "uv": [ + 3, + 0, + 3.25, + 8.5 + ], + "texture": "#1" + }, + "east": { + "uv": [ + 3, + 0, + 3, + 8.5 + ], + "texture": "#1" + }, + "south": { + "uv": [ + 3.25, + 0, + 3.5, + 8.5 + ], + "texture": "#1" + }, + "west": { + "uv": [ + 3.25, + 0, + 3.25, + 8.5 + ], + "texture": "#1" + }, + "up": { + "uv": [ + 3.25, + 0, + 3, + 0 + ], + "texture": "#1" + }, + "down": { + "uv": [ + 3.5, + 0, + 3.25, + 0 + ], + "texture": "#1" + } + } + } + ], + "gui_light": "front", + "display": { + "thirdperson_righthand": { + "rotation": [ + 0, + -90, + 0 + ], + "translation": [ + 0, + 37.5, + 1.5 + ], + "scale": [ + 2, + 2, + 2 + ] + }, + "thirdperson_lefthand": { + "rotation": [ + 0, + -90, + 0 + ], + "translation": [ + 0, + 37.5, + 1.5 + ], + "scale": [ + 2, + 2, + 2 + ] + }, + "firstperson_righthand": { + "rotation": [ + 0, + -90, + 5 + ], + "translation": [ + 2, + 8, + 1.5 + ], + "scale": [ + 0.5, + 0.5, + 0.5 + ] + }, + "firstperson_lefthand": { + "rotation": [ + 0, + 90, + -5 + ], + "translation": [ + 2, + 8, + 1.5 + ], + "scale": [ + 0.5, + 0.5, + 0.5 + ] + }, + "ground": { + "rotation": [ + -90, + 0, + 0 + ], + "scale": [ + 0.2, + 0.2, + 0.2 + ] + }, + "gui": { + "rotation": [ + 0, + 0, + -45 + ], + "scale": [ + 0.4, + 0.4, + 0.4 + ] + }, + "head": { + "translation": [ + 0, + 45.25, + 0 + ], + "scale": [ + 2, + 2, + 2 + ] + }, + "fixed": { + "rotation": [ + 0, + 0, + 45 + ], + "scale": [ + 0.5, + 0.5, + 0.5 + ] + }, + "on_shelf": { + "scale": [ + 0.5, + 0.5, + 0.5 + ] + } + }, + "groups": [ + { + "name": "royal_guardian_sword", + "origin": [ + 7.65, + -7.75, + 8 + ], + "scope": 0, + "color": 0, + "children": [ + { + "name": "guard", + "origin": [ + 7.65, + -7.75, + 8 + ], + "scope": 0, + "color": 0, + "children": [ + { + "name": "group", + "origin": [ + 11.1, + -7.05, + 8.5 + ], + "scope": 0, + "color": 0, + "children": [ + 0, + 1 + ] + }, + { + "name": "group", + "origin": [ + 11.1, + -7.05, + 8.5 + ], + "scope": 0, + "color": 0, + "children": [] + }, + 2, + 3, + 4 + ] + }, + { + "name": "handle", + "origin": [ + 5, + -15, + 5 + ], + "scope": 0, + "color": 0, + "children": [ + 5, + 6, + 7 + ] + }, + { + "name": "blade", + "origin": [ + 2, + -5, + 5 + ], + "scope": 0, + "color": 0, + "children": [ + 8, + 9, + 10, + 11, + 12 + ] + } + ] + } + ] +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/sounds.json b/common-1.21.1/src/main/resources/assets/antarchy/sounds.json index f6c99018..993749b1 100644 --- a/common-1.21.1/src/main/resources/assets/antarchy/sounds.json +++ b/common-1.21.1/src/main/resources/assets/antarchy/sounds.json @@ -1069,6 +1069,22 @@ } ] }, + "haywire": { + "sounds": [ + { + "name": "antarchy:music/game/thoraxis/haywire", + "stream": true + } + ] + }, + "inversion_layer": { + "sounds": [ + { + "name": "antarchy:music/game/thoraxis/inversion_layer", + "stream": true + } + ] + }, "music.game.thoraxis": { "sounds": [ { @@ -1080,6 +1096,16 @@ "name": "antarchy:whistling_void", "type": "event", "stream": true + }, + { + "name": "antarchy:haywire", + "type": "event", + "stream": true + }, + { + "name": "antarchy:inversion_layer", + "type": "event", + "stream": true } ] }, diff --git a/common-1.21.1/src/main/resources/assets/antarchy/sounds/music/game/thoraxis/haywire.ogg b/common-1.21.1/src/main/resources/assets/antarchy/sounds/music/game/thoraxis/haywire.ogg new file mode 100644 index 00000000..775c93b6 Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/sounds/music/game/thoraxis/haywire.ogg differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/sounds/music/game/thoraxis/inversion_layer.ogg b/common-1.21.1/src/main/resources/assets/antarchy/sounds/music/game/thoraxis/inversion_layer.ogg new file mode 100644 index 00000000..14b22f67 Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/sounds/music/game/thoraxis/inversion_layer.ogg differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/block/prince_egg.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/block/prince_egg.png index e69de29b..5b5b5510 100644 Binary files a/common-1.21.1/src/main/resources/assets/antarchy/textures/block/prince_egg.png and b/common-1.21.1/src/main/resources/assets/antarchy/textures/block/prince_egg.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/block/princess_egg.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/block/princess_egg.png index e69de29b..4ddb21cb 100644 Binary files a/common-1.21.1/src/main/resources/assets/antarchy/textures/block/princess_egg.png and b/common-1.21.1/src/main/resources/assets/antarchy/textures/block/princess_egg.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/entity/prince.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/entity/prince.png new file mode 100644 index 00000000..114adf50 Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/entity/prince.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/entity/princess.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/entity/princess.png new file mode 100644 index 00000000..e53c38db Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/entity/princess.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/item/royal_assailant/royal_assailant_battleaxe.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/item/royal_assailant/royal_assailant_battleaxe.png new file mode 100644 index 00000000..6dd03dc4 Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/item/royal_assailant/royal_assailant_battleaxe.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/item/royal_assailant/royal_assailant_battleaxe_item.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/item/royal_assailant/royal_assailant_battleaxe_item.png new file mode 100644 index 00000000..35cdd152 Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/item/royal_assailant/royal_assailant_battleaxe_item.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/item/royal_assailant/royal_assailant_boots.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/item/royal_assailant/royal_assailant_boots.png new file mode 100644 index 00000000..f1545c75 Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/item/royal_assailant/royal_assailant_boots.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/item/royal_assailant/royal_assailant_chestplate.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/item/royal_assailant/royal_assailant_chestplate.png new file mode 100644 index 00000000..5a3875bb Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/item/royal_assailant/royal_assailant_chestplate.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/item/royal_assailant/royal_assailant_helmet.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/item/royal_assailant/royal_assailant_helmet.png new file mode 100644 index 00000000..cd6b5eb7 Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/item/royal_assailant/royal_assailant_helmet.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/item/royal_assailant/royal_assailant_leggings.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/item/royal_assailant/royal_assailant_leggings.png new file mode 100644 index 00000000..86b9d927 Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/item/royal_assailant/royal_assailant_leggings.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/item/royal_guardian/royal_guardian_boots.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/item/royal_guardian/royal_guardian_boots.png new file mode 100644 index 00000000..acb141b0 Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/item/royal_guardian/royal_guardian_boots.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/item/royal_guardian/royal_guardian_chestplate.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/item/royal_guardian/royal_guardian_chestplate.png new file mode 100644 index 00000000..3e685c5c Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/item/royal_guardian/royal_guardian_chestplate.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/item/royal_guardian/royal_guardian_helmet.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/item/royal_guardian/royal_guardian_helmet.png new file mode 100644 index 00000000..d9f0dadd Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/item/royal_guardian/royal_guardian_helmet.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/item/royal_guardian/royal_guardian_leggings.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/item/royal_guardian/royal_guardian_leggings.png new file mode 100644 index 00000000..b7ac2f27 Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/item/royal_guardian/royal_guardian_leggings.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/item/royal_guardian/royal_guardian_shield.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/item/royal_guardian/royal_guardian_shield.png new file mode 100644 index 00000000..a22810fd Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/item/royal_guardian/royal_guardian_shield.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/item/royal_guardian/royal_guardian_sword.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/item/royal_guardian/royal_guardian_sword.png new file mode 100644 index 00000000..415bf5c9 Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/item/royal_guardian/royal_guardian_sword.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/item/royal_guardian/royal_guardian_sword_item.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/item/royal_guardian/royal_guardian_sword_item.png new file mode 100644 index 00000000..ae37d90c Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/item/royal_guardian/royal_guardian_sword_item.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/models/armor/royal_assailant_layer_1.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/models/armor/royal_assailant_layer_1.png new file mode 100644 index 00000000..15b57d45 Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/models/armor/royal_assailant_layer_1.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/models/armor/royal_assailant_layer_2.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/models/armor/royal_assailant_layer_2.png new file mode 100644 index 00000000..10784a59 Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/models/armor/royal_assailant_layer_2.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/models/armor/royal_guardian_layer_1.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/models/armor/royal_guardian_layer_1.png new file mode 100644 index 00000000..2f9deaef Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/models/armor/royal_guardian_layer_1.png differ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/textures/models/armor/royal_guardian_layer_2.png b/common-1.21.1/src/main/resources/assets/antarchy/textures/models/armor/royal_guardian_layer_2.png new file mode 100644 index 00000000..37b6dc46 Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/textures/models/armor/royal_guardian_layer_2.png differ diff --git a/common-1.21.1/src/main/resources/data/antarchy/advancement/anger_the_hive_mind.json b/common-1.21.1/src/main/resources/data/antarchy/advancement/anger_the_hive_mind.json index 0b31a7ed..b7bf748b 100644 --- a/common-1.21.1/src/main/resources/data/antarchy/advancement/anger_the_hive_mind.json +++ b/common-1.21.1/src/main/resources/data/antarchy/advancement/anger_the_hive_mind.json @@ -7,7 +7,18 @@ "type": { "tag": "antarchy:horde_common" } - } + }, + "player": [ + { + "condition": "minecraft:entity_properties", + "entity": "this", + "predicate": { + "location": { + "dimension": "antarchy:cavaryn" + } + } + } + ] }, "trigger": "minecraft:player_killed_entity" } diff --git a/common-1.21.1/src/main/resources/data/antarchy/dimension/elythia.json b/common-1.21.1/src/main/resources/data/antarchy/dimension/elythia.json index 0ee2aed4..935aec5f 100644 --- a/common-1.21.1/src/main/resources/data/antarchy/dimension/elythia.json +++ b/common-1.21.1/src/main/resources/data/antarchy/dimension/elythia.json @@ -83,7 +83,7 @@ } }, { - "biome": "antarchy:elythia_meadow", + "biome": "antarchy:truffalo_forest", "parameters": { "temperature": 0.68, "humidity": 0.96, @@ -203,7 +203,7 @@ } }, { - "biome": "antarchy:elythia_meadow", + "biome": "antarchy:truffalo_forest", "parameters": { "temperature": 0.62, "humidity": 0.98, @@ -311,7 +311,7 @@ } }, { - "biome": "antarchy:elythia_meadow", + "biome": "antarchy:truffalo_forest", "parameters": { "temperature": 0.7, "humidity": 0.95, diff --git a/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/prince_egg.json b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/prince_egg.json new file mode 100644 index 00000000..15debe54 --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/prince_egg.json @@ -0,0 +1,10 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ { "type": "minecraft:item", "name": "antarchy:prince_egg" } ], + "conditions": [ { "condition": "minecraft:survives_explosion" } ] + } + ] +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/princess_egg.json b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/princess_egg.json new file mode 100644 index 00000000..cfae1e9f --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/princess_egg.json @@ -0,0 +1,10 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ { "type": "minecraft:item", "name": "antarchy:princess_egg" } ], + "conditions": [ { "condition": "minecraft:survives_explosion" } ] + } + ] +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/recipe/eye_of_the_storm.json b/common-1.21.1/src/main/resources/data/antarchy/recipe/eye_of_the_storm.json new file mode 100644 index 00000000..620c2f7b --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/recipe/eye_of_the_storm.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "combat", + "pattern": [ + " V", + " T ", + "T " + ], + "key": { + "V": { + "item": "antarchy:vortex_charge" + }, + "T": { + "item": "antarchy:titanium_ingot" + } + }, + "result": { + "id": "antarchy:eye_of_the_storm", + "count": 1 + } +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/recipe/royal_assailant_battleaxe.json b/common-1.21.1/src/main/resources/data/antarchy/recipe/royal_assailant_battleaxe.json new file mode 100644 index 00000000..fdc0d149 --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/recipe/royal_assailant_battleaxe.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "pattern": [ + "SSS", + "SBS", + "SSS" + ], + "key": { + "S": { + "item": "antarchy:queen_scale" + }, + "B": { + "item": "antarchy:battle_axe" + } + }, + "result": { + "id": "antarchy:royal_assailant_battleaxe", + "count": 1 + } +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/recipe/royal_assailant_boots.json b/common-1.21.1/src/main/resources/data/antarchy/recipe/royal_assailant_boots.json new file mode 100644 index 00000000..4f55f725 --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/recipe/royal_assailant_boots.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "pattern": [ + "SSS", + "SUS", + "SSS" + ], + "key": { + "S": { "item": "antarchy:queen_scale" }, + "U": { "item": "antarchy:ultimate_boots" } + }, + "result": { + "id": "antarchy:royal_assailant_boots", + "count": 1 + } +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/recipe/royal_assailant_chestplate.json b/common-1.21.1/src/main/resources/data/antarchy/recipe/royal_assailant_chestplate.json new file mode 100644 index 00000000..0a9b0ae2 --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/recipe/royal_assailant_chestplate.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "pattern": [ + "SSS", + "SUS", + "SSS" + ], + "key": { + "S": { "item": "antarchy:queen_scale" }, + "U": { "item": "antarchy:ultimate_chestplate" } + }, + "result": { + "id": "antarchy:royal_assailant_chestplate", + "count": 1 + } +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/recipe/royal_assailant_helmet.json b/common-1.21.1/src/main/resources/data/antarchy/recipe/royal_assailant_helmet.json new file mode 100644 index 00000000..a3a4319e --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/recipe/royal_assailant_helmet.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "pattern": [ + "SSS", + "SUS", + "SSS" + ], + "key": { + "S": { "item": "antarchy:queen_scale" }, + "U": { "item": "antarchy:ultimate_helmet" } + }, + "result": { + "id": "antarchy:royal_assailant_helmet", + "count": 1 + } +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/recipe/royal_assailant_leggings.json b/common-1.21.1/src/main/resources/data/antarchy/recipe/royal_assailant_leggings.json new file mode 100644 index 00000000..8c510bf4 --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/recipe/royal_assailant_leggings.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "pattern": [ + "SSS", + "SUS", + "SSS" + ], + "key": { + "S": { "item": "antarchy:queen_scale" }, + "U": { "item": "antarchy:ultimate_leggings" } + }, + "result": { + "id": "antarchy:royal_assailant_leggings", + "count": 1 + } +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/recipe/royal_guardian_boots.json b/common-1.21.1/src/main/resources/data/antarchy/recipe/royal_guardian_boots.json new file mode 100644 index 00000000..d84265f8 --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/recipe/royal_guardian_boots.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "pattern": [ + "SSS", + "SUS", + "SSS" + ], + "key": { + "S": { "item": "antarchy:king_scale" }, + "U": { "item": "antarchy:ultimate_boots" } + }, + "result": { + "id": "antarchy:royal_guardian_boots", + "count": 1 + } +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/recipe/royal_guardian_chestplate.json b/common-1.21.1/src/main/resources/data/antarchy/recipe/royal_guardian_chestplate.json new file mode 100644 index 00000000..5d77f5a3 --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/recipe/royal_guardian_chestplate.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "pattern": [ + "SSS", + "SUS", + "SSS" + ], + "key": { + "S": { "item": "antarchy:king_scale" }, + "U": { "item": "antarchy:ultimate_chestplate" } + }, + "result": { + "id": "antarchy:royal_guardian_chestplate", + "count": 1 + } +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/recipe/royal_guardian_helmet.json b/common-1.21.1/src/main/resources/data/antarchy/recipe/royal_guardian_helmet.json new file mode 100644 index 00000000..37736878 --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/recipe/royal_guardian_helmet.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "pattern": [ + "SSS", + "SUS", + "SSS" + ], + "key": { + "S": { "item": "antarchy:king_scale" }, + "U": { "item": "antarchy:ultimate_helmet" } + }, + "result": { + "id": "antarchy:royal_guardian_helmet", + "count": 1 + } +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/recipe/royal_guardian_leggings.json b/common-1.21.1/src/main/resources/data/antarchy/recipe/royal_guardian_leggings.json new file mode 100644 index 00000000..e404dc5d --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/recipe/royal_guardian_leggings.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "pattern": [ + "SSS", + "SUS", + "SSS" + ], + "key": { + "S": { "item": "antarchy:king_scale" }, + "U": { "item": "antarchy:ultimate_leggings" } + }, + "result": { + "id": "antarchy:royal_guardian_leggings", + "count": 1 + } +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/recipe/royal_guardian_shield.json b/common-1.21.1/src/main/resources/data/antarchy/recipe/royal_guardian_shield.json new file mode 100644 index 00000000..a9b884b8 --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/recipe/royal_guardian_shield.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "pattern": [ + "SSS", + "SBS", + "SSS" + ], + "key": { + "S": { + "item": "antarchy:king_scale" + }, + "B": { + "item": "minecraft:shield" + } + }, + "result": { + "id": "antarchy:royal_guardian_shield", + "count": 1 + } +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/recipe/royal_guardian_sword.json b/common-1.21.1/src/main/resources/data/antarchy/recipe/royal_guardian_sword.json new file mode 100644 index 00000000..5e9cc4b4 --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/recipe/royal_guardian_sword.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "pattern": [ + "SSS", + "SBS", + "SSS" + ], + "key": { + "S": { + "item": "antarchy:king_scale" + }, + "B": { + "item": "antarchy:big_bertha" + } + }, + "result": { + "id": "antarchy:royal_guardian_sword", + "count": 1 + } +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/structure/kings_tree/kings_tree1.nbt b/common-1.21.1/src/main/resources/data/antarchy/structure/kings_tree/kings_tree1.nbt new file mode 100644 index 00000000..a0cce133 Binary files /dev/null and b/common-1.21.1/src/main/resources/data/antarchy/structure/kings_tree/kings_tree1.nbt differ diff --git a/common-1.21.1/src/main/resources/data/antarchy/structure/kings_tree/kings_tree2.nbt b/common-1.21.1/src/main/resources/data/antarchy/structure/kings_tree/kings_tree2.nbt new file mode 100644 index 00000000..85da1adb Binary files /dev/null and b/common-1.21.1/src/main/resources/data/antarchy/structure/kings_tree/kings_tree2.nbt differ diff --git a/common-1.21.1/src/main/resources/data/antarchy/structure/kings_tree/kings_tree3.nbt b/common-1.21.1/src/main/resources/data/antarchy/structure/kings_tree/kings_tree3.nbt new file mode 100644 index 00000000..c75e3a6a Binary files /dev/null and b/common-1.21.1/src/main/resources/data/antarchy/structure/kings_tree/kings_tree3.nbt differ diff --git a/common-1.21.1/src/main/resources/data/antarchy/structure/kings_tree/kings_tree4.nbt b/common-1.21.1/src/main/resources/data/antarchy/structure/kings_tree/kings_tree4.nbt new file mode 100644 index 00000000..48dd2256 Binary files /dev/null and b/common-1.21.1/src/main/resources/data/antarchy/structure/kings_tree/kings_tree4.nbt differ diff --git a/common-1.21.1/src/main/resources/data/antarchy/structure/kings_tree/kings_tree_bottom.nbt b/common-1.21.1/src/main/resources/data/antarchy/structure/kings_tree/kings_tree_bottom.nbt new file mode 100644 index 00000000..131788a4 Binary files /dev/null and b/common-1.21.1/src/main/resources/data/antarchy/structure/kings_tree/kings_tree_bottom.nbt differ diff --git a/common-1.21.1/src/main/resources/data/antarchy/tags/worldgen/biome/elythia_firefly_particle_biomes.json b/common-1.21.1/src/main/resources/data/antarchy/tags/worldgen/biome/elythia_firefly_particle_biomes.json index 6e759e17..00bf6aae 100644 --- a/common-1.21.1/src/main/resources/data/antarchy/tags/worldgen/biome/elythia_firefly_particle_biomes.json +++ b/common-1.21.1/src/main/resources/data/antarchy/tags/worldgen/biome/elythia_firefly_particle_biomes.json @@ -2,6 +2,7 @@ "replace": false, "values": [ "antarchy:elythia_meadow", + "antarchy:truffalo_forest", "antarchy:butterfly_fields", "antarchy:ouranwood_forest", "antarchy:peach_forest", diff --git a/common-1.21.1/src/main/resources/data/antarchy/tags/worldgen/biome/enchanted_golden_apple_cow_spawn_biomes.json b/common-1.21.1/src/main/resources/data/antarchy/tags/worldgen/biome/enchanted_golden_apple_cow_spawn_biomes.json index 8d8c39a8..d78507aa 100644 --- a/common-1.21.1/src/main/resources/data/antarchy/tags/worldgen/biome/enchanted_golden_apple_cow_spawn_biomes.json +++ b/common-1.21.1/src/main/resources/data/antarchy/tags/worldgen/biome/enchanted_golden_apple_cow_spawn_biomes.json @@ -1,6 +1,7 @@ { "replace": false, "values": [ - "antarchy:elythia_meadow" + "antarchy:elythia_meadow", + "antarchy:truffalo_forest" ] } diff --git a/common-1.21.1/src/main/resources/data/antarchy/tags/worldgen/biome/has_structure/fallen_kingdom_castle_biomes.json b/common-1.21.1/src/main/resources/data/antarchy/tags/worldgen/biome/has_structure/fallen_kingdom_castle_biomes.json index 8d8c39a8..d78507aa 100644 --- a/common-1.21.1/src/main/resources/data/antarchy/tags/worldgen/biome/has_structure/fallen_kingdom_castle_biomes.json +++ b/common-1.21.1/src/main/resources/data/antarchy/tags/worldgen/biome/has_structure/fallen_kingdom_castle_biomes.json @@ -1,6 +1,7 @@ { "replace": false, "values": [ - "antarchy:elythia_meadow" + "antarchy:elythia_meadow", + "antarchy:truffalo_forest" ] } diff --git a/common-1.21.1/src/main/resources/data/antarchy/tags/worldgen/biome/has_structure/kings_tree_biomes.json b/common-1.21.1/src/main/resources/data/antarchy/tags/worldgen/biome/has_structure/kings_tree_biomes.json new file mode 100644 index 00000000..8d8c39a8 --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/tags/worldgen/biome/has_structure/kings_tree_biomes.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "antarchy:elythia_meadow" + ] +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/tags/worldgen/biome/has_structure/ruined_arena_biomes.json b/common-1.21.1/src/main/resources/data/antarchy/tags/worldgen/biome/has_structure/ruined_arena_biomes.json index 8d8c39a8..d78507aa 100644 --- a/common-1.21.1/src/main/resources/data/antarchy/tags/worldgen/biome/has_structure/ruined_arena_biomes.json +++ b/common-1.21.1/src/main/resources/data/antarchy/tags/worldgen/biome/has_structure/ruined_arena_biomes.json @@ -1,6 +1,7 @@ { "replace": false, "values": [ - "antarchy:elythia_meadow" + "antarchy:elythia_meadow", + "antarchy:truffalo_forest" ] } diff --git a/common-1.21.1/src/main/resources/data/antarchy/tags/worldgen/biome/has_structure/ruined_prison_biomes.json b/common-1.21.1/src/main/resources/data/antarchy/tags/worldgen/biome/has_structure/ruined_prison_biomes.json index 8d8c39a8..d78507aa 100644 --- a/common-1.21.1/src/main/resources/data/antarchy/tags/worldgen/biome/has_structure/ruined_prison_biomes.json +++ b/common-1.21.1/src/main/resources/data/antarchy/tags/worldgen/biome/has_structure/ruined_prison_biomes.json @@ -1,6 +1,7 @@ { "replace": false, "values": [ - "antarchy:elythia_meadow" + "antarchy:elythia_meadow", + "antarchy:truffalo_forest" ] } diff --git a/common-1.21.1/src/main/resources/data/antarchy/tags/worldgen/biome/has_structure/sign_biomes.json b/common-1.21.1/src/main/resources/data/antarchy/tags/worldgen/biome/has_structure/sign_biomes.json index 8d8c39a8..d78507aa 100644 --- a/common-1.21.1/src/main/resources/data/antarchy/tags/worldgen/biome/has_structure/sign_biomes.json +++ b/common-1.21.1/src/main/resources/data/antarchy/tags/worldgen/biome/has_structure/sign_biomes.json @@ -1,6 +1,7 @@ { "replace": false, "values": [ - "antarchy:elythia_meadow" + "antarchy:elythia_meadow", + "antarchy:truffalo_forest" ] } diff --git a/common-1.21.1/src/main/resources/data/antarchy/tags/worldgen/biome/has_structure/stampys_house_biomes.json b/common-1.21.1/src/main/resources/data/antarchy/tags/worldgen/biome/has_structure/stampys_house_biomes.json index 8d8c39a8..d78507aa 100644 --- a/common-1.21.1/src/main/resources/data/antarchy/tags/worldgen/biome/has_structure/stampys_house_biomes.json +++ b/common-1.21.1/src/main/resources/data/antarchy/tags/worldgen/biome/has_structure/stampys_house_biomes.json @@ -1,6 +1,7 @@ { "replace": false, "values": [ - "antarchy:elythia_meadow" + "antarchy:elythia_meadow", + "antarchy:truffalo_forest" ] } diff --git a/common-1.21.1/src/main/resources/data/antarchy/tags/worldgen/biome/has_structure/temple_of_technoblade_biomes.json b/common-1.21.1/src/main/resources/data/antarchy/tags/worldgen/biome/has_structure/temple_of_technoblade_biomes.json index 8d8c39a8..d78507aa 100644 --- a/common-1.21.1/src/main/resources/data/antarchy/tags/worldgen/biome/has_structure/temple_of_technoblade_biomes.json +++ b/common-1.21.1/src/main/resources/data/antarchy/tags/worldgen/biome/has_structure/temple_of_technoblade_biomes.json @@ -1,6 +1,7 @@ { "replace": false, "values": [ - "antarchy:elythia_meadow" + "antarchy:elythia_meadow", + "antarchy:truffalo_forest" ] } diff --git a/common-1.21.1/src/main/resources/data/antarchy/tags/worldgen/biome/has_structure/trayaurus_lab_biomes.json b/common-1.21.1/src/main/resources/data/antarchy/tags/worldgen/biome/has_structure/trayaurus_lab_biomes.json index 89bf2423..b4a27d0f 100644 --- a/common-1.21.1/src/main/resources/data/antarchy/tags/worldgen/biome/has_structure/trayaurus_lab_biomes.json +++ b/common-1.21.1/src/main/resources/data/antarchy/tags/worldgen/biome/has_structure/trayaurus_lab_biomes.json @@ -1,6 +1,7 @@ { "replace": false, "values": [ - "antarchy:elythia_meadow" + "antarchy:elythia_meadow", + "antarchy:truffalo_forest" ] } \ No newline at end of file diff --git a/common-1.21.1/src/main/resources/data/antarchy/tags/worldgen/biome/is_elythia.json b/common-1.21.1/src/main/resources/data/antarchy/tags/worldgen/biome/is_elythia.json index e115fe0e..dce89191 100644 --- a/common-1.21.1/src/main/resources/data/antarchy/tags/worldgen/biome/is_elythia.json +++ b/common-1.21.1/src/main/resources/data/antarchy/tags/worldgen/biome/is_elythia.json @@ -4,6 +4,7 @@ "antarchy:butterfly_fields", "antarchy:elythia_lush_caves", "antarchy:elythia_meadow", + "antarchy:truffalo_forest", "antarchy:elythia_river", "antarchy:moleworm_caves", "antarchy:ouranwood_forest", diff --git a/common-1.21.1/src/main/resources/data/antarchy/tags/worldgen/biome/mantis_spawn_biomes.json b/common-1.21.1/src/main/resources/data/antarchy/tags/worldgen/biome/mantis_spawn_biomes.json index 8076f444..7d8f260d 100644 --- a/common-1.21.1/src/main/resources/data/antarchy/tags/worldgen/biome/mantis_spawn_biomes.json +++ b/common-1.21.1/src/main/resources/data/antarchy/tags/worldgen/biome/mantis_spawn_biomes.json @@ -1,7 +1,8 @@ { "replace": false, "values": [ - "antarchy:elythia_meadow" + "antarchy:elythia_meadow", + "antarchy:truffalo_forest" ] } diff --git a/common-1.21.1/src/main/resources/data/antarchy/weapon_attributes/royal_assailant_battleaxe.json b/common-1.21.1/src/main/resources/data/antarchy/weapon_attributes/royal_assailant_battleaxe.json new file mode 100644 index 00000000..e61dca2d --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/weapon_attributes/royal_assailant_battleaxe.json @@ -0,0 +1,40 @@ +{ + "parent": "bettercombat:heavy_axe", + "attributes": { + "attack_range": 4.0, + "category": "greataxe", + "two_handed": true, + "attacks": [ + { + "hitbox": "HORIZONTAL_PLANE", + "damage_multiplier": 1, + "angle": 180, + "upswing": 0.55, + "animation": "bettercombat:two_handed_slash_horizontal_left", + "swing_sound": { + "id": "bettercombat:double_axe_swing" + } + }, + { + "hitbox": "HORIZONTAL_PLANE", + "damage_multiplier": 1, + "angle": 180, + "upswing": 0.55, + "animation": "bettercombat:two_handed_slash_horizontal_right", + "swing_sound": { + "id": "bettercombat:double_axe_swing" + } + }, + { + "hitbox": "FORWARD_BOX", + "damage_multiplier": 1.7, + "angle": 0, + "upswing": 0.6, + "animation": "bettercombat:two_handed_slam", + "swing_sound": { + "id": "bettercombat:hammer_slam" + } + } + ] + } +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/weapon_attributes/royal_guardian_sword.json b/common-1.21.1/src/main/resources/data/antarchy/weapon_attributes/royal_guardian_sword.json new file mode 100644 index 00000000..865e2121 --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/weapon_attributes/royal_guardian_sword.json @@ -0,0 +1,40 @@ +{ + "attributes": { + "attack_range": 4.0, + "category": "longsword", + "two_handed": true, + "attacks": [ + { + "hitbox": "HORIZONTAL_PLANE", + "damage_multiplier": 1, + "angle": 150, + "upswing": 0.4, + "animation": "bettercombat:two_handed_slash_horizontal_right", + "swing_sound": { + "id": "bettercombat:claymore_swing" + } + }, + { + "hitbox": "HORIZONTAL_PLANE", + "damage_multiplier": 1, + "angle": 150, + "upswing": 0.4, + "animation": "bettercombat:two_handed_slash_horizontal_left", + "swing_sound": { + "id": "bettercombat:claymore_swing" + } + }, + { + "hitbox": "HORIZONTAL_PLANE", + "damage_multiplier": 1.6, + "angle": 360, + "upswing": 0.45, + "animation": "bettercombat:two_handed_spin", + "swing_sound": { + "id": "bettercombat:claymore_swing", + "pitch": 1.15 + } + } + ] + } +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/truffalo_forest.json b/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/truffalo_forest.json new file mode 100644 index 00000000..0c70145c --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/truffalo_forest.json @@ -0,0 +1,175 @@ +{ + "has_precipitation": false, + "temperature": 0.82, + "downfall": 1.0, + "effects": { + "fog_color": 8084735, + "water_color": 5021432, + "water_fog_color": 736368, + "sky_color": 8084735, + "foliage_color": 2867501, + "grass_color": 4304168, + "grass_color_modifier": "none", + "mood_sound": { + "sound": "minecraft:ambient.basalt_deltas.mood", + "tick_delay": 8000, + "block_search_extent": 8, + "offset": 2.0 + }, + "music": { + "sound": "antarchy:music.game.elythia", + "min_delay": 600, + "max_delay": 1800, + "replace_current_music": true + } + }, + "spawn_costs": { + "antarchy:alpha_mantis": { + "energy_budget": 0.1, + "charge": 18.0 + }, + "antarchy:mantis": { + "energy_budget": 0.1, + "charge": 15.0 + }, + "antarchy:glimmer": { + "energy_budget": 0.1, + "charge": 9 + } + }, + "carvers": { + "air": [], + "liquid": [] + }, + "features": [ + [], + [], + [], + [], + [], + [], + [ + "minecraft:ore_coal_upper", + "minecraft:ore_coal_lower", + "minecraft:ore_iron_upper", + "minecraft:ore_iron_middle", + "minecraft:ore_iron_small", + "minecraft:ore_gold", + "minecraft:ore_gold_lower", + "minecraft:ore_redstone", + "minecraft:ore_redstone_lower", + "minecraft:ore_diamond", + "minecraft:ore_diamond_medium", + "minecraft:ore_diamond_large", + "minecraft:ore_diamond_buried", + "minecraft:ore_lapis", + "minecraft:ore_lapis_buried", + "minecraft:ore_copper" + ], + [ + "antarchy:elythia_underground", + "minecraft:large_dripstone", + "minecraft:pointed_dripstone" + ], + [], + [ + "antarchy:truffalo_forest_trees", + "antarchy:elythia_meadow_large_tuff_boulders", + "antarchy:elythia_meadow_tuff_boulders", + "antarchy:elythia_meadow_flora", + "antarchy:elythia_brown_ant_nests", + "antarchy:elythia_rainbow_ant_nests", + "minecraft:patch_sugar_cane", + "antarchy:giant_lily_pad_patch_meadow" + ], + [] + ], + "creature_spawn_probability": 0.2, + "spawners": { + "creature": [ + { + "type": "antarchy:caterpillar", + "weight": 24, + "minCount": 1, + "maxCount": 1 + }, + { + "type": "antarchy:apple_cow", + "weight": 24, + "minCount": 1, + "maxCount": 3 + }, + { + "type": "antarchy:golden_apple_cow", + "weight": 20, + "minCount": 1, + "maxCount": 3 + }, + { + "type": "antarchy:enchanted_golden_apple_cow", + "weight": 2, + "minCount": 1, + "maxCount": 1 + }, + { + "type": "minecraft:rabbit", + "weight": 16, + "minCount": 1, + "maxCount": 3 + }, + { + "type": "antarchy:glimmer", + "weight": 2, + "minCount": 1, + "maxCount": 1 + } + ], + "ambient": [ + { + "type": "antarchy:butterfly", + "weight": 48, + "minCount": 2, + "maxCount": 4 + } + ], + "monster": [ + { + "type": "antarchy:mantis", + "weight": 20, + "minCount": 1, + "maxCount": 1 + }, + { + "type": "antarchy:alpha_mantis", + "weight": 1, + "minCount": 1, + "maxCount": 1 + } + ], + "axolotls": [], + "underground_water_creature": [], + "water_creature": [ + { + "type": "antarchy:octopus_bomb", + "weight": 2, + "minCount": 1, + "maxCount": 1 + } + ], + "water_ambient": [ + { + "type": "antarchy:cheep", + "weight": 10, + "minCount": 3, + "maxCount": 6 + }, + { + "type": "minecraft:tropical_fish", + "weight": 20, + "minCount": 4, + "maxCount": 8 + } + ], + "misc": [] + } +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/worldgen/configured_feature/royal_tree_large.json b/common-1.21.1/src/main/resources/data/antarchy/worldgen/configured_feature/royal_tree_large.json new file mode 100644 index 00000000..ee418feb --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/worldgen/configured_feature/royal_tree_large.json @@ -0,0 +1,61 @@ +{ + "type": "antarchy:royal_tree", + "config": { + "trunk_provider": { + "type": "minecraft:simple_state_provider", + "state": { + "Name": "antarchy:royal_wood", + "Properties": { + "axis": "y" + } + } + }, + "leaves_provider": { + "type": "minecraft:weighted_state_provider", + "entries": [ + { + "weight": 80, + "data": { + "Name": "antarchy:royal_leaves" + } + }, + { + "weight": 20, + "data": { + "Name": "antarchy:royal_flowering_leaves" + } + } + ] + }, + "height": { + "type": "minecraft:uniform", + "min_inclusive": 27, + "max_inclusive": 30 + }, + "trunk_drift": { + "type": "minecraft:uniform", + "min_inclusive": 4, + "max_inclusive": 5 + }, + "canopy_radius": { + "type": "minecraft:uniform", + "min_inclusive": 6, + "max_inclusive": 7 + }, + "canopy_layers": { + "type": "minecraft:uniform", + "min_inclusive": 4, + "max_inclusive": 5 + }, + "branch_count": { + "type": "minecraft:uniform", + "min_inclusive": 3, + "max_inclusive": 4 + }, + "strut_count": { + "type": "minecraft:uniform", + "min_inclusive": 3, + "max_inclusive": 4 + } + } +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/worldgen/configured_feature/royal_tree_medium.json b/common-1.21.1/src/main/resources/data/antarchy/worldgen/configured_feature/royal_tree_medium.json new file mode 100644 index 00000000..5c65ced6 --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/worldgen/configured_feature/royal_tree_medium.json @@ -0,0 +1,61 @@ +{ + "type": "antarchy:royal_tree", + "config": { + "trunk_provider": { + "type": "minecraft:simple_state_provider", + "state": { + "Name": "antarchy:royal_wood", + "Properties": { + "axis": "y" + } + } + }, + "leaves_provider": { + "type": "minecraft:weighted_state_provider", + "entries": [ + { + "weight": 80, + "data": { + "Name": "antarchy:royal_leaves" + } + }, + { + "weight": 20, + "data": { + "Name": "antarchy:royal_flowering_leaves" + } + } + ] + }, + "height": { + "type": "minecraft:uniform", + "min_inclusive": 23, + "max_inclusive": 27 + }, + "trunk_drift": { + "type": "minecraft:uniform", + "min_inclusive": 3, + "max_inclusive": 5 + }, + "canopy_radius": { + "type": "minecraft:uniform", + "min_inclusive": 5, + "max_inclusive": 6 + }, + "canopy_layers": { + "type": "minecraft:uniform", + "min_inclusive": 4, + "max_inclusive": 4 + }, + "branch_count": { + "type": "minecraft:uniform", + "min_inclusive": 2, + "max_inclusive": 3 + }, + "strut_count": { + "type": "minecraft:uniform", + "min_inclusive": 3, + "max_inclusive": 4 + } + } +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/worldgen/configured_feature/royal_tree_small.json b/common-1.21.1/src/main/resources/data/antarchy/worldgen/configured_feature/royal_tree_small.json new file mode 100644 index 00000000..71e4810c --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/worldgen/configured_feature/royal_tree_small.json @@ -0,0 +1,61 @@ +{ + "type": "antarchy:royal_tree", + "config": { + "trunk_provider": { + "type": "minecraft:simple_state_provider", + "state": { + "Name": "antarchy:royal_wood", + "Properties": { + "axis": "y" + } + } + }, + "leaves_provider": { + "type": "minecraft:weighted_state_provider", + "entries": [ + { + "weight": 80, + "data": { + "Name": "antarchy:royal_leaves" + } + }, + { + "weight": 20, + "data": { + "Name": "antarchy:royal_flowering_leaves" + } + } + ] + }, + "height": { + "type": "minecraft:uniform", + "min_inclusive": 20, + "max_inclusive": 23 + }, + "trunk_drift": { + "type": "minecraft:uniform", + "min_inclusive": 3, + "max_inclusive": 4 + }, + "canopy_radius": { + "type": "minecraft:uniform", + "min_inclusive": 4, + "max_inclusive": 5 + }, + "canopy_layers": { + "type": "minecraft:uniform", + "min_inclusive": 3, + "max_inclusive": 4 + }, + "branch_count": { + "type": "minecraft:uniform", + "min_inclusive": 1, + "max_inclusive": 2 + }, + "strut_count": { + "type": "minecraft:uniform", + "min_inclusive": 2, + "max_inclusive": 3 + } + } +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/worldgen/placed_feature/truffalo_forest_trees.json b/common-1.21.1/src/main/resources/data/antarchy/worldgen/placed_feature/truffalo_forest_trees.json new file mode 100644 index 00000000..40d1edaa --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/worldgen/placed_feature/truffalo_forest_trees.json @@ -0,0 +1,31 @@ +{ + "feature": "antarchy:truffalo_tree", + "placement": [ + { + "type": "minecraft:count", + "count": { + "type": "minecraft:weighted_list", + "distribution": [ + { + "weight": 2, + "data": 1 + }, + { + "weight": 3, + "data": 0 + } + ] + } + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:heightmap", + "heightmap": "WORLD_SURFACE_WG" + }, + { + "type": "minecraft:biome" + } + ] +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/worldgen/structure/kings_tree.json b/common-1.21.1/src/main/resources/data/antarchy/worldgen/structure/kings_tree.json new file mode 100644 index 00000000..600cb1ce --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/worldgen/structure/kings_tree.json @@ -0,0 +1,23 @@ +{ + "type": "integrated_api:generic_structure", + "start_pool": "antarchy:kings_tree/kings_tree", + "size": 12, + "max_distance_from_center": 512, + "terrain_height_radius_check": 4, + "allowed_terrain_height_range": 14, + "valid_biome_radius_check": 1, + "biomes": "#antarchy:has_structure/kings_tree_biomes", + "step": "surface_structures", + "enhanced_terrain_adaptation": { + "type": "integrated_api:none" + }, + "project_start_to_heightmap": "WORLD_SURFACE_WG", + "start_height": { + "type": "minecraft:constant", + "value": { + "absolute": 0 + } + }, + "spawn_overrides": {}, + "liquid_settings": "ignore_waterlogging" +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/worldgen/structure_set/elythia_rare.json b/common-1.21.1/src/main/resources/data/antarchy/worldgen/structure_set/elythia_rare.json index 8d7cb57d..88f980cb 100644 --- a/common-1.21.1/src/main/resources/data/antarchy/worldgen/structure_set/elythia_rare.json +++ b/common-1.21.1/src/main/resources/data/antarchy/worldgen/structure_set/elythia_rare.json @@ -35,6 +35,10 @@ { "structure": "antarchy:toreterror_arena", "weight": 6 + }, + { + "structure": "antarchy:kings_tree", + "weight": 1 } ], "placement": { diff --git a/common-1.21.1/src/main/resources/data/antarchy/worldgen/template_pool/kings_tree/kings_tree.json b/common-1.21.1/src/main/resources/data/antarchy/worldgen/template_pool/kings_tree/kings_tree.json new file mode 100644 index 00000000..9e8d31a4 --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/worldgen/template_pool/kings_tree/kings_tree.json @@ -0,0 +1,22 @@ +{ + "name": "antarchy:kings_tree/kings_tree", + "fallback": "minecraft:empty", + "elements": [ + { + "weight": 1, + "element": { + "location": "antarchy:kings_tree/kings_tree1", + "processors": "antarchy:generic_processor", + "projection": "rigid", + "enhanced_terrain_adaptation": { + "type": "integrated_api:custom", + "carves": true, + "beards": true, + "kernel_size": 35, + "kernel_distance": 35 + }, + "element_type": "integrated_api:integrated_api_single_pool_element" + } + } + ] +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/worldgen/template_pool/kings_tree/kings_tree1.json b/common-1.21.1/src/main/resources/data/antarchy/worldgen/template_pool/kings_tree/kings_tree1.json new file mode 100644 index 00000000..d5abbdbc --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/worldgen/template_pool/kings_tree/kings_tree1.json @@ -0,0 +1,15 @@ +{ + "name": "antarchy:kings_tree/kings_tree1", + "fallback": "minecraft:empty", + "elements": [ + { + "weight": 1, + "element": { + "location": "antarchy:kings_tree/kings_tree2", + "processors": "antarchy:generic_processor", + "projection": "rigid", + "element_type": "minecraft:single_pool_element" + } + } + ] +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/worldgen/template_pool/kings_tree/kings_tree3.json b/common-1.21.1/src/main/resources/data/antarchy/worldgen/template_pool/kings_tree/kings_tree3.json new file mode 100644 index 00000000..20fddb55 --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/worldgen/template_pool/kings_tree/kings_tree3.json @@ -0,0 +1,15 @@ +{ + "name": "antarchy:kings_tree/kings_tree3", + "fallback": "minecraft:empty", + "elements": [ + { + "weight": 1, + "element": { + "location": "antarchy:kings_tree/kings_tree3", + "processors": "antarchy:generic_processor", + "projection": "rigid", + "element_type": "minecraft:single_pool_element" + } + } + ] +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/worldgen/template_pool/kings_tree/kings_tree4.json b/common-1.21.1/src/main/resources/data/antarchy/worldgen/template_pool/kings_tree/kings_tree4.json new file mode 100644 index 00000000..5a6610c9 --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/worldgen/template_pool/kings_tree/kings_tree4.json @@ -0,0 +1,15 @@ +{ + "name": "antarchy:kings_tree/kings_tree4", + "fallback": "minecraft:empty", + "elements": [ + { + "weight": 1, + "element": { + "location": "antarchy:kings_tree/kings_tree4", + "processors": "antarchy:generic_processor", + "projection": "rigid", + "element_type": "minecraft:single_pool_element" + } + } + ] +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/worldgen/template_pool/kings_tree/kings_tree_bottom.json b/common-1.21.1/src/main/resources/data/antarchy/worldgen/template_pool/kings_tree/kings_tree_bottom.json new file mode 100644 index 00000000..b23895b7 --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/worldgen/template_pool/kings_tree/kings_tree_bottom.json @@ -0,0 +1,22 @@ +{ + "name": "antarchy:kings_tree/kings_tree_bottom", + "fallback": "minecraft:empty", + "elements": [ + { + "weight": 1, + "element": { + "location": "antarchy:kings_tree/kings_tree_bottom", + "processors": "antarchy:generic_processor", + "projection": "rigid", + "enhanced_terrain_adaptation": { + "type": "integrated_api:custom", + "carves": true, + "beards": false, + "kernel_size": 35, + "kernel_distance": 35 + }, + "element_type": "integrated_api:integrated_api_single_pool_element" + } + } + ] +} diff --git a/common-1.21.1/src/main/resources/data/integrated_api/tags/worldgen/structure/larger_locate_search.json b/common-1.21.1/src/main/resources/data/integrated_api/tags/worldgen/structure/larger_locate_search.json index 145abef3..48e41b03 100644 --- a/common-1.21.1/src/main/resources/data/integrated_api/tags/worldgen/structure/larger_locate_search.json +++ b/common-1.21.1/src/main/resources/data/integrated_api/tags/worldgen/structure/larger_locate_search.json @@ -4,6 +4,7 @@ "antarchy:toreterror_arena", "antarchy:fallen_kingdom_castle", "antarchy:ruined_arena", - "antarchy:trayaurus_lab" + "antarchy:trayaurus_lab", + "antarchy:kings_tree" ] } \ No newline at end of file diff --git a/common-1.21.1/src/main/resources/data/minecraft/enchantment/blast_protection.json b/common-1.21.1/src/main/resources/data/minecraft/enchantment/blast_protection.json new file mode 100644 index 00000000..47097cb0 --- /dev/null +++ b/common-1.21.1/src/main/resources/data/minecraft/enchantment/blast_protection.json @@ -0,0 +1,62 @@ +{ + "anvil_cost": 4, + "description": { + "translate": "enchantment.minecraft.blast_protection" + }, + "effects": { + "minecraft:attributes": [ + { + "amount": { + "type": "minecraft:linear", + "base": 0.15, + "per_level_above_first": 0.15 + }, + "attribute": "minecraft:generic.explosion_knockback_resistance", + "id": "minecraft:enchantment.blast_protection", + "operation": "add_value" + } + ], + "minecraft:damage_protection": [ + { + "effect": { + "type": "minecraft:add", + "value": { + "type": "minecraft:linear", + "base": 2.0, + "per_level_above_first": 2.0 + } + }, + "requirements": { + "condition": "minecraft:damage_source_properties", + "predicate": { + "tags": [ + { + "expected": true, + "id": "minecraft:is_explosion" + }, + { + "expected": false, + "id": "minecraft:bypasses_invulnerability" + } + ] + } + } + } + ] + }, + "exclusive_set": "#minecraft:exclusive_set/armor", + "max_cost": { + "base": 13, + "per_level_above_first": 8 + }, + "max_level": 10, + "min_cost": { + "base": 5, + "per_level_above_first": 8 + }, + "slots": [ + "armor" + ], + "supported_items": "#minecraft:enchantable/armor", + "weight": 2 +} diff --git a/common-1.21.1/src/main/resources/data/minecraft/enchantment/fire_protection.json b/common-1.21.1/src/main/resources/data/minecraft/enchantment/fire_protection.json new file mode 100644 index 00000000..d5099539 --- /dev/null +++ b/common-1.21.1/src/main/resources/data/minecraft/enchantment/fire_protection.json @@ -0,0 +1,67 @@ +{ + "anvil_cost": 2, + "description": { + "translate": "enchantment.minecraft.fire_protection" + }, + "effects": { + "minecraft:attributes": [ + { + "amount": { + "type": "minecraft:linear", + "base": -0.15, + "per_level_above_first": -0.15 + }, + "attribute": "minecraft:generic.burning_time", + "id": "minecraft:enchantment.fire_protection", + "operation": "add_multiplied_base" + } + ], + "minecraft:damage_protection": [ + { + "effect": { + "type": "minecraft:add", + "value": { + "type": "minecraft:linear", + "base": 2.0, + "per_level_above_first": 2.0 + } + }, + "requirements": { + "condition": "minecraft:all_of", + "terms": [ + { + "condition": "minecraft:damage_source_properties", + "predicate": { + "tags": [ + { + "expected": true, + "id": "minecraft:is_fire" + }, + { + "expected": false, + "id": "minecraft:bypasses_invulnerability" + } + ] + } + } + ] + } + } + ] + }, + "exclusive_set": "#minecraft:exclusive_set/armor", + "max_cost": { + "base": 18, + "per_level_above_first": 8 + }, + "max_level": 10, + "min_cost": { + "base": 10, + "per_level_above_first": 8 + }, + "slots": [ + "armor" + ], + "supported_items": "#minecraft:enchantable/armor", + "weight": 5 +} diff --git a/common-1.21.1/src/main/resources/data/minecraft/enchantment/projectile_protection.json b/common-1.21.1/src/main/resources/data/minecraft/enchantment/projectile_protection.json new file mode 100644 index 00000000..aa96bf4b --- /dev/null +++ b/common-1.21.1/src/main/resources/data/minecraft/enchantment/projectile_protection.json @@ -0,0 +1,50 @@ +{ + "anvil_cost": 2, + "description": { + "translate": "enchantment.minecraft.projectile_protection" + }, + "effects": { + "minecraft:damage_protection": [ + { + "effect": { + "type": "minecraft:add", + "value": { + "type": "minecraft:linear", + "base": 2.0, + "per_level_above_first": 2.0 + } + }, + "requirements": { + "condition": "minecraft:damage_source_properties", + "predicate": { + "tags": [ + { + "expected": true, + "id": "minecraft:is_projectile" + }, + { + "expected": false, + "id": "minecraft:bypasses_invulnerability" + } + ] + } + } + } + ] + }, + "exclusive_set": "#minecraft:exclusive_set/armor", + "max_cost": { + "base": 9, + "per_level_above_first": 6 + }, + "max_level": 10, + "min_cost": { + "base": 3, + "per_level_above_first": 6 + }, + "slots": [ + "armor" + ], + "supported_items": "#minecraft:enchantable/armor", + "weight": 5 +} diff --git a/common-1.21.1/src/main/resources/data/minecraft/enchantment/protection.json b/common-1.21.1/src/main/resources/data/minecraft/enchantment/protection.json new file mode 100644 index 00000000..bf8fafa5 --- /dev/null +++ b/common-1.21.1/src/main/resources/data/minecraft/enchantment/protection.json @@ -0,0 +1,46 @@ +{ + "anvil_cost": 1, + "description": { + "translate": "enchantment.minecraft.protection" + }, + "effects": { + "minecraft:damage_protection": [ + { + "effect": { + "type": "minecraft:add", + "value": { + "type": "minecraft:linear", + "base": 1.0, + "per_level_above_first": 1.0 + } + }, + "requirements": { + "condition": "minecraft:damage_source_properties", + "predicate": { + "tags": [ + { + "expected": false, + "id": "minecraft:bypasses_invulnerability" + } + ] + } + } + } + ] + }, + "exclusive_set": "#minecraft:exclusive_set/armor", + "max_cost": { + "base": 12, + "per_level_above_first": 11 + }, + "max_level": 10, + "min_cost": { + "base": 1, + "per_level_above_first": 11 + }, + "slots": [ + "armor" + ], + "supported_items": "#minecraft:enchantable/armor", + "weight": 10 +} diff --git a/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabricContent.java b/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabricContent.java index 89f4692a..304f6b26 100644 --- a/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabricContent.java +++ b/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabricContent.java @@ -317,6 +317,12 @@ public final class AntarchyFabricContent { AntarchyObjects.setVortex(AntarchyFabricEntities.VORTEX); AntarchyObjects.setWindVortex(() -> AntarchyFabricEntities.WIND_VORTEX.get()); AntarchyObjects.setVortexChargeProjectile(() -> AntarchyFabricEntities.VORTEX_CHARGE_PROJECTILE.get()); + AntarchyObjects.setPrince(() -> AntarchyFabricEntities.PRINCE.get()); + AntarchyObjects.setPrincess(() -> AntarchyFabricEntities.PRINCESS.get()); + AntarchyObjects.setRoyalBolt(() -> AntarchyFabricEntities.ROYAL_BOLT.get()); + AntarchyObjects.setPrinceEgg(() -> AntarchyFabricBlocks.PRINCE_EGG.get()); + AntarchyObjects.setPrincessEgg(() -> AntarchyFabricBlocks.PRINCESS_EGG.get()); + AntarchyObjects.setRoyalEggBlockEntity(() -> AntarchyFabricBlocks.ROYAL_EGG_BLOCK_ENTITY.get()); AntarchyObjects.setVortexLens(() -> AntarchyFabricBlocks.VORTEX_LENS.get()); AntarchyObjects.setVortexLensBlockEntity(() -> AntarchyFabricBlocks.VORTEX_LENS_BLOCK_ENTITY.get()); AntarchyObjects.setKrakensGraspTrident(AntarchyFabricEntities.KRAKENS_GRASP_TRIDENT); diff --git a/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/client/AntarchyFabricClientBootstrap.java b/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/client/AntarchyFabricClientBootstrap.java index f5495763..86d57b71 100644 --- a/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/client/AntarchyFabricClientBootstrap.java +++ b/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/client/AntarchyFabricClientBootstrap.java @@ -164,6 +164,9 @@ public final class AntarchyFabricClientBootstrap { EntityRendererRegistry.register(AntarchyFabricEntities.CREEPING_HORROR.get(), CreepingHorrorRenderer::new); EntityRendererRegistry.register(AntarchyFabricEntities.LURKING_TERROR.get(), LurkingTerrorRenderer::new); EntityRendererRegistry.register(AntarchyFabricEntities.HERCULES_BEETLE.get(), HerculesBeetleRenderer::new); + EntityRendererRegistry.register(AntarchyFabricEntities.PRINCE.get(), com.craisinlord.antarchy.content.client.renderer.RoyalMountRenderer::new); + EntityRendererRegistry.register(AntarchyFabricEntities.PRINCESS.get(), com.craisinlord.antarchy.content.client.renderer.RoyalMountRenderer::new); + EntityRendererRegistry.register(AntarchyFabricEntities.ROYAL_BOLT.get(), com.craisinlord.antarchy.content.client.renderer.RoyalBoltRenderer::new); EntityRendererRegistry.register(AntarchyFabricEntities.JERRY.get(), JerryRenderer::new); EntityRendererRegistry.register(AntarchyFabricEntities.JUMPY_BUG.get(), JumpyBugRenderer::new); EntityRendererRegistry.register(AntarchyFabricEntities.SPIT_BUG.get(), SpitBugRenderer::new); @@ -520,17 +523,20 @@ public final class AntarchyFabricClientBootstrap { ParalyzedClientHandler.tick(); DreadClientHandler.tick(); TigerEyeCamouflageClientHandler.tick(); + RoyalInversionClientHandler.tick(); BloodCrystalKatanaTrailHandler.tick(); ScorpionWhipTetherRenderHandler.tick(); WormHookTetherRenderHandler.tick(); DorrieJumpClientHandler.tick(); HerculesBeetleClientHandler.tick(); + RoyalMountClientHandler.tick(); SizeRaySoundHandler.tick(client); }); BigBerthaClientHandler.register(); GravityGunClientHandler.register(); PortalGunClientHandler.register(); + EyeOfStormClientHandler.register(); ElythiaFireflyManager.register(); LucidSoundHandler.register(); diff --git a/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/client/AntarchyKeyBindings.java b/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/client/AntarchyKeyBindings.java index e185db07..b847212e 100644 --- a/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/client/AntarchyKeyBindings.java +++ b/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/client/AntarchyKeyBindings.java @@ -24,15 +24,15 @@ public final class AntarchyKeyBindings { CATEGORY ); - public static final KeyMapping HERCULES_BEETLE_CHARGE = new KeyMapping( - "key.antarchy.hercules_beetle_charge", + public static final KeyMapping MOUNT_SPECIAL = new KeyMapping( + "key.antarchy.mount_special", InputConstants.Type.KEYSYM, GLFW.GLFW_KEY_LEFT_CONTROL, CATEGORY ); - public static final KeyMapping HERCULES_BEETLE_FLIGHT_TOGGLE = new KeyMapping( - "key.antarchy.hercules_beetle_flight_toggle", + public static final KeyMapping MOUNT_FLIGHT_TOGGLE = new KeyMapping( + "key.antarchy.mount_flight_toggle", InputConstants.Type.KEYSYM, GLFW.GLFW_KEY_R, CATEGORY @@ -44,14 +44,22 @@ public final class AntarchyKeyBindings { CATEGORY ); + public static final KeyMapping ROYAL_INVERSION_TOGGLE = new KeyMapping( + "key.antarchy.royal_inversion_toggle", + InputConstants.Type.KEYSYM, + GLFW.GLFW_KEY_V, + CATEGORY + ); + private AntarchyKeyBindings() {} public static void register() { KeyBindingHelper.registerKeyBinding(BRUTALFLY_FLAP); KeyBindingHelper.registerKeyBinding(DORRIE_CHARGE_JUMP); - KeyBindingHelper.registerKeyBinding(HERCULES_BEETLE_CHARGE); - KeyBindingHelper.registerKeyBinding(HERCULES_BEETLE_FLIGHT_TOGGLE); + KeyBindingHelper.registerKeyBinding(MOUNT_SPECIAL); + KeyBindingHelper.registerKeyBinding(MOUNT_FLIGHT_TOGGLE); KeyBindingHelper.registerKeyBinding(TIGERS_EYE_CAMOUFLAGE); + KeyBindingHelper.registerKeyBinding(ROYAL_INVERSION_TOGGLE); } public static boolean isBrutalflyFlapPressed() { @@ -62,15 +70,19 @@ public final class AntarchyKeyBindings { return Minecraft.getInstance().screen == null && DORRIE_CHARGE_JUMP.isDown(); } - public static boolean isHerculesBeetleChargePressed() { - return Minecraft.getInstance().screen == null && HERCULES_BEETLE_CHARGE.isDown(); + public static boolean isMountSpecialPressed() { + return Minecraft.getInstance().screen == null && MOUNT_SPECIAL.isDown(); } - public static boolean isHerculesBeetleFlightTogglePressed() { - return Minecraft.getInstance().screen == null && HERCULES_BEETLE_FLIGHT_TOGGLE.isDown(); + public static boolean isMountFlightTogglePressed() { + return Minecraft.getInstance().screen == null && MOUNT_FLIGHT_TOGGLE.isDown(); } public static boolean consumeTigerEyeCamouflagePressed() { return Minecraft.getInstance().screen == null && TIGERS_EYE_CAMOUFLAGE.consumeClick(); } + + public static boolean consumeRoyalInversionTogglePressed() { + return Minecraft.getInstance().screen == null && ROYAL_INVERSION_TOGGLE.consumeClick(); + } } diff --git a/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/client/EyeOfStormClientHandler.java b/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/client/EyeOfStormClientHandler.java new file mode 100644 index 00000000..bde99036 --- /dev/null +++ b/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/client/EyeOfStormClientHandler.java @@ -0,0 +1,37 @@ +package com.craisinlord.antarchy.fabric.client; + +import com.craisinlord.antarchy.config.AntarchySettings; +import com.craisinlord.antarchy.content.item.EyeOfTheStormItem; +import com.craisinlord.antarchy.content.network.EyeOfStormPrimaryPayload; +import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents; +import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking; +import net.minecraft.client.Minecraft; + +public final class EyeOfStormClientHandler { + private static boolean lastAttackDown; + + private EyeOfStormClientHandler() { + } + + public static void register() { + ClientTickEvents.END_CLIENT_TICK.register(EyeOfStormClientHandler::tick); + } + + private static void tick(Minecraft mc) { + if (mc.player == null || mc.level == null || mc.screen != null || !AntarchySettings.eyeOfTheStormEnabled()) { + lastAttackDown = false; + return; + } + + if (!(mc.player.getMainHandItem().getItem() instanceof EyeOfTheStormItem)) { + lastAttackDown = false; + return; + } + + boolean attackDown = mc.options.keyAttack.isDown(); + if (attackDown && !lastAttackDown) { + ClientPlayNetworking.send(new EyeOfStormPrimaryPayload()); + } + lastAttackDown = attackDown; + } +} diff --git a/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/client/HerculesBeetleClientHandler.java b/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/client/HerculesBeetleClientHandler.java index 90687c21..1de74eb2 100644 --- a/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/client/HerculesBeetleClientHandler.java +++ b/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/client/HerculesBeetleClientHandler.java @@ -43,13 +43,13 @@ public final class HerculesBeetleClientHandler { } wasPressingAttack = pressingAttack; - boolean charging = AntarchyKeyBindings.isHerculesBeetleChargePressed(); + boolean charging = AntarchyKeyBindings.isMountSpecialPressed(); if (charging != wasCharging) { ClientPlayNetworking.send(new HerculesBeetleMountedChargePayload(charging)); } wasCharging = charging; - boolean pressingFlightToggle = AntarchyKeyBindings.isHerculesBeetleFlightTogglePressed(); + boolean pressingFlightToggle = AntarchyKeyBindings.isMountFlightTogglePressed(); if (pressingFlightToggle && !wasPressingFlightToggle) { ClientPlayNetworking.send(new HerculesBeetleFlightTogglePayload()); } diff --git a/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/client/RoyalInversionClientHandler.java b/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/client/RoyalInversionClientHandler.java new file mode 100644 index 00000000..8c349964 --- /dev/null +++ b/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/client/RoyalInversionClientHandler.java @@ -0,0 +1,20 @@ +package com.craisinlord.antarchy.fabric.client; + +import com.craisinlord.antarchy.content.network.ToggleRoyalInversionPayload; +import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking; +import net.minecraft.client.Minecraft; + +public final class RoyalInversionClientHandler { + private RoyalInversionClientHandler() { + } + + public static void tick() { + Minecraft minecraft = Minecraft.getInstance(); + if (minecraft.player == null || minecraft.level == null) { + return; + } + while (AntarchyKeyBindings.consumeRoyalInversionTogglePressed()) { + ClientPlayNetworking.send(new ToggleRoyalInversionPayload()); + } + } +} diff --git a/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/client/RoyalMountClientHandler.java b/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/client/RoyalMountClientHandler.java new file mode 100644 index 00000000..38d4932a --- /dev/null +++ b/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/client/RoyalMountClientHandler.java @@ -0,0 +1,65 @@ +package com.craisinlord.antarchy.fabric.client; + +import com.craisinlord.antarchy.content.entity.royal.RoyalMountEntity; +import com.craisinlord.antarchy.content.network.RoyalMountActionPayload; +import com.craisinlord.antarchy.content.network.RoyalMountVerticalPayload; +import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking; +import net.minecraft.client.Minecraft; +import net.minecraft.client.player.LocalPlayer; + +public final class RoyalMountClientHandler { + private static boolean wasAttack; + private static boolean wasSpecial; + private static boolean wasFlightToggle; + private static boolean wasAscend; + private static boolean wasDescend; + + private RoyalMountClientHandler() { + } + + public static void tick() { + Minecraft mc = Minecraft.getInstance(); + LocalPlayer player = mc.player; + if (player == null || mc.screen != null || !(player.getVehicle() instanceof RoyalMountEntity)) { + reset(); + return; + } + + boolean attack = mc.options.keyAttack.isDown(); + if (attack && !wasAttack) { + ClientPlayNetworking.send(new RoyalMountActionPayload(RoyalMountActionPayload.BITE)); + } + wasAttack = attack; + + boolean special = AntarchyKeyBindings.isMountSpecialPressed(); + if (special && !wasSpecial) { + ClientPlayNetworking.send(new RoyalMountActionPayload(RoyalMountActionPayload.SPIT)); + } + wasSpecial = special; + + boolean flightToggle = AntarchyKeyBindings.isMountFlightTogglePressed(); + if (flightToggle && !wasFlightToggle) { + ClientPlayNetworking.send(new RoyalMountActionPayload(RoyalMountActionPayload.FLIGHT_TOGGLE)); + } + wasFlightToggle = flightToggle; + + boolean ascend = mc.options.keyJump.isDown(); + boolean descend = mc.options.keyShift.isDown(); + if (ascend != wasAscend || descend != wasDescend) { + ClientPlayNetworking.send(new RoyalMountVerticalPayload(ascend, descend)); + wasAscend = ascend; + wasDescend = descend; + } + } + + private static void reset() { + if (wasAscend || wasDescend) { + ClientPlayNetworking.send(new RoyalMountVerticalPayload(false, false)); + } + wasAttack = false; + wasSpecial = false; + wasFlightToggle = false; + wasAscend = false; + wasDescend = false; + } +} diff --git a/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/mixin/JumpyBootsFallDamageMixin.java b/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/mixin/JumpyBootsFallDamageMixin.java index 3d4fbfcf..80fcff70 100644 --- a/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/mixin/JumpyBootsFallDamageMixin.java +++ b/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/mixin/JumpyBootsFallDamageMixin.java @@ -3,6 +3,7 @@ package com.craisinlord.antarchy.fabric.mixin; import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; import com.craisinlord.antarchy.content.item.BloodCrystalArmorItem; import com.craisinlord.antarchy.content.item.JumpyBootsItem; +import com.craisinlord.antarchy.content.item.royal.RoyalGearHelper; import com.craisinlord.antarchy.fabric.util.JumpyBootsFabricHelper; import net.minecraft.world.damagesource.DamageSource; import net.minecraft.world.entity.EquipmentSlot; @@ -25,7 +26,8 @@ public abstract class JumpyBootsFallDamageMixin { if (!AntarchyGravityApi.isGravityInverted(player)) { return; } - if (!(player.getItemBySlot(EquipmentSlot.FEET).getItem() instanceof BloodCrystalArmorItem)) { + if (!(player.getItemBySlot(EquipmentSlot.FEET).getItem() instanceof BloodCrystalArmorItem) + && !RoyalGearHelper.hasUpwardFallImmunityBoots(player)) { return; } diff --git a/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/network/AntarchyFabricNetworking.java b/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/network/AntarchyFabricNetworking.java index 782e4b2a..f10b50d9 100644 --- a/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/network/AntarchyFabricNetworking.java +++ b/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/network/AntarchyFabricNetworking.java @@ -16,6 +16,7 @@ import com.craisinlord.antarchy.content.item.BigBerthaItem; import com.craisinlord.antarchy.content.item.JumpyBootsHelper; import com.craisinlord.antarchy.fabric.util.JumpyBootsFabricHelper; import com.craisinlord.antarchy.content.item.JumpyBootsItem; +import com.craisinlord.antarchy.content.item.EyeOfTheStormItem; import com.craisinlord.antarchy.content.item.GravityGunItem; import com.craisinlord.antarchy.content.item.PortalGunItem; import com.craisinlord.antarchy.content.item.TigerEyeArmorUtil; @@ -86,9 +87,13 @@ public final class AntarchyFabricNetworking { PayloadTypeRegistry.playC2S().register(GravityGunPrimaryPayload.TYPE, GravityGunPrimaryPayload.STREAM_CODEC); PayloadTypeRegistry.playC2S().register(PortalGunPrimaryPayload.TYPE, PortalGunPrimaryPayload.STREAM_CODEC); + PayloadTypeRegistry.playC2S().register(EyeOfStormPrimaryPayload.TYPE, EyeOfStormPrimaryPayload.STREAM_CODEC); + PayloadTypeRegistry.playC2S().register(RoyalMountActionPayload.TYPE, RoyalMountActionPayload.STREAM_CODEC); + PayloadTypeRegistry.playC2S().register(RoyalMountVerticalPayload.TYPE, RoyalMountVerticalPayload.STREAM_CODEC); PayloadTypeRegistry.playC2S().register(GravityGunScrollPayload.TYPE, GravityGunScrollPayload.STREAM_CODEC); PayloadTypeRegistry.playC2S().register(BigBerthaModeCyclePayload.TYPE, BigBerthaModeCyclePayload.STREAM_CODEC); PayloadTypeRegistry.playC2S().register(ToggleTigerEyeCamouflagePayload.TYPE, ToggleTigerEyeCamouflagePayload.STREAM_CODEC); + PayloadTypeRegistry.playC2S().register(ToggleRoyalInversionPayload.TYPE, ToggleRoyalInversionPayload.STREAM_CODEC); PayloadTypeRegistry.playC2S().register(DiamondMinecartInputPayload.TYPE, DiamondMinecartInputPayload.STREAM_CODEC); PayloadTypeRegistry.playC2S().register(BrutalflyElytraFlapPayload.TYPE, BrutalflyElytraFlapPayload.STREAM_CODEC); PayloadTypeRegistry.playC2S().register(JumpyBootsLaunchPayload.TYPE, JumpyBootsLaunchPayload.STREAM_CODEC); @@ -107,12 +112,20 @@ public final class AntarchyFabricNetworking { context.server().execute(() -> handleGravityGunPrimary(context.player(), payload))); ServerPlayNetworking.registerGlobalReceiver(PortalGunPrimaryPayload.TYPE, (payload, context) -> context.server().execute(() -> handlePortalGunPrimary(context.player(), payload))); + ServerPlayNetworking.registerGlobalReceiver(EyeOfStormPrimaryPayload.TYPE, (payload, context) -> + context.server().execute(() -> handleEyeOfStormPrimary(context.player(), payload))); + ServerPlayNetworking.registerGlobalReceiver(RoyalMountActionPayload.TYPE, (payload, context) -> + context.server().execute(() -> handleRoyalMountAction(context.player(), payload))); + ServerPlayNetworking.registerGlobalReceiver(RoyalMountVerticalPayload.TYPE, (payload, context) -> + context.server().execute(() -> handleRoyalMountVertical(context.player(), payload))); ServerPlayNetworking.registerGlobalReceiver(GravityGunScrollPayload.TYPE, (payload, context) -> context.server().execute(() -> handleGravityGunScroll(context.player(), payload))); ServerPlayNetworking.registerGlobalReceiver(BigBerthaModeCyclePayload.TYPE, (payload, context) -> context.server().execute(() -> handleBigBerthaModeCycle(context.player(), payload))); ServerPlayNetworking.registerGlobalReceiver(ToggleTigerEyeCamouflagePayload.TYPE, (payload, context) -> context.server().execute(() -> handleTigerEyeCamouflageToggle(context.player()))); + ServerPlayNetworking.registerGlobalReceiver(ToggleRoyalInversionPayload.TYPE, (payload, context) -> + context.server().execute(() -> com.craisinlord.antarchy.content.item.RoyalAssailantArmorItem.toggleInversion(context.player()))); ServerPlayNetworking.registerGlobalReceiver(DiamondMinecartInputPayload.TYPE, (payload, context) -> context.server().execute(() -> handleDiamondMinecartInput(context.player(), payload))); ServerPlayNetworking.registerGlobalReceiver(BrutalflyElytraFlapPayload.TYPE, (payload, context) -> @@ -250,6 +263,33 @@ public final class AntarchyFabricNetworking { portalGunItem.firePrimary(player.serverLevel(), player, player.getMainHandItem()); } + private static void handleRoyalMountAction(ServerPlayer player, RoyalMountActionPayload payload) { + if (!(player.getVehicle() instanceof com.craisinlord.antarchy.content.entity.royal.RoyalMountEntity mount)) { + return; + } + switch (payload.action()) { + case RoyalMountActionPayload.FLIGHT_TOGGLE -> mount.toggleMountedFlight(player); + case RoyalMountActionPayload.BITE -> mount.handleMountedBite(player); + case RoyalMountActionPayload.SPIT -> mount.handleMountedSpit(player); + default -> { + } + } + } + + private static void handleRoyalMountVertical(ServerPlayer player, RoyalMountVerticalPayload payload) { + if (player.getVehicle() instanceof com.craisinlord.antarchy.content.entity.royal.RoyalMountEntity mount) { + mount.setRiderAscend(payload.ascend()); + mount.setRiderDescend(payload.descend()); + } + } + + private static void handleEyeOfStormPrimary(ServerPlayer player, EyeOfStormPrimaryPayload payload) { + if (!(player.getMainHandItem().getItem() instanceof EyeOfTheStormItem eyeOfTheStormItem)) { + return; + } + eyeOfTheStormItem.firePrimary(player.serverLevel(), player, player.getMainHandItem()); + } + private static void handleGravityGunScroll(ServerPlayer player, GravityGunScrollPayload payload) { if (!(player.getMainHandItem().getItem() instanceof GravityGunItem)) { return; diff --git a/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricBlocks.java b/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricBlocks.java index edd26936..31ad67dd 100644 --- a/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricBlocks.java +++ b/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricBlocks.java @@ -397,12 +397,12 @@ public final class AntarchyFabricBlocks { () -> new net.minecraft.world.level.block.ButtonBlock(net.minecraft.world.level.block.state.properties.BlockSetType.JUNGLE, 30, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_BUTTON))); - public static final DeferredBlock ROYAL_LEAVES = BLOCKS.register("royal_leaves", - () -> new net.minecraft.world.level.block.LeavesBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_LEAVES).randomTicks())); + public static final DeferredBlock ROYAL_LEAVES = BLOCKS.register("royal_leaves", + () -> new com.craisinlord.antarchy.content.block.RoyalLeavesBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_LEAVES).randomTicks())); - public static final DeferredBlock ROYAL_FLOWERING_LEAVES = BLOCKS.register("royal_flowering_leaves", - () -> new net.minecraft.world.level.block.LeavesBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_LEAVES).randomTicks())); + public static final DeferredBlock ROYAL_FLOWERING_LEAVES = BLOCKS.register("royal_flowering_leaves", + () -> new com.craisinlord.antarchy.content.block.RoyalLeavesBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_LEAVES).randomTicks())); public static final DeferredBlock ROYAL_SAPLING = BLOCKS.register("royal_sapling", @@ -947,6 +947,11 @@ public final class AntarchyFabricBlocks { public static final DeferredBlock CREEPING_HORROR_EGG = BLOCKS.register("creeping_horror_egg", () -> new CreepingHorrorEggBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.TURTLE_EGG))); + public static final DeferredBlock PRINCE_EGG = BLOCKS.register("prince_egg", + () -> new com.craisinlord.antarchy.content.block.PrinceEggBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.DRAGON_EGG).randomTicks().noOcclusion())); + public static final DeferredBlock PRINCESS_EGG = BLOCKS.register("princess_egg", + () -> new com.craisinlord.antarchy.content.block.PrincessEggBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.DRAGON_EGG).randomTicks().noOcclusion())); + public static final DeferredBlock JUMPY_BUG_EGG = BLOCKS.register("jumpy_bug_egg", () -> new JumpyBugEggBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.TURTLE_EGG))); @@ -1398,6 +1403,13 @@ public final class AntarchyFabricBlocks { () -> new StarCoralWallFanBlock(DEAD_STAR_CORAL_WALL_FAN.get(), BlockBehaviour.Properties.ofFullCopy(Blocks.TUBE_CORAL_WALL_FAN).lightLevel(state -> 8))); + public static final DeferredHolder, BlockEntityType> ROYAL_EGG_BLOCK_ENTITY = BLOCK_ENTITY_TYPES.register("royal_egg", + () -> BlockEntityType.Builder.of( + com.craisinlord.antarchy.content.block.entity.RoyalEggBlockEntity::new, + PRINCE_EGG.get(), + PRINCESS_EGG.get() + ).build(null)); + public static final DeferredHolder, BlockEntityType> ANT_NEST_BLOCK_ENTITY = BLOCK_ENTITY_TYPES.register("ant_nest", () -> BlockEntityType.Builder.of( AntNestBlockEntity::new, diff --git a/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricEntities.java b/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricEntities.java index 890ee352..d4ad6a42 100644 --- a/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricEntities.java +++ b/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricEntities.java @@ -619,6 +619,27 @@ public final class AntarchyFabricEntities { .clientTrackingRange(12) .build("hercules_beetle")); + public static final DeferredHolder, EntityType> PRINCE = ENTITY_TYPES.register("prince", + () -> EntityType.Builder.of(com.craisinlord.antarchy.content.entity.royal.PrinceEntity::new, MobCategory.CREATURE) + .sized(2.2F, 2.2F) + .clientTrackingRange(10) + .updateInterval(3) + .fireImmune().build("prince")); + + public static final DeferredHolder, EntityType> PRINCESS = ENTITY_TYPES.register("princess", + () -> EntityType.Builder.of(com.craisinlord.antarchy.content.entity.royal.PrincessEntity::new, MobCategory.CREATURE) + .sized(2.2F, 2.2F) + .clientTrackingRange(10) + .updateInterval(3) + .fireImmune().build("princess")); + + public static final DeferredHolder, EntityType> ROYAL_BOLT = ENTITY_TYPES.register("royal_bolt", + () -> EntityType.Builder.of(com.craisinlord.antarchy.content.entity.royal.RoyalBoltEntity::new, MobCategory.MISC) + .sized(0.4F, 0.4F) + .clientTrackingRange(8) + .updateInterval(1) + .fireImmune().build("royal_bolt")); + public static final DeferredHolder, EntityType> OURANWOOD_DEER = ENTITY_TYPES.register("ouranwood_deer", () -> EntityType.Builder.of(com.craisinlord.antarchy.content.entity.OuranwoodDeerEntity::new, MobCategory.CREATURE) diff --git a/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricEntityAttributes.java b/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricEntityAttributes.java index f2bcefbd..724e9e59 100644 --- a/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricEntityAttributes.java +++ b/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricEntityAttributes.java @@ -98,6 +98,8 @@ public final class AntarchyFabricEntityAttributes { FabricDefaultAttributeRegistry.register(AntarchyFabricEntities.CHEEP.get(), com.craisinlord.antarchy.content.entity.CheepEntity.createAttributes().build()); FabricDefaultAttributeRegistry.register(AntarchyFabricEntities.DORRIE.get(), com.craisinlord.antarchy.content.entity.DorrieEntity.createAttributes().build()); FabricDefaultAttributeRegistry.register(AntarchyFabricEntities.HERCULES_BEETLE.get(), com.craisinlord.antarchy.content.entity.HerculesBeetleEntity.createAttributes().build()); + FabricDefaultAttributeRegistry.register(AntarchyFabricEntities.PRINCE.get(), com.craisinlord.antarchy.content.entity.royal.PrinceEntity.createAttributes().build()); + FabricDefaultAttributeRegistry.register(AntarchyFabricEntities.PRINCESS.get(), com.craisinlord.antarchy.content.entity.royal.PrincessEntity.createAttributes().build()); FabricDefaultAttributeRegistry.register(AntarchyFabricEntities.OURANWOOD_DEER.get(), com.craisinlord.antarchy.content.entity.OuranwoodDeerEntity.createAttributes().build()); FabricDefaultAttributeRegistry.register(AntarchyFabricEntities.GLIMMER.get(), com.craisinlord.antarchy.content.entity.glimmer.GlimmerEntity.createAttributes().build()); FabricDefaultAttributeRegistry.register(AntarchyFabricEntities.ELKA.get(), com.craisinlord.antarchy.content.entity.ElkaEntity.createAttributes().build()); diff --git a/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricItems.java b/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricItems.java index 252830a6..273a6f35 100644 --- a/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricItems.java +++ b/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricItems.java @@ -66,6 +66,24 @@ public final class AntarchyFabricItems { () -> Ingredient.of(AntarchyFabricItems.HERCULES_HORN.get()) ); + private static final Tier ROYAL_GUARDIAN_TIER = new SimpleToolTier( + AntarchySettings.royalWeaponDurability(), + 12.0F, + 0.0F, + Tiers.NETHERITE.getIncorrectBlocksForDrops(), + AntarchySettings.royalWeaponEnchantability(), + () -> Ingredient.of(AntarchyFabricItems.KING_SCALE.get()) + ); + + private static final Tier ROYAL_ASSAILANT_TIER = new SimpleToolTier( + AntarchySettings.royalWeaponDurability(), + 12.0F, + 0.0F, + Tiers.NETHERITE.getIncorrectBlocksForDrops(), + AntarchySettings.royalWeaponEnchantability(), + () -> Ingredient.of(AntarchyFabricItems.QUEEN_SCALE.get()) + ); + public static final DeferredItem NIGHTMARE_SCALE = ITEMS.registerSimpleItem("nightmare_scale", new Item.Properties().rarity(Rarity.RARE).fireResistant()); @@ -903,6 +921,10 @@ 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 PRINCE_EGG_ITEM = ITEMS.register("prince_egg", + () -> new net.minecraft.world.item.BlockItem(AntarchyFabricBlocks.PRINCE_EGG.get(), new Item.Properties().rarity(Rarity.EPIC).fireResistant())); + public static final DeferredItem PRINCESS_EGG_ITEM = ITEMS.register("princess_egg", + () -> new net.minecraft.world.item.BlockItem(AntarchyFabricBlocks.PRINCESS_EGG.get(), new Item.Properties().rarity(Rarity.EPIC).fireResistant())); 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 JERRY_EGG_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.JERRY_EGG); @@ -1000,12 +1022,10 @@ public final class AntarchyFabricItems { public static final DeferredItem HERCULES_HORN = ITEMS.registerSimpleItem("hercules_horn", new Item.Properties().rarity(Rarity.UNCOMMON)); - public static final DeferredItem KING_SCALE = ITEMS.register("king_scale", - () -> new MobComingSoonTooltipItem(new Item.Properties().rarity(Rarity.RARE))); + public static final DeferredItem KING_SCALE = ITEMS.registerSimpleItem("king_scale", new Item.Properties().rarity(Rarity.RARE)); - public static final DeferredItem QUEEN_SCALE = ITEMS.register("queen_scale", - () -> new MobComingSoonTooltipItem(new Item.Properties().rarity(Rarity.RARE))); + public static final DeferredItem QUEEN_SCALE = ITEMS.registerSimpleItem("queen_scale", new Item.Properties().rarity(Rarity.RARE)); public static final DeferredItem CHITIN = ITEMS.registerSimpleItem("chitin", new Item.Properties().rarity(Rarity.UNCOMMON)); @@ -1422,6 +1442,44 @@ public final class AntarchyFabricItems { )); + public static final DeferredItem ROYAL_GUARDIAN_HELMET = ITEMS.register("royal_guardian_helmet", + () -> new RoyalGuardianArmorItem(net.minecraft.core.Holder.direct(AntarchyFabricMisc.ROYAL_GUARDIAN_ARMOR_MATERIAL.get()), ArmorItem.Type.HELMET, + new Item.Properties().rarity(Rarity.EPIC).fireResistant())); + public static final DeferredItem ROYAL_GUARDIAN_CHESTPLATE = ITEMS.register("royal_guardian_chestplate", + () -> new RoyalGuardianArmorItem(net.minecraft.core.Holder.direct(AntarchyFabricMisc.ROYAL_GUARDIAN_ARMOR_MATERIAL.get()), ArmorItem.Type.CHESTPLATE, + new Item.Properties().rarity(Rarity.EPIC).fireResistant())); + public static final DeferredItem ROYAL_GUARDIAN_LEGGINGS = ITEMS.register("royal_guardian_leggings", + () -> new RoyalGuardianArmorItem(net.minecraft.core.Holder.direct(AntarchyFabricMisc.ROYAL_GUARDIAN_ARMOR_MATERIAL.get()), ArmorItem.Type.LEGGINGS, + new Item.Properties().rarity(Rarity.EPIC).fireResistant())); + public static final DeferredItem ROYAL_GUARDIAN_BOOTS = ITEMS.register("royal_guardian_boots", + () -> new RoyalGuardianArmorItem(net.minecraft.core.Holder.direct(AntarchyFabricMisc.ROYAL_GUARDIAN_ARMOR_MATERIAL.get()), ArmorItem.Type.BOOTS, + new Item.Properties().rarity(Rarity.EPIC).fireResistant())); + + public static final DeferredItem ROYAL_ASSAILANT_HELMET = ITEMS.register("royal_assailant_helmet", + () -> new RoyalAssailantArmorItem(net.minecraft.core.Holder.direct(AntarchyFabricMisc.ROYAL_ASSAILANT_ARMOR_MATERIAL.get()), ArmorItem.Type.HELMET, + new Item.Properties().rarity(Rarity.EPIC).fireResistant())); + public static final DeferredItem ROYAL_ASSAILANT_CHESTPLATE = ITEMS.register("royal_assailant_chestplate", + () -> new RoyalAssailantArmorItem(net.minecraft.core.Holder.direct(AntarchyFabricMisc.ROYAL_ASSAILANT_ARMOR_MATERIAL.get()), ArmorItem.Type.CHESTPLATE, + new Item.Properties().rarity(Rarity.EPIC).fireResistant())); + public static final DeferredItem ROYAL_ASSAILANT_LEGGINGS = ITEMS.register("royal_assailant_leggings", + () -> new RoyalAssailantArmorItem(net.minecraft.core.Holder.direct(AntarchyFabricMisc.ROYAL_ASSAILANT_ARMOR_MATERIAL.get()), ArmorItem.Type.LEGGINGS, + new Item.Properties().rarity(Rarity.EPIC).fireResistant())); + public static final DeferredItem ROYAL_ASSAILANT_BOOTS = ITEMS.register("royal_assailant_boots", + () -> new RoyalAssailantArmorItem(net.minecraft.core.Holder.direct(AntarchyFabricMisc.ROYAL_ASSAILANT_ARMOR_MATERIAL.get()), ArmorItem.Type.BOOTS, + new Item.Properties().rarity(Rarity.EPIC).fireResistant())); + + public static final DeferredItem ROYAL_GUARDIAN_SWORD = ITEMS.register("royal_guardian_sword", + () -> new RoyalGuardianSwordItem(ROYAL_GUARDIAN_TIER, + new Item.Properties().stacksTo(1).rarity(Rarity.EPIC).fireResistant())); + public static final DeferredItem ROYAL_ASSAILANT_BATTLEAXE = ITEMS.register("royal_assailant_battleaxe", + () -> new RoyalAssailantBattleAxeItem(ROYAL_ASSAILANT_TIER, + new Item.Properties().stacksTo(1).rarity(Rarity.EPIC).fireResistant())); + public static final DeferredItem ROYAL_GUARDIAN_SHIELD = ITEMS.register("royal_guardian_shield", + () -> new RoyalGuardianShieldItem( + new Item.Properties().durability(AntarchySettings.royalGuardianShieldDurability()).rarity(Rarity.EPIC).fireResistant(), + () -> Ingredient.of(AntarchyFabricItems.KING_SCALE.get()))); + + public static final DeferredItem SHRINK_RAY = ITEMS.register("shrink_ray", () -> new SizeRayItem( new Item.Properties().stacksTo(1).durability(512).rarity(Rarity.RARE).fireResistant(), @@ -1459,6 +1517,9 @@ public final class AntarchyFabricItems { AntarchyFabricBlocks.PORTAL_GUN_PORTAL_BASE )); + public static final DeferredItem EYE_OF_THE_STORM = ITEMS.register("eye_of_the_storm", + () -> new EyeOfTheStormItem(new Item.Properties().stacksTo(1).durability(384).rarity(Rarity.EPIC))); + // Temporarily disabled: keeping the code but not registering the item for now. // public static final DeferredItem MINERS_DREAM = ITEMS.register("miners_dream", diff --git a/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricMisc.java b/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricMisc.java index b8ac292e..f74e8d60 100644 --- a/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricMisc.java +++ b/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricMisc.java @@ -69,6 +69,8 @@ import com.craisinlord.antarchy.content.worldgen.thoraxis.NadirTreeConfiguration import com.craisinlord.antarchy.content.worldgen.thoraxis.NadirTreeFeature; import com.craisinlord.antarchy.content.worldgen.truffalo.TruffaloTreeConfiguration; import com.craisinlord.antarchy.content.worldgen.truffalo.TruffaloTreeFeature; +import com.craisinlord.antarchy.content.worldgen.royal.RoyalTreeConfiguration; +import com.craisinlord.antarchy.content.worldgen.royal.RoyalTreeFeature; import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisBiomeSource; import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisDuneConfiguration; import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisDuneFeature; @@ -293,6 +295,30 @@ public final class AntarchyFabricMisc { )); + public static final DeferredHolder ROYAL_GUARDIAN_ARMOR_MATERIAL = ARMOR_MATERIALS.register("royal_guardian", + () -> new ArmorMaterial( + new java.util.EnumMap<>(ArmorItem.Type.class), + AntarchySettings.royalArmorEnchantability(), + SoundEvents.ARMOR_EQUIP_NETHERITE, + () -> Ingredient.of(AntarchyFabricItems.KING_SCALE.get()), + List.of(new ArmorMaterial.Layer(ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "royal_guardian"))), + 0.0F, + 0.0F + )); + + + public static final DeferredHolder ROYAL_ASSAILANT_ARMOR_MATERIAL = ARMOR_MATERIALS.register("royal_assailant", + () -> new ArmorMaterial( + new java.util.EnumMap<>(ArmorItem.Type.class), + AntarchySettings.royalArmorEnchantability(), + SoundEvents.ARMOR_EQUIP_NETHERITE, + () -> Ingredient.of(AntarchyFabricItems.QUEEN_SCALE.get()), + List.of(new ArmorMaterial.Layer(ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "royal_assailant"))), + 0.0F, + 0.0F + )); + + public static final DeferredHolder, SimpleParticleType> DREAM_FIRE_FLAME = PARTICLE_TYPES.register("dream_fire_flame", () -> simpleParticleType()); public static final DeferredHolder, SimpleParticleType> NIGHTMARE_FIRE_FLAME = PARTICLE_TYPES.register("nightmare_fire_flame", @@ -585,6 +611,10 @@ public final class AntarchyFabricMisc { () -> new TruffaloTreeFeature(TruffaloTreeConfiguration.CODEC)); + public static final DeferredHolder, RoyalTreeFeature> ROYAL_TREE_FEATURE = FEATURES.register("royal_tree", + () -> new RoyalTreeFeature(RoyalTreeConfiguration.CODEC)); + + public static final DeferredHolder, ElythiaFloraFeature> ELYTHIA_FOREST_FLORA = FEATURES.register("elythia_forest_flora", () -> new ElythiaFloraFeature(NoneFeatureConfiguration.CODEC, ElythiaFloraFeature.Variant.FOREST)); diff --git a/fabric-1.21.1/src/main/resources/assets/antarchy/models/item/eye_of_the_storm.json b/fabric-1.21.1/src/main/resources/assets/antarchy/models/item/eye_of_the_storm.json new file mode 100644 index 00000000..b504f30f --- /dev/null +++ b/fabric-1.21.1/src/main/resources/assets/antarchy/models/item/eye_of_the_storm.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:item/eye_of_the_storm_held_geo" +} diff --git a/fabric-1.21.1/src/main/resources/assets/antarchy/models/item/royal_assailant_battleaxe.json b/fabric-1.21.1/src/main/resources/assets/antarchy/models/item/royal_assailant_battleaxe.json new file mode 100644 index 00000000..c6ede5e2 --- /dev/null +++ b/fabric-1.21.1/src/main/resources/assets/antarchy/models/item/royal_assailant_battleaxe.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:item/royal_assailant_battleaxe_held" +} diff --git a/fabric-1.21.1/src/main/resources/assets/antarchy/models/item/royal_guardian_sword.json b/fabric-1.21.1/src/main/resources/assets/antarchy/models/item/royal_guardian_sword.json new file mode 100644 index 00000000..52bdad62 --- /dev/null +++ b/fabric-1.21.1/src/main/resources/assets/antarchy/models/item/royal_guardian_sword.json @@ -0,0 +1,3 @@ +{ + "parent": "antarchy:item/royal_guardian_sword_held" +} diff --git a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyNeoforge.java b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyNeoforge.java index c960a4b0..744400b5 100644 --- a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyNeoforge.java +++ b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyNeoforge.java @@ -388,6 +388,12 @@ public class AntarchyNeoforge { AntarchyObjects.setVortex(AntarchyNeoforgeEntites.VORTEX); AntarchyObjects.setWindVortex(() -> AntarchyNeoforgeEntites.WIND_VORTEX.get()); AntarchyObjects.setVortexChargeProjectile(() -> AntarchyNeoforgeEntites.VORTEX_CHARGE_PROJECTILE.get()); + AntarchyObjects.setPrince(() -> AntarchyNeoforgeEntites.PRINCE.get()); + AntarchyObjects.setPrincess(() -> AntarchyNeoforgeEntites.PRINCESS.get()); + AntarchyObjects.setRoyalBolt(() -> AntarchyNeoforgeEntites.ROYAL_BOLT.get()); + AntarchyObjects.setPrinceEgg(() -> AntarchyNeoforgeBlocks.PRINCE_EGG.get()); + AntarchyObjects.setPrincessEgg(() -> AntarchyNeoforgeBlocks.PRINCESS_EGG.get()); + AntarchyObjects.setRoyalEggBlockEntity(() -> AntarchyNeoforgeBlocks.ROYAL_EGG_BLOCK_ENTITY.get()); AntarchyObjects.setVortexLens(() -> AntarchyNeoforgeBlocks.VORTEX_LENS.get()); AntarchyObjects.setVortexLensBlockEntity(() -> AntarchyNeoforgeBlocks.VORTEX_LENS_BLOCK_ENTITY.get()); AntarchyObjects.setKrakensGraspTrident(AntarchyNeoforgeEntites.KRAKENS_GRASP_TRIDENT); diff --git a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/client/AntarchyKeyBindings.java b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/client/AntarchyKeyBindings.java index bf2d470c..d8e87901 100644 --- a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/client/AntarchyKeyBindings.java +++ b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/client/AntarchyKeyBindings.java @@ -29,16 +29,16 @@ public final class AntarchyKeyBindings { CATEGORY ); - public static final KeyMapping HERCULES_BEETLE_CHARGE = new KeyMapping( - "key.antarchy.hercules_beetle_charge", + public static final KeyMapping MOUNT_SPECIAL = new KeyMapping( + "key.antarchy.mount_special", KeyConflictContext.IN_GAME, InputConstants.Type.KEYSYM, InputConstants.KEY_LCONTROL, CATEGORY ); - public static final KeyMapping HERCULES_BEETLE_FLIGHT_TOGGLE = new KeyMapping( - "key.antarchy.hercules_beetle_flight_toggle", + public static final KeyMapping MOUNT_FLIGHT_TOGGLE = new KeyMapping( + "key.antarchy.mount_flight_toggle", KeyConflictContext.IN_GAME, InputConstants.Type.KEYSYM, InputConstants.KEY_R, @@ -52,22 +52,39 @@ public final class AntarchyKeyBindings { CATEGORY ); + public static final KeyMapping ROYAL_INVERSION_TOGGLE = new KeyMapping( + "key.antarchy.royal_inversion_toggle", + KeyConflictContext.IN_GAME, + InputConstants.Type.KEYSYM, + InputConstants.KEY_V, + CATEGORY + ); + private AntarchyKeyBindings() {} @SubscribeEvent public static void onRegisterKeyMappings(RegisterKeyMappingsEvent event) { event.register(BRUTALFLY_FLAP); event.register(DORRIE_CHARGE_JUMP); - event.register(HERCULES_BEETLE_CHARGE); - event.register(HERCULES_BEETLE_FLIGHT_TOGGLE); + event.register(MOUNT_SPECIAL); + event.register(MOUNT_FLIGHT_TOGGLE); event.register(TIGERS_EYE_CAMOUFLAGE); + event.register(ROYAL_INVERSION_TOGGLE); } - public static boolean isHerculesBeetleFlightTogglePressed() { - return HERCULES_BEETLE_FLIGHT_TOGGLE.isDown(); + public static boolean isMountFlightTogglePressed() { + return MOUNT_FLIGHT_TOGGLE.isDown(); + } + + public static boolean isMountSpecialPressed() { + return MOUNT_SPECIAL.isDown(); } public static boolean consumeTigerEyeCamouflagePressed() { return TIGERS_EYE_CAMOUFLAGE.consumeClick(); } + + public static boolean consumeRoyalInversionTogglePressed() { + return ROYAL_INVERSION_TOGGLE.consumeClick(); + } } diff --git a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/client/AntarchyNeoForgeClient.java b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/client/AntarchyNeoForgeClient.java index 429dbae9..b95d23ca 100644 --- a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/client/AntarchyNeoForgeClient.java +++ b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/client/AntarchyNeoForgeClient.java @@ -168,6 +168,9 @@ public final class AntarchyNeoForgeClient { event.registerEntityRenderer(AntarchyNeoforgeEntites.CREEPING_HORROR.get(), context -> withParalyzedGeoLayer(new com.craisinlord.antarchy.content.client.renderer.CreepingHorrorRenderer(context))); event.registerEntityRenderer(AntarchyNeoforgeEntites.LURKING_TERROR.get(), context -> withParalyzedGeoLayer(new com.craisinlord.antarchy.content.client.renderer.LurkingTerrorRenderer(context))); event.registerEntityRenderer(AntarchyNeoforgeEntites.HERCULES_BEETLE.get(), context -> withParalyzedGeoLayer(new com.craisinlord.antarchy.content.client.renderer.HerculesBeetleRenderer(context))); + event.registerEntityRenderer(AntarchyNeoforgeEntites.PRINCE.get(), com.craisinlord.antarchy.content.client.renderer.RoyalMountRenderer::new); + event.registerEntityRenderer(AntarchyNeoforgeEntites.PRINCESS.get(), com.craisinlord.antarchy.content.client.renderer.RoyalMountRenderer::new); + event.registerEntityRenderer(AntarchyNeoforgeEntites.ROYAL_BOLT.get(), com.craisinlord.antarchy.content.client.renderer.RoyalBoltRenderer::new); event.registerEntityRenderer(AntarchyNeoforgeEntites.JERRY.get(), context -> withParalyzedGeoLayer(new com.craisinlord.antarchy.content.client.renderer.JerryRenderer(context))); event.registerEntityRenderer(AntarchyNeoforgeEntites.JUMPY_BUG.get(), context -> withParalyzedGeoLayer(new com.craisinlord.antarchy.content.client.renderer.JumpyBugRenderer(context))); event.registerEntityRenderer(AntarchyNeoforgeEntites.SPIT_BUG.get(), context -> withParalyzedGeoLayer(new com.craisinlord.antarchy.content.client.renderer.SpitBugRenderer(context))); diff --git a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/client/EyeOfStormClientHandler.java b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/client/EyeOfStormClientHandler.java new file mode 100644 index 00000000..631e0810 --- /dev/null +++ b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/client/EyeOfStormClientHandler.java @@ -0,0 +1,40 @@ +package com.craisinlord.antarchy.neoforge.client; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.config.AntarchySettings; +import com.craisinlord.antarchy.content.item.EyeOfTheStormItem; +import com.craisinlord.antarchy.content.network.EyeOfStormPrimaryPayload; +import net.minecraft.client.Minecraft; +import net.neoforged.api.distmarker.Dist; +import net.neoforged.bus.api.SubscribeEvent; +import net.neoforged.fml.common.EventBusSubscriber; +import net.neoforged.neoforge.client.event.ClientTickEvent; +import net.neoforged.neoforge.network.PacketDistributor; + +@EventBusSubscriber(modid = Antarchy.MODID, value = Dist.CLIENT) +public final class EyeOfStormClientHandler { + private static boolean lastAttackDown; + + private EyeOfStormClientHandler() { + } + + @SubscribeEvent + public static void onClientTick(ClientTickEvent.Post event) { + Minecraft mc = Minecraft.getInstance(); + if (mc.player == null || mc.level == null || mc.screen != null || !AntarchySettings.eyeOfTheStormEnabled()) { + lastAttackDown = false; + return; + } + + if (!(mc.player.getMainHandItem().getItem() instanceof EyeOfTheStormItem)) { + lastAttackDown = false; + return; + } + + boolean attackDown = mc.options.keyAttack.isDown(); + if (attackDown && !lastAttackDown) { + PacketDistributor.sendToServer(new EyeOfStormPrimaryPayload()); + } + lastAttackDown = attackDown; + } +} diff --git a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/client/HerculesBeetleClientHandler.java b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/client/HerculesBeetleClientHandler.java index f0976327..1909161a 100644 --- a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/client/HerculesBeetleClientHandler.java +++ b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/client/HerculesBeetleClientHandler.java @@ -57,13 +57,13 @@ public final class HerculesBeetleClientHandler { } wasPressingAttack = pressingAttack; - boolean charging = AntarchyKeyBindings.HERCULES_BEETLE_CHARGE.isDown(); + boolean charging = AntarchyKeyBindings.MOUNT_SPECIAL.isDown(); if (charging != wasCharging) { PacketDistributor.sendToServer(new HerculesBeetleMountedChargePayload(charging)); } wasCharging = charging; - boolean pressingFlightToggle = AntarchyKeyBindings.HERCULES_BEETLE_FLIGHT_TOGGLE.isDown(); + boolean pressingFlightToggle = AntarchyKeyBindings.MOUNT_FLIGHT_TOGGLE.isDown(); if (pressingFlightToggle && !wasPressingFlightToggle) { PacketDistributor.sendToServer(new HerculesBeetleFlightTogglePayload()); } diff --git a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/client/RoyalInversionClientHandler.java b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/client/RoyalInversionClientHandler.java new file mode 100644 index 00000000..0a2db3cd --- /dev/null +++ b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/client/RoyalInversionClientHandler.java @@ -0,0 +1,27 @@ +package com.craisinlord.antarchy.neoforge.client; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.content.network.ToggleRoyalInversionPayload; +import net.minecraft.client.Minecraft; +import net.neoforged.api.distmarker.Dist; +import net.neoforged.bus.api.SubscribeEvent; +import net.neoforged.fml.common.EventBusSubscriber; +import net.neoforged.neoforge.client.event.ClientTickEvent; +import net.neoforged.neoforge.network.PacketDistributor; + +@EventBusSubscriber(modid = Antarchy.MODID, value = Dist.CLIENT) +public final class RoyalInversionClientHandler { + private RoyalInversionClientHandler() { + } + + @SubscribeEvent + public static void onClientTick(ClientTickEvent.Post event) { + Minecraft minecraft = Minecraft.getInstance(); + if (minecraft.player == null || minecraft.level == null) { + return; + } + while (AntarchyKeyBindings.consumeRoyalInversionTogglePressed()) { + PacketDistributor.sendToServer(new ToggleRoyalInversionPayload()); + } + } +} diff --git a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/client/RoyalMountClientHandler.java b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/client/RoyalMountClientHandler.java new file mode 100644 index 00000000..e2f88d84 --- /dev/null +++ b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/client/RoyalMountClientHandler.java @@ -0,0 +1,72 @@ +package com.craisinlord.antarchy.neoforge.client; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.content.entity.royal.RoyalMountEntity; +import com.craisinlord.antarchy.content.network.RoyalMountActionPayload; +import com.craisinlord.antarchy.content.network.RoyalMountVerticalPayload; +import net.minecraft.client.Minecraft; +import net.minecraft.client.player.LocalPlayer; +import net.neoforged.api.distmarker.Dist; +import net.neoforged.bus.api.SubscribeEvent; +import net.neoforged.fml.common.EventBusSubscriber; +import net.neoforged.neoforge.client.event.ClientTickEvent; +import net.neoforged.neoforge.network.PacketDistributor; + +@EventBusSubscriber(modid = Antarchy.MODID, value = Dist.CLIENT) +public final class RoyalMountClientHandler { + private static boolean wasAttack; + private static boolean wasSpecial; + private static boolean wasFlightToggle; + private static boolean wasAscend; + private static boolean wasDescend; + + private RoyalMountClientHandler() { + } + + @SubscribeEvent + public static void onClientTick(ClientTickEvent.Post event) { + Minecraft mc = Minecraft.getInstance(); + LocalPlayer player = mc.player; + if (player == null || mc.screen != null || !(player.getVehicle() instanceof RoyalMountEntity)) { + reset(); + return; + } + + boolean attack = mc.options.keyAttack.isDown(); + if (attack && !wasAttack) { + PacketDistributor.sendToServer(new RoyalMountActionPayload(RoyalMountActionPayload.BITE)); + } + wasAttack = attack; + + boolean special = AntarchyKeyBindings.isMountSpecialPressed(); + if (special && !wasSpecial) { + PacketDistributor.sendToServer(new RoyalMountActionPayload(RoyalMountActionPayload.SPIT)); + } + wasSpecial = special; + + boolean flightToggle = AntarchyKeyBindings.isMountFlightTogglePressed(); + if (flightToggle && !wasFlightToggle) { + PacketDistributor.sendToServer(new RoyalMountActionPayload(RoyalMountActionPayload.FLIGHT_TOGGLE)); + } + wasFlightToggle = flightToggle; + + boolean ascend = mc.options.keyJump.isDown(); + boolean descend = mc.options.keyShift.isDown(); + if (ascend != wasAscend || descend != wasDescend) { + PacketDistributor.sendToServer(new RoyalMountVerticalPayload(ascend, descend)); + wasAscend = ascend; + wasDescend = descend; + } + } + + private static void reset() { + if (wasAscend || wasDescend) { + PacketDistributor.sendToServer(new RoyalMountVerticalPayload(false, false)); + } + wasAttack = false; + wasSpecial = false; + wasFlightToggle = false; + wasAscend = false; + wasDescend = false; + } +} diff --git a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/network/AntarchyGravityNetworking.java b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/network/AntarchyGravityNetworking.java index 1d97e34f..cf76f499 100644 --- a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/network/AntarchyGravityNetworking.java +++ b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/network/AntarchyGravityNetworking.java @@ -3,9 +3,11 @@ package com.craisinlord.antarchy.neoforge.network; import com.craisinlord.antarchy.content.entity.DiamondMinecartEntity; import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; import com.craisinlord.antarchy.content.item.BigBerthaItem; +import com.craisinlord.antarchy.content.item.EyeOfTheStormItem; import com.craisinlord.antarchy.content.item.GravityGunItem; import com.craisinlord.antarchy.content.item.PortalGunItem; import com.craisinlord.antarchy.content.network.BigBerthaModeCyclePayload; +import com.craisinlord.antarchy.content.network.EyeOfStormPrimaryPayload; import com.craisinlord.antarchy.content.network.GravityGunPrimaryPayload; import com.craisinlord.antarchy.content.network.GravityGunScrollPayload; import com.craisinlord.antarchy.content.network.GravityStatePayload; @@ -40,6 +42,10 @@ public final class AntarchyGravityNetworking { PortalGunPrimaryPayload.TYPE, PortalGunPrimaryPayload.STREAM_CODEC, AntarchyGravityNetworking::handlePortalGunPrimary + ).playToServer( + EyeOfStormPrimaryPayload.TYPE, + EyeOfStormPrimaryPayload.STREAM_CODEC, + AntarchyGravityNetworking::handleEyeOfStormPrimary ).playToServer( GravityGunScrollPayload.TYPE, GravityGunScrollPayload.STREAM_CODEC, @@ -174,4 +180,18 @@ public final class AntarchyGravityNetworking { portalGunItem.firePrimary(serverPlayer.serverLevel(), serverPlayer, serverPlayer.getMainHandItem()); }); } + + private static void handleEyeOfStormPrimary(EyeOfStormPrimaryPayload payload, IPayloadContext context) { + context.enqueueWork(() -> { + if (!(context.player() instanceof ServerPlayer serverPlayer)) { + return; + } + + if (!(serverPlayer.getMainHandItem().getItem() instanceof EyeOfTheStormItem eyeOfTheStormItem)) { + return; + } + + eyeOfTheStormItem.firePrimary(serverPlayer.serverLevel(), serverPlayer, serverPlayer.getMainHandItem()); + }); + } } diff --git a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoForgeEvents.java b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoForgeEvents.java index dfa23302..9e205b27 100644 --- a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoForgeEvents.java +++ b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoForgeEvents.java @@ -753,7 +753,8 @@ public final class AntarchyNeoForgeEvents { static void handleBloodCrystalBootsFall(LivingFallEvent event) { if (!(event.getEntity() instanceof Player player)) return; if (!com.craisinlord.antarchy.content.gravity.AntarchyGravityApi.isGravityInverted(player)) return; - if (!(player.getItemBySlot(net.minecraft.world.entity.EquipmentSlot.FEET).getItem() instanceof BloodCrystalArmorItem)) return; + if (!(player.getItemBySlot(net.minecraft.world.entity.EquipmentSlot.FEET).getItem() instanceof BloodCrystalArmorItem) + && !com.craisinlord.antarchy.content.item.royal.RoyalGearHelper.hasUpwardFallImmunityBoots(player)) return; event.setCanceled(true); } diff --git a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeBlocks.java b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeBlocks.java index d8bd7dce..db724180 100644 --- a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeBlocks.java +++ b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeBlocks.java @@ -229,10 +229,10 @@ public final class AntarchyNeoforgeBlocks { () -> new PressurePlateBlock(BlockSetType.JUNGLE, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_PRESSURE_PLATE))); public static final DeferredBlock ROYAL_BUTTON = BLOCKS.register("royal_button", () -> new ButtonBlock(BlockSetType.JUNGLE, 30, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_BUTTON))); - public static final DeferredBlock ROYAL_LEAVES = BLOCKS.register("royal_leaves", - () -> new LeavesBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_LEAVES).randomTicks())); - public static final DeferredBlock ROYAL_FLOWERING_LEAVES = BLOCKS.register("royal_flowering_leaves", - () -> new LeavesBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_LEAVES).randomTicks())); + public static final DeferredBlock ROYAL_LEAVES = BLOCKS.register("royal_leaves", + () -> new RoyalLeavesBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_LEAVES).randomTicks())); + public static final DeferredBlock ROYAL_FLOWERING_LEAVES = BLOCKS.register("royal_flowering_leaves", + () -> new RoyalLeavesBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_LEAVES).randomTicks())); public static final DeferredBlock ROYAL_SAPLING = BLOCKS.register("royal_sapling", () -> new RoyalSaplingBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.OAK_SAPLING).noCollission())); public static final DeferredBlock POTTED_ROYAL_SAPLING = BLOCKS.register("potted_royal_sapling", @@ -557,6 +557,10 @@ public final class AntarchyNeoforgeBlocks { .replaceable())); public static final DeferredBlock CREEPING_HORROR_EGG = BLOCKS.register("creeping_horror_egg", () -> new CreepingHorrorEggBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.TURTLE_EGG))); + public static final DeferredBlock PRINCE_EGG = BLOCKS.register("prince_egg", + () -> new com.craisinlord.antarchy.content.block.PrinceEggBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.DRAGON_EGG).randomTicks().noOcclusion())); + public static final DeferredBlock PRINCESS_EGG = BLOCKS.register("princess_egg", + () -> new com.craisinlord.antarchy.content.block.PrincessEggBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.DRAGON_EGG).randomTicks().noOcclusion())); 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", @@ -830,6 +834,12 @@ public final class AntarchyNeoforgeBlocks { () -> new com.craisinlord.antarchy.content.block.StarCoralWallFanBlock(DEAD_STAR_CORAL_WALL_FAN.get(), BlockBehaviour.Properties.ofFullCopy(Blocks.TUBE_CORAL_WALL_FAN).lightLevel(state -> 8))); // Block entity types + public static final DeferredHolder, BlockEntityType> ROYAL_EGG_BLOCK_ENTITY = BLOCK_ENTITY_TYPES.register("royal_egg", + () -> BlockEntityType.Builder.of( + com.craisinlord.antarchy.content.block.entity.RoyalEggBlockEntity::new, + PRINCE_EGG.get(), + PRINCESS_EGG.get() + ).build(null)); public static final DeferredHolder, BlockEntityType> ANT_NEST_BLOCK_ENTITY = BLOCK_ENTITY_TYPES.register("ant_nest", () -> BlockEntityType.Builder.of( AntNestBlockEntity::new, diff --git a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeEntites.java b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeEntites.java index f099a149..863b6664 100644 --- a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeEntites.java +++ b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeEntites.java @@ -495,6 +495,15 @@ public final class AntarchyNeoforgeEntites { .sized(3.0F, 4.0F) .clientTrackingRange(12) .build("hercules_beetle")); + public static final DeferredHolder, EntityType> PRINCE = ENTITY_TYPES.register("prince", + () -> EntityType.Builder.of(com.craisinlord.antarchy.content.entity.royal.PrinceEntity::new, MobCategory.CREATURE) + .sized(2.2F, 2.2F).clientTrackingRange(10).updateInterval(3).fireImmune().build("prince")); + public static final DeferredHolder, EntityType> PRINCESS = ENTITY_TYPES.register("princess", + () -> EntityType.Builder.of(com.craisinlord.antarchy.content.entity.royal.PrincessEntity::new, MobCategory.CREATURE) + .sized(2.2F, 2.2F).clientTrackingRange(10).updateInterval(3).fireImmune().build("princess")); + public static final DeferredHolder, EntityType> ROYAL_BOLT = ENTITY_TYPES.register("royal_bolt", + () -> EntityType.Builder.of(com.craisinlord.antarchy.content.entity.royal.RoyalBoltEntity::new, MobCategory.MISC) + .sized(0.4F, 0.4F).clientTrackingRange(8).updateInterval(1).fireImmune().build("royal_bolt")); public static final DeferredHolder, EntityType> OURANWOOD_DEER = ENTITY_TYPES.register("ouranwood_deer", () -> EntityType.Builder.of(OuranwoodDeerEntity::new, MobCategory.CREATURE) .sized(1.125F, 1.75F) diff --git a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeEntityAttributes.java b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeEntityAttributes.java index 6be89de5..4c1269fa 100644 --- a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeEntityAttributes.java +++ b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeEntityAttributes.java @@ -85,6 +85,8 @@ public class AntarchyNeoforgeEntityAttributes { event.put(AntarchyNeoforgeEntites.CHEEP.get(), com.craisinlord.antarchy.content.entity.CheepEntity.createAttributes().build()); event.put(AntarchyNeoforgeEntites.DORRIE.get(), com.craisinlord.antarchy.content.entity.DorrieEntity.createAttributes().build()); event.put(AntarchyNeoforgeEntites.HERCULES_BEETLE.get(), com.craisinlord.antarchy.content.entity.HerculesBeetleEntity.createAttributes().build()); + event.put(AntarchyNeoforgeEntites.PRINCE.get(), com.craisinlord.antarchy.content.entity.royal.PrinceEntity.createAttributes().build()); + event.put(AntarchyNeoforgeEntites.PRINCESS.get(), com.craisinlord.antarchy.content.entity.royal.PrincessEntity.createAttributes().build()); event.put(AntarchyNeoforgeEntites.OURANWOOD_DEER.get(), com.craisinlord.antarchy.content.entity.OuranwoodDeerEntity.createAttributes().build()); event.put(AntarchyNeoforgeEntites.GLIMMER.get(), com.craisinlord.antarchy.content.entity.glimmer.GlimmerEntity.createAttributes().build()); event.put(AntarchyNeoforgeEntites.ELKA.get(), ElkaEntity.createAttributes().build()); diff --git a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeItems.java b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeItems.java index afdb3310..ca058d52 100644 --- a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeItems.java +++ b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeItems.java @@ -74,6 +74,24 @@ public final class AntarchyNeoforgeItems { () -> Ingredient.of(AntarchyNeoforgeItems.HERCULES_HORN.get()) ); + public static final Tier ROYAL_GUARDIAN_TIER = new SimpleToolTier( + AntarchySettings.royalWeaponDurability(), + 12.0F, + 0.0F, + Tiers.NETHERITE.getIncorrectBlocksForDrops(), + AntarchySettings.royalWeaponEnchantability(), + () -> Ingredient.of(AntarchyNeoforgeItems.KING_SCALE.get()) + ); + + public static final Tier ROYAL_ASSAILANT_TIER = new SimpleToolTier( + AntarchySettings.royalWeaponDurability(), + 12.0F, + 0.0F, + Tiers.NETHERITE.getIncorrectBlocksForDrops(), + AntarchySettings.royalWeaponEnchantability(), + () -> Ingredient.of(AntarchyNeoforgeItems.QUEEN_SCALE.get()) + ); + public static final DeferredItem NIGHTMARE_SCALE = ITEMS.registerSimpleItem("nightmare_scale", new Item.Properties().rarity(Rarity.RARE).fireResistant()); public static final DeferredItem MUSIC_DISC_UNDERSIDE = ITEMS.registerSimpleItem("music_disc_underside", @@ -101,6 +119,26 @@ public final class AntarchyNeoforgeItems { 3.0F, (float) AntarchySettings.nightmareArmorKnockbackResistance() )); + private static final DeferredHolder ROYAL_GUARDIAN_ARMOR_MATERIAL = ARMOR_MATERIALS.register("royal_guardian", + () -> new ArmorMaterial( + new EnumMap<>(ArmorItem.Type.class), + AntarchySettings.royalArmorEnchantability(), + SoundEvents.ARMOR_EQUIP_NETHERITE, + () -> Ingredient.of(AntarchyNeoforgeItems.KING_SCALE.get()), + List.of(new ArmorMaterial.Layer(ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "royal_guardian"))), + 0.0F, + 0.0F + )); + private static final DeferredHolder ROYAL_ASSAILANT_ARMOR_MATERIAL = ARMOR_MATERIALS.register("royal_assailant", + () -> new ArmorMaterial( + new EnumMap<>(ArmorItem.Type.class), + AntarchySettings.royalArmorEnchantability(), + SoundEvents.ARMOR_EQUIP_NETHERITE, + () -> Ingredient.of(AntarchyNeoforgeItems.QUEEN_SCALE.get()), + List.of(new ArmorMaterial.Layer(ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "royal_assailant"))), + 0.0F, + 0.0F + )); private static final DeferredHolder BLOOD_CRYSTAL_ARMOR_MATERIAL = ARMOR_MATERIALS.register("blood_crystal", () -> new ArmorMaterial( createBloodCrystalArmorDefense(), @@ -604,6 +642,10 @@ public final class AntarchyNeoforgeItems { public static final DeferredItem ROSEATE_FROGLIGHT_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.ROSEATE_FROGLIGHT); 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 PRINCE_EGG_ITEM = ITEMS.register("prince_egg", + () -> new net.minecraft.world.item.BlockItem(AntarchyNeoforgeBlocks.PRINCE_EGG.get(), new Item.Properties().rarity(Rarity.EPIC).fireResistant())); + public static final DeferredItem PRINCESS_EGG_ITEM = ITEMS.register("princess_egg", + () -> new net.minecraft.world.item.BlockItem(AntarchyNeoforgeBlocks.PRINCESS_EGG.get(), new Item.Properties().rarity(Rarity.EPIC).fireResistant())); 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 JERRY_EGG_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.JERRY_EGG); @@ -662,10 +704,8 @@ public final class AntarchyNeoforgeItems { public static final DeferredItem MANTIS_CLAW = ITEMS.register("mantis_claw", () -> new MantisClawItem(Tiers.IRON, new Item.Properties().stacksTo(1).durability(50).rarity(Rarity.UNCOMMON))); public static final DeferredItem HERCULES_HORN = ITEMS.registerSimpleItem("hercules_horn", new Item.Properties().rarity(Rarity.UNCOMMON)); - public static final DeferredItem KING_SCALE = ITEMS.register("king_scale", - () -> new MobComingSoonTooltipItem(new Item.Properties().rarity(Rarity.RARE))); - public static final DeferredItem QUEEN_SCALE = ITEMS.register("queen_scale", - () -> new MobComingSoonTooltipItem(new Item.Properties().rarity(Rarity.RARE))); + public static final DeferredItem KING_SCALE = ITEMS.registerSimpleItem("king_scale", new Item.Properties().rarity(Rarity.RARE)); + public static final DeferredItem QUEEN_SCALE = ITEMS.registerSimpleItem("queen_scale", new Item.Properties().rarity(Rarity.RARE)); public static final DeferredItem CHITIN = ITEMS.registerSimpleItem("chitin", new Item.Properties().rarity(Rarity.UNCOMMON)); public static final DeferredItem JERRY_NUCLEUS = ITEMS.register("jerry_nucleus", () -> new com.craisinlord.antarchy.content.item.JerryNucleusItem(new Item.Properties().rarity(Rarity.UNCOMMON) @@ -893,6 +933,33 @@ public final class AntarchyNeoforgeItems { public static final DeferredItem NIGHTMARE_SWORD = ITEMS.register("nightmare_sword", () -> new NightmareSwordItem(ULTIMATE_TIER, new Item.Properties().stacksTo(1).rarity(Rarity.EPIC).fireResistant(), -2.4F)); + + public static final DeferredItem ROYAL_GUARDIAN_HELMET = ITEMS.register("royal_guardian_helmet", + () -> new RoyalGuardianArmorItem(ROYAL_GUARDIAN_ARMOR_MATERIAL, ArmorItem.Type.HELMET, new Item.Properties().rarity(Rarity.EPIC).fireResistant())); + public static final DeferredItem ROYAL_GUARDIAN_CHESTPLATE = ITEMS.register("royal_guardian_chestplate", + () -> new RoyalGuardianArmorItem(ROYAL_GUARDIAN_ARMOR_MATERIAL, ArmorItem.Type.CHESTPLATE, new Item.Properties().rarity(Rarity.EPIC).fireResistant())); + public static final DeferredItem ROYAL_GUARDIAN_LEGGINGS = ITEMS.register("royal_guardian_leggings", + () -> new RoyalGuardianArmorItem(ROYAL_GUARDIAN_ARMOR_MATERIAL, ArmorItem.Type.LEGGINGS, new Item.Properties().rarity(Rarity.EPIC).fireResistant())); + public static final DeferredItem ROYAL_GUARDIAN_BOOTS = ITEMS.register("royal_guardian_boots", + () -> new RoyalGuardianArmorItem(ROYAL_GUARDIAN_ARMOR_MATERIAL, ArmorItem.Type.BOOTS, new Item.Properties().rarity(Rarity.EPIC).fireResistant())); + + public static final DeferredItem ROYAL_ASSAILANT_HELMET = ITEMS.register("royal_assailant_helmet", + () -> new RoyalAssailantArmorItem(ROYAL_ASSAILANT_ARMOR_MATERIAL, ArmorItem.Type.HELMET, new Item.Properties().rarity(Rarity.EPIC).fireResistant())); + public static final DeferredItem ROYAL_ASSAILANT_CHESTPLATE = ITEMS.register("royal_assailant_chestplate", + () -> new RoyalAssailantArmorItem(ROYAL_ASSAILANT_ARMOR_MATERIAL, ArmorItem.Type.CHESTPLATE, new Item.Properties().rarity(Rarity.EPIC).fireResistant())); + public static final DeferredItem ROYAL_ASSAILANT_LEGGINGS = ITEMS.register("royal_assailant_leggings", + () -> new RoyalAssailantArmorItem(ROYAL_ASSAILANT_ARMOR_MATERIAL, ArmorItem.Type.LEGGINGS, new Item.Properties().rarity(Rarity.EPIC).fireResistant())); + public static final DeferredItem ROYAL_ASSAILANT_BOOTS = ITEMS.register("royal_assailant_boots", + () -> new RoyalAssailantArmorItem(ROYAL_ASSAILANT_ARMOR_MATERIAL, ArmorItem.Type.BOOTS, new Item.Properties().rarity(Rarity.EPIC).fireResistant())); + + public static final DeferredItem ROYAL_GUARDIAN_SWORD = ITEMS.register("royal_guardian_sword", + () -> new RoyalGuardianSwordItem(ROYAL_GUARDIAN_TIER, new Item.Properties().stacksTo(1).rarity(Rarity.EPIC).fireResistant())); + public static final DeferredItem ROYAL_ASSAILANT_BATTLEAXE = ITEMS.register("royal_assailant_battleaxe", + () -> new RoyalAssailantBattleAxeItem(ROYAL_ASSAILANT_TIER, new Item.Properties().stacksTo(1).rarity(Rarity.EPIC).fireResistant())); + public static final DeferredItem ROYAL_GUARDIAN_SHIELD = ITEMS.register("royal_guardian_shield", + () -> new RoyalGuardianShieldItem( + new Item.Properties().durability(AntarchySettings.royalGuardianShieldDurability()).rarity(Rarity.EPIC).fireResistant(), + () -> Ingredient.of(KING_SCALE.get()))); public static final DeferredItem SHRINK_RAY = ITEMS.register("shrink_ray", () -> new SizeRayItem( new Item.Properties().stacksTo(1).durability(512).rarity(Rarity.RARE).fireResistant(), @@ -924,6 +991,8 @@ public final class AntarchyNeoforgeItems { AntarchyNeoforgeBlocks.PORTAL_GUN_PORTAL_MASTER, AntarchyNeoforgeBlocks.PORTAL_GUN_PORTAL_BASE )); + public static final DeferredItem EYE_OF_THE_STORM = ITEMS.register("eye_of_the_storm", + () -> new EyeOfTheStormItem(new Item.Properties().stacksTo(1).durability(384).rarity(Rarity.EPIC))); // Temporarily disabled: keeping the code but not registering the item for now. // public static final DeferredItem MINERS_DREAM = ITEMS.register("miners_dream", // () -> new MinersDreamItem(new Item.Properties().stacksTo(1).rarity(Rarity.RARE))); diff --git a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeMisc.java b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeMisc.java index b66fbbd1..44b12f82 100644 --- a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeMisc.java +++ b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeMisc.java @@ -30,6 +30,7 @@ import com.craisinlord.antarchy.neoforge.worldgen.CornPatchFeature; import com.craisinlord.antarchy.neoforge.worldgen.LumenLilyPadFeature; import com.craisinlord.antarchy.content.worldgen.thoraxis.*; import com.craisinlord.antarchy.content.worldgen.truffalo.*; +import com.craisinlord.antarchy.content.worldgen.royal.*; import com.craisinlord.antarchy.neoforge.content.fluid.AntiwaterFluid; import com.mojang.serialization.MapCodec; import net.minecraft.advancements.critereon.EntitySubPredicate; @@ -245,6 +246,8 @@ public final class AntarchyNeoforgeMisc { () -> new NadirTreeFeature(NadirTreeConfiguration.CODEC)); public static final DeferredHolder, TruffaloTreeFeature> TRUFFALO_TREE_FEATURE = FEATURES.register("truffalo_tree", () -> new TruffaloTreeFeature(TruffaloTreeConfiguration.CODEC)); + public static final DeferredHolder, RoyalTreeFeature> ROYAL_TREE_FEATURE = FEATURES.register("royal_tree", + () -> new RoyalTreeFeature(RoyalTreeConfiguration.CODEC)); public static final DeferredHolder, ElythiaFloraFeature> ELYTHIA_FOREST_FLORA = FEATURES.register("elythia_forest_flora", () -> new ElythiaFloraFeature(NoneFeatureConfiguration.CODEC, ElythiaFloraFeature.Variant.FOREST)); public static final DeferredHolder, ElythiaFloraFeature> ELYTHIA_MEADOW_FLORA = FEATURES.register("elythia_meadow_flora", diff --git a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgePayloadHandlers.java b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgePayloadHandlers.java index 49a90697..14e3d78e 100644 --- a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgePayloadHandlers.java +++ b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgePayloadHandlers.java @@ -41,6 +41,43 @@ public class AntarchyNeoforgePayloadHandlers { com.craisinlord.antarchy.content.client.TigerEyeCamouflageClientState.update(payload.entityId(), payload.active(), payload.blockStateId()) ) ); + registrar.playToServer( + com.craisinlord.antarchy.content.network.ToggleRoyalInversionPayload.TYPE, + com.craisinlord.antarchy.content.network.ToggleRoyalInversionPayload.STREAM_CODEC, + (payload, ctx) -> ctx.enqueueWork(() -> { + if (ctx.player() instanceof net.minecraft.server.level.ServerPlayer player) { + com.craisinlord.antarchy.content.item.RoyalAssailantArmorItem.toggleInversion(player); + } + }) + ); + registrar.playToServer( + com.craisinlord.antarchy.content.network.RoyalMountActionPayload.TYPE, + com.craisinlord.antarchy.content.network.RoyalMountActionPayload.STREAM_CODEC, + (payload, ctx) -> ctx.enqueueWork(() -> { + if (!(ctx.player() instanceof net.minecraft.server.level.ServerPlayer player) + || !(player.getVehicle() instanceof com.craisinlord.antarchy.content.entity.royal.RoyalMountEntity mount)) { + return; + } + switch (payload.action()) { + case com.craisinlord.antarchy.content.network.RoyalMountActionPayload.FLIGHT_TOGGLE -> mount.toggleMountedFlight(player); + case com.craisinlord.antarchy.content.network.RoyalMountActionPayload.BITE -> mount.handleMountedBite(player); + case com.craisinlord.antarchy.content.network.RoyalMountActionPayload.SPIT -> mount.handleMountedSpit(player); + default -> { + } + } + }) + ); + registrar.playToServer( + com.craisinlord.antarchy.content.network.RoyalMountVerticalPayload.TYPE, + com.craisinlord.antarchy.content.network.RoyalMountVerticalPayload.STREAM_CODEC, + (payload, ctx) -> ctx.enqueueWork(() -> { + if (ctx.player() instanceof net.minecraft.server.level.ServerPlayer player + && player.getVehicle() instanceof com.craisinlord.antarchy.content.entity.royal.RoyalMountEntity mount) { + mount.setRiderAscend(payload.ascend()); + mount.setRiderDescend(payload.descend()); + } + }) + ); registrar.playToServer( ToggleTigerEyeCamouflagePayload.TYPE, ToggleTigerEyeCamouflagePayload.STREAM_CODEC, diff --git a/neoforge-1.21.1/src/main/resources/assets/antarchy/models/item/eye_of_the_storm.json b/neoforge-1.21.1/src/main/resources/assets/antarchy/models/item/eye_of_the_storm.json new file mode 100644 index 00000000..786b87bc --- /dev/null +++ b/neoforge-1.21.1/src/main/resources/assets/antarchy/models/item/eye_of_the_storm.json @@ -0,0 +1,25 @@ +{ + "loader": "neoforge:separate_transforms", + "gui_light": "front", + "textures": { + "layer0": "antarchy:item/eye_of_the_storm/eye_of_the_storm_item" + }, + "base": { + "parent": "antarchy:item/eye_of_the_storm_held_geo" + }, + "texture_size": [ + 64, + 64 + ], + "perspectives": { + "gui": { + "parent": "antarchy:item/eye_of_the_storm_gui" + }, + "ground": { + "parent": "antarchy:item/eye_of_the_storm_gui" + }, + "fixed": { + "parent": "antarchy:item/eye_of_the_storm_gui" + } + } +} diff --git a/neoforge-1.21.1/src/main/resources/assets/antarchy/models/item/royal_assailant_battleaxe.json b/neoforge-1.21.1/src/main/resources/assets/antarchy/models/item/royal_assailant_battleaxe.json new file mode 100644 index 00000000..15d4aea4 --- /dev/null +++ b/neoforge-1.21.1/src/main/resources/assets/antarchy/models/item/royal_assailant_battleaxe.json @@ -0,0 +1,25 @@ +{ + "loader": "neoforge:separate_transforms", + "gui_light": "front", + "textures": { + "layer0": "antarchy:item/royal_assailant/royal_assailant_battleaxe_item" + }, + "base": { + "parent": "antarchy:item/royal_assailant_battleaxe_held" + }, + "texture_size": [ + 64, + 64 + ], + "perspectives": { + "gui": { + "parent": "antarchy:item/royal_assailant_battleaxe_gui" + }, + "ground": { + "parent": "antarchy:item/royal_assailant_battleaxe_gui" + }, + "fixed": { + "parent": "antarchy:item/royal_assailant_battleaxe_gui" + } + } +} diff --git a/neoforge-1.21.1/src/main/resources/assets/antarchy/models/item/royal_guardian_sword.json b/neoforge-1.21.1/src/main/resources/assets/antarchy/models/item/royal_guardian_sword.json new file mode 100644 index 00000000..bb2eb9df --- /dev/null +++ b/neoforge-1.21.1/src/main/resources/assets/antarchy/models/item/royal_guardian_sword.json @@ -0,0 +1,25 @@ +{ + "loader": "neoforge:separate_transforms", + "gui_light": "front", + "textures": { + "layer0": "antarchy:item/royal_guardian/royal_guardian_sword_item" + }, + "base": { + "parent": "antarchy:item/royal_guardian_sword_held" + }, + "texture_size": [ + 64, + 64 + ], + "perspectives": { + "gui": { + "parent": "antarchy:item/royal_guardian_sword_gui" + }, + "ground": { + "parent": "antarchy:item/royal_guardian_sword_gui" + }, + "fixed": { + "parent": "antarchy:item/royal_guardian_sword_gui" + } + } +}