From 26422f23cf7291d53368747b44ffb46d0419498b Mon Sep 17 00:00:00 2001 From: Eli Gibbs Date: Thu, 11 Jun 2026 23:13:11 -0400 Subject: [PATCH] starts to add mawsonia and alligator gar as well as scale debug --- .../jurassicrevived/CommonClientClass.java | 2 + .../net/cmr/jurassicrevived/Constants.java | 2 +- .../jurassicrevived/entity/ModEntities.java | 10 + .../entity/ai/DinoEntityBase.java | 46 +- .../entity/client/AchillobatorRenderer.java | 2 +- .../entity/client/AlbertosaurusRenderer.java | 2 +- .../entity/client/AlligatorGarModel.java | 113 ++ .../entity/client/AlligatorGarRenderer.java | 21 + .../entity/client/AlligatorGarVariant.java | 26 + .../entity/client/AllosaurusRenderer.java | 2 +- .../entity/client/AlvarezsaurusRenderer.java | 2 +- .../entity/client/AnkylosaurusRenderer.java | 2 +- .../entity/client/ApatosaurusRenderer.java | 2 +- .../entity/client/ArambourgianiaRenderer.java | 2 +- .../entity/client/BaryonyxRenderer.java | 2 +- .../entity/client/BrachiosaurusRenderer.java | 2 +- .../client/CarcharodontosaurusRenderer.java | 2 +- .../entity/client/CarnotaurusRenderer.java | 2 +- .../entity/client/CearadactylusRenderer.java | 2 +- .../entity/client/CeratosaurusRenderer.java | 2 +- .../entity/client/ChasmosaurusRenderer.java | 2 +- .../entity/client/ChickenosaurusRenderer.java | 2 +- .../entity/client/ChilesaurusRenderer.java | 2 +- .../entity/client/CoelacanthModel.java | 6 +- .../entity/client/CoelacanthRenderer.java | 2 +- .../entity/client/CoelophysisRenderer.java | 2 +- .../entity/client/CoelurusRenderer.java | 2 +- .../entity/client/CompsognathusRenderer.java | 2 +- .../entity/client/ConcavenatorRenderer.java | 2 +- .../entity/client/CorythosaurusRenderer.java | 2 +- .../entity/client/DeinonychusRenderer.java | 2 +- .../entity/client/DilophosaurusRenderer.java | 2 +- .../entity/client/DimorphodonRenderer.java | 2 +- .../entity/client/DiplodocusRenderer.java | 2 +- .../entity/client/DistortusRexRenderer.java | 2 +- .../entity/client/DryosaurusRenderer.java | 2 +- .../entity/client/EdmontosaurusRenderer.java | 2 +- .../entity/client/FDuckRenderer.java | 2 +- .../entity/client/GallimimusRenderer.java | 2 +- .../entity/client/GeosternbergiaRenderer.java | 2 +- .../entity/client/GiganotosaurusRenderer.java | 2 +- .../entity/client/GuanlongRenderer.java | 2 +- .../entity/client/GuidracoRenderer.java | 2 +- .../entity/client/HadrosaurusRenderer.java | 2 +- .../entity/client/HerrerasaurusRenderer.java | 2 +- .../entity/client/HypsilophodonRenderer.java | 2 +- .../entity/client/IndominusRexRenderer.java | 2 +- .../entity/client/IndoraptorRenderer.java | 2 +- .../entity/client/InostranceviaRenderer.java | 2 +- .../entity/client/LambeosaurusRenderer.java | 2 +- .../entity/client/LudodactylusRenderer.java | 2 +- .../entity/client/MajungasaurusRenderer.java | 2 +- .../entity/client/MamenchisaurusRenderer.java | 2 +- .../entity/client/MawsoniaModel.java | 114 ++ .../entity/client/MawsoniaRenderer.java | 21 + .../entity/client/MawsoniaVariant.java | 26 + .../client/MetriacanthosaurusRenderer.java | 2 +- .../entity/client/MoganopterusRenderer.java | 2 +- .../entity/client/MussasaurusRenderer.java | 2 +- .../entity/client/NyctosaurusRenderer.java | 2 +- .../entity/client/OrnitholestesRenderer.java | 2 +- .../entity/client/OrnithomimusRenderer.java | 2 +- .../entity/client/OuranosaurusRenderer.java | 2 +- .../entity/client/OviraptorRenderer.java | 2 +- .../client/PachycephalosaurusRenderer.java | 2 +- .../client/ParasaurolophusRenderer.java | 2 +- .../client/ProceratosaurusRenderer.java | 2 +- .../client/ProcompsognathusRenderer.java | 2 +- .../entity/client/ProtoceratopsRenderer.java | 2 +- .../entity/client/PteranodonRenderer.java | 2 +- .../entity/client/PterodaustroRenderer.java | 2 +- .../entity/client/QuetzalcoatlusRenderer.java | 2 +- .../entity/client/RajasaurusRenderer.java | 2 +- .../entity/client/RugopsRenderer.java | 2 +- .../entity/client/SegisaurusRenderer.java | 2 +- .../client/ShantungosaurusRenderer.java | 2 +- .../entity/client/SpinosaurusRenderer.java | 2 +- .../entity/client/StegosaurusRenderer.java | 2 +- .../entity/client/StyracosaurusRenderer.java | 2 +- .../entity/client/SuchomimusRenderer.java | 2 +- .../entity/client/TapejaraRenderer.java | 2 +- .../client/TherizinosaurusRenderer.java | 2 +- .../entity/client/ThescelosaurusRenderer.java | 2 +- .../entity/client/TitanosaurusRenderer.java | 2 +- .../entity/client/TriceratopsRenderer.java | 2 +- .../entity/client/TroodonRenderer.java | 2 +- .../entity/client/TropeognathusRenderer.java | 2 +- .../entity/client/TupuxuaraRenderer.java | 2 +- .../client/TyrannosaurusRexRenderer.java | 2 +- .../entity/client/UtahraptorRenderer.java | 2 +- .../entity/client/VelociraptorRenderer.java | 2 +- .../client/ZhenyuanopterusRenderer.java | 2 +- .../entity/custom/AchillobatorEntity.java | 2 +- .../entity/custom/AlbertosaurusEntity.java | 2 +- .../entity/custom/AlligatorGarEntity.java | 395 ++++++ .../entity/custom/AllosaurusEntity.java | 2 +- .../entity/custom/AlvarezsaurusEntity.java | 2 +- .../entity/custom/AnkylosaurusEntity.java | 2 +- .../entity/custom/ApatosaurusEntity.java | 2 +- .../entity/custom/ArambourgianiaEntity.java | 2 +- .../entity/custom/BaryonyxEntity.java | 2 +- .../entity/custom/BrachiosaurusEntity.java | 2 +- .../custom/CarcharodontosaurusEntity.java | 2 +- .../entity/custom/CarnotaurusEntity.java | 2 +- .../entity/custom/CearadactylusEntity.java | 2 +- .../entity/custom/CeratosaurusEntity.java | 2 +- .../entity/custom/ChasmosaurusEntity.java | 2 +- .../entity/custom/ChickenosaurusEntity.java | 2 +- .../entity/custom/ChilesaurusEntity.java | 2 +- .../entity/custom/CoelacanthEntity.java | 2 +- .../entity/custom/CoelophysisEntity.java | 2 +- .../entity/custom/CoelurusEntity.java | 2 +- .../entity/custom/CompsognathusEntity.java | 2 +- .../entity/custom/ConcavenatorEntity.java | 2 +- .../entity/custom/CorythosaurusEntity.java | 2 +- .../entity/custom/DeinonychusEntity.java | 2 +- .../entity/custom/DilophosaurusEntity.java | 2 +- .../entity/custom/DimorphodonEntity.java | 2 +- .../entity/custom/DiplodocusEntity.java | 2 +- .../entity/custom/DistortusRexEntity.java | 2 +- .../entity/custom/DryosaurusEntity.java | 2 +- .../entity/custom/EdmontosaurusEntity.java | 2 +- .../entity/custom/FDuckEntity.java | 2 +- .../entity/custom/GallimimusEntity.java | 2 +- .../entity/custom/GeosternbergiaEntity.java | 2 +- .../entity/custom/GiganotosaurusEntity.java | 2 +- .../entity/custom/GuanlongEntity.java | 2 +- .../entity/custom/GuidracoEntity.java | 2 +- .../entity/custom/HadrosaurusEntity.java | 2 +- .../entity/custom/HerrerasaurusEntity.java | 2 +- .../entity/custom/HypsilophodonEntity.java | 2 +- .../entity/custom/IndominusRexEntity.java | 2 +- .../entity/custom/IndoraptorEntity.java | 2 +- .../entity/custom/InostranceviaEntity.java | 2 +- .../entity/custom/LambeosaurusEntity.java | 2 +- .../entity/custom/LudodactylusEntity.java | 2 +- .../entity/custom/MajungasaurusEntity.java | 2 +- .../entity/custom/MamenchisaurusEntity.java | 2 +- .../entity/custom/MawsoniaEntity.java | 395 ++++++ .../custom/MetriacanthosaurusEntity.java | 2 +- .../entity/custom/MoganopterusEntity.java | 2 +- .../entity/custom/MussasaurusEntity.java | 2 +- .../entity/custom/NyctosaurusEntity.java | 2 +- .../entity/custom/OrnitholestesEntity.java | 2 +- .../entity/custom/OrnithomimusEntity.java | 2 +- .../entity/custom/OuranosaurusEntity.java | 2 +- .../entity/custom/OviraptorEntity.java | 2 +- .../custom/PachycephalosaurusEntity.java | 2 +- .../entity/custom/ParasaurolophusEntity.java | 2 +- .../entity/custom/ProceratosaurusEntity.java | 2 +- .../entity/custom/ProcompsognathusEntity.java | 2 +- .../entity/custom/ProtoceratopsEntity.java | 2 +- .../entity/custom/PteranodonEntity.java | 2 +- .../entity/custom/PterodaustroEntity.java | 2 +- .../entity/custom/QuetzalcoatlusEntity.java | 2 +- .../entity/custom/RajasaurusEntity.java | 2 +- .../entity/custom/RugopsEntity.java | 2 +- .../entity/custom/SegisaurusEntity.java | 2 +- .../entity/custom/ShantungosaurusEntity.java | 2 +- .../entity/custom/SpinosaurusEntity.java | 2 +- .../entity/custom/StegosaurusEntity.java | 2 +- .../entity/custom/StyracosaurusEntity.java | 2 +- .../entity/custom/SuchomimusEntity.java | 2 +- .../entity/custom/TapejaraEntity.java | 2 +- .../entity/custom/TherizinosaurusEntity.java | 2 +- .../entity/custom/ThescelosaurusEntity.java | 2 +- .../entity/custom/TitanosaurusEntity.java | 2 +- .../entity/custom/TriceratopsEntity.java | 2 +- .../entity/custom/TroodonEntity.java | 2 +- .../entity/custom/TropeognathusEntity.java | 2 +- .../entity/custom/TupuxuaraEntity.java | 2 +- .../entity/custom/TyrannosaurusRexEntity.java | 2 +- .../entity/custom/UtahraptorEntity.java | 2 +- .../entity/custom/VelociraptorEntity.java | 2 +- .../entity/custom/ZhenyuanopterusEntity.java | 2 +- .../animations/alligator_gar.animation.json | 990 ++++++++++++++ .../animations/mawsonia.animation.json | 1142 +++++++++++++++++ .../geo/alligator_gar.geo.json | 280 ++++ .../jurassicrevived/geo/mawsonia.geo.json | 471 +++++++ .../textures/entity/alligator_gar.png | Bin 0 -> 25169 bytes .../textures/entity/alligator_gar_female.png | Bin 0 -> 25154 bytes .../textures/entity/mawsonia.png | Bin 0 -> 96224 bytes .../textures/entity/mawsonia_female.png | Bin 0 -> 93813 bytes gradle.properties | 2 +- 184 files changed, 4214 insertions(+), 172 deletions(-) create mode 100644 common/src/main/java/net/cmr/jurassicrevived/entity/client/AlligatorGarModel.java create mode 100644 common/src/main/java/net/cmr/jurassicrevived/entity/client/AlligatorGarRenderer.java create mode 100644 common/src/main/java/net/cmr/jurassicrevived/entity/client/AlligatorGarVariant.java create mode 100644 common/src/main/java/net/cmr/jurassicrevived/entity/client/MawsoniaModel.java create mode 100644 common/src/main/java/net/cmr/jurassicrevived/entity/client/MawsoniaRenderer.java create mode 100644 common/src/main/java/net/cmr/jurassicrevived/entity/client/MawsoniaVariant.java create mode 100644 common/src/main/java/net/cmr/jurassicrevived/entity/custom/AlligatorGarEntity.java create mode 100644 common/src/main/java/net/cmr/jurassicrevived/entity/custom/MawsoniaEntity.java create mode 100644 common/src/main/resources/assets/jurassicrevived/animations/alligator_gar.animation.json create mode 100644 common/src/main/resources/assets/jurassicrevived/animations/mawsonia.animation.json create mode 100644 common/src/main/resources/assets/jurassicrevived/geo/alligator_gar.geo.json create mode 100644 common/src/main/resources/assets/jurassicrevived/geo/mawsonia.geo.json create mode 100644 common/src/main/resources/assets/jurassicrevived/textures/entity/alligator_gar.png create mode 100644 common/src/main/resources/assets/jurassicrevived/textures/entity/alligator_gar_female.png create mode 100644 common/src/main/resources/assets/jurassicrevived/textures/entity/mawsonia.png create mode 100644 common/src/main/resources/assets/jurassicrevived/textures/entity/mawsonia_female.png diff --git a/common/src/main/java/net/cmr/jurassicrevived/CommonClientClass.java b/common/src/main/java/net/cmr/jurassicrevived/CommonClientClass.java index f646fcf..778ff2a 100644 --- a/common/src/main/java/net/cmr/jurassicrevived/CommonClientClass.java +++ b/common/src/main/java/net/cmr/jurassicrevived/CommonClientClass.java @@ -116,6 +116,8 @@ public class CommonClientClass { EntityRendererRegistry.register(ModEntities.MUSSASAURUS, MussasaurusRenderer::new); EntityRendererRegistry.register(ModEntities.THESCELOSAURUS, ThescelosaurusRenderer::new); EntityRendererRegistry.register(ModEntities.COELACANTH, CoelacanthRenderer::new); + EntityRendererRegistry.register(ModEntities.MAWSONIA, MawsoniaRenderer::new); + EntityRendererRegistry.register(ModEntities.ALLIGATOR_GAR, AlligatorGarRenderer::new); if (Platform.isFabric()) { registerSpawnEggColors(); diff --git a/common/src/main/java/net/cmr/jurassicrevived/Constants.java b/common/src/main/java/net/cmr/jurassicrevived/Constants.java index a8c3eb7..3fab5a7 100644 --- a/common/src/main/java/net/cmr/jurassicrevived/Constants.java +++ b/common/src/main/java/net/cmr/jurassicrevived/Constants.java @@ -11,7 +11,7 @@ public class Constants public static final String MOD_NAME = "JurassicRevived"; public static final Logger LOG = LoggerFactory.getLogger(MOD_NAME); - public static final boolean DEBUG_SIZES = false; + public static final boolean DEBUG_SIZES = true; public static ResourceLocation rl(String path) { //? if >1.20.1 { diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/ModEntities.java b/common/src/main/java/net/cmr/jurassicrevived/entity/ModEntities.java index 6855201..66acefd 100644 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/ModEntities.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/ModEntities.java @@ -355,6 +355,14 @@ public class ModEntities { ENTITIES.register("coelacanth", () -> EntityType.Builder.of(CoelacanthEntity::new, MobCategory.CREATURE) .sized(1.3f, 1.8f).build("coelacanth")); + public static final RegistrySupplier> MAWSONIA = + ENTITIES.register("mawsonia", () -> EntityType.Builder.of(MawsoniaEntity::new, MobCategory.CREATURE) + .sized(1.3f, 1.8f).build("mawsonia")); + + public static final RegistrySupplier> ALLIGATOR_GAR = + ENTITIES.register("alligator_gar", () -> EntityType.Builder.of(AlligatorGarEntity::new, MobCategory.CREATURE) + .sized(1.3f, 1.8f).build("alligator_gar")); + public static void registerAttributes() { EntityAttributeRegistry.register(APATOSAURUS, ApatosaurusEntity::createAttributes); EntityAttributeRegistry.register(ALBERTOSAURUS, AlbertosaurusEntity::createAttributes); @@ -437,6 +445,8 @@ public class ModEntities { EntityAttributeRegistry.register(MUSSASAURUS, MussasaurusEntity::createAttributes); EntityAttributeRegistry.register(THESCELOSAURUS, ThescelosaurusEntity::createAttributes); EntityAttributeRegistry.register(COELACANTH, CoelacanthEntity::createAttributes); + EntityAttributeRegistry.register(MAWSONIA, MawsoniaEntity::createAttributes); + EntityAttributeRegistry.register(ALLIGATOR_GAR, AlligatorGarEntity::createAttributes); } public static void registerSpawnPlacements() { diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/ai/DinoEntityBase.java b/common/src/main/java/net/cmr/jurassicrevived/entity/ai/DinoEntityBase.java index b16d20f..de5c22c 100755 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/ai/DinoEntityBase.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/ai/DinoEntityBase.java @@ -35,9 +35,20 @@ public abstract class DinoEntityBase extends Animal { public float liveDebugWidth = -1.0F; public float liveDebugHeight = -1.0F; + public float liveDebugScale = -1.0F; + + public final float getDinoScale() { + // If debug is active, intercept the scale + if (Constants.DEBUG_SIZES && liveDebugScale > 0) { + return liveDebugScale; + } + // Otherwise, ask the specific dinosaur what its scale should be + return this.getLiveDinoScale(); + } - public float getDinoScale() { - return 1.0F; + // 2. The Hook: Subclasses will override this instead of getDinoScale() + public float getLiveDinoScale() { + return 1.0F; // Default base scale } @Override @@ -205,14 +216,12 @@ public abstract class DinoEntityBase extends Animal { } else if (hand == InteractionHand.OFF_HAND) { liveDebugHeight += adjustment; // Off hand edits HEIGHT } - - // INSTANT VISUAL UPDATE (Works because mobInteract is client+server) this.refreshDimensions(); if (!this.level().isClientSide) { String action = player.isShiftKeyDown() ? "§c[-] SHRUNK" : "§a[+] GREW"; String dimension = hand == InteractionHand.MAIN_HAND ? "WIDTH" : "HEIGHT"; - String dinoName = net.minecraft.world.entity.EntityType.getKey(this.getType()).getPath(); + String dinoName = EntityType.getKey(this.getType()).getPath(); player.sendSystemMessage(Component.literal(action + " " + dimension + "§f: " + dinoName + " -> §e.sized(" + String.format("%.1f", liveDebugWidth) + "F, " + @@ -222,6 +231,33 @@ public abstract class DinoEntityBase extends Animal { } // --- END LIVE HITBOX TUNER --- + + // --- LIVE SCALE TUNER --- + if (Constants.DEBUG_SIZES && stack.is(Items.BONE)) { + if (liveDebugScale < 0) { + liveDebugScale = 1.0F; + } + + float adjustment = player.isShiftKeyDown() ? -0.1f : 0.1f; + liveDebugScale += adjustment; + + if (liveDebugScale < 0.1F) { + liveDebugScale = 0.1F; + } + + this.refreshDimensions(); + + if (!this.level().isClientSide) { + String action = player.isShiftKeyDown() ? "§cShrunk" : "§aGrown"; + String dinoName = EntityType.getKey(this.getType()).getPath(); + player.sendSystemMessage(Component.literal(action + " SCALE§f: " + dinoName + + " -> §e" + String.format("%.1f", liveDebugScale) + "x")); + + } + return InteractionResult.SUCCESS; + } + // --- END LIVE SCALE TUNER --- + if (this.isFood(stack)) { if (!this.level().isClientSide) { feedDino(player, stack); diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/client/AchillobatorRenderer.java b/common/src/main/java/net/cmr/jurassicrevived/entity/client/AchillobatorRenderer.java index 6e26251..71d660b 100644 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/client/AchillobatorRenderer.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/client/AchillobatorRenderer.java @@ -16,7 +16,7 @@ public class AchillobatorRenderer extends GeoEntityRenderer @Override public void scaleModelForRender(float widthScale, float heightScale, PoseStack poseStack, AchillobatorEntity animatable, BakedGeoModel model, boolean isReRender, float partialTick, int packedLight, int packedOverlay) { super.scaleModelForRender(widthScale, heightScale, poseStack, animatable, model, isReRender, partialTick, packedLight, packedOverlay); - float scale = animatable.getTotalModelScale(); + float scale = animatable.getDinoScale(); poseStack.scale(scale, scale, scale); } } diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/client/AlbertosaurusRenderer.java b/common/src/main/java/net/cmr/jurassicrevived/entity/client/AlbertosaurusRenderer.java index b839a96..670fa2e 100755 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/client/AlbertosaurusRenderer.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/client/AlbertosaurusRenderer.java @@ -16,7 +16,7 @@ public class AlbertosaurusRenderer extends GeoEntityRenderer { + + private static final Map LOCATION_BY_VARIANT = + Util.make(Maps.newEnumMap(AlligatorGarVariant.class), map -> { + map.put(AlligatorGarVariant.MALE, Constants.rl("textures/entity/alligator_gar.png")); + map.put(AlligatorGarVariant.FEMALE, Constants.rl("textures/entity/alligator_gar_female.png")); + }); + + // Model-local "currently applied" offsets; cleared before each entity render + private float[] appliedYaw = null; + private float[] appliedRoll = null; + + @Override + public ResourceLocation getModelResource(AlligatorGarEntity animatable) { + return Constants.rl("geo/alligator_gar.geo.json"); + } + + @Override + public ResourceLocation getTextureResource(AlligatorGarEntity animatable) { + return LOCATION_BY_VARIANT.get(animatable.getVariant()); + } + + @Override + public ResourceLocation getAnimationResource(AlligatorGarEntity animatable) { + return Constants.rl("animations/alligator_gar.animation.json"); + } + + @Override + public void setCustomAnimations(AlligatorGarEntity entity, long id, AnimationState state) { + super.setCustomAnimations(entity, id, state); + + String[] tailBones = { "BodySection3", "TailSection1", "TailSection2", "TailSection3", "TailSection5", "TailSection4" }; + int n = tailBones.length; + + if (appliedYaw == null || appliedYaw.length != n) { + appliedYaw = new float[n]; + appliedRoll = new float[n]; + } + + // 1) Clear previous offsets (from the last entity rendered with this model instance) + for (int i = 0; i < n; i++) { + if (appliedYaw[i] == 0.0f && appliedRoll[i] == 0.0f) continue; + GeoBone bone = (GeoBone) getAnimationProcessor().getBone(tailBones[i]); + if (bone == null) continue; + if (appliedYaw[i] != 0.0f) bone.setRotY(bone.getRotY() - appliedYaw[i]); + if (appliedRoll[i] != 0.0f) bone.setRotZ(bone.getRotZ() - appliedRoll[i]); + appliedYaw[i] = 0.0f; + appliedRoll[i] = 0.0f; + } + + // 2) Interpolated sway for extra smoothness between ticks + float sway = entity.getTailSwayOffset(state.getPartialTick()); // [-1, 1] + + // Tuning + float maxYawDeg = 22.0f; // increased max sweep + float swayGain = 1.35f; // amplifies overall power + float rollFraction = 0.40f; // slightly stronger roll for heft + + float deg2rad = (float)Math.PI / 180f; + + // Direction: positive sway (left turn) -> tail swings right (negative yaw) + // Flip the sign here if the sway feels inverted + float baseYaw = sway * maxYawDeg * deg2rad; + float baseRoll = -baseYaw * rollFraction; + + float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f }; + + for (int i = 0; i < n; i++) { + GeoBone bone = (GeoBone) getAnimationProcessor().getBone(tailBones[i]); + if (bone == null) continue; + + float w = weights[i]; + float yaw = baseYaw * w; + float roll = baseRoll * w; + + // OVERRIDE animations on Y/Z only: keep the model's predefined X bend intact + // Do NOT reset rotX here, so the upward bend stays + bone.setRotY(yaw); + bone.setRotZ(roll); + + appliedYaw[i] = yaw; + appliedRoll[i] = roll; + } + + GeoBone head = (GeoBone) getAnimationProcessor().getBone("Neck"); + + if (head != null) { + var entityData = state.getData(DataTickets.ENTITY_MODEL_DATA); + float clampedYawDeg = Mth.clamp(entityData.netHeadYaw(), -20.0f, 20.0f); + head.setRotY(clampedYawDeg * Mth.DEG_TO_RAD); + } + } +} diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/client/AlligatorGarRenderer.java b/common/src/main/java/net/cmr/jurassicrevived/entity/client/AlligatorGarRenderer.java new file mode 100644 index 0000000..9c0a79b --- /dev/null +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/client/AlligatorGarRenderer.java @@ -0,0 +1,21 @@ +package net.cmr.jurassicrevived.entity.client; + +import com.mojang.blaze3d.vertex.PoseStack; +import net.cmr.jurassicrevived.entity.custom.AlligatorGarEntity; +import net.minecraft.client.renderer.entity.EntityRendererProvider; +import software.bernie.geckolib.cache.object.BakedGeoModel; +import software.bernie.geckolib.renderer.GeoEntityRenderer; + + +public class AlligatorGarRenderer extends GeoEntityRenderer { + public AlligatorGarRenderer(EntityRendererProvider.Context renderManager) { + super(renderManager, new AlligatorGarModel()); + } + + @Override + public void scaleModelForRender(float widthScale, float heightScale, PoseStack poseStack, AlligatorGarEntity animatable, BakedGeoModel model, boolean isReRender, float partialTick, int packedLight, int packedOverlay) { + super.scaleModelForRender(widthScale, heightScale, poseStack, animatable, model, isReRender, partialTick, packedLight, packedOverlay); + float scale = animatable.getDinoScale(); + poseStack.scale(scale, scale, scale); + } +} diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/client/AlligatorGarVariant.java b/common/src/main/java/net/cmr/jurassicrevived/entity/client/AlligatorGarVariant.java new file mode 100644 index 0000000..376a700 --- /dev/null +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/client/AlligatorGarVariant.java @@ -0,0 +1,26 @@ +package net.cmr.jurassicrevived.entity.client; + +import java.util.Arrays; +import java.util.Comparator; + +public enum AlligatorGarVariant { + MALE(0), + FEMALE(1); + + private static final AlligatorGarVariant[] BY_ID = Arrays.stream(values()).sorted( + Comparator.comparingInt(AlligatorGarVariant::getId)).toArray(AlligatorGarVariant[]::new); + + private final int id; + + AlligatorGarVariant(int id) { + this.id = id; + } + + public int getId() { + return id; + } + + public static AlligatorGarVariant byId(int id) { + return BY_ID[id % BY_ID.length]; + } +} diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/client/AllosaurusRenderer.java b/common/src/main/java/net/cmr/jurassicrevived/entity/client/AllosaurusRenderer.java index 5a040a4..a35d044 100755 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/client/AllosaurusRenderer.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/client/AllosaurusRenderer.java @@ -16,7 +16,7 @@ public class AllosaurusRenderer extends GeoEntityRenderer { @Override public void scaleModelForRender(float widthScale, float heightScale, PoseStack poseStack, AllosaurusEntity animatable, BakedGeoModel model, boolean isReRender, float partialTick, int packedLight, int packedOverlay) { super.scaleModelForRender(widthScale, heightScale, poseStack, animatable, model, isReRender, partialTick, packedLight, packedOverlay); - float scale = animatable.getTotalModelScale(); + float scale = animatable.getDinoScale(); poseStack.scale(scale, scale, scale); } } diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/client/AlvarezsaurusRenderer.java b/common/src/main/java/net/cmr/jurassicrevived/entity/client/AlvarezsaurusRenderer.java index b4daef0..3010b80 100755 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/client/AlvarezsaurusRenderer.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/client/AlvarezsaurusRenderer.java @@ -16,7 +16,7 @@ public class AlvarezsaurusRenderer extends GeoEntityRenderer @Override public void scaleModelForRender(float widthScale, float heightScale, PoseStack poseStack, AnkylosaurusEntity animatable, BakedGeoModel model, boolean isReRender, float partialTick, int packedLight, int packedOverlay) { super.scaleModelForRender(widthScale, heightScale, poseStack, animatable, model, isReRender, partialTick, packedLight, packedOverlay); - float scale = animatable.getTotalModelScale(); + float scale = animatable.getDinoScale(); poseStack.scale(scale, scale, scale); } } diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/client/ApatosaurusRenderer.java b/common/src/main/java/net/cmr/jurassicrevived/entity/client/ApatosaurusRenderer.java index 7f94c99..6a60242 100755 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/client/ApatosaurusRenderer.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/client/ApatosaurusRenderer.java @@ -16,7 +16,7 @@ public class ApatosaurusRenderer extends GeoEntityRenderer { @Override public void scaleModelForRender(float widthScale, float heightScale, PoseStack poseStack, ApatosaurusEntity animatable, BakedGeoModel model, boolean isReRender, float partialTick, int packedLight, int packedOverlay) { super.scaleModelForRender(widthScale, heightScale, poseStack, animatable, model, isReRender, partialTick, packedLight, packedOverlay); - float scale = animatable.getTotalModelScale(); + float scale = animatable.getDinoScale(); poseStack.scale(scale, scale, scale); } } diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/client/ArambourgianiaRenderer.java b/common/src/main/java/net/cmr/jurassicrevived/entity/client/ArambourgianiaRenderer.java index 0c0ee2b..10b6da7 100755 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/client/ArambourgianiaRenderer.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/client/ArambourgianiaRenderer.java @@ -16,7 +16,7 @@ public class ArambourgianiaRenderer extends GeoEntityRenderer { @Override public void scaleModelForRender(float widthScale, float heightScale, PoseStack poseStack, BaryonyxEntity animatable, BakedGeoModel model, boolean isReRender, float partialTick, int packedLight, int packedOverlay) { super.scaleModelForRender(widthScale, heightScale, poseStack, animatable, model, isReRender, partialTick, packedLight, packedOverlay); - float scale = animatable.getTotalModelScale(); + float scale = animatable.getDinoScale(); poseStack.scale(scale, scale, scale); } } diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/client/BrachiosaurusRenderer.java b/common/src/main/java/net/cmr/jurassicrevived/entity/client/BrachiosaurusRenderer.java index ffac3a9..0b1f53d 100755 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/client/BrachiosaurusRenderer.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/client/BrachiosaurusRenderer.java @@ -16,7 +16,7 @@ public class BrachiosaurusRenderer extends GeoEntityRenderer { @Override public void scaleModelForRender(float widthScale, float heightScale, PoseStack poseStack, CarnotaurusEntity animatable, BakedGeoModel model, boolean isReRender, float partialTick, int packedLight, int packedOverlay) { super.scaleModelForRender(widthScale, heightScale, poseStack, animatable, model, isReRender, partialTick, packedLight, packedOverlay); - float scale = animatable.getTotalModelScale(); + float scale = animatable.getDinoScale(); poseStack.scale(scale, scale, scale); } } diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/client/CearadactylusRenderer.java b/common/src/main/java/net/cmr/jurassicrevived/entity/client/CearadactylusRenderer.java index 1d53229..354cbba 100755 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/client/CearadactylusRenderer.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/client/CearadactylusRenderer.java @@ -16,7 +16,7 @@ public class CearadactylusRenderer extends GeoEntityRenderer @Override public void scaleModelForRender(float widthScale, float heightScale, PoseStack poseStack, CeratosaurusEntity animatable, BakedGeoModel model, boolean isReRender, float partialTick, int packedLight, int packedOverlay) { super.scaleModelForRender(widthScale, heightScale, poseStack, animatable, model, isReRender, partialTick, packedLight, packedOverlay); - float scale = animatable.getTotalModelScale(); + float scale = animatable.getDinoScale(); poseStack.scale(scale, scale, scale); } } diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/client/ChasmosaurusRenderer.java b/common/src/main/java/net/cmr/jurassicrevived/entity/client/ChasmosaurusRenderer.java index d48f70c..4970ee9 100755 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/client/ChasmosaurusRenderer.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/client/ChasmosaurusRenderer.java @@ -16,7 +16,7 @@ public class ChasmosaurusRenderer extends GeoEntityRenderer @Override public void scaleModelForRender(float widthScale, float heightScale, PoseStack poseStack, ChasmosaurusEntity animatable, BakedGeoModel model, boolean isReRender, float partialTick, int packedLight, int packedOverlay) { super.scaleModelForRender(widthScale, heightScale, poseStack, animatable, model, isReRender, partialTick, packedLight, packedOverlay); - float scale = animatable.getTotalModelScale(); + float scale = animatable.getDinoScale(); poseStack.scale(scale, scale, scale); } } diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/client/ChickenosaurusRenderer.java b/common/src/main/java/net/cmr/jurassicrevived/entity/client/ChickenosaurusRenderer.java index d5e9f6c..9a28537 100755 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/client/ChickenosaurusRenderer.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/client/ChickenosaurusRenderer.java @@ -16,7 +16,7 @@ public class ChickenosaurusRenderer extends GeoEntityRenderer { @Override public void scaleModelForRender(float widthScale, float heightScale, PoseStack poseStack, ChilesaurusEntity animatable, BakedGeoModel model, boolean isReRender, float partialTick, int packedLight, int packedOverlay) { super.scaleModelForRender(widthScale, heightScale, poseStack, animatable, model, isReRender, partialTick, packedLight, packedOverlay); - float scale = animatable.getTotalModelScale(); + float scale = animatable.getDinoScale(); poseStack.scale(scale, scale, scale); } } diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/client/CoelacanthModel.java b/common/src/main/java/net/cmr/jurassicrevived/entity/client/CoelacanthModel.java index 228e21d..c3b0498 100644 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/client/CoelacanthModel.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/client/CoelacanthModel.java @@ -48,7 +48,7 @@ public class CoelacanthModel extends GeoModel { public void setCustomAnimations(CoelacanthEntity entity, long id, AnimationState state) { super.setCustomAnimations(entity, id, state); - String[] tailBones = { "tail1", "tail2", "tail3", "tail4", "tail5", "tail6" }; + String[] tailBones = { "BodySection2", "BodySection3", "TailSection1", "TailSection2" , "TailSection3" }; int n = tailBones.length; if (appliedYaw == null || appliedYaw.length != n) { @@ -82,7 +82,7 @@ public class CoelacanthModel extends GeoModel { float baseYaw = sway * maxYawDeg * deg2rad; float baseRoll = -baseYaw * rollFraction; - float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f, 0.22f }; + float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f, 0.30f }; for (int i = 0; i < n; i++) { GeoBone bone = (GeoBone) getAnimationProcessor().getBone(tailBones[i]); @@ -101,7 +101,7 @@ public class CoelacanthModel extends GeoModel { appliedRoll[i] = roll; } - GeoBone head = (GeoBone) getAnimationProcessor().getBone("body1"); + GeoBone head = (GeoBone) getAnimationProcessor().getBone("BodySection1"); if (head != null) { var entityData = state.getData(DataTickets.ENTITY_MODEL_DATA); diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/client/CoelacanthRenderer.java b/common/src/main/java/net/cmr/jurassicrevived/entity/client/CoelacanthRenderer.java index 1c97921..752c154 100644 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/client/CoelacanthRenderer.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/client/CoelacanthRenderer.java @@ -15,7 +15,7 @@ public class CoelacanthRenderer extends GeoEntityRenderer { @Override public void scaleModelForRender(float widthScale, float heightScale, PoseStack poseStack, CoelacanthEntity animatable, BakedGeoModel model, boolean isReRender, float partialTick, int packedLight, int packedOverlay) { super.scaleModelForRender(widthScale, heightScale, poseStack, animatable, model, isReRender, partialTick, packedLight, packedOverlay); - float scale = animatable.getTotalModelScale(); + float scale = animatable.getDinoScale(); poseStack.scale(scale, scale, scale); } } diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/client/CoelophysisRenderer.java b/common/src/main/java/net/cmr/jurassicrevived/entity/client/CoelophysisRenderer.java index f3106d0..d555917 100755 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/client/CoelophysisRenderer.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/client/CoelophysisRenderer.java @@ -16,7 +16,7 @@ public class CoelophysisRenderer extends GeoEntityRenderer { @Override public void scaleModelForRender(float widthScale, float heightScale, PoseStack poseStack, CoelophysisEntity animatable, BakedGeoModel model, boolean isReRender, float partialTick, int packedLight, int packedOverlay) { super.scaleModelForRender(widthScale, heightScale, poseStack, animatable, model, isReRender, partialTick, packedLight, packedOverlay); - float scale = animatable.getTotalModelScale(); + float scale = animatable.getDinoScale(); poseStack.scale(scale, scale, scale); } } diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/client/CoelurusRenderer.java b/common/src/main/java/net/cmr/jurassicrevived/entity/client/CoelurusRenderer.java index b2a33be..bc98810 100755 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/client/CoelurusRenderer.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/client/CoelurusRenderer.java @@ -16,7 +16,7 @@ public class CoelurusRenderer extends GeoEntityRenderer { @Override public void scaleModelForRender(float widthScale, float heightScale, PoseStack poseStack, CoelurusEntity animatable, BakedGeoModel model, boolean isReRender, float partialTick, int packedLight, int packedOverlay) { super.scaleModelForRender(widthScale, heightScale, poseStack, animatable, model, isReRender, partialTick, packedLight, packedOverlay); - float scale = animatable.getTotalModelScale(); + float scale = animatable.getDinoScale(); poseStack.scale(scale, scale, scale); } } diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/client/CompsognathusRenderer.java b/common/src/main/java/net/cmr/jurassicrevived/entity/client/CompsognathusRenderer.java index 8db65f5..203f92b 100755 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/client/CompsognathusRenderer.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/client/CompsognathusRenderer.java @@ -16,7 +16,7 @@ public class CompsognathusRenderer extends GeoEntityRenderer @Override public void scaleModelForRender(float widthScale, float heightScale, PoseStack poseStack, ConcavenatorEntity animatable, BakedGeoModel model, boolean isReRender, float partialTick, int packedLight, int packedOverlay) { super.scaleModelForRender(widthScale, heightScale, poseStack, animatable, model, isReRender, partialTick, packedLight, packedOverlay); - float scale = animatable.getTotalModelScale(); + float scale = animatable.getDinoScale(); poseStack.scale(scale, scale, scale); } } diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/client/CorythosaurusRenderer.java b/common/src/main/java/net/cmr/jurassicrevived/entity/client/CorythosaurusRenderer.java index b8efecc..4f87266 100755 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/client/CorythosaurusRenderer.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/client/CorythosaurusRenderer.java @@ -16,7 +16,7 @@ public class CorythosaurusRenderer extends GeoEntityRenderer { @Override public void scaleModelForRender(float widthScale, float heightScale, PoseStack poseStack, DeinonychusEntity animatable, BakedGeoModel model, boolean isReRender, float partialTick, int packedLight, int packedOverlay) { super.scaleModelForRender(widthScale, heightScale, poseStack, animatable, model, isReRender, partialTick, packedLight, packedOverlay); - float scale = animatable.getTotalModelScale(); + float scale = animatable.getDinoScale(); poseStack.scale(scale, scale, scale); } } diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/client/DilophosaurusRenderer.java b/common/src/main/java/net/cmr/jurassicrevived/entity/client/DilophosaurusRenderer.java index d9426bb..6ceed25 100755 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/client/DilophosaurusRenderer.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/client/DilophosaurusRenderer.java @@ -16,7 +16,7 @@ public class DilophosaurusRenderer extends GeoEntityRenderer { @Override public void scaleModelForRender(float widthScale, float heightScale, PoseStack poseStack, DimorphodonEntity animatable, BakedGeoModel model, boolean isReRender, float partialTick, int packedLight, int packedOverlay) { super.scaleModelForRender(widthScale, heightScale, poseStack, animatable, model, isReRender, partialTick, packedLight, packedOverlay); - float scale = animatable.getTotalModelScale(); + float scale = animatable.getDinoScale(); poseStack.scale(scale, scale, scale); } } diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/client/DiplodocusRenderer.java b/common/src/main/java/net/cmr/jurassicrevived/entity/client/DiplodocusRenderer.java index 279fca6..aa0f7bd 100755 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/client/DiplodocusRenderer.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/client/DiplodocusRenderer.java @@ -16,7 +16,7 @@ public class DiplodocusRenderer extends GeoEntityRenderer { @Override public void scaleModelForRender(float widthScale, float heightScale, PoseStack poseStack, DiplodocusEntity animatable, BakedGeoModel model, boolean isReRender, float partialTick, int packedLight, int packedOverlay) { super.scaleModelForRender(widthScale, heightScale, poseStack, animatable, model, isReRender, partialTick, packedLight, packedOverlay); - float scale = animatable.getTotalModelScale(); + float scale = animatable.getDinoScale(); poseStack.scale(scale, scale, scale); } } diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/client/DistortusRexRenderer.java b/common/src/main/java/net/cmr/jurassicrevived/entity/client/DistortusRexRenderer.java index 8068c0f..8aef1cd 100755 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/client/DistortusRexRenderer.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/client/DistortusRexRenderer.java @@ -16,7 +16,7 @@ public class DistortusRexRenderer extends GeoEntityRenderer @Override public void scaleModelForRender(float widthScale, float heightScale, PoseStack poseStack, DistortusRexEntity animatable, BakedGeoModel model, boolean isReRender, float partialTick, int packedLight, int packedOverlay) { super.scaleModelForRender(widthScale, heightScale, poseStack, animatable, model, isReRender, partialTick, packedLight, packedOverlay); - float scale = animatable.getTotalModelScale(); + float scale = animatable.getDinoScale(); poseStack.scale(scale, scale, scale); } } diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/client/DryosaurusRenderer.java b/common/src/main/java/net/cmr/jurassicrevived/entity/client/DryosaurusRenderer.java index 39073d2..5b3387d 100755 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/client/DryosaurusRenderer.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/client/DryosaurusRenderer.java @@ -16,7 +16,7 @@ public class DryosaurusRenderer extends GeoEntityRenderer { @Override public void scaleModelForRender(float widthScale, float heightScale, PoseStack poseStack, DryosaurusEntity animatable, BakedGeoModel model, boolean isReRender, float partialTick, int packedLight, int packedOverlay) { super.scaleModelForRender(widthScale, heightScale, poseStack, animatable, model, isReRender, partialTick, packedLight, packedOverlay); - float scale = animatable.getTotalModelScale(); + float scale = animatable.getDinoScale(); poseStack.scale(scale, scale, scale); } } diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/client/EdmontosaurusRenderer.java b/common/src/main/java/net/cmr/jurassicrevived/entity/client/EdmontosaurusRenderer.java index 3461c9e..5aa4be8 100755 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/client/EdmontosaurusRenderer.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/client/EdmontosaurusRenderer.java @@ -16,7 +16,7 @@ public class EdmontosaurusRenderer extends GeoEntityRenderer { @Override public void scaleModelForRender(float widthScale, float heightScale, PoseStack poseStack, FDuckEntity animatable, BakedGeoModel model, boolean isReRender, float partialTick, int packedLight, int packedOverlay) { super.scaleModelForRender(widthScale, heightScale, poseStack, animatable, model, isReRender, partialTick, packedLight, packedOverlay); - float scale = animatable.getTotalModelScale(); + float scale = animatable.getDinoScale(); poseStack.scale(scale, scale, scale); } } diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/client/GallimimusRenderer.java b/common/src/main/java/net/cmr/jurassicrevived/entity/client/GallimimusRenderer.java index 02e7ebe..29b8c67 100755 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/client/GallimimusRenderer.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/client/GallimimusRenderer.java @@ -16,7 +16,7 @@ public class GallimimusRenderer extends GeoEntityRenderer { @Override public void scaleModelForRender(float widthScale, float heightScale, PoseStack poseStack, GallimimusEntity animatable, BakedGeoModel model, boolean isReRender, float partialTick, int packedLight, int packedOverlay) { super.scaleModelForRender(widthScale, heightScale, poseStack, animatable, model, isReRender, partialTick, packedLight, packedOverlay); - float scale = animatable.getTotalModelScale(); + float scale = animatable.getDinoScale(); poseStack.scale(scale, scale, scale); } } diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/client/GeosternbergiaRenderer.java b/common/src/main/java/net/cmr/jurassicrevived/entity/client/GeosternbergiaRenderer.java index 363a280..e4e2336 100755 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/client/GeosternbergiaRenderer.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/client/GeosternbergiaRenderer.java @@ -16,7 +16,7 @@ public class GeosternbergiaRenderer extends GeoEntityRenderer { @Override public void scaleModelForRender(float widthScale, float heightScale, PoseStack poseStack, GuanlongEntity animatable, BakedGeoModel model, boolean isReRender, float partialTick, int packedLight, int packedOverlay) { super.scaleModelForRender(widthScale, heightScale, poseStack, animatable, model, isReRender, partialTick, packedLight, packedOverlay); - float scale = animatable.getTotalModelScale(); + float scale = animatable.getDinoScale(); poseStack.scale(scale, scale, scale); } } diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/client/GuidracoRenderer.java b/common/src/main/java/net/cmr/jurassicrevived/entity/client/GuidracoRenderer.java index 5e677ee..6498e57 100755 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/client/GuidracoRenderer.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/client/GuidracoRenderer.java @@ -16,7 +16,7 @@ public class GuidracoRenderer extends GeoEntityRenderer { @Override public void scaleModelForRender(float widthScale, float heightScale, PoseStack poseStack, GuidracoEntity animatable, BakedGeoModel model, boolean isReRender, float partialTick, int packedLight, int packedOverlay) { super.scaleModelForRender(widthScale, heightScale, poseStack, animatable, model, isReRender, partialTick, packedLight, packedOverlay); - float scale = animatable.getTotalModelScale(); + float scale = animatable.getDinoScale(); poseStack.scale(scale, scale, scale); } } diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/client/HadrosaurusRenderer.java b/common/src/main/java/net/cmr/jurassicrevived/entity/client/HadrosaurusRenderer.java index 76b4516..fa310a8 100755 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/client/HadrosaurusRenderer.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/client/HadrosaurusRenderer.java @@ -16,7 +16,7 @@ public class HadrosaurusRenderer extends GeoEntityRenderer { @Override public void scaleModelForRender(float widthScale, float heightScale, PoseStack poseStack, HadrosaurusEntity animatable, BakedGeoModel model, boolean isReRender, float partialTick, int packedLight, int packedOverlay) { super.scaleModelForRender(widthScale, heightScale, poseStack, animatable, model, isReRender, partialTick, packedLight, packedOverlay); - float scale = animatable.getTotalModelScale(); + float scale = animatable.getDinoScale(); poseStack.scale(scale, scale, scale); } } diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/client/HerrerasaurusRenderer.java b/common/src/main/java/net/cmr/jurassicrevived/entity/client/HerrerasaurusRenderer.java index 3b0eefe..6d46f6a 100755 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/client/HerrerasaurusRenderer.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/client/HerrerasaurusRenderer.java @@ -16,7 +16,7 @@ public class HerrerasaurusRenderer extends GeoEntityRenderer @Override public void scaleModelForRender(float widthScale, float heightScale, PoseStack poseStack, IndominusRexEntity animatable, BakedGeoModel model, boolean isReRender, float partialTick, int packedLight, int packedOverlay) { super.scaleModelForRender(widthScale, heightScale, poseStack, animatable, model, isReRender, partialTick, packedLight, packedOverlay); - float scale = animatable.getTotalModelScale(); + float scale = animatable.getDinoScale(); poseStack.scale(scale, scale, scale); } } diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/client/IndoraptorRenderer.java b/common/src/main/java/net/cmr/jurassicrevived/entity/client/IndoraptorRenderer.java index 890faa2..84faaa9 100755 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/client/IndoraptorRenderer.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/client/IndoraptorRenderer.java @@ -16,7 +16,7 @@ public class IndoraptorRenderer extends GeoEntityRenderer { @Override public void scaleModelForRender(float widthScale, float heightScale, PoseStack poseStack, IndoraptorEntity animatable, BakedGeoModel model, boolean isReRender, float partialTick, int packedLight, int packedOverlay) { super.scaleModelForRender(widthScale, heightScale, poseStack, animatable, model, isReRender, partialTick, packedLight, packedOverlay); - float scale = animatable.getTotalModelScale(); + float scale = animatable.getDinoScale(); poseStack.scale(scale, scale, scale); } } diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/client/InostranceviaRenderer.java b/common/src/main/java/net/cmr/jurassicrevived/entity/client/InostranceviaRenderer.java index b314a00..2e3ea83 100755 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/client/InostranceviaRenderer.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/client/InostranceviaRenderer.java @@ -16,7 +16,7 @@ public class InostranceviaRenderer extends GeoEntityRenderer @Override public void scaleModelForRender(float widthScale, float heightScale, PoseStack poseStack, LambeosaurusEntity animatable, BakedGeoModel model, boolean isReRender, float partialTick, int packedLight, int packedOverlay) { super.scaleModelForRender(widthScale, heightScale, poseStack, animatable, model, isReRender, partialTick, packedLight, packedOverlay); - float scale = animatable.getTotalModelScale(); + float scale = animatable.getDinoScale(); poseStack.scale(scale, scale, scale); } } diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/client/LudodactylusRenderer.java b/common/src/main/java/net/cmr/jurassicrevived/entity/client/LudodactylusRenderer.java index 11a8fe6..526b0e8 100755 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/client/LudodactylusRenderer.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/client/LudodactylusRenderer.java @@ -16,7 +16,7 @@ public class LudodactylusRenderer extends GeoEntityRenderer @Override public void scaleModelForRender(float widthScale, float heightScale, PoseStack poseStack, LudodactylusEntity animatable, BakedGeoModel model, boolean isReRender, float partialTick, int packedLight, int packedOverlay) { super.scaleModelForRender(widthScale, heightScale, poseStack, animatable, model, isReRender, partialTick, packedLight, packedOverlay); - float scale = animatable.getTotalModelScale(); + float scale = animatable.getDinoScale(); poseStack.scale(scale, scale, scale); } } diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/client/MajungasaurusRenderer.java b/common/src/main/java/net/cmr/jurassicrevived/entity/client/MajungasaurusRenderer.java index 4d565b3..c43fa4e 100755 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/client/MajungasaurusRenderer.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/client/MajungasaurusRenderer.java @@ -16,7 +16,7 @@ public class MajungasaurusRenderer extends GeoEntityRenderer { + + private static final Map LOCATION_BY_VARIANT = + Util.make(Maps.newEnumMap(MawsoniaVariant.class), map -> { + map.put(MawsoniaVariant.MALE, Constants.rl("textures/entity/mawsonia.png")); + map.put(MawsoniaVariant.FEMALE, Constants.rl("textures/entity/mawsonia_female.png")); + }); + + // Model-local "currently applied" offsets; cleared before each entity render + private float[] appliedYaw = null; + private float[] appliedRoll = null; + + @Override + public ResourceLocation getModelResource(MawsoniaEntity animatable) { + return Constants.rl("geo/mawsonia.geo.json"); + } + + @Override + public ResourceLocation getTextureResource(MawsoniaEntity animatable) { + return LOCATION_BY_VARIANT.get(animatable.getVariant()); + } + + @Override + public ResourceLocation getAnimationResource(MawsoniaEntity animatable) { + return Constants.rl("animations/mawsonia.animation.json"); + } + + @Override + public void setCustomAnimations(MawsoniaEntity entity, long id, AnimationState state) { + super.setCustomAnimations(entity, id, state); + + String[] tailBones = { "BodySection6", "TailSection4", "TailSection5", "TailSection6" }; + int n = tailBones.length; + + if (appliedYaw == null || appliedYaw.length != n) { + appliedYaw = new float[n]; + appliedRoll = new float[n]; + } + + // 1) Clear previous offsets (from the last entity rendered with this model instance) + for (int i = 0; i < n; i++) { + if (appliedYaw[i] == 0.0f && appliedRoll[i] == 0.0f) continue; + GeoBone bone = (GeoBone) getAnimationProcessor().getBone(tailBones[i]); + if (bone == null) continue; + if (appliedYaw[i] != 0.0f) bone.setRotY(bone.getRotY() - appliedYaw[i]); + if (appliedRoll[i] != 0.0f) bone.setRotZ(bone.getRotZ() - appliedRoll[i]); + appliedYaw[i] = 0.0f; + appliedRoll[i] = 0.0f; + } + + // 2) Interpolated sway for extra smoothness between ticks + float sway = entity.getTailSwayOffset(state.getPartialTick()); // [-1, 1] + + // Tuning + float maxYawDeg = 22.0f; // increased max sweep + float swayGain = 1.35f; // amplifies overall power + float rollFraction = 0.40f; // slightly stronger roll for heft + + float deg2rad = (float)Math.PI / 180f; + + // Direction: positive sway (left turn) -> tail swings right (negative yaw) + // Flip the sign here if the sway feels inverted + float baseYaw = sway * maxYawDeg * deg2rad; + float baseRoll = -baseYaw * rollFraction; + + float[] weights = { 1.00f, 0.78f, 0.58f, 0.42f }; + + for (int i = 0; i < n; i++) { + GeoBone bone = (GeoBone) getAnimationProcessor().getBone(tailBones[i]); + if (bone == null) continue; + + float w = weights[i]; + float yaw = baseYaw * w; + float roll = baseRoll * w; + + // OVERRIDE animations on Y/Z only: keep the model's predefined X bend intact + // Do NOT reset rotX here, so the upward bend stays + bone.setRotY(yaw); + bone.setRotZ(roll); + + appliedYaw[i] = yaw; + appliedRoll[i] = roll; + } + + GeoBone head = (GeoBone) getAnimationProcessor().getBone("Mainhead2"); + + if (head != null) { + var entityData = state.getData(DataTickets.ENTITY_MODEL_DATA); + float clampedYawDeg = Mth.clamp(entityData.netHeadYaw(), -20.0f, 20.0f); + head.setRotY(clampedYawDeg * Mth.DEG_TO_RAD); + } + } +} diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/client/MawsoniaRenderer.java b/common/src/main/java/net/cmr/jurassicrevived/entity/client/MawsoniaRenderer.java new file mode 100644 index 0000000..6a68309 --- /dev/null +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/client/MawsoniaRenderer.java @@ -0,0 +1,21 @@ +package net.cmr.jurassicrevived.entity.client; + +import com.mojang.blaze3d.vertex.PoseStack; +import net.cmr.jurassicrevived.entity.custom.MawsoniaEntity; +import net.minecraft.client.renderer.entity.EntityRendererProvider; +import software.bernie.geckolib.cache.object.BakedGeoModel; +import software.bernie.geckolib.renderer.GeoEntityRenderer; + + +public class MawsoniaRenderer extends GeoEntityRenderer { + public MawsoniaRenderer(EntityRendererProvider.Context renderManager) { + super(renderManager, new MawsoniaModel()); + } + + @Override + public void scaleModelForRender(float widthScale, float heightScale, PoseStack poseStack, MawsoniaEntity animatable, BakedGeoModel model, boolean isReRender, float partialTick, int packedLight, int packedOverlay) { + super.scaleModelForRender(widthScale, heightScale, poseStack, animatable, model, isReRender, partialTick, packedLight, packedOverlay); + float scale = animatable.getDinoScale(); + poseStack.scale(scale, scale, scale); + } +} diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/client/MawsoniaVariant.java b/common/src/main/java/net/cmr/jurassicrevived/entity/client/MawsoniaVariant.java new file mode 100644 index 0000000..8209208 --- /dev/null +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/client/MawsoniaVariant.java @@ -0,0 +1,26 @@ +package net.cmr.jurassicrevived.entity.client; + +import java.util.Arrays; +import java.util.Comparator; + +public enum MawsoniaVariant { + MALE(0), + FEMALE(1); + + private static final MawsoniaVariant[] BY_ID = Arrays.stream(values()).sorted( + Comparator.comparingInt(MawsoniaVariant::getId)).toArray(MawsoniaVariant[]::new); + + private final int id; + + MawsoniaVariant(int id) { + this.id = id; + } + + public int getId() { + return id; + } + + public static MawsoniaVariant byId(int id) { + return BY_ID[id % BY_ID.length]; + } +} diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/client/MetriacanthosaurusRenderer.java b/common/src/main/java/net/cmr/jurassicrevived/entity/client/MetriacanthosaurusRenderer.java index d0e7d51..07a346f 100755 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/client/MetriacanthosaurusRenderer.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/client/MetriacanthosaurusRenderer.java @@ -16,7 +16,7 @@ public class MetriacanthosaurusRenderer extends GeoEntityRenderer @Override public void scaleModelForRender(float widthScale, float heightScale, PoseStack poseStack, MoganopterusEntity animatable, BakedGeoModel model, boolean isReRender, float partialTick, int packedLight, int packedOverlay) { super.scaleModelForRender(widthScale, heightScale, poseStack, animatable, model, isReRender, partialTick, packedLight, packedOverlay); - float scale = animatable.getTotalModelScale(); + float scale = animatable.getDinoScale(); poseStack.scale(scale, scale, scale); } } diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/client/MussasaurusRenderer.java b/common/src/main/java/net/cmr/jurassicrevived/entity/client/MussasaurusRenderer.java index d8c14da..0d87cd5 100644 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/client/MussasaurusRenderer.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/client/MussasaurusRenderer.java @@ -16,7 +16,7 @@ public class MussasaurusRenderer extends GeoEntityRenderer { @Override public void scaleModelForRender(float widthScale, float heightScale, PoseStack poseStack, MussasaurusEntity animatable, BakedGeoModel model, boolean isReRender, float partialTick, int packedLight, int packedOverlay) { super.scaleModelForRender(widthScale, heightScale, poseStack, animatable, model, isReRender, partialTick, packedLight, packedOverlay); - float scale = animatable.getTotalModelScale(); + float scale = animatable.getDinoScale(); poseStack.scale(scale, scale, scale); } } diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/client/NyctosaurusRenderer.java b/common/src/main/java/net/cmr/jurassicrevived/entity/client/NyctosaurusRenderer.java index 3abcacb..0d3be15 100755 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/client/NyctosaurusRenderer.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/client/NyctosaurusRenderer.java @@ -16,7 +16,7 @@ public class NyctosaurusRenderer extends GeoEntityRenderer { @Override public void scaleModelForRender(float widthScale, float heightScale, PoseStack poseStack, NyctosaurusEntity animatable, BakedGeoModel model, boolean isReRender, float partialTick, int packedLight, int packedOverlay) { super.scaleModelForRender(widthScale, heightScale, poseStack, animatable, model, isReRender, partialTick, packedLight, packedOverlay); - float scale = animatable.getTotalModelScale(); + float scale = animatable.getDinoScale(); poseStack.scale(scale, scale, scale); } } diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/client/OrnitholestesRenderer.java b/common/src/main/java/net/cmr/jurassicrevived/entity/client/OrnitholestesRenderer.java index d85d5b3..8ccf63e 100755 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/client/OrnitholestesRenderer.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/client/OrnitholestesRenderer.java @@ -16,7 +16,7 @@ public class OrnitholestesRenderer extends GeoEntityRenderer @Override public void scaleModelForRender(float widthScale, float heightScale, PoseStack poseStack, OrnithomimusEntity animatable, BakedGeoModel model, boolean isReRender, float partialTick, int packedLight, int packedOverlay) { super.scaleModelForRender(widthScale, heightScale, poseStack, animatable, model, isReRender, partialTick, packedLight, packedOverlay); - float scale = animatable.getTotalModelScale(); + float scale = animatable.getDinoScale(); poseStack.scale(scale, scale, scale); } } diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/client/OuranosaurusRenderer.java b/common/src/main/java/net/cmr/jurassicrevived/entity/client/OuranosaurusRenderer.java index 1582f49..1330373 100755 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/client/OuranosaurusRenderer.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/client/OuranosaurusRenderer.java @@ -16,7 +16,7 @@ public class OuranosaurusRenderer extends GeoEntityRenderer @Override public void scaleModelForRender(float widthScale, float heightScale, PoseStack poseStack, OuranosaurusEntity animatable, BakedGeoModel model, boolean isReRender, float partialTick, int packedLight, int packedOverlay) { super.scaleModelForRender(widthScale, heightScale, poseStack, animatable, model, isReRender, partialTick, packedLight, packedOverlay); - float scale = animatable.getTotalModelScale(); + float scale = animatable.getDinoScale(); poseStack.scale(scale, scale, scale); } } diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/client/OviraptorRenderer.java b/common/src/main/java/net/cmr/jurassicrevived/entity/client/OviraptorRenderer.java index ef2ec54..e4ba7b1 100755 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/client/OviraptorRenderer.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/client/OviraptorRenderer.java @@ -16,7 +16,7 @@ public class OviraptorRenderer extends GeoEntityRenderer { @Override public void scaleModelForRender(float widthScale, float heightScale, PoseStack poseStack, OviraptorEntity animatable, BakedGeoModel model, boolean isReRender, float partialTick, int packedLight, int packedOverlay) { super.scaleModelForRender(widthScale, heightScale, poseStack, animatable, model, isReRender, partialTick, packedLight, packedOverlay); - float scale = animatable.getTotalModelScale(); + float scale = animatable.getDinoScale(); poseStack.scale(scale, scale, scale); } } diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/client/PachycephalosaurusRenderer.java b/common/src/main/java/net/cmr/jurassicrevived/entity/client/PachycephalosaurusRenderer.java index d5a908f..08dc3c0 100755 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/client/PachycephalosaurusRenderer.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/client/PachycephalosaurusRenderer.java @@ -16,7 +16,7 @@ public class PachycephalosaurusRenderer extends GeoEntityRenderer { @Override public void scaleModelForRender(float widthScale, float heightScale, PoseStack poseStack, PteranodonEntity animatable, BakedGeoModel model, boolean isReRender, float partialTick, int packedLight, int packedOverlay) { super.scaleModelForRender(widthScale, heightScale, poseStack, animatable, model, isReRender, partialTick, packedLight, packedOverlay); - float scale = animatable.getTotalModelScale(); + float scale = animatable.getDinoScale(); poseStack.scale(scale, scale, scale); } } diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/client/PterodaustroRenderer.java b/common/src/main/java/net/cmr/jurassicrevived/entity/client/PterodaustroRenderer.java index 546850e..8c29c21 100755 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/client/PterodaustroRenderer.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/client/PterodaustroRenderer.java @@ -16,7 +16,7 @@ public class PterodaustroRenderer extends GeoEntityRenderer @Override public void scaleModelForRender(float widthScale, float heightScale, PoseStack poseStack, PterodaustroEntity animatable, BakedGeoModel model, boolean isReRender, float partialTick, int packedLight, int packedOverlay) { super.scaleModelForRender(widthScale, heightScale, poseStack, animatable, model, isReRender, partialTick, packedLight, packedOverlay); - float scale = animatable.getTotalModelScale(); + float scale = animatable.getDinoScale(); poseStack.scale(scale, scale, scale); } } diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/client/QuetzalcoatlusRenderer.java b/common/src/main/java/net/cmr/jurassicrevived/entity/client/QuetzalcoatlusRenderer.java index ef8721a..787caa3 100755 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/client/QuetzalcoatlusRenderer.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/client/QuetzalcoatlusRenderer.java @@ -16,7 +16,7 @@ public class QuetzalcoatlusRenderer extends GeoEntityRenderer { @Override public void scaleModelForRender(float widthScale, float heightScale, PoseStack poseStack, RajasaurusEntity animatable, BakedGeoModel model, boolean isReRender, float partialTick, int packedLight, int packedOverlay) { super.scaleModelForRender(widthScale, heightScale, poseStack, animatable, model, isReRender, partialTick, packedLight, packedOverlay); - float scale = animatable.getTotalModelScale(); + float scale = animatable.getDinoScale(); poseStack.scale(scale, scale, scale); } } diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/client/RugopsRenderer.java b/common/src/main/java/net/cmr/jurassicrevived/entity/client/RugopsRenderer.java index 3c7ccc7..eb297b6 100755 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/client/RugopsRenderer.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/client/RugopsRenderer.java @@ -16,7 +16,7 @@ public class RugopsRenderer extends GeoEntityRenderer { @Override public void scaleModelForRender(float widthScale, float heightScale, PoseStack poseStack, RugopsEntity animatable, BakedGeoModel model, boolean isReRender, float partialTick, int packedLight, int packedOverlay) { super.scaleModelForRender(widthScale, heightScale, poseStack, animatable, model, isReRender, partialTick, packedLight, packedOverlay); - float scale = animatable.getTotalModelScale(); + float scale = animatable.getDinoScale(); poseStack.scale(scale, scale, scale); } } diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/client/SegisaurusRenderer.java b/common/src/main/java/net/cmr/jurassicrevived/entity/client/SegisaurusRenderer.java index 5c80e8d..39a3acc 100755 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/client/SegisaurusRenderer.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/client/SegisaurusRenderer.java @@ -16,7 +16,7 @@ public class SegisaurusRenderer extends GeoEntityRenderer { @Override public void scaleModelForRender(float widthScale, float heightScale, PoseStack poseStack, SegisaurusEntity animatable, BakedGeoModel model, boolean isReRender, float partialTick, int packedLight, int packedOverlay) { super.scaleModelForRender(widthScale, heightScale, poseStack, animatable, model, isReRender, partialTick, packedLight, packedOverlay); - float scale = animatable.getTotalModelScale(); + float scale = animatable.getDinoScale(); poseStack.scale(scale, scale, scale); } } diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/client/ShantungosaurusRenderer.java b/common/src/main/java/net/cmr/jurassicrevived/entity/client/ShantungosaurusRenderer.java index cff8cb4..2d1b46b 100755 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/client/ShantungosaurusRenderer.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/client/ShantungosaurusRenderer.java @@ -16,7 +16,7 @@ public class ShantungosaurusRenderer extends GeoEntityRenderer { @Override public void scaleModelForRender(float widthScale, float heightScale, PoseStack poseStack, SpinosaurusEntity animatable, BakedGeoModel model, boolean isReRender, float partialTick, int packedLight, int packedOverlay) { super.scaleModelForRender(widthScale, heightScale, poseStack, animatable, model, isReRender, partialTick, packedLight, packedOverlay); - float scale = animatable.getTotalModelScale(); + float scale = animatable.getDinoScale(); poseStack.scale(scale, scale, scale); } } diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/client/StegosaurusRenderer.java b/common/src/main/java/net/cmr/jurassicrevived/entity/client/StegosaurusRenderer.java index df96f5f..172db82 100755 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/client/StegosaurusRenderer.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/client/StegosaurusRenderer.java @@ -16,7 +16,7 @@ public class StegosaurusRenderer extends GeoEntityRenderer { @Override public void scaleModelForRender(float widthScale, float heightScale, PoseStack poseStack, StegosaurusEntity animatable, BakedGeoModel model, boolean isReRender, float partialTick, int packedLight, int packedOverlay) { super.scaleModelForRender(widthScale, heightScale, poseStack, animatable, model, isReRender, partialTick, packedLight, packedOverlay); - float scale = animatable.getTotalModelScale(); + float scale = animatable.getDinoScale(); poseStack.scale(scale, scale, scale); } } diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/client/StyracosaurusRenderer.java b/common/src/main/java/net/cmr/jurassicrevived/entity/client/StyracosaurusRenderer.java index 50de16a..c95a530 100755 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/client/StyracosaurusRenderer.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/client/StyracosaurusRenderer.java @@ -16,7 +16,7 @@ public class StyracosaurusRenderer extends GeoEntityRenderer { @Override public void scaleModelForRender(float widthScale, float heightScale, PoseStack poseStack, SuchomimusEntity animatable, BakedGeoModel model, boolean isReRender, float partialTick, int packedLight, int packedOverlay) { super.scaleModelForRender(widthScale, heightScale, poseStack, animatable, model, isReRender, partialTick, packedLight, packedOverlay); - float scale = animatable.getTotalModelScale(); + float scale = animatable.getDinoScale(); poseStack.scale(scale, scale, scale); } } diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/client/TapejaraRenderer.java b/common/src/main/java/net/cmr/jurassicrevived/entity/client/TapejaraRenderer.java index 9d084e3..fb89149 100755 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/client/TapejaraRenderer.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/client/TapejaraRenderer.java @@ -16,7 +16,7 @@ public class TapejaraRenderer extends GeoEntityRenderer { @Override public void scaleModelForRender(float widthScale, float heightScale, PoseStack poseStack, TapejaraEntity animatable, BakedGeoModel model, boolean isReRender, float partialTick, int packedLight, int packedOverlay) { super.scaleModelForRender(widthScale, heightScale, poseStack, animatable, model, isReRender, partialTick, packedLight, packedOverlay); - float scale = animatable.getTotalModelScale(); + float scale = animatable.getDinoScale(); poseStack.scale(scale, scale, scale); } } diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/client/TherizinosaurusRenderer.java b/common/src/main/java/net/cmr/jurassicrevived/entity/client/TherizinosaurusRenderer.java index 22e9984..f019f31 100755 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/client/TherizinosaurusRenderer.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/client/TherizinosaurusRenderer.java @@ -16,7 +16,7 @@ public class TherizinosaurusRenderer extends GeoEntityRenderer @Override public void scaleModelForRender(float widthScale, float heightScale, PoseStack poseStack, TitanosaurusEntity animatable, BakedGeoModel model, boolean isReRender, float partialTick, int packedLight, int packedOverlay) { super.scaleModelForRender(widthScale, heightScale, poseStack, animatable, model, isReRender, partialTick, packedLight, packedOverlay); - float scale = animatable.getTotalModelScale(); + float scale = animatable.getDinoScale(); poseStack.scale(scale, scale, scale); } } diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/client/TriceratopsRenderer.java b/common/src/main/java/net/cmr/jurassicrevived/entity/client/TriceratopsRenderer.java index ca5e402..f67e629 100755 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/client/TriceratopsRenderer.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/client/TriceratopsRenderer.java @@ -16,7 +16,7 @@ public class TriceratopsRenderer extends GeoEntityRenderer { @Override public void scaleModelForRender(float widthScale, float heightScale, PoseStack poseStack, TriceratopsEntity animatable, BakedGeoModel model, boolean isReRender, float partialTick, int packedLight, int packedOverlay) { super.scaleModelForRender(widthScale, heightScale, poseStack, animatable, model, isReRender, partialTick, packedLight, packedOverlay); - float scale = animatable.getTotalModelScale(); + float scale = animatable.getDinoScale(); poseStack.scale(scale, scale, scale); } } diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/client/TroodonRenderer.java b/common/src/main/java/net/cmr/jurassicrevived/entity/client/TroodonRenderer.java index a895673..061ba2e 100755 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/client/TroodonRenderer.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/client/TroodonRenderer.java @@ -16,7 +16,7 @@ public class TroodonRenderer extends GeoEntityRenderer { @Override public void scaleModelForRender(float widthScale, float heightScale, PoseStack poseStack, TroodonEntity animatable, BakedGeoModel model, boolean isReRender, float partialTick, int packedLight, int packedOverlay) { super.scaleModelForRender(widthScale, heightScale, poseStack, animatable, model, isReRender, partialTick, packedLight, packedOverlay); - float scale = animatable.getTotalModelScale(); + float scale = animatable.getDinoScale(); poseStack.scale(scale, scale, scale); } } diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/client/TropeognathusRenderer.java b/common/src/main/java/net/cmr/jurassicrevived/entity/client/TropeognathusRenderer.java index 2114d19..2ae6fe1 100755 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/client/TropeognathusRenderer.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/client/TropeognathusRenderer.java @@ -16,7 +16,7 @@ public class TropeognathusRenderer extends GeoEntityRenderer { @Override public void scaleModelForRender(float widthScale, float heightScale, PoseStack poseStack, TupuxuaraEntity animatable, BakedGeoModel model, boolean isReRender, float partialTick, int packedLight, int packedOverlay) { super.scaleModelForRender(widthScale, heightScale, poseStack, animatable, model, isReRender, partialTick, packedLight, packedOverlay); - float scale = animatable.getTotalModelScale(); + float scale = animatable.getDinoScale(); poseStack.scale(scale, scale, scale); } } diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/client/TyrannosaurusRexRenderer.java b/common/src/main/java/net/cmr/jurassicrevived/entity/client/TyrannosaurusRexRenderer.java index b9eb070..35d3f14 100755 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/client/TyrannosaurusRexRenderer.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/client/TyrannosaurusRexRenderer.java @@ -16,7 +16,7 @@ public class TyrannosaurusRexRenderer extends GeoEntityRenderer { @Override public void scaleModelForRender(float widthScale, float heightScale, PoseStack poseStack, UtahraptorEntity animatable, BakedGeoModel model, boolean isReRender, float partialTick, int packedLight, int packedOverlay) { super.scaleModelForRender(widthScale, heightScale, poseStack, animatable, model, isReRender, partialTick, packedLight, packedOverlay); - float scale = animatable.getTotalModelScale(); + float scale = animatable.getDinoScale(); poseStack.scale(scale, scale, scale); } } diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/client/VelociraptorRenderer.java b/common/src/main/java/net/cmr/jurassicrevived/entity/client/VelociraptorRenderer.java index 0a4cd0f..ab0eed6 100755 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/client/VelociraptorRenderer.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/client/VelociraptorRenderer.java @@ -16,7 +16,7 @@ public class VelociraptorRenderer extends GeoEntityRenderer @Override public void scaleModelForRender(float widthScale, float heightScale, PoseStack poseStack, VelociraptorEntity animatable, BakedGeoModel model, boolean isReRender, float partialTick, int packedLight, int packedOverlay) { super.scaleModelForRender(widthScale, heightScale, poseStack, animatable, model, isReRender, partialTick, packedLight, packedOverlay); - float scale = animatable.getTotalModelScale(); + float scale = animatable.getDinoScale(); poseStack.scale(scale, scale, scale); } } diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/client/ZhenyuanopterusRenderer.java b/common/src/main/java/net/cmr/jurassicrevived/entity/client/ZhenyuanopterusRenderer.java index 060cee5..d14b5cb 100755 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/client/ZhenyuanopterusRenderer.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/client/ZhenyuanopterusRenderer.java @@ -16,7 +16,7 @@ public class ZhenyuanopterusRenderer extends GeoEntityRenderer VARIANT = + SynchedEntityData.defineId(AlligatorGarEntity.class, EntityDataSerializers.INT); + private static final EntityDataAccessor DATA_SYNCED_AGE = + SynchedEntityData.defineId(AlligatorGarEntity.class, EntityDataSerializers.INT); + private static final EntityDataAccessor DATA_ANIMAL_SCALE = + SynchedEntityData.defineId(AlligatorGarEntity.class, EntityDataSerializers.FLOAT); + + // Procedural tail sway state (client-side use for rendering) + private float tailSwayOffset; // Smoothed offset in range roughly [-1, 1] + private float tailSwayVelocity; // Internal velocity for spring-damper + private float tailSwayPrev; // Previous frame value for interpolation + + public AlligatorGarEntity(EntityType pEntityType, Level pLevel) { + super(pEntityType, pLevel); + + this.dinoData = new DinoData( + getAIConfig().maxHunger(), + getAIConfig().maxThirst(), + IDinoData.Mood.NEUTRAL, + IDinoData.Aggression.TERRITORIAL, + 0.75f, + IDinoData.DietaryClassification.CARNIVORE, + IDinoData.Type.MARINE, + IDinoData.Group.PISCINE, + IDinoData.BirthType.EGG_LAYING, + IDinoData.ActivityPattern.CATHEMERAL + ); + + // Replaces the default move control with 3D swimming mechanics + this.moveControl = new SmoothSwimmingMoveControl(this, 85, 10, 0.02F, 0.1F, true); + + // Tells the pathfinder that water is perfectly safe to navigate through + /*? if <=1.20.1 {*/ + this.setPathfindingMalus(net.minecraft.world.level.pathfinder.BlockPathTypes.WATER, 0.0F); + /*?} else {*/ + /*this.setPathfindingMalus(net.minecraft.world.level.pathfinder.PathType.WATER, 0.0F); + *//*?}*/ + } + + @Override + protected PathNavigation createNavigation(Level pLevel) { + return new WaterBoundPathNavigation(this, pLevel); + } + + //@Override + //public ItemStack getPickResult() { + // return new ItemStack(ModItems.ALLIGATOR_GAR_SPAWN_EGG.get()); + //} + + @Override + public boolean isCarnivore() { + return true; + } + + @Override + public boolean isMarine() { + return true; + } + + @Override + public boolean isAmphibious() { + return false; + } + + @Override + public boolean isSimpleFish() { + return true; + } + + @Override + public Block getEggBlock() { + return null; + } + + @Override + public DinoAIConfig getAIConfig() { + return new DinoAIConfig(0.3D, 1.1D, 1.5D, 100, 100, 0.05f, 0.1f, 20); + } + + @Override + public void setBaby(boolean baby) { + this.setAge(baby ? -BABY_TO_ADULT_AGE_TICKS : 0); + } + + public static AttributeSupplier.Builder createAttributes() { + return Animal.createLivingAttributes() + .add(Attributes.MAX_HEALTH, 30D) + .add(Attributes.MOVEMENT_SPEED, 0.3D) + .add(Attributes.ARMOR, 0D) + .add(Attributes.FOLLOW_RANGE, 32D) + .add(Attributes.ATTACK_DAMAGE, 8D) + .add(Attributes.KNOCKBACK_RESISTANCE, 0.3D) + .add(Attributes.ATTACK_KNOCKBACK, 0D); + } + + @Nullable + @Override + public AgeableMob getBreedOffspring(ServerLevel pLevel, AgeableMob pOtherParent) { + AgeableMob child = ModEntities.ALLIGATOR_GAR.get().create(pLevel); + if (child instanceof AlligatorGarEntity baby) { + AlligatorGarVariant randomVariant = Util.getRandom(AlligatorGarVariant.values(), this.random); + baby.setVariant(randomVariant); + baby.setBaby(true); + baby.setAnimalScale(Mth.nextFloat(this.random, MIN_ANIMAL_SCALE, MAX_ANIMAL_SCALE)); + } + return child; + } + + @Override + public boolean doHurtTarget(Entity target) { + boolean hit = super.doHurtTarget(target); + if (!level().isClientSide && hit && target instanceof LivingEntity) { + if (this.level() instanceof ServerLevel serverLevel) { + this.triggerAnim("attackController", "attack"); + } + } + return hit; + } + + @Override + public void registerControllers(AnimatableManager.ControllerRegistrar controllers) { + controllers.add(new AnimationController<>(this, "SwimController", 5, state -> { + // 1. Highest Priority: Out of water flapping + if (!this.isInWater()) { + return state.setAndContinue(RawAnimation.begin().then("anim.alligator_gar.flop", Animation.LoopType.LOOP)); + } + + // 2. Aquatic movement: Just swim + return state.setAndContinue(RawAnimation.begin().then("anim.alligator_gar.swim", Animation.LoopType.LOOP)); + })); + + controllers.add(new AnimationController<>(this, "attackController", 5, state -> PlayState.STOP) + .triggerableAnim("attack", RawAnimation.begin().then("anim.alligator_gar.attack", Animation.LoopType.PLAY_ONCE))); + + controllers.add(new AnimationController<>(this, "mouthController", 5, state -> PlayState.STOP) + .triggerableAnim("mouth", RawAnimation.begin().then("anim.alligator_gar.mouth", Animation.LoopType.PLAY_ONCE))); + } + + private float getSignedTurnDelta() { + // Only consider the body (torso) rotation so head look does not affect tail sway + return Mth.wrapDegrees(this.yBodyRot - this.yBodyRotO); + } + + private int mouthAnimCooldown = 0; + + @Override + public void tick() { + super.tick(); + + if (!level().isClientSide) { + this.entityData.set(DATA_SYNCED_AGE, this.getAge()); + var maxHealthAttr = getAttribute(Attributes.MAX_HEALTH); + if (maxHealthAttr != null) { + double baseAdult = DefaultAttributes.getSupplier((EntityType) this.getType()).getValue(Attributes.MAX_HEALTH); + double desired = this.isBaby() ? baseAdult * 0.10D : baseAdult; + if (maxHealthAttr.getBaseValue() != desired) { + double oldMax = maxHealthAttr.getBaseValue(); + double healthRatio = this.getHealth() / (float) oldMax; + maxHealthAttr.setBaseValue(desired); + this.setHealth((float) (desired * Mth.clamp(healthRatio, 0.0F, 1.0F))); + } + } + } + + updateDynamicDimensions(); + + if (!level().isClientSide) { + if (mouthAnimCooldown > 0) { + mouthAnimCooldown--; + } else { + this.triggerAnim("mouthController", "mouth"); + // 30s–60s in ticks + mouthAnimCooldown = this.random.nextInt(1200 - 600 + 1) + 600; + } + } + + if (level().isClientSide) { + // Capture previous for smooth interpolation between ticks + this.tailSwayPrev = this.tailSwayOffset; + updateProceduralTailSway(); + } + } + + private void updateProceduralTailSway() { + // Turn input derived from rotation deltas; works even when standing still and turning + float turnDegrees = getSignedTurnDelta(); + + // Deadzone to ignore tiny jitter so the tail can return to center cleanly + float deadzoneDeg = 0.6f; // smaller deadzone for more responsiveness + float turnInput = 0.0f; + if (Math.abs(turnDegrees) >= deadzoneDeg) { + // Higher sensitivity so small in-place turns still affect the model + turnInput = Mth.clamp(turnDegrees / 15.0f, -1.0f, 1.0f); + } + + // Target offset: keep intuitive sign (positive input -> positive sway) + float target = turnInput; + + // One-pole low-pass (no bounce). Larger alpha => snappier and less "stiff". + float alpha = 0.24f; // try 0.20–0.30 to taste + + tailSwayOffset += (target - tailSwayOffset) * alpha; + + // Snap tiny residuals to zero so it visibly settles + if (Math.abs(tailSwayOffset) < 0.003f) { + tailSwayOffset = 0.0f; + } + + // No oscillation velocity retained + tailSwayVelocity = 0.0f; + + tailSwayOffset = Mth.clamp(tailSwayOffset, -1.5f, 1.5f); + } + + // Expose to the model for bone rotation + public float getTailSwayOffset() { + return tailSwayOffset; + } + + // Interpolated sway for smooth rendering between ticks + public float getTailSwayOffset(float partialTick) { + return Mth.lerp(Mth.clamp(partialTick, 0.0f, 1.0f), tailSwayPrev, tailSwayOffset); + } + + /*? if <=1.20.1 {*/ + @Override + protected void defineSynchedData() { + super.defineSynchedData(); + this.entityData.define(VARIANT, 0); + this.entityData.define(DATA_SYNCED_AGE, 0); + this.entityData.define(DATA_ANIMAL_SCALE, 1.0F); + } + /*?} else {*/ + /*@Override + protected void defineSynchedData(SynchedEntityData.Builder pBuilder) { + super.defineSynchedData(pBuilder); + pBuilder.define(VARIANT, 0); + pBuilder.define(DATA_SYNCED_AGE, 0); + pBuilder.define(DATA_ANIMAL_SCALE, 1.0F); + } + *//*?}*/ + + public int getSyncedAge() { + return this.entityData.get(DATA_SYNCED_AGE); + } + + public float getAnimalScale() { + return this.entityData.get(DATA_ANIMAL_SCALE); + } + + private void setAnimalScale(float animalScale) { + this.entityData.set(DATA_ANIMAL_SCALE, animalScale); + } + + public float getGrowthScale() { + if (!this.isBaby()) { + return 1.0F; + } + + int age = this.level().isClientSide ? this.getSyncedAge() : this.getAge(); + float growthProgress = Mth.clamp((BABY_TO_ADULT_AGE_TICKS + age) / (float) BABY_TO_ADULT_AGE_TICKS, 0.0F, 1.0F); + return Mth.lerp(growthProgress, 0.2F, 1.0F); + } + public float getTotalModelScale() { + return this.getAnimalScale() * this.getGrowthScale(); + } + + private void updateDynamicDimensions() { + float dimensionsScale = this.getTotalModelScale(); + if (Math.abs(dimensionsScale - this.lastDimensionsScale) > 0.01F) { + this.lastDimensionsScale = dimensionsScale; + this.refreshDimensions(); + } + } + + @Override + public float getLiveDinoScale() { + return this.getTotalModelScale(); + } + + public int getTypeVariant() { + return this.entityData.get(VARIANT); + } + + public AlligatorGarVariant getVariant() { + return AlligatorGarVariant.byId(this.getTypeVariant() & 255); + } + + private void setVariant(AlligatorGarVariant variant) { + this.entityData.set(VARIANT, variant.getId() & 255); + } + + @Override + public boolean canMate(Animal other) { + if (!super.canMate(other)) return false; + if (!(other instanceof AlligatorGarEntity that)) return false; + return this.getVariant() != that.getVariant(); + } + @Override + public void addAdditionalSaveData(CompoundTag pCompound) { + super.addAdditionalSaveData(pCompound); + pCompound.putInt("Variant", this.getTypeVariant()); + pCompound.putFloat("AnimalScale", this.getAnimalScale()); + } + + @Override + public void readAdditionalSaveData(CompoundTag pCompound) { + super.readAdditionalSaveData(pCompound); + this.entityData.set(VARIANT, pCompound.getInt("Variant")); + if (pCompound.contains("AnimalScale")) { + this.setAnimalScale(pCompound.getFloat("AnimalScale")); + } + } + + /*? if <=1.20.1 {*/ + @Override + public SpawnGroupData finalizeSpawn(ServerLevelAccessor pLevel, DifficultyInstance pDifficulty, MobSpawnType pReason, @Nullable SpawnGroupData pSpawnData, @Nullable CompoundTag pDataTag) { + AlligatorGarVariant variant = Util.getRandom(AlligatorGarVariant.values(), this.random); + this.setVariant(variant); + this.setAnimalScale(Mth.nextFloat(this.random, MIN_ANIMAL_SCALE, MAX_ANIMAL_SCALE)); + return super.finalizeSpawn(pLevel, pDifficulty, pReason, pSpawnData, pDataTag); + } + /*?} else {*/ + /*@Override + public SpawnGroupData finalizeSpawn(ServerLevelAccessor level, DifficultyInstance difficulty, MobSpawnType spawnType, @Nullable SpawnGroupData spawnGroupData) { + AlligatorGarVariant variant = Util.getRandom(AlligatorGarVariant.values(), this.random); + this.setVariant(variant); + this.setAnimalScale(Mth.nextFloat(this.random, MIN_ANIMAL_SCALE, MAX_ANIMAL_SCALE)); + return super.finalizeSpawn(level, difficulty, spawnType, spawnGroupData); + } + *//*?}*/ + + @Override + public AnimatableInstanceCache getAnimatableInstanceCache() { + return cache; + } + + @Override + public double getFluidJumpThreshold() { + return this.getEyeHeight(); + } +} \ No newline at end of file diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/AllosaurusEntity.java b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/AllosaurusEntity.java index ef4a205..b046832 100644 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/AllosaurusEntity.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/AllosaurusEntity.java @@ -312,7 +312,7 @@ public class AllosaurusEntity extends DinoEntityBase implements GeoEntity { } @Override -public float getDinoScale() { +public float getLiveDinoScale() { return this.getTotalModelScale(); } public int getTypeVariant() { diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/AlvarezsaurusEntity.java b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/AlvarezsaurusEntity.java index 7db3391..26ba998 100644 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/AlvarezsaurusEntity.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/AlvarezsaurusEntity.java @@ -316,7 +316,7 @@ public class AlvarezsaurusEntity extends DinoEntityBase implements GeoEntity { } @Override -public float getDinoScale() { +public float getLiveDinoScale() { return this.getTotalModelScale(); } public int getTypeVariant() { diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/AnkylosaurusEntity.java b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/AnkylosaurusEntity.java index 0dd3c20..ab4edc4 100644 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/AnkylosaurusEntity.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/AnkylosaurusEntity.java @@ -315,7 +315,7 @@ public class AnkylosaurusEntity extends DinoEntityBase implements GeoEntity { } @Override -public float getDinoScale() { +public float getLiveDinoScale() { return this.getTotalModelScale(); } public int getTypeVariant() { diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/ApatosaurusEntity.java b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/ApatosaurusEntity.java index 7aa1e55..53728b5 100644 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/ApatosaurusEntity.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/ApatosaurusEntity.java @@ -319,7 +319,7 @@ public class ApatosaurusEntity extends DinoEntityBase implements GeoEntity { } @Override -public float getDinoScale() { +public float getLiveDinoScale() { return this.getTotalModelScale(); } public int getTypeVariant() { diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/ArambourgianiaEntity.java b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/ArambourgianiaEntity.java index 42a9582..8265688 100644 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/ArambourgianiaEntity.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/ArambourgianiaEntity.java @@ -355,7 +355,7 @@ public class ArambourgianiaEntity extends DinoEntityBase implements GeoEntity, F } @Override -public float getDinoScale() { +public float getLiveDinoScale() { return this.getTotalModelScale(); } diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/BaryonyxEntity.java b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/BaryonyxEntity.java index 5e7a1a9..bf951b2 100644 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/BaryonyxEntity.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/BaryonyxEntity.java @@ -318,7 +318,7 @@ public class BaryonyxEntity extends DinoEntityBase implements GeoEntity { } @Override -public float getDinoScale() { +public float getLiveDinoScale() { return this.getTotalModelScale(); } public int getTypeVariant() { diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/BrachiosaurusEntity.java b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/BrachiosaurusEntity.java index f52aba9..e3590c2 100644 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/BrachiosaurusEntity.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/BrachiosaurusEntity.java @@ -319,7 +319,7 @@ public class BrachiosaurusEntity extends DinoEntityBase implements GeoEntity { } @Override -public float getDinoScale() { +public float getLiveDinoScale() { return this.getTotalModelScale(); } public int getTypeVariant() { diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/CarcharodontosaurusEntity.java b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/CarcharodontosaurusEntity.java index e4e8e82..4ee4453 100644 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/CarcharodontosaurusEntity.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/CarcharodontosaurusEntity.java @@ -316,7 +316,7 @@ public class CarcharodontosaurusEntity extends DinoEntityBase implements GeoEnti } @Override - public float getDinoScale() { + public float getLiveDinoScale() { return this.getTotalModelScale(); } diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/CarnotaurusEntity.java b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/CarnotaurusEntity.java index b496826..1735d34 100644 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/CarnotaurusEntity.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/CarnotaurusEntity.java @@ -313,7 +313,7 @@ public class CarnotaurusEntity extends DinoEntityBase implements GeoEntity { } @Override -public float getDinoScale() { +public float getLiveDinoScale() { return this.getTotalModelScale(); } public int getTypeVariant() { diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/CearadactylusEntity.java b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/CearadactylusEntity.java index 9c82790..b2a8984 100644 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/CearadactylusEntity.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/CearadactylusEntity.java @@ -355,7 +355,7 @@ public class CearadactylusEntity extends DinoEntityBase implements GeoEntity, Fl } @Override -public float getDinoScale() { +public float getLiveDinoScale() { return this.getTotalModelScale(); } diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/CeratosaurusEntity.java b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/CeratosaurusEntity.java index 2d89a08..82beb92 100644 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/CeratosaurusEntity.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/CeratosaurusEntity.java @@ -312,7 +312,7 @@ public class CeratosaurusEntity extends DinoEntityBase implements GeoEntity { } @Override -public float getDinoScale() { +public float getLiveDinoScale() { return this.getTotalModelScale(); } diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/ChasmosaurusEntity.java b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/ChasmosaurusEntity.java index c1b6f26..bb7700a 100644 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/ChasmosaurusEntity.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/ChasmosaurusEntity.java @@ -315,7 +315,7 @@ public class ChasmosaurusEntity extends DinoEntityBase implements GeoEntity { } @Override -public float getDinoScale() { +public float getLiveDinoScale() { return this.getTotalModelScale(); } public int getTypeVariant() { diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/ChickenosaurusEntity.java b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/ChickenosaurusEntity.java index db48876..b4de625 100644 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/ChickenosaurusEntity.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/ChickenosaurusEntity.java @@ -316,7 +316,7 @@ public class ChickenosaurusEntity extends DinoEntityBase implements GeoEntity { } @Override -public float getDinoScale() { +public float getLiveDinoScale() { return this.getTotalModelScale(); } public int getTypeVariant() { diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/ChilesaurusEntity.java b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/ChilesaurusEntity.java index 10db54c..c978e4c 100644 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/ChilesaurusEntity.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/ChilesaurusEntity.java @@ -304,7 +304,7 @@ public class ChilesaurusEntity extends DinoEntityBase implements GeoEntity { } @Override -public float getDinoScale() { +public float getLiveDinoScale() { return this.getTotalModelScale(); } public int getTypeVariant() { diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/CoelacanthEntity.java b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/CoelacanthEntity.java index 1efe8eb..d6ea1c6 100644 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/CoelacanthEntity.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/CoelacanthEntity.java @@ -333,7 +333,7 @@ public class CoelacanthEntity extends DinoEntityBase implements GeoEntity { } @Override - public float getDinoScale() { + public float getLiveDinoScale() { return this.getTotalModelScale(); } diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/CoelophysisEntity.java b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/CoelophysisEntity.java index 2c2eaab..399dbfd 100644 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/CoelophysisEntity.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/CoelophysisEntity.java @@ -316,7 +316,7 @@ public class CoelophysisEntity extends DinoEntityBase implements GeoEntity { } @Override -public float getDinoScale() { +public float getLiveDinoScale() { return this.getTotalModelScale(); } public int getTypeVariant() { diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/CoelurusEntity.java b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/CoelurusEntity.java index 28eaa62..e0f9955 100644 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/CoelurusEntity.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/CoelurusEntity.java @@ -316,7 +316,7 @@ public class CoelurusEntity extends DinoEntityBase implements GeoEntity { } @Override -public float getDinoScale() { +public float getLiveDinoScale() { return this.getTotalModelScale(); } public int getTypeVariant() { diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/CompsognathusEntity.java b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/CompsognathusEntity.java index 9ee5e67..6289453 100644 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/CompsognathusEntity.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/CompsognathusEntity.java @@ -313,7 +313,7 @@ public class CompsognathusEntity extends DinoEntityBase implements GeoEntity { } @Override - public float getDinoScale() { + public float getLiveDinoScale() { return this.getTotalModelScale(); } diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/ConcavenatorEntity.java b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/ConcavenatorEntity.java index f920412..ed5c831 100644 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/ConcavenatorEntity.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/ConcavenatorEntity.java @@ -312,7 +312,7 @@ public class ConcavenatorEntity extends DinoEntityBase implements GeoEntity { } @Override -public float getDinoScale() { +public float getLiveDinoScale() { return this.getTotalModelScale(); } public int getTypeVariant() { diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/CorythosaurusEntity.java b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/CorythosaurusEntity.java index d5106f8..7d01f65 100644 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/CorythosaurusEntity.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/CorythosaurusEntity.java @@ -313,7 +313,7 @@ public class CorythosaurusEntity extends DinoEntityBase implements GeoEntity { } @Override -public float getDinoScale() { +public float getLiveDinoScale() { return this.getTotalModelScale(); } public int getTypeVariant() { diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/DeinonychusEntity.java b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/DeinonychusEntity.java index b0d8d7b..241874f 100644 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/DeinonychusEntity.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/DeinonychusEntity.java @@ -316,7 +316,7 @@ public class DeinonychusEntity extends DinoEntityBase implements GeoEntity { } @Override -public float getDinoScale() { +public float getLiveDinoScale() { return this.getTotalModelScale(); } public int getTypeVariant() { diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/DilophosaurusEntity.java b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/DilophosaurusEntity.java index b91a3b6..4820552 100644 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/DilophosaurusEntity.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/DilophosaurusEntity.java @@ -321,7 +321,7 @@ public class DilophosaurusEntity extends DinoEntityBase implements GeoEntity { } @Override -public float getDinoScale() { +public float getLiveDinoScale() { return this.getTotalModelScale(); } public int getTypeVariant() { diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/DimorphodonEntity.java b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/DimorphodonEntity.java index 78c6b59..ef3914d 100644 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/DimorphodonEntity.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/DimorphodonEntity.java @@ -355,7 +355,7 @@ public class DimorphodonEntity extends DinoEntityBase implements GeoEntity, Flyi } @Override -public float getDinoScale() { +public float getLiveDinoScale() { return this.getTotalModelScale(); } diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/DiplodocusEntity.java b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/DiplodocusEntity.java index 34fb36d..b4fe0c5 100644 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/DiplodocusEntity.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/DiplodocusEntity.java @@ -318,7 +318,7 @@ public class DiplodocusEntity extends DinoEntityBase implements GeoEntity { } @Override -public float getDinoScale() { +public float getLiveDinoScale() { return this.getTotalModelScale(); } public int getTypeVariant() { diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/DistortusRexEntity.java b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/DistortusRexEntity.java index a7a9c76..2cf4ceb 100644 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/DistortusRexEntity.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/DistortusRexEntity.java @@ -316,7 +316,7 @@ public class DistortusRexEntity extends DinoEntityBase implements GeoEntity { } @Override -public float getDinoScale() { +public float getLiveDinoScale() { return this.getTotalModelScale(); } public int getTypeVariant() { diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/DryosaurusEntity.java b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/DryosaurusEntity.java index 8864157..c920cd2 100644 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/DryosaurusEntity.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/DryosaurusEntity.java @@ -313,7 +313,7 @@ public class DryosaurusEntity extends DinoEntityBase implements GeoEntity { } @Override -public float getDinoScale() { +public float getLiveDinoScale() { return this.getTotalModelScale(); } public int getTypeVariant() { diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/EdmontosaurusEntity.java b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/EdmontosaurusEntity.java index eceae2c..c785256 100644 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/EdmontosaurusEntity.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/EdmontosaurusEntity.java @@ -313,7 +313,7 @@ public class EdmontosaurusEntity extends DinoEntityBase implements GeoEntity { } @Override -public float getDinoScale() { +public float getLiveDinoScale() { return this.getTotalModelScale(); } public int getTypeVariant() { diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/FDuckEntity.java b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/FDuckEntity.java index 29fab71..493f18e 100644 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/FDuckEntity.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/FDuckEntity.java @@ -316,7 +316,7 @@ public class FDuckEntity extends DinoEntityBase implements GeoEntity { } @Override -public float getDinoScale() { +public float getLiveDinoScale() { return this.getTotalModelScale(); } public int getTypeVariant() { diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/GallimimusEntity.java b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/GallimimusEntity.java index 1958e93..7344529 100644 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/GallimimusEntity.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/GallimimusEntity.java @@ -313,7 +313,7 @@ public class GallimimusEntity extends DinoEntityBase implements GeoEntity { } @Override -public float getDinoScale() { +public float getLiveDinoScale() { return this.getTotalModelScale(); } public int getTypeVariant() { diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/GeosternbergiaEntity.java b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/GeosternbergiaEntity.java index 4cc79bd..74b7f32 100644 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/GeosternbergiaEntity.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/GeosternbergiaEntity.java @@ -355,7 +355,7 @@ public class GeosternbergiaEntity extends DinoEntityBase implements GeoEntity, F } @Override -public float getDinoScale() { +public float getLiveDinoScale() { return this.getTotalModelScale(); } diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/GiganotosaurusEntity.java b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/GiganotosaurusEntity.java index 265a91b..e953d37 100644 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/GiganotosaurusEntity.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/GiganotosaurusEntity.java @@ -316,7 +316,7 @@ public class GiganotosaurusEntity extends DinoEntityBase implements GeoEntity { } @Override - public float getDinoScale() { + public float getLiveDinoScale() { return this.getTotalModelScale(); } public int getTypeVariant() { diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/GuanlongEntity.java b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/GuanlongEntity.java index a5b99bc..7fc48e1 100644 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/GuanlongEntity.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/GuanlongEntity.java @@ -317,7 +317,7 @@ public class GuanlongEntity extends DinoEntityBase implements GeoEntity { } @Override -public float getDinoScale() { +public float getLiveDinoScale() { return this.getTotalModelScale(); } public int getTypeVariant() { diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/GuidracoEntity.java b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/GuidracoEntity.java index 456885a..dd49b1d 100644 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/GuidracoEntity.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/GuidracoEntity.java @@ -355,7 +355,7 @@ public class GuidracoEntity extends DinoEntityBase implements GeoEntity, FlyingA } @Override -public float getDinoScale() { +public float getLiveDinoScale() { return this.getTotalModelScale(); } diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/HadrosaurusEntity.java b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/HadrosaurusEntity.java index f914e35..51160d8 100644 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/HadrosaurusEntity.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/HadrosaurusEntity.java @@ -313,7 +313,7 @@ public class HadrosaurusEntity extends DinoEntityBase implements GeoEntity { } @Override -public float getDinoScale() { +public float getLiveDinoScale() { return this.getTotalModelScale(); } public int getTypeVariant() { diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/HerrerasaurusEntity.java b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/HerrerasaurusEntity.java index 55e7942..1d39460 100644 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/HerrerasaurusEntity.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/HerrerasaurusEntity.java @@ -318,7 +318,7 @@ public class HerrerasaurusEntity extends DinoEntityBase implements GeoEntity { } @Override -public float getDinoScale() { +public float getLiveDinoScale() { return this.getTotalModelScale(); } public int getTypeVariant() { diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/HypsilophodonEntity.java b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/HypsilophodonEntity.java index ab67c95..07cdb4d 100644 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/HypsilophodonEntity.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/HypsilophodonEntity.java @@ -313,7 +313,7 @@ public class HypsilophodonEntity extends DinoEntityBase implements GeoEntity { } @Override -public float getDinoScale() { +public float getLiveDinoScale() { return this.getTotalModelScale(); } public int getTypeVariant() { diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/IndominusRexEntity.java b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/IndominusRexEntity.java index e4fc416..d25c11e 100644 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/IndominusRexEntity.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/IndominusRexEntity.java @@ -319,7 +319,7 @@ public class IndominusRexEntity extends DinoEntityBase implements GeoEntity { } @Override -public float getDinoScale() { +public float getLiveDinoScale() { return this.getTotalModelScale(); } public int getTypeVariant() { diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/IndoraptorEntity.java b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/IndoraptorEntity.java index 1562e54..fdcc58c 100644 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/IndoraptorEntity.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/IndoraptorEntity.java @@ -317,7 +317,7 @@ public class IndoraptorEntity extends DinoEntityBase implements GeoEntity { } @Override -public float getDinoScale() { +public float getLiveDinoScale() { return this.getTotalModelScale(); } public int getTypeVariant() { diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/InostranceviaEntity.java b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/InostranceviaEntity.java index 4872e88..b40812a 100644 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/InostranceviaEntity.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/InostranceviaEntity.java @@ -317,7 +317,7 @@ public class InostranceviaEntity extends DinoEntityBase implements GeoEntity { } @Override -public float getDinoScale() { +public float getLiveDinoScale() { return this.getTotalModelScale(); } public int getTypeVariant() { diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/LambeosaurusEntity.java b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/LambeosaurusEntity.java index f9afc84..ddfe1fd 100644 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/LambeosaurusEntity.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/LambeosaurusEntity.java @@ -313,7 +313,7 @@ public class LambeosaurusEntity extends DinoEntityBase implements GeoEntity { } @Override -public float getDinoScale() { +public float getLiveDinoScale() { return this.getTotalModelScale(); } public int getTypeVariant() { diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/LudodactylusEntity.java b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/LudodactylusEntity.java index 148eb32..fd6dc2f 100644 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/LudodactylusEntity.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/LudodactylusEntity.java @@ -355,7 +355,7 @@ public class LudodactylusEntity extends DinoEntityBase implements GeoEntity, Fly } @Override -public float getDinoScale() { +public float getLiveDinoScale() { return this.getTotalModelScale(); } diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/MajungasaurusEntity.java b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/MajungasaurusEntity.java index 58a8830..fb37994 100644 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/MajungasaurusEntity.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/MajungasaurusEntity.java @@ -318,7 +318,7 @@ public class MajungasaurusEntity extends DinoEntityBase implements GeoEntity { } @Override -public float getDinoScale() { +public float getLiveDinoScale() { return this.getTotalModelScale(); } public int getTypeVariant() { diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/MamenchisaurusEntity.java b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/MamenchisaurusEntity.java index 073a097..061fff3 100644 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/MamenchisaurusEntity.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/MamenchisaurusEntity.java @@ -319,7 +319,7 @@ public class MamenchisaurusEntity extends DinoEntityBase implements GeoEntity { } @Override -public float getDinoScale() { +public float getLiveDinoScale() { return this.getTotalModelScale(); } public int getTypeVariant() { diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/MawsoniaEntity.java b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/MawsoniaEntity.java new file mode 100644 index 0000000..deb112c --- /dev/null +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/MawsoniaEntity.java @@ -0,0 +1,395 @@ +package net.cmr.jurassicrevived.entity.custom; + +import net.cmr.jurassicrevived.Constants; +import net.cmr.jurassicrevived.entity.ModEntities; +import net.cmr.jurassicrevived.entity.ai.DinoData; +import net.cmr.jurassicrevived.entity.ai.DinoEntityBase; +import net.cmr.jurassicrevived.entity.ai.IDinoData; +import net.cmr.jurassicrevived.entity.client.MawsoniaVariant; +import net.minecraft.Util; +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.util.Mth; +import net.minecraft.world.DifficultyInstance; +import net.minecraft.world.entity.*; +import net.minecraft.world.entity.ai.attributes.AttributeSupplier; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.ai.attributes.DefaultAttributes; +import net.minecraft.world.entity.ai.control.SmoothSwimmingMoveControl; +import net.minecraft.world.entity.ai.navigation.PathNavigation; +import net.minecraft.world.entity.ai.navigation.WaterBoundPathNavigation; +import net.minecraft.world.entity.animal.Animal; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.ServerLevelAccessor; +import net.minecraft.world.level.block.Block; +import org.jetbrains.annotations.Nullable; +import software.bernie.geckolib.animatable.GeoEntity; +/*? if <=1.20.1 {*/ +import software.bernie.geckolib.core.animatable.instance.AnimatableInstanceCache; +import software.bernie.geckolib.core.animatable.instance.SingletonAnimatableInstanceCache; +import software.bernie.geckolib.core.animation.AnimatableManager; +import software.bernie.geckolib.core.animation.Animation; +import software.bernie.geckolib.core.animation.AnimationController; +import software.bernie.geckolib.core.animation.RawAnimation; +import software.bernie.geckolib.core.object.PlayState; +/*?} else {*/ +/*import software.bernie.geckolib.animatable.instance.AnimatableInstanceCache; +import software.bernie.geckolib.animatable.instance.SingletonAnimatableInstanceCache; +import software.bernie.geckolib.animation.*; +*//*?}*/ + +public class MawsoniaEntity extends DinoEntityBase implements GeoEntity { + private AnimatableInstanceCache cache = new SingletonAnimatableInstanceCache(this); + + public static final int BABY_TO_ADULT_AGE_TICKS = 28800; + private static final float ANIMAL_SCALE = 1.0F; + private static final float MIN_ANIMAL_SCALE = !Constants.DEBUG_SIZES ? (ANIMAL_SCALE - 0.2F) : ANIMAL_SCALE; + private static final float MAX_ANIMAL_SCALE = !Constants.DEBUG_SIZES ? (ANIMAL_SCALE + 0.2F) : ANIMAL_SCALE; + + private float lastDimensionsScale = 1.0F; + + private static final EntityDataAccessor VARIANT = + SynchedEntityData.defineId(MawsoniaEntity.class, EntityDataSerializers.INT); + private static final EntityDataAccessor DATA_SYNCED_AGE = + SynchedEntityData.defineId(MawsoniaEntity.class, EntityDataSerializers.INT); + private static final EntityDataAccessor DATA_ANIMAL_SCALE = + SynchedEntityData.defineId(MawsoniaEntity.class, EntityDataSerializers.FLOAT); + + // Procedural tail sway state (client-side use for rendering) + private float tailSwayOffset; // Smoothed offset in range roughly [-1, 1] + private float tailSwayVelocity; // Internal velocity for spring-damper + private float tailSwayPrev; // Previous frame value for interpolation + + public MawsoniaEntity(EntityType pEntityType, Level pLevel) { + super(pEntityType, pLevel); + + this.dinoData = new DinoData( + getAIConfig().maxHunger(), + getAIConfig().maxThirst(), + IDinoData.Mood.NEUTRAL, + IDinoData.Aggression.TERRITORIAL, + 0.75f, + IDinoData.DietaryClassification.CARNIVORE, + IDinoData.Type.MARINE, + IDinoData.Group.PISCINE, + IDinoData.BirthType.EGG_LAYING, + IDinoData.ActivityPattern.CATHEMERAL + ); + + // Replaces the default move control with 3D swimming mechanics + this.moveControl = new SmoothSwimmingMoveControl(this, 85, 10, 0.02F, 0.1F, true); + + // Tells the pathfinder that water is perfectly safe to navigate through + /*? if <=1.20.1 {*/ + this.setPathfindingMalus(net.minecraft.world.level.pathfinder.BlockPathTypes.WATER, 0.0F); + /*?} else {*/ + /*this.setPathfindingMalus(net.minecraft.world.level.pathfinder.PathType.WATER, 0.0F); + *//*?}*/ + } + + @Override + protected PathNavigation createNavigation(Level pLevel) { + return new WaterBoundPathNavigation(this, pLevel); + } + + //@Override + //public ItemStack getPickResult() { + // return new ItemStack(ModItems.MAWSONIA_SPAWN_EGG.get()); + //} + + @Override + public boolean isCarnivore() { + return true; + } + + @Override + public boolean isMarine() { + return true; + } + + @Override + public boolean isAmphibious() { + return false; + } + + @Override + public boolean isSimpleFish() { + return true; + } + + @Override + public Block getEggBlock() { + return null; + } + + @Override + public DinoAIConfig getAIConfig() { + return new DinoAIConfig(0.3D, 1.1D, 1.5D, 100, 100, 0.05f, 0.1f, 20); + } + + @Override + public void setBaby(boolean baby) { + this.setAge(baby ? -BABY_TO_ADULT_AGE_TICKS : 0); + } + + public static AttributeSupplier.Builder createAttributes() { + return Animal.createLivingAttributes() + .add(Attributes.MAX_HEALTH, 30D) + .add(Attributes.MOVEMENT_SPEED, 0.3D) + .add(Attributes.ARMOR, 0D) + .add(Attributes.FOLLOW_RANGE, 32D) + .add(Attributes.ATTACK_DAMAGE, 8D) + .add(Attributes.KNOCKBACK_RESISTANCE, 0.3D) + .add(Attributes.ATTACK_KNOCKBACK, 0D); + } + + @Nullable + @Override + public AgeableMob getBreedOffspring(ServerLevel pLevel, AgeableMob pOtherParent) { + AgeableMob child = ModEntities.MAWSONIA.get().create(pLevel); + if (child instanceof MawsoniaEntity baby) { + MawsoniaVariant randomVariant = Util.getRandom(MawsoniaVariant.values(), this.random); + baby.setVariant(randomVariant); + baby.setBaby(true); + baby.setAnimalScale(Mth.nextFloat(this.random, MIN_ANIMAL_SCALE, MAX_ANIMAL_SCALE)); + } + return child; + } + + @Override + public boolean doHurtTarget(Entity target) { + boolean hit = super.doHurtTarget(target); + if (!level().isClientSide && hit && target instanceof LivingEntity) { + if (this.level() instanceof ServerLevel serverLevel) { + this.triggerAnim("attackController", "attack"); + } + } + return hit; + } + + @Override + public void registerControllers(AnimatableManager.ControllerRegistrar controllers) { + controllers.add(new AnimationController<>(this, "SwimController", 5, state -> { + // 1. Highest Priority: Out of water flapping + if (!this.isInWater()) { + return state.setAndContinue(RawAnimation.begin().then("anim.mawsonia.flop", Animation.LoopType.LOOP)); + } + + // 2. Aquatic movement: Just swim + return state.setAndContinue(RawAnimation.begin().then("anim.mawsonia.swim", Animation.LoopType.LOOP)); + })); + + controllers.add(new AnimationController<>(this, "attackController", 5, state -> PlayState.STOP) + .triggerableAnim("attack", RawAnimation.begin().then("anim.mawsonia.attack", Animation.LoopType.PLAY_ONCE))); + + controllers.add(new AnimationController<>(this, "mouthController", 5, state -> PlayState.STOP) + .triggerableAnim("mouth", RawAnimation.begin().then("anim.mawsonia.mouth", Animation.LoopType.PLAY_ONCE))); + } + + private float getSignedTurnDelta() { + // Only consider the body (torso) rotation so head look does not affect tail sway + return Mth.wrapDegrees(this.yBodyRot - this.yBodyRotO); + } + + private int mouthAnimCooldown = 0; + + @Override + public void tick() { + super.tick(); + + if (!level().isClientSide) { + this.entityData.set(DATA_SYNCED_AGE, this.getAge()); + var maxHealthAttr = getAttribute(Attributes.MAX_HEALTH); + if (maxHealthAttr != null) { + double baseAdult = DefaultAttributes.getSupplier((EntityType) this.getType()).getValue(Attributes.MAX_HEALTH); + double desired = this.isBaby() ? baseAdult * 0.10D : baseAdult; + if (maxHealthAttr.getBaseValue() != desired) { + double oldMax = maxHealthAttr.getBaseValue(); + double healthRatio = this.getHealth() / (float) oldMax; + maxHealthAttr.setBaseValue(desired); + this.setHealth((float) (desired * Mth.clamp(healthRatio, 0.0F, 1.0F))); + } + } + } + + updateDynamicDimensions(); + + if (!level().isClientSide) { + if (mouthAnimCooldown > 0) { + mouthAnimCooldown--; + } else { + this.triggerAnim("mouthController", "mouth"); + // 30s–60s in ticks + mouthAnimCooldown = this.random.nextInt(1200 - 600 + 1) + 600; + } + } + + if (level().isClientSide) { + // Capture previous for smooth interpolation between ticks + this.tailSwayPrev = this.tailSwayOffset; + updateProceduralTailSway(); + } + } + + private void updateProceduralTailSway() { + // Turn input derived from rotation deltas; works even when standing still and turning + float turnDegrees = getSignedTurnDelta(); + + // Deadzone to ignore tiny jitter so the tail can return to center cleanly + float deadzoneDeg = 0.6f; // smaller deadzone for more responsiveness + float turnInput = 0.0f; + if (Math.abs(turnDegrees) >= deadzoneDeg) { + // Higher sensitivity so small in-place turns still affect the model + turnInput = Mth.clamp(turnDegrees / 15.0f, -1.0f, 1.0f); + } + + // Target offset: keep intuitive sign (positive input -> positive sway) + float target = turnInput; + + // One-pole low-pass (no bounce). Larger alpha => snappier and less "stiff". + float alpha = 0.24f; // try 0.20–0.30 to taste + + tailSwayOffset += (target - tailSwayOffset) * alpha; + + // Snap tiny residuals to zero so it visibly settles + if (Math.abs(tailSwayOffset) < 0.003f) { + tailSwayOffset = 0.0f; + } + + // No oscillation velocity retained + tailSwayVelocity = 0.0f; + + tailSwayOffset = Mth.clamp(tailSwayOffset, -1.5f, 1.5f); + } + + // Expose to the model for bone rotation + public float getTailSwayOffset() { + return tailSwayOffset; + } + + // Interpolated sway for smooth rendering between ticks + public float getTailSwayOffset(float partialTick) { + return Mth.lerp(Mth.clamp(partialTick, 0.0f, 1.0f), tailSwayPrev, tailSwayOffset); + } + + /*? if <=1.20.1 {*/ + @Override + protected void defineSynchedData() { + super.defineSynchedData(); + this.entityData.define(VARIANT, 0); + this.entityData.define(DATA_SYNCED_AGE, 0); + this.entityData.define(DATA_ANIMAL_SCALE, 1.0F); + } + /*?} else {*/ + /*@Override + protected void defineSynchedData(SynchedEntityData.Builder pBuilder) { + super.defineSynchedData(pBuilder); + pBuilder.define(VARIANT, 0); + pBuilder.define(DATA_SYNCED_AGE, 0); + pBuilder.define(DATA_ANIMAL_SCALE, 1.0F); + } + *//*?}*/ + + public int getSyncedAge() { + return this.entityData.get(DATA_SYNCED_AGE); + } + + public float getAnimalScale() { + return this.entityData.get(DATA_ANIMAL_SCALE); + } + + private void setAnimalScale(float animalScale) { + this.entityData.set(DATA_ANIMAL_SCALE, animalScale); + } + + public float getGrowthScale() { + if (!this.isBaby()) { + return 1.0F; + } + + int age = this.level().isClientSide ? this.getSyncedAge() : this.getAge(); + float growthProgress = Mth.clamp((BABY_TO_ADULT_AGE_TICKS + age) / (float) BABY_TO_ADULT_AGE_TICKS, 0.0F, 1.0F); + return Mth.lerp(growthProgress, 0.2F, 1.0F); + } + public float getTotalModelScale() { + return this.getAnimalScale() * this.getGrowthScale(); + } + + private void updateDynamicDimensions() { + float dimensionsScale = this.getTotalModelScale(); + if (Math.abs(dimensionsScale - this.lastDimensionsScale) > 0.01F) { + this.lastDimensionsScale = dimensionsScale; + this.refreshDimensions(); + } + } + + @Override + public float getLiveDinoScale() { + return this.getTotalModelScale(); + } + + public int getTypeVariant() { + return this.entityData.get(VARIANT); + } + + public MawsoniaVariant getVariant() { + return MawsoniaVariant.byId(this.getTypeVariant() & 255); + } + + private void setVariant(MawsoniaVariant variant) { + this.entityData.set(VARIANT, variant.getId() & 255); + } + + @Override + public boolean canMate(Animal other) { + if (!super.canMate(other)) return false; + if (!(other instanceof MawsoniaEntity that)) return false; + return this.getVariant() != that.getVariant(); + } + @Override + public void addAdditionalSaveData(CompoundTag pCompound) { + super.addAdditionalSaveData(pCompound); + pCompound.putInt("Variant", this.getTypeVariant()); + pCompound.putFloat("AnimalScale", this.getAnimalScale()); + } + + @Override + public void readAdditionalSaveData(CompoundTag pCompound) { + super.readAdditionalSaveData(pCompound); + this.entityData.set(VARIANT, pCompound.getInt("Variant")); + if (pCompound.contains("AnimalScale")) { + this.setAnimalScale(pCompound.getFloat("AnimalScale")); + } + } + + /*? if <=1.20.1 {*/ + @Override + public SpawnGroupData finalizeSpawn(ServerLevelAccessor pLevel, DifficultyInstance pDifficulty, MobSpawnType pReason, @Nullable SpawnGroupData pSpawnData, @Nullable CompoundTag pDataTag) { + MawsoniaVariant variant = Util.getRandom(MawsoniaVariant.values(), this.random); + this.setVariant(variant); + this.setAnimalScale(Mth.nextFloat(this.random, MIN_ANIMAL_SCALE, MAX_ANIMAL_SCALE)); + return super.finalizeSpawn(pLevel, pDifficulty, pReason, pSpawnData, pDataTag); + } + /*?} else {*/ + /*@Override + public SpawnGroupData finalizeSpawn(ServerLevelAccessor level, DifficultyInstance difficulty, MobSpawnType spawnType, @Nullable SpawnGroupData spawnGroupData) { + MawsoniaVariant variant = Util.getRandom(MawsoniaVariant.values(), this.random); + this.setVariant(variant); + this.setAnimalScale(Mth.nextFloat(this.random, MIN_ANIMAL_SCALE, MAX_ANIMAL_SCALE)); + return super.finalizeSpawn(level, difficulty, spawnType, spawnGroupData); + } + *//*?}*/ + + @Override + public AnimatableInstanceCache getAnimatableInstanceCache() { + return cache; + } + + @Override + public double getFluidJumpThreshold() { + return this.getEyeHeight(); + } +} \ No newline at end of file diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/MetriacanthosaurusEntity.java b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/MetriacanthosaurusEntity.java index 31be07c..5922ebe 100644 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/MetriacanthosaurusEntity.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/MetriacanthosaurusEntity.java @@ -308,7 +308,7 @@ public class MetriacanthosaurusEntity extends DinoEntityBase implements GeoEntit } @Override -public float getDinoScale() { +public float getLiveDinoScale() { return this.getTotalModelScale(); } diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/MoganopterusEntity.java b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/MoganopterusEntity.java index 2be14bb..44cc1ae 100644 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/MoganopterusEntity.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/MoganopterusEntity.java @@ -351,7 +351,7 @@ public class MoganopterusEntity extends DinoEntityBase implements GeoEntity, Fly } @Override -public float getDinoScale() { +public float getLiveDinoScale() { return this.getTotalModelScale(); } diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/MussasaurusEntity.java b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/MussasaurusEntity.java index b072de2..2f81181 100644 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/MussasaurusEntity.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/MussasaurusEntity.java @@ -304,7 +304,7 @@ public class MussasaurusEntity extends DinoEntityBase implements GeoEntity { } @Override -public float getDinoScale() { +public float getLiveDinoScale() { return this.getTotalModelScale(); } public int getTypeVariant() { diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/NyctosaurusEntity.java b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/NyctosaurusEntity.java index 3c06ebe..ebce948 100644 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/NyctosaurusEntity.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/NyctosaurusEntity.java @@ -351,7 +351,7 @@ public class NyctosaurusEntity extends DinoEntityBase implements GeoEntity, Flyi } @Override -public float getDinoScale() { +public float getLiveDinoScale() { return this.getTotalModelScale(); } diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/OrnitholestesEntity.java b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/OrnitholestesEntity.java index a5a2f0e..2ef4b9d 100644 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/OrnitholestesEntity.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/OrnitholestesEntity.java @@ -316,7 +316,7 @@ public class OrnitholestesEntity extends DinoEntityBase implements GeoEntity { } @Override -public float getDinoScale() { +public float getLiveDinoScale() { return this.getTotalModelScale(); } public int getTypeVariant() { diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/OrnithomimusEntity.java b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/OrnithomimusEntity.java index 49c0181..fcde111 100644 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/OrnithomimusEntity.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/OrnithomimusEntity.java @@ -313,7 +313,7 @@ public class OrnithomimusEntity extends DinoEntityBase implements GeoEntity { } @Override -public float getDinoScale() { +public float getLiveDinoScale() { return this.getTotalModelScale(); } public int getTypeVariant() { diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/OuranosaurusEntity.java b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/OuranosaurusEntity.java index eb073c7..bc5b96f 100644 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/OuranosaurusEntity.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/OuranosaurusEntity.java @@ -313,7 +313,7 @@ public class OuranosaurusEntity extends DinoEntityBase implements GeoEntity { } @Override -public float getDinoScale() { +public float getLiveDinoScale() { return this.getTotalModelScale(); } public int getTypeVariant() { diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/OviraptorEntity.java b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/OviraptorEntity.java index 3bda5e5..ce2c0fe 100644 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/OviraptorEntity.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/OviraptorEntity.java @@ -315,7 +315,7 @@ public class OviraptorEntity extends DinoEntityBase implements GeoEntity { } @Override -public float getDinoScale() { +public float getLiveDinoScale() { return this.getTotalModelScale(); } public int getTypeVariant() { diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/PachycephalosaurusEntity.java b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/PachycephalosaurusEntity.java index 0c8760c..bd38183 100644 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/PachycephalosaurusEntity.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/PachycephalosaurusEntity.java @@ -315,7 +315,7 @@ public class PachycephalosaurusEntity extends DinoEntityBase implements GeoEntit } @Override -public float getDinoScale() { +public float getLiveDinoScale() { return this.getTotalModelScale(); } public int getTypeVariant() { diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/ParasaurolophusEntity.java b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/ParasaurolophusEntity.java index 772464c..e19c278 100644 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/ParasaurolophusEntity.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/ParasaurolophusEntity.java @@ -313,7 +313,7 @@ public class ParasaurolophusEntity extends DinoEntityBase implements GeoEntity { } @Override -public float getDinoScale() { +public float getLiveDinoScale() { return this.getTotalModelScale(); } public int getTypeVariant() { diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/ProceratosaurusEntity.java b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/ProceratosaurusEntity.java index d69378f..6b63c96 100644 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/ProceratosaurusEntity.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/ProceratosaurusEntity.java @@ -316,7 +316,7 @@ public class ProceratosaurusEntity extends DinoEntityBase implements GeoEntity { } @Override -public float getDinoScale() { +public float getLiveDinoScale() { return this.getTotalModelScale(); } public int getTypeVariant() { diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/ProcompsognathusEntity.java b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/ProcompsognathusEntity.java index 9024ae5..1dd4f0c 100644 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/ProcompsognathusEntity.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/ProcompsognathusEntity.java @@ -316,7 +316,7 @@ public class ProcompsognathusEntity extends DinoEntityBase implements GeoEntity } @Override -public float getDinoScale() { +public float getLiveDinoScale() { return this.getTotalModelScale(); } public int getTypeVariant() { diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/ProtoceratopsEntity.java b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/ProtoceratopsEntity.java index 604881e..62787d2 100644 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/ProtoceratopsEntity.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/ProtoceratopsEntity.java @@ -315,7 +315,7 @@ public class ProtoceratopsEntity extends DinoEntityBase implements GeoEntity { } @Override -public float getDinoScale() { +public float getLiveDinoScale() { return this.getTotalModelScale(); } public int getTypeVariant() { diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/PteranodonEntity.java b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/PteranodonEntity.java index 88f1911..228fc55 100644 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/PteranodonEntity.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/PteranodonEntity.java @@ -355,7 +355,7 @@ public class PteranodonEntity extends DinoEntityBase implements GeoEntity, Flyin } @Override -public float getDinoScale() { +public float getLiveDinoScale() { return this.getTotalModelScale(); } diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/PterodaustroEntity.java b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/PterodaustroEntity.java index a9da4fb..55ef268 100644 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/PterodaustroEntity.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/PterodaustroEntity.java @@ -355,7 +355,7 @@ public class PterodaustroEntity extends DinoEntityBase implements GeoEntity, Fly } @Override -public float getDinoScale() { +public float getLiveDinoScale() { return this.getTotalModelScale(); } diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/QuetzalcoatlusEntity.java b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/QuetzalcoatlusEntity.java index d918c18..251f927 100644 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/QuetzalcoatlusEntity.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/QuetzalcoatlusEntity.java @@ -351,7 +351,7 @@ public class QuetzalcoatlusEntity extends DinoEntityBase implements GeoEntity, F } @Override -public float getDinoScale() { +public float getLiveDinoScale() { return this.getTotalModelScale(); } diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/RajasaurusEntity.java b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/RajasaurusEntity.java index 8cf5efb..8212d05 100644 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/RajasaurusEntity.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/RajasaurusEntity.java @@ -314,7 +314,7 @@ public class RajasaurusEntity extends DinoEntityBase implements GeoEntity { } @Override -public float getDinoScale() { +public float getLiveDinoScale() { return this.getTotalModelScale(); } public int getTypeVariant() { diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/RugopsEntity.java b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/RugopsEntity.java index 697f80b..ec50f1c 100644 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/RugopsEntity.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/RugopsEntity.java @@ -314,7 +314,7 @@ public class RugopsEntity extends DinoEntityBase implements GeoEntity { } @Override -public float getDinoScale() { +public float getLiveDinoScale() { return this.getTotalModelScale(); } public int getTypeVariant() { diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/SegisaurusEntity.java b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/SegisaurusEntity.java index 73cfb82..85fa66e 100644 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/SegisaurusEntity.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/SegisaurusEntity.java @@ -312,7 +312,7 @@ public class SegisaurusEntity extends DinoEntityBase implements GeoEntity { } @Override -public float getDinoScale() { +public float getLiveDinoScale() { return this.getTotalModelScale(); } public int getTypeVariant() { diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/ShantungosaurusEntity.java b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/ShantungosaurusEntity.java index 85e773a..2548058 100644 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/ShantungosaurusEntity.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/ShantungosaurusEntity.java @@ -313,7 +313,7 @@ public class ShantungosaurusEntity extends DinoEntityBase implements GeoEntity { } @Override -public float getDinoScale() { +public float getLiveDinoScale() { return this.getTotalModelScale(); } public int getTypeVariant() { diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/SpinosaurusEntity.java b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/SpinosaurusEntity.java index 27d33b0..71d243c 100644 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/SpinosaurusEntity.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/SpinosaurusEntity.java @@ -315,7 +315,7 @@ public class SpinosaurusEntity extends DinoEntityBase implements GeoEntity { } @Override -public float getDinoScale() { +public float getLiveDinoScale() { return this.getTotalModelScale(); } public int getTypeVariant() { diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/StegosaurusEntity.java b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/StegosaurusEntity.java index 746ab2d..0dee320 100644 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/StegosaurusEntity.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/StegosaurusEntity.java @@ -316,7 +316,7 @@ public class StegosaurusEntity extends DinoEntityBase implements GeoEntity { } @Override -public float getDinoScale() { +public float getLiveDinoScale() { return this.getTotalModelScale(); } public int getTypeVariant() { diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/StyracosaurusEntity.java b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/StyracosaurusEntity.java index 92a9de9..7e5619f 100644 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/StyracosaurusEntity.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/StyracosaurusEntity.java @@ -315,7 +315,7 @@ public class StyracosaurusEntity extends DinoEntityBase implements GeoEntity { } @Override -public float getDinoScale() { +public float getLiveDinoScale() { return this.getTotalModelScale(); } public int getTypeVariant() { diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/SuchomimusEntity.java b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/SuchomimusEntity.java index 85307b4..51e3aa9 100644 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/SuchomimusEntity.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/SuchomimusEntity.java @@ -306,7 +306,7 @@ public class SuchomimusEntity extends DinoEntityBase implements GeoEntity { } @Override -public float getDinoScale() { +public float getLiveDinoScale() { return this.getTotalModelScale(); } public int getTypeVariant() { diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/TapejaraEntity.java b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/TapejaraEntity.java index a31be3a..ec4cdd3 100644 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/TapejaraEntity.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/TapejaraEntity.java @@ -355,7 +355,7 @@ public class TapejaraEntity extends DinoEntityBase implements GeoEntity, FlyingA } @Override -public float getDinoScale() { +public float getLiveDinoScale() { return this.getTotalModelScale(); } diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/TherizinosaurusEntity.java b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/TherizinosaurusEntity.java index c9fbe41..fa0f5a9 100644 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/TherizinosaurusEntity.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/TherizinosaurusEntity.java @@ -316,7 +316,7 @@ public class TherizinosaurusEntity extends DinoEntityBase implements GeoEntity { } @Override -public float getDinoScale() { +public float getLiveDinoScale() { return this.getTotalModelScale(); } public int getTypeVariant() { diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/ThescelosaurusEntity.java b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/ThescelosaurusEntity.java index f0abd44..63e1f11 100644 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/ThescelosaurusEntity.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/ThescelosaurusEntity.java @@ -304,7 +304,7 @@ public class ThescelosaurusEntity extends DinoEntityBase implements GeoEntity { } @Override -public float getDinoScale() { +public float getLiveDinoScale() { return this.getTotalModelScale(); } public int getTypeVariant() { diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/TitanosaurusEntity.java b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/TitanosaurusEntity.java index d06122a..78325a4 100644 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/TitanosaurusEntity.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/TitanosaurusEntity.java @@ -315,7 +315,7 @@ public class TitanosaurusEntity extends DinoEntityBase implements GeoEntity { } @Override -public float getDinoScale() { +public float getLiveDinoScale() { return this.getTotalModelScale(); } diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/TriceratopsEntity.java b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/TriceratopsEntity.java index a5d7ff8..9afc7bd 100644 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/TriceratopsEntity.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/TriceratopsEntity.java @@ -315,7 +315,7 @@ public class TriceratopsEntity extends DinoEntityBase implements GeoEntity { } @Override -public float getDinoScale() { +public float getLiveDinoScale() { return this.getTotalModelScale(); } public int getTypeVariant() { diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/TroodonEntity.java b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/TroodonEntity.java index f5ef0b9..8eedb38 100644 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/TroodonEntity.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/TroodonEntity.java @@ -316,7 +316,7 @@ public class TroodonEntity extends DinoEntityBase implements GeoEntity { } @Override -public float getDinoScale() { +public float getLiveDinoScale() { return this.getTotalModelScale(); } public int getTypeVariant() { diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/TropeognathusEntity.java b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/TropeognathusEntity.java index 6ebddad..83b4f7a 100644 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/TropeognathusEntity.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/TropeognathusEntity.java @@ -355,7 +355,7 @@ public class TropeognathusEntity extends DinoEntityBase implements GeoEntity, Fl } @Override -public float getDinoScale() { +public float getLiveDinoScale() { return this.getTotalModelScale(); } diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/TupuxuaraEntity.java b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/TupuxuaraEntity.java index ee6cc97..81ee073 100644 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/TupuxuaraEntity.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/TupuxuaraEntity.java @@ -351,7 +351,7 @@ public class TupuxuaraEntity extends DinoEntityBase implements GeoEntity, Flying } @Override -public float getDinoScale() { +public float getLiveDinoScale() { return this.getTotalModelScale(); } diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/TyrannosaurusRexEntity.java b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/TyrannosaurusRexEntity.java index da13274..be4422a 100644 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/TyrannosaurusRexEntity.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/TyrannosaurusRexEntity.java @@ -316,7 +316,7 @@ public class TyrannosaurusRexEntity extends DinoEntityBase implements GeoEntity } @Override -public float getDinoScale() { +public float getLiveDinoScale() { return this.getTotalModelScale(); } public int getTypeVariant() { diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/UtahraptorEntity.java b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/UtahraptorEntity.java index f404e79..2f54838 100644 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/UtahraptorEntity.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/UtahraptorEntity.java @@ -315,7 +315,7 @@ public class UtahraptorEntity extends DinoEntityBase implements GeoEntity { } @Override -public float getDinoScale() { +public float getLiveDinoScale() { return this.getTotalModelScale(); } public int getTypeVariant() { diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/VelociraptorEntity.java b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/VelociraptorEntity.java index 28b579e..a3d4f07 100644 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/VelociraptorEntity.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/VelociraptorEntity.java @@ -317,7 +317,7 @@ public class VelociraptorEntity extends DinoEntityBase implements GeoEntity { } @Override -public float getDinoScale() { +public float getLiveDinoScale() { return this.getTotalModelScale(); } public int getTypeVariant() { diff --git a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/ZhenyuanopterusEntity.java b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/ZhenyuanopterusEntity.java index 5f5b776..6fcda58 100644 --- a/common/src/main/java/net/cmr/jurassicrevived/entity/custom/ZhenyuanopterusEntity.java +++ b/common/src/main/java/net/cmr/jurassicrevived/entity/custom/ZhenyuanopterusEntity.java @@ -351,7 +351,7 @@ public class ZhenyuanopterusEntity extends DinoEntityBase implements GeoEntity, } @Override -public float getDinoScale() { +public float getLiveDinoScale() { return this.getTotalModelScale(); } diff --git a/common/src/main/resources/assets/jurassicrevived/animations/alligator_gar.animation.json b/common/src/main/resources/assets/jurassicrevived/animations/alligator_gar.animation.json new file mode 100644 index 0000000..0d811ea --- /dev/null +++ b/common/src/main/resources/assets/jurassicrevived/animations/alligator_gar.animation.json @@ -0,0 +1,990 @@ +{ + "format_version": "1.8.0", + "animations": { + "anim.alligator_gar.swim": { + "loop": true, + "animation_length": 1, + "bones": { + "Body": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 10, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, -10, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 10, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.25": { + "pre": { + "vector": [-0.5, 0, 0] + }, + "post": { + "vector": [-0.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "vector": [0, 0, 0] + } + } + }, + "Head": { + "rotation": { + "0.0": { + "post": { + "vector": [0, -10, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 10, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, -10, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tail1": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.25": { + "pre": { + "vector": [0, 10, 0] + }, + "post": { + "vector": [0, 10, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, -10, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "vector": [0, 0, 0] + } + } + }, + "Tail2": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.25": { + "pre": { + "vector": [0, 10, 0] + }, + "post": { + "vector": [0, 10, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, -10, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "vector": [0, 0, 0] + } + } + }, + "Dorsalfin2": { + "rotation": { + "0.0": { + "vector": [-2.5, 0, 0] + }, + "0.5417": { + "vector": [-4.85, 0, 0] + }, + "1.0": { + "vector": [-2.5, 0, 0] + } + } + }, + "Leftbottomfin": { + "rotation": { + "0.0": { + "vector": [0, 17.5, 0] + }, + "0.5": { + "vector": [0, 22.5, 0] + }, + "1.0": { + "vector": [0, 17.5, 0] + } + } + }, + "root": { + "rotation": { + "vector": [0.5, 0, 0] + }, + "position": { + "vector": [0, 0, -19] + } + }, + "Mainhead": { + "rotation": { + "0.0": { + "post": { + "vector": [0, -10, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, -5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 10, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 3.33, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, -10, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "vector": [0, 0.2, 0] + }, + "1.0": { + "vector": [0, 0.2, 0] + } + } + }, + "Lowerjawtop": { + "rotation": { + "0.0": { + "vector": [-10, 0, 0] + }, + "1.0": { + "vector": [-10, 0, 0] + } + } + }, + "Neck": { + "rotation": { + "0.0": { + "vector": [12.5, 0, 0] + }, + "0.25": { + "pre": { + "vector": [12.5, -10, 0] + }, + "post": { + "vector": [12.5, -10, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [15, 10, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "vector": [12.5, 0, 0] + } + }, + "position": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.2917": { + "vector": [0.5, 0, 0] + }, + "0.75": { + "vector": [-0.5, 0, 0] + }, + "1.0": { + "vector": [0, 0, 0] + } + } + }, + "BodySection1": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 10, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0.22049, -0.00241, 0.60573] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0.44067, -9.99038, -2.53852] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0.22033, 0.00481, -1.26926] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 10, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.75": { + "vector": [0.3, 0, 0] + }, + "1.0": { + "vector": [0, 0, 0] + } + } + }, + "BodySection2": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.25": { + "pre": { + "vector": [0.44067, 9.99038, 2.53852] + }, + "post": { + "vector": [0.44067, 9.99038, 2.53852] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0.44067, -9.99038, -2.53852] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "vector": [0, 0, 0] + } + }, + "position": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.75": { + "vector": [-0.3, 0, 0] + } + } + }, + "BodySection3": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.25": { + "pre": { + "vector": [-0.38468, 4.75353, -2.68073] + }, + "post": { + "vector": [-0.38468, 4.75353, -2.68073] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [-0.43564, -4.99053, 2.49996] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "vector": [0, 0, 0] + } + } + }, + "TailSection1": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.2083": { + "vector": [0, 5, 0] + }, + "0.625": { + "vector": [0, -7.63, 0] + }, + "1.0": { + "vector": [0, 0, 0] + } + } + }, + "TailSection2": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.25": { + "pre": { + "vector": [0, 10, 0] + }, + "post": { + "vector": [0, 10, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, -10, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "vector": [0, 0, 0] + } + } + }, + "TailSection3": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.25": { + "vector": [0, 5, 0] + }, + "0.625": { + "vector": [0, -7.5, 0] + }, + "1.0": { + "vector": [0, 0, 0] + } + } + }, + "Tailsection5": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.25": { + "pre": { + "vector": [-0.38898, 9.75342, -2.71475] + }, + "post": { + "vector": [-0.38898, 9.75342, -2.71475] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [-0.44067, -9.99038, 2.53852] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "vector": [0, 0, 0] + } + } + }, + "Dorsalfin": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.5": { + "vector": [-4, 0, 0] + }, + "1.0": { + "vector": [0, 0, 0] + } + } + }, + "Neckback1": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.25": { + "vector": [0, 4.17, 0] + }, + "0.75": { + "vector": [0, -10, 0] + }, + "1.0": { + "vector": [0, 2.5, 0] + } + }, + "position": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.25": { + "vector": [-1.03, 0, 0] + }, + "0.75": { + "vector": [1.4, 0, 0] + }, + "1.0": { + "vector": [0, 0, 0] + } + } + }, + "Neckback2": { + "position": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.375": { + "vector": [0, 0, 0] + } + } + } + } + }, + "anim.alligator_gar.mouth": { + "loop": "hold_on_last_frame", + "animation_length": 1.25, + "bones": { + "Jaw": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Lowerjawfront": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.5": { + "vector": [40, 0, 0] + }, + "1.25": { + "vector": [0, 0, 0] + } + } + }, + "root": { + "position": { + "vector": [0, 0, -20] + } + }, + "Lowerjawrear": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.625": { + "post": { + "vector": [12.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Lowerjawtop": { + "rotation": { + "0.0": { + "post": { + "vector": [-10, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [-10, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Neck": { + "rotation": { + "0.0": { + "vector": [15, 0, 0] + }, + "1.25": { + "vector": [15, 0, 0] + } + } + } + } + }, + "anim.alligator_gar.flop": { + "loop": true, + "animation_length": 0.5, + "bones": { + "Body": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 112.5] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, 67.5] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 112.5] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "vector": [0, -2, 0] + }, + "0.125": { + "pre": { + "vector": [0, 0, 0] + }, + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [0, -4, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "vector": [0, -2, 0] + } + } + }, + "Head": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 22.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Jaw": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tail1": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, -22.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Tail2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, -22.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "root": { + "position": { + "0.0": { + "vector": [4, -16, -17] + }, + "0.1667": { + "vector": [4, -17, -16] + }, + "0.5": { + "vector": [4, -16, -17] + } + } + }, + "Mainhead": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, -0.3, 1.6] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Lowerjawrear": { + "position": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.25": { + "vector": [0, 0, 0] + } + } + }, + "Neck": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 10, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "vector": [0, 0.5, 1] + }, + "0.25": { + "vector": [-0.9, 0.5, 0.4] + }, + "0.5": { + "vector": [-0.4, 0.5, 1] + } + } + }, + "BodySection1": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 107.5] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, 0, 67.5] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 107.5] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "vector": [0, -2, 0] + }, + "0.125": { + "pre": { + "vector": [0, 0, 0] + }, + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.375": { + "post": { + "vector": [0, -4, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "vector": [0, -2, 0] + } + } + }, + "BodySection2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, -22.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.3333": { + "post": { + "vector": [0, -18.67, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "BodySection3": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, -22.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "TailSection1": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.25": { + "vector": [0, -10, 0] + } + } + }, + "TailSection2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, -22.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "TailSection3": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.25": { + "vector": [0, -7.5, 0] + }, + "0.4583": { + "vector": [0, -2.5, 0] + } + } + }, + "Tailsection5": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, -22.5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + } + } + } + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/jurassicrevived/animations/mawsonia.animation.json b/common/src/main/resources/assets/jurassicrevived/animations/mawsonia.animation.json new file mode 100644 index 0000000..8819816 --- /dev/null +++ b/common/src/main/resources/assets/jurassicrevived/animations/mawsonia.animation.json @@ -0,0 +1,1142 @@ +{ + "format_version": "1.8.0", + "animations": { + "anim.mawsonia.swim": { + "loop": true, + "animation_length": 1, + "bones": { + "Body": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 10, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, -10, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 10, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.25": { + "pre": { + "vector": [-0.5, 0, 0] + }, + "post": { + "vector": [-0.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "vector": [0, 0, 0] + } + } + }, + "Head": { + "rotation": { + "0.0": { + "post": { + "vector": [0, -10, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 10, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, -10, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Dorsalfin2": { + "rotation": { + "0.0": { + "vector": [-2.5, 0, 0] + }, + "0.5417": { + "vector": [-4.85, 0, 0] + }, + "1.0": { + "vector": [-2.5, 0, 0] + } + } + }, + "Body1": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 10, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0.21986, 0.01682, -4.39424] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0.44067, -9.99038, -2.53852] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0.21992, -0.01441, 3.7307] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 10, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "vector": [0, 0, 0] + }, + "1.0": { + "vector": [0, 0, 0] + } + } + }, + "Body3": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.25": { + "pre": { + "vector": [0, 10, 0] + }, + "post": { + "vector": [0, 10, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, -10, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "vector": [0, 0, 0] + } + } + }, + "Tail1": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.25": { + "pre": { + "vector": [0, 10, 0] + }, + "post": { + "vector": [0, 10, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, -10, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "vector": [0, 0, 0] + } + } + }, + "Tail2": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.25": { + "pre": { + "vector": [0, 10, 0] + }, + "post": { + "vector": [0, 10, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, -10, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "vector": [0, 0, 0] + } + } + }, + "Dorsalfin": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.5": { + "vector": [-4, 0, 0] + }, + "1.0": { + "vector": [0, 0, 0] + } + } + }, + "Neck2": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.25": { + "pre": { + "vector": [0, -10, 0] + }, + "post": { + "vector": [0, -10, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 10, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "vector": [0, 0, 0] + } + }, + "position": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.2917": { + "vector": [0.5, 0, 0] + }, + "0.75": { + "vector": [-0.5, 0, 0] + }, + "1.0": { + "vector": [0, 0, 0] + } + } + }, + "Mainhead2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, -10, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, -5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 10, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 3.33, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, -10, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "vector": [0, 0.2, 0] + }, + "1.0": { + "vector": [0, 0.2, 0] + } + } + }, + "BodySection4": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 10, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0.21986, 0.01682, -4.39424] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0.44067, -9.99038, -2.53852] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0.21992, -0.01441, 3.7307] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 10, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "vector": [0, 0, 0] + }, + "1.0": { + "vector": [0, 0, 0] + } + } + }, + "BodySection5": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.25": { + "pre": { + "vector": [0, 10, 0] + }, + "post": { + "vector": [0, 10, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, -10, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "vector": [0, 0, 0] + } + } + }, + "TailSection4": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.2083": { + "vector": [0, 5, 0] + }, + "0.625": { + "vector": [0, -7.63, 0] + }, + "1.0": { + "vector": [0, 0, 0] + } + } + }, + "TailSection5": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.25": { + "pre": { + "vector": [0, 10, 0] + }, + "post": { + "vector": [0, 10, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, -10, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "vector": [0, 0, 0] + } + } + }, + "TailSection6": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.25": { + "vector": [0, 5, 0] + }, + "0.625": { + "vector": [0, -7.5, 0] + }, + "1.0": { + "vector": [0, 0, 0] + } + } + }, + "Leftbottomfin4": { + "rotation": { + "0.0": { + "vector": [0, 17.5, 0] + }, + "0.5": { + "vector": [0, 22.5, 0] + }, + "1.0": { + "vector": [0, 17.5, 0] + } + } + } + } + }, + "anim.mawsonia.fast_swim": { + "loop": true, + "animation_length": 1, + "bones": { + "Body": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 10, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, -10, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 10, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.25": { + "pre": { + "vector": [-0.5, 0, 0] + }, + "post": { + "vector": [-0.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "vector": [0, 0, 0] + } + } + }, + "Head": { + "rotation": { + "0.0": { + "post": { + "vector": [0, -10, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 10, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, -10, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Dorsalfin2": { + "rotation": { + "0.0": { + "vector": [-2.5, 0, 0] + }, + "0.5417": { + "vector": [-4.85, 0, 0] + }, + "1.0": { + "vector": [-2.5, 0, 0] + } + } + }, + "Body1": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 10, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0.21986, 0.01682, -4.39424] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0.44067, -9.99038, -2.53852] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0.21992, -0.01441, 3.7307] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 10, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "vector": [0, 0, 0] + }, + "1.0": { + "vector": [0, 0, 0] + } + } + }, + "Body3": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.25": { + "pre": { + "vector": [0, 10, 0] + }, + "post": { + "vector": [0, 10, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, -10, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "vector": [0, 0, 0] + } + } + }, + "Tail1": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.25": { + "pre": { + "vector": [0, 10, 0] + }, + "post": { + "vector": [0, 10, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, -10, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "vector": [0, 0, 0] + } + } + }, + "Tail2": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.25": { + "pre": { + "vector": [0, 10, 0] + }, + "post": { + "vector": [0, 10, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, -10, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "vector": [0, 0, 0] + } + } + }, + "Dorsalfin": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.5": { + "vector": [-4, 0, 0] + }, + "1.0": { + "vector": [0, 0, 0] + } + } + }, + "Neck2": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.25": { + "pre": { + "vector": [0, -10, 0] + }, + "post": { + "vector": [0, -10, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, 10, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "vector": [0, 0, 0] + } + }, + "position": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.2917": { + "vector": [0.5, 0, 0] + }, + "0.75": { + "vector": [-0.5, 0, 0] + }, + "1.0": { + "vector": [0, 0, 0] + } + } + }, + "Mainhead2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, -10, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0, -5, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0, 10, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.7917": { + "post": { + "vector": [0, 3.33, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, -10, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "vector": [0, 0.2, 0] + }, + "1.0": { + "vector": [0, 0.2, 0] + } + } + }, + "BodySection4": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 10, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [0.21986, 0.01682, -4.39424] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [0.44067, -9.99038, -2.53852] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0.21992, -0.01441, 3.7307] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [0, 10, 0] + }, + "lerp_mode": "catmullrom" + } + }, + "position": { + "0.0": { + "vector": [0, 0, 0] + }, + "1.0": { + "vector": [0, 0, 0] + } + } + }, + "BodySection5": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.25": { + "pre": { + "vector": [0, 10, 0] + }, + "post": { + "vector": [0, 10, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, -10, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "vector": [0, 0, 0] + } + } + }, + "TailSection4": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.2083": { + "vector": [0, 5, 0] + }, + "0.625": { + "vector": [0, -7.63, 0] + }, + "1.0": { + "vector": [0, 0, 0] + } + } + }, + "TailSection5": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.25": { + "pre": { + "vector": [0, 10, 0] + }, + "post": { + "vector": [0, 10, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [0, -10, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "vector": [0, 0, 0] + } + } + }, + "TailSection6": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.25": { + "vector": [0, 5, 0] + }, + "0.625": { + "vector": [0, -7.5, 0] + }, + "1.0": { + "vector": [0, 0, 0] + } + } + }, + "Leftbottomfin4": { + "rotation": { + "0.0": { + "vector": [0, 17.5, 0] + }, + "0.5": { + "vector": [0, 22.5, 0] + }, + "1.0": { + "vector": [0, 17.5, 0] + } + } + } + } + }, + "anim.mawsonia.landed": { + "animation_length": 1.75, + "bones": { + "Lowerjawrear2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.75": { + "post": { + "vector": [20, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "BodySection5": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [-2, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.75": { + "post": { + "vector": [-2, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "BodySection6": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [-6.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.75": { + "post": { + "vector": [-6.5, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "TailSection4": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [5.008, 2.98426, 0.30709] + }, + "lerp_mode": "catmullrom" + }, + "1.75": { + "post": { + "vector": [5.008, 2.98426, 0.30709] + }, + "lerp_mode": "catmullrom" + } + } + }, + "TailSection5": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [1, 7, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.75": { + "post": { + "vector": [1, 7, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "TailSection6": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.75": { + "post": { + "vector": [3.77387, 1.43693, 7.81599] + }, + "lerp_mode": "catmullrom" + }, + "1.75": { + "post": { + "vector": [3.77387, 1.43693, 7.81599] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Toprearfin4": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-18, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Topfinfrontbase2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [-40, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + } + } + }, + "anim.mawsonia.mouth": { + "loop": "hold_on_last_frame", + "animation_length": 1.25, + "bones": { + "Jaw": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.25": { + "post": { + "vector": [22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.0": { + "post": { + "vector": [22.5, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Lowerjawfront": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [40, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "shape6": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [40, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + }, + "Lowerjawforward2": { + "rotation": { + "0.0": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "0.5": { + "post": { + "vector": [40, 0, 0] + }, + "lerp_mode": "catmullrom" + }, + "1.25": { + "post": { + "vector": [0, 0, 0] + }, + "lerp_mode": "catmullrom" + } + } + } + } + } + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/jurassicrevived/geo/alligator_gar.geo.json b/common/src/main/resources/assets/jurassicrevived/geo/alligator_gar.geo.json new file mode 100644 index 0000000..cf83cd2 --- /dev/null +++ b/common/src/main/resources/assets/jurassicrevived/geo/alligator_gar.geo.json @@ -0,0 +1,280 @@ +{ + "format_version": "1.12.0", + "minecraft:geometry": [ + { + "description": { + "identifier": "geometry.alligator_gar", + "texture_width": 96, + "texture_height": 96, + "visible_bounds_width": 7, + "visible_bounds_height": 3.5, + "visible_bounds_offset": [0, 1.25, 0] + }, + "bones": [ + { + "name": "root", + "pivot": [0, 24, 0] + }, + { + "name": "BodySection1", + "parent": "root", + "pivot": [0, 19.1356, 1.70486], + "cubes": [ + {"origin": [-2.5, 17.1356, 1.70486], "size": [5, 8, 6], "uv": [1, 26]} + ] + }, + { + "name": "BodySection2", + "parent": "BodySection1", + "pivot": [0, 25.4356, 6.70486], + "cubes": [ + {"origin": [-3, 16.4356, 6.70486], "size": [6, 9, 10], "uv": [26, 22]} + ] + }, + { + "name": "BodySection3", + "parent": "BodySection2", + "pivot": [0, 25.4356, 15.70486], + "cubes": [ + {"origin": [-2.5, 16.4356, 15.70486], "size": [5, 9, 10], "uv": [60, 22]} + ] + }, + { + "name": "TailSection1", + "parent": "BodySection3", + "pivot": [0, 25.4356, 24.70486], + "cubes": [ + {"origin": [-2, 16.4356, 24.70486], "size": [4, 9, 8], "uv": [1, 42]} + ] + }, + { + "name": "TailSection2", + "parent": "TailSection1", + "pivot": [0, 25.4356, 31.70486], + "rotation": [0.09, 0, 0], + "cubes": [ + {"origin": [-1.5, 16.4356, 31.70486], "size": [3, 9, 8], "uv": [26, 42]} + ] + }, + { + "name": "TailSection3", + "parent": "TailSection2", + "pivot": [0, 25.2356, 37.70486], + "cubes": [ + {"origin": [-1, 17.2356, 37.70486], "size": [2, 8, 7], "uv": [49, 42]} + ] + }, + { + "name": "Tailsection5", + "parent": "TailSection3", + "pivot": [0, 24.7356, 43.70486], + "cubes": [ + {"origin": [-0.5, 17.7356, 43.70486], "size": [1, 7, 6], "uv": [68, 42]} + ] + }, + { + "name": "Tailsection4", + "parent": "Tailsection5", + "pivot": [0, 24.2356, 48.70486], + "cubes": [ + {"origin": [-0.5, 18.2356, 48.70486], "size": [1, 6, 4], "uv": [83, 42]} + ] + }, + { + "name": "Tailfin", + "parent": "Tailsection4", + "pivot": [-0.5, 21.2356, 47.70486], + "rotation": [45, 0, 0], + "cubes": [ + {"origin": [0, 9.2356, 47.70486], "size": [0, 12, 12], "uv": [22, 48]} + ] + }, + { + "name": "Dorsalfin", + "parent": "Tailsection5", + "pivot": [0, 24.7356, 42.90486], + "rotation": [41.22, 0, 0], + "cubes": [ + {"origin": [0, 19.7356, 42.90486], "size": [0, 5, 8], "uv": [1, 80]} + ] + }, + { + "name": "Assfin", + "parent": "Tailsection5", + "pivot": [0, 17.2356, 42.90486], + "rotation": [-47.55, 0, 0], + "cubes": [ + {"origin": [0, 17.2356, 42.90486], "size": [0, 5, 8], "uv": [1, 74]} + ] + }, + { + "name": "RightFrontFlipper2", + "parent": "BodySection3", + "pivot": [2.1, 17.6356, 20.30486], + "rotation": [0, -31.46, -48.49], + "cubes": [ + {"origin": [2.1, 17.6356, 20.30486], "size": [8, 0, 5], "uv": [-4, 70]} + ] + }, + { + "name": "LeftFrontFlipper2", + "parent": "BodySection3", + "pivot": [-2.1, 17.6356, 20.30486], + "rotation": [0, 31.46, 48.49], + "cubes": [ + {"origin": [-10.1, 17.6356, 20.30486], "size": [8, 0, 5], "uv": [-4, 76], "mirror": true} + ] + }, + { + "name": "Neck", + "parent": "BodySection1", + "pivot": [0, 23.8356, 0.00486], + "rotation": [-15.54, 0, 0], + "cubes": [ + {"origin": [-2, 17.1356, -0.99514], "size": [4, 6, 4], "uv": [18, 1]} + ] + }, + { + "name": "Neckback1", + "parent": "Neck", + "pivot": [0, 21.3356, -5.29514], + "rotation": [25.3247, 0, 0], + "cubes": [ + {"origin": [-2, 18.3356, -5.29514], "size": [4, 4, 4], "uv": [1, 13]} + ] + }, + { + "name": "Neckback2", + "parent": "Neckback1", + "pivot": [0, 22.3356, -1.29514], + "rotation": [-8.38, 0, 0], + "cubes": [ + {"origin": [-2, 15.3356, -1.29514], "size": [4, 7, 4], "uv": [1, 1]} + ] + }, + { + "name": "LeftFrontFlipper", + "parent": "Neck", + "pivot": [-2.3, 18.0356, 1.70486], + "rotation": [29.68, 47.77, 55.02], + "cubes": [ + {"origin": [-9.3, 18.0356, 1.70486], "size": [7, 0, 4], "uv": [-3, 65], "mirror": true} + ] + }, + { + "name": "RightFrontFlipper", + "parent": "Neck", + "pivot": [2.3, 18.0356, 1.70486], + "rotation": [29.68, -47.77, -55.02], + "cubes": [ + {"origin": [2.3, 18.0356, 1.70486], "size": [7, 0, 4], "uv": [-3, 60]} + ] + }, + { + "name": "Mainhead", + "parent": "Neck", + "pivot": [0, 23.9, -0.6], + "rotation": [15.54, 0, 0], + "cubes": [ + {"origin": [-2.5, 19.9, -7.6], "size": [5, 4, 7], "uv": [47, 58]} + ] + }, + { + "name": "Lowerjawrear", + "parent": "Mainhead", + "pivot": [0, 20.4, -1.3], + "rotation": [-22.93, 0, 0], + "cubes": [ + {"origin": [-2, 17.4, -7.3], "size": [4, 3, 6], "uv": [49, 22]} + ] + }, + { + "name": "Lowerjawtop", + "parent": "Lowerjawrear", + "pivot": [0, 18.3, -6.8], + "rotation": [21.68985, 0, 0], + "cubes": [ + {"origin": [-1.5, 18.3, -15.8], "size": [3, 1, 9], "uv": [30, 11]} + ] + }, + { + "name": "Lowerjawbottom", + "parent": "Lowerjawtop", + "pivot": [0, 17.5, -6.6], + "rotation": [-5.36366, 0, 0], + "cubes": [ + {"origin": [-1, 17.5, -15.6], "size": [2, 1, 9], "uv": [55, 11]} + ] + }, + { + "name": "Lowerteeth", + "parent": "Lowerjawtop", + "pivot": [0, 19.3, -6.8], + "cubes": [ + {"origin": [-1.5, 19.3, -15.8], "size": [3, 1, 9], "uv": [19, 73]} + ] + }, + { + "name": "Gillright", + "parent": "Mainhead", + "pivot": [1.9, 22.7, 1.5], + "cubes": [ + {"origin": [1.9, 18.7, -4.5], "size": [1, 4, 6], "uv": [19, 17]} + ] + }, + { + "name": "Gillleft", + "parent": "Mainhead", + "pivot": [-1.9, 22.7, 1.5], + "cubes": [ + {"origin": [-2.9, 18.7, -4.5], "size": [1, 4, 6], "uv": [19, 17], "mirror": true} + ] + }, + { + "name": "Upperjawmain", + "parent": "Mainhead", + "pivot": [0, 22.7, -7.4], + "rotation": [-12.66, 0, 0], + "cubes": [ + {"origin": [-2, 21.7, -16.4], "size": [4, 1, 9], "uv": [35, 1]} + ] + }, + { + "name": "Upperjawtop", + "parent": "Upperjawmain", + "pivot": [0, 23.7, -7.4], + "rotation": [6.44, 0, 0], + "cubes": [ + {"origin": [-1.5, 22.7, -16.4], "size": [3, 1, 9], "uv": [62, 1]} + ] + }, + { + "name": "Upperjawend", + "parent": "Upperjawmain", + "pivot": [0, 22.7, -16.4], + "rotation": [31.21835, 0, 0], + "cubes": [ + {"origin": [-2, 21.7, -17.4], "size": [4, 1, 1], "uv": [78, 7]} + ] + }, + { + "name": "Upperjaw", + "parent": "Upperjawend", + "pivot": [0, 21.7, -16.4], + "cubes": [ + {"origin": [-2, 20.7, -17.4], "size": [4, 1, 1], "uv": [78, 12]} + ] + }, + { + "name": "Upperteethmain", + "parent": "Mainhead", + "pivot": [0, 22.7, -7.4], + "rotation": [-12.66, 0, 0], + "cubes": [ + {"origin": [-2, 20.7, -15.6], "size": [4, 1, 9], "uv": [45, 70]} + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/main/resources/assets/jurassicrevived/geo/mawsonia.geo.json b/common/src/main/resources/assets/jurassicrevived/geo/mawsonia.geo.json new file mode 100644 index 0000000..ac78358 --- /dev/null +++ b/common/src/main/resources/assets/jurassicrevived/geo/mawsonia.geo.json @@ -0,0 +1,471 @@ +{ + "format_version": "1.12.0", + "minecraft:geometry": [ + { + "description": { + "identifier": "geometry.mawsonia", + "texture_width": 256, + "texture_height": 200, + "visible_bounds_width": 6, + "visible_bounds_height": 4.5, + "visible_bounds_offset": [0, 1.75, 0] + }, + "bones": [ + { + "name": "bb_main", + "pivot": [0, 0, 0], + "cubes": [ + {"origin": [8, 16.4, -1], "size": [3, 0, 3], "uv": [55, 164]} + ] + }, + { + "name": "root2", + "pivot": [0, 24, 0] + }, + { + "name": "Neck2", + "parent": "root2", + "pivot": [2, 27.7, -28.4], + "cubes": [ + {"origin": [-2.5, 13, -28.4], "size": [9, 14, 8], "uv": [67, 22]} + ] + }, + { + "name": "BodySection4", + "parent": "Neck2", + "pivot": [-1.5, 25.1, -21.9], + "rotation": [1.79, 0, 0], + "cubes": [ + {"origin": [-3.5, 12.1, -21.9], "size": [11, 19, 13], "uv": [203, 80]} + ] + }, + { + "name": "BodySection5", + "parent": "BodySection4", + "pivot": [1, 31.5, -10.6], + "cubes": [ + {"origin": [-4, 12, -10.6], "size": [12, 20, 14], "uv": [146, 80]} + ] + }, + { + "name": "BodySection6", + "parent": "BodySection5", + "pivot": [2.5, 30.2, 1.4], + "rotation": [-2.16, 0, 0], + "cubes": [ + {"origin": [-3.5, 14, 1.4], "size": [11, 17, 10], "uv": [101, 79]} + ] + }, + { + "name": "TailSection4", + "parent": "BodySection6", + "pivot": [1, 31.5, 10.7], + "rotation": [-2.13, 0, 0], + "cubes": [ + {"origin": [-1.5, 14.5, 10.7], "size": [7, 17, 9], "uv": [66, 76]} + ] + }, + { + "name": "TailSection5", + "parent": "TailSection4", + "pivot": [0.5, 32, 18.2], + "rotation": [0.09, 0, 0], + "cubes": [ + {"origin": [-0.5, 14, 18.2], "size": [5, 18, 9], "uv": [33, 75]} + ] + }, + { + "name": "TailSection6", + "parent": "TailSection5", + "pivot": [0.5, 32.2, 27.4], + "rotation": [-45, 0, 0], + "cubes": [ + {"origin": [0.5, 19.2, 27.4], "size": [3, 13, 13], "uv": [23, 110]} + ] + }, + { + "name": "FlukeSection4", + "parent": "TailSection6", + "pivot": [1.5, 30.2, 27.3], + "rotation": [8.09, 0, 0], + "cubes": [ + {"origin": [1.5, 30.2, 27.3], "size": [1, 2, 12], "uv": [5, 100]} + ] + }, + { + "name": "FlukeSection5", + "parent": "FlukeSection4", + "pivot": [1.5, 31.2, 27.2], + "rotation": [8.09, 0, 0], + "cubes": [ + {"origin": [2, 30.2, 27.2], "size": [0, 3, 12], "uv": [4, 78]} + ] + }, + { + "name": "FlukeSection6", + "parent": "TailSection6", + "pivot": [1.5, 30.6, 38.8], + "rotation": [-45, 0, 0], + "cubes": [ + {"origin": [1.5, 31.6, 37.8], "size": [1, 3, 2], "uv": [12, 120]} + ] + }, + { + "name": "FlukeSection7", + "parent": "FlukeSection6", + "pivot": [1, 33.4, 36.8], + "rotation": [-45, 0, 0], + "cubes": [ + {"origin": [2, 34.4, 35.8], "size": [0, 3, 3], "uv": [3, 120]} + ] + }, + { + "name": "FlukeSection8", + "parent": "TailSection6", + "pivot": [1.5, 30.2, 39], + "rotation": [-8.09, 0, 0], + "cubes": [ + {"origin": [1.5, 19.1, 40], "size": [1, 12, 2], "uv": [5, 138]} + ] + }, + { + "name": "FlukeSection9", + "parent": "FlukeSection8", + "pivot": [1, 30.3, 40.6], + "rotation": [-8.09, 0, 0], + "cubes": [ + {"origin": [2, 19.2, 41.6], "size": [0, 12, 3], "uv": [5, 154]} + ] + }, + { + "name": "TailSection1girth2", + "parent": "TailSection4", + "pivot": [6.5, 29.4, 10.7], + "cubes": [ + {"origin": [-2.5, 16.4, 10.7], "size": [9, 13, 6], "uv": [69, 108]} + ] + }, + { + "name": "Assfin4", + "parent": "BodySection6", + "pivot": [1.5, 15.7, 8.9], + "rotation": [-42.79, 0, 0], + "cubes": [ + {"origin": [1.5, 13.7, 8.9], "size": [1, 4, 7], "uv": [26, 139]} + ] + }, + { + "name": "Assfin5", + "parent": "Assfin4", + "pivot": [1, 16.2, 12.4], + "cubes": [ + {"origin": [2, 13.2, 12.4], "size": [0, 5, 5], "uv": [28, 149]} + ] + }, + { + "name": "Assfin6", + "parent": "Assfin5", + "pivot": [1, 15.7, 17], + "cubes": [ + {"origin": [2, 14.7, 17], "size": [0, 3, 2], "uv": [29, 162]} + ] + }, + { + "name": "Toprearfin4", + "parent": "BodySection6", + "pivot": [2.5, 33.1, 5.7], + "rotation": [37.46, 0, 0], + "cubes": [ + {"origin": [1.5, 29.1, 3.7], "size": [1, 4, 8], "uv": [5, 38]} + ] + }, + { + "name": "Toprearfin5", + "parent": "Toprearfin4", + "pivot": [2, 33.1, 12.6], + "rotation": [2.08, 0, 0], + "cubes": [ + {"origin": [2, 28.1, 10.6], "size": [0, 5, 5], "uv": [7, 24]} + ] + }, + { + "name": "Toprearfin6", + "parent": "Toprearfin5", + "pivot": [2, 32.2, 17.6], + "rotation": [-5.11, 0, 0], + "cubes": [ + {"origin": [2, 28.2, 15.6], "size": [0, 4, 2], "uv": [9, 19]} + ] + }, + { + "name": "Toprearfin7", + "parent": "Toprearfin6", + "pivot": [2, 30.7, 19.6], + "rotation": [-5.11, 0, 0], + "cubes": [ + {"origin": [2, 28.7, 17.6], "size": [0, 2, 2], "uv": [8, 13]} + ] + }, + { + "name": "Neckback6", + "parent": "BodySection6", + "pivot": [5.5, 32.3, 1.2], + "rotation": [-1.14, 0, 0], + "cubes": [ + {"origin": [-1.5, 29.3, 1.2], "size": [7, 3, 10], "uv": [109, 61]} + ] + }, + { + "name": "Neckback7", + "parent": "BodySection5", + "pivot": [1.5, 31.2, 0.3], + "rotation": [-3.57, 0, 0], + "cubes": [ + {"origin": [-2, 27.53, -8], "size": [8, 5, 11], "uv": [155, 57]} + ] + }, + { + "name": "Neckback8", + "parent": "BodySection4", + "pivot": [1.5, 31.9, -9.1], + "rotation": [0.38, 0, 0], + "cubes": [ + {"origin": [-2.5, 27.23, -17.4], "size": [9, 6, 10], "uv": [201, 57]} + ] + }, + { + "name": "Topfinfrontbase2", + "parent": "Neckback8", + "pivot": [2.5, 32.2, -14.1], + "rotation": [76.65, 0, 0], + "cubes": [ + {"origin": [1.5, 28.2, -14.1], "size": [1, 4, 5], "uv": [33, 35]} + ] + }, + { + "name": "Topfinfront5", + "parent": "Topfinfrontbase2", + "pivot": [2, 32.2, -11.9], + "rotation": [-4.77, 0, 0], + "cubes": [ + {"origin": [2, 26.2, -11.9], "size": [0, 6, 5], "uv": [30, 21]} + ] + }, + { + "name": "Topfinfront6", + "parent": "Topfinfront5", + "pivot": [2, 31.8, -6.9], + "rotation": [-0.60823, 0, 0], + "cubes": [ + {"origin": [2, 26.8, -6.9], "size": [0, 5, 3], "uv": [33, 15]} + ] + }, + { + "name": "Topfinfront7", + "parent": "Topfinfront6", + "pivot": [2, 31.5, -3.9], + "rotation": [-1.47355, 0, 0], + "cubes": [ + {"origin": [2, 28.5, -3.9], "size": [0, 3, 2], "uv": [36, 10]} + ] + }, + { + "name": "RightFrontFlipper4", + "parent": "BodySection4", + "pivot": [7.5, 16.3, -17.3], + "rotation": [15.24, -2.61, 90], + "cubes": [ + {"origin": [4, 15.3, -17.3], "size": [6, 1, 10], "uv": [105, 138]} + ] + }, + { + "name": "RightFrontFlipper5", + "parent": "RightFrontFlipper4", + "pivot": [11, 15.8, -12.3], + "cubes": [ + {"origin": [3, 15.8, -12.3], "size": [8, 0, 8], "uv": [105, 155]} + ] + }, + { + "name": "RightFrontFlipper6", + "parent": "RightFrontFlipper5", + "pivot": [9.5, 15.8, -4.3], + "cubes": [ + {"origin": [4.5, 15.8, -4.3], "size": [5, 0, 6], "uv": [110, 167]} + ] + }, + { + "name": "LeftFrontFlipper4", + "parent": "BodySection4", + "pivot": [-3.5, 16.3, -17.3], + "rotation": [15.24, 2.61, -90], + "cubes": [ + {"origin": [-6, 15.3, -17.3], "size": [6, 1, 10], "uv": [141, 138]} + ] + }, + { + "name": "LeftFrontFlipper5", + "parent": "LeftFrontFlipper4", + "pivot": [-2.5, 15.8, -11.7], + "cubes": [ + {"origin": [-7, 15.8, -11.7], "size": [8, 0, 8], "uv": [138, 155]} + ] + }, + { + "name": "LeftFrontFlipper6", + "parent": "LeftFrontFlipper5", + "pivot": [-4, 15.8, -3.7], + "cubes": [ + {"origin": [-5.5, 15.8, -3.7], "size": [5, 0, 6], "uv": [141, 167]} + ] + }, + { + "name": "Leftbottomfin4", + "parent": "BodySection4", + "pivot": [-2.5, 14.9, -11.3], + "rotation": [11.91, -55.8, -90], + "cubes": [ + {"origin": [-3, 13.9, -11.3], "size": [4, 1, 8], "uv": [77, 140]} + ] + }, + { + "name": "Leftbottomfin5", + "parent": "Leftbottomfin4", + "pivot": [1.5, 14.4, -6], + "cubes": [ + {"origin": [-3.5, 14.4, -6], "size": [5, 0, 5], "uv": [77, 154]} + ] + }, + { + "name": "Leftbottomfin6", + "parent": "Leftbottomfin5", + "pivot": [1, 14.4, -1], + "cubes": [ + {"origin": [-2, 14.4, -1], "size": [3, 0, 3], "uv": [82, 164]} + ] + }, + { + "name": "Rightbottomfin4", + "parent": "BodySection4", + "pivot": [7.5, 14.9, -11.3], + "rotation": [-11.91, -55.8, -90], + "cubes": [ + {"origin": [7, 15.9, -11.3], "size": [4, 1, 8], "uv": [49, 140]} + ] + }, + { + "name": "Rightbottomfin5", + "parent": "Rightbottomfin4", + "pivot": [8, 14.4, -6], + "cubes": [ + {"origin": [6.5, 16.4, -6], "size": [5, 0, 5], "uv": [50, 154]} + ] + }, + { + "name": "Rightbottomfin6", + "parent": "Rightbottomfin5", + "pivot": [7.5, 14.4, -1], + "cubes": [ + {"origin": [8, 16.4, -1], "size": [3, 0, 3], "uv": [55, 164]} + ] + }, + { + "name": "Neckback9", + "parent": "Neck2", + "pivot": [4.5, 22.8, -31.6], + "rotation": [41.75, 0, 0], + "cubes": [ + {"origin": [-2.5, 19.8, -31.6], "size": [9, 4, 8], "uv": [93, 5]} + ] + }, + { + "name": "Neckback10", + "parent": "Neck2", + "pivot": [1.5, 31.5, -18.4], + "rotation": [26.51, 0, 0], + "cubes": [ + {"origin": [-3, 27.83, -26.7], "size": [10, 5, 10], "uv": [46, 3]} + ] + }, + { + "name": "Mainhead2", + "parent": "Neck2", + "pivot": [3, 23.2, -26.9], + "rotation": [33.66, 0, 0], + "cubes": [ + {"origin": [-3, 18.2, -34.9], "size": [10, 9, 9], "uv": [107, 24]} + ] + }, + { + "name": "UpperJaw3", + "parent": "Mainhead2", + "pivot": [3.5, 23.3, -29.7], + "rotation": [-31.75, 0, 0], + "cubes": [ + {"origin": [-2.5, 20.3, -41.7], "size": [9, 2, 8], "uv": [149, 18]} + ] + }, + { + "name": "UpperJaw4", + "parent": "UpperJaw3", + "pivot": [2.5, 25.9, -30.5], + "rotation": [11.02, 0, 0], + "cubes": [ + {"origin": [-1.5, 22.9, -42.5], "size": [7, 2, 8], "uv": [145, 4]} + ] + }, + { + "name": "Rightgill2", + "parent": "Mainhead2", + "pivot": [7.7, 23.2, -30.9], + "cubes": [ + {"origin": [6.7, 15.2, -30.9], "size": [1, 8, 11], "uv": [51, 50]} + ] + }, + { + "name": "Leftgill2", + "parent": "Mainhead2", + "pivot": [-2.7, 23.2, -30.9], + "cubes": [ + {"origin": [-3.7, 15.2, -30.9], "size": [1, 8, 11], "uv": [81, 50]} + ] + }, + { + "name": "Lowerjawrear2", + "parent": "Mainhead2", + "pivot": [1.5, 20.5, -33.2], + "rotation": [-34.17256, 0, 0], + "cubes": [ + {"origin": [-1.5, 18, -37.2], "size": [7, 5, 5], "uv": [142, 45]} + ] + }, + { + "name": "Lowerjawforward2", + "parent": "Lowerjawrear2", + "pivot": [1.5, 20.4, -37.2], + "cubes": [ + {"origin": [-1.5, 19.4, -43.2], "size": [7, 2, 6], "uv": [169, 33]} + ] + }, + { + "name": "Chin2", + "parent": "Lowerjawforward2", + "pivot": [1, 17.3, -31.9], + "rotation": [-10.59, 0, 0], + "cubes": [ + {"origin": [-1, 17.3, -42.9], "size": [6, 2, 6], "uv": [170, 46]} + ] + }, + { + "name": "Lowerjawrear3", + "parent": "Mainhead2", + "pivot": [6, 22.4, -34.3], + "rotation": [-41.09, 0, 0], + "cubes": [ + {"origin": [-2, 18.4, -34.3], "size": [8, 4, 5], "uv": [110, 47]} + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/common/src/main/resources/assets/jurassicrevived/textures/entity/alligator_gar.png b/common/src/main/resources/assets/jurassicrevived/textures/entity/alligator_gar.png new file mode 100644 index 0000000000000000000000000000000000000000..873d45bf3a5ce488b5056f1890967c9856f580f2 GIT binary patch literal 25169 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ʎ}QcbcOQQa5w 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�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 Jzo-4@{{TpnqWAy+ literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/jurassicrevived/textures/entity/mawsonia_female.png b/common/src/main/resources/assets/jurassicrevived/textures/entity/mawsonia_female.png new file mode 100644 index 0000000000000000000000000000000000000000..e2cdbd179d0fa6789dc072cad707748414edbcf0 GIT binary patch literal 93813 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

<5caSa^-jE(f&W5t%t7%3Y_#Ww?N90x7=5rT##+ zZhE_uEe=lY*g83?8BBh7ec&FNG)vJxg_mo0)yGY>^3c!p?}~qSV5Q_mcK!SwXA3;` z%;83y$?qJ2P%>Z8(Mp_X?xZ6&^LvX`7}=>Jy9zdUXHUuog_4)=4!?+wd2tQc8Mk4J z0q1L7rn$d&V<@*Py`K`pJ&Pql-)L`|x@cB8?$MF4y$HH$9J@!IG}VHhx2Yh7gwA)~ zmKLUn9iK=ZGO&-<0a{mS0J>=2&}MY3kV^X!o(4;a8KH~I{5D^$dP%5`_zF6mpDl;A z+*J)hfF4gSuq9vCJWyf?w$sRjHY1NnvzN`4;mf?6mvMpTI9KbL=FvV~O_RQNabNU8_cwGFQyN-hdAwL}LgP*-4O2Z<$NWY;BKjRS63xhC@}o0Ti%Huu4d9kG%s zoB=AP6czX!Ohh>5v+G~E$7@)Ad7aUH)t`m6vYb1^`+_DupwR`pzHNsZy`X!7@d5C8 zP&+PysBzJ`n1!>%7O)frmxCzat1SFZ#<;;Y zTgy$jI)^qvTzY?gBhKhcAn{$0;!6n`87qXq3D#GV+j2YLcVKO)M%ns(yNc^iueepm zQ>iCA_PY?YO#x&KaJK>`auXz^r7h5#4%tcIOP#TV6pJ!`Y~%YYukF^uZb?v&+v<5S z2!U!0GtTD{-v}Q>m>OiZWt+`lJr`hru+NGC0vgA@f8jUZ)C9*sfn;%kW1oL@sGsNY zll1F`7d<>$7~~K0)rw8f!P4={vbg!Fm?e(}T z#faPrwzKCfB7QNHq!ubk?TeU&L+s3?I9V)cUcn7eNi5^7k)m-F)@MF@{&w&47bX_K zFu{oSfvVqCNIAJmji^|l-wQaKX15?8>E#y!k{2)Nx?rh2zzek@o!4T}OGk}mCWUWl zMC0FGi^r9q2_x^Yn&S9pXO32YzMFjn9nlz2QUVP2x8tE3n<2XhXkTcrb8-{fj=OMW zNP$7L5g_%T2`NcQX6R_0Qd~fIw@oOa4gCkBH5 zj%VvY?J7H=Iq3t!9y?^xSKL7Q(kupoIIz=4BXk$#uW*0}f(!OtGaY$5q)&sr83`xb z+)7AG@m8C!*r-}GzcgO0BkNYS#vDBpy=j+j9EJP~y{Yb@gO2M=zwr&SjbK8Npg!$W z{&Fh2INU;SbpEqdRaawoUqBv}M4G+naVwT z_i3rGKON|@C5VBSXo<5m{i`R>{~C0~6La4d7N5kAuwP}72>jt3vK{F^-XSUI?_d=D zpHAHko@siE68$gD1GexISJgbu1BlCx&`h=jenVP;{_58FOTpM+8&C*U3F<(g>?()8 z;Na83|x!%B0m7OREIv*g6F59B@O@0Ouvv+7Lzx?|PfT-aCZb zqUcm3S!fH4Nrrt}svpqaydVa42Uv0-Jz*%56P6D`&EN)rW6Wv|vZvjpO$X(4iX6ZT zMACmc#GbuU#3zm4N6K+L6Fr`LyONmG^HG4NWYM4iN-taqT2UwmMXAk4NRFp1`r3(` z^QS&PCil~y=N~rd3|@8D^8_W+%5*j#ccx{cMl)XCx#NfTE63jrfts=MwC^4ClawCk z=Db$SYN6%{I&Sqohbe#Z!Sng2a4Y_cubL;fYI5z=^eCAhnd5&CW%sW@s;A0-32G2= ziY!Ni@_of!CB%%;!~>x4I@7;Nfg|E%_OX9;ibNd;xNiX;7xPODKe>RmDyR*O*VPVd zI9p6mmu-6S@Jtj45vzWfgR9AR6)2v+;-hu8Uq=w z@nk+L)6F0XO8_t>x8_lqSo!Yfqc_M!F)xI0q6!_2%F!wIHu2=nE{w6Rs4VS9)JRLJ z=nAxcgu9`Z>#&OA8k~vC9G|iU9iaE5l=B{i!<$YVvXe85_k$_OFdQHD7X)&<$cBMb zfM&edKRvzFDA;)jD3`KAJIH10T}stWsu83HAVYrpv?eQ#aT%U58gP?&+R@3DUJ_WJ z(dX*abZf`*sBQc2X7xd*^9&@X&gOmF_1%WC!p zmZ5$P#JGYW%j`Kv&%b7wDc#lN?`dW$i1Z$=j7J|VjvDDy;rU1fQ@FB9wdIo6uvVaYNf8(tJpo zewRM6PTS%D)qZ_fC?riIvvw3y%`L;!%#TlyaD;219zurctHt{AUyK1#zVg0#TTq<` z?y(a4Kef1ptM(qOn&RMxcIIl&Z#X|;B>|@GEcgsZy^ds{;4p}SJzP~g7Van*O@O(m zR468gHFJx$;zG8l*=E##j5fISfP}Un0DxBpsn6Ahy;T`Ye8grSi|vmEsm&t|#oNI#IT*z+TWB1VAo82mM)Y=X+5eqX4yZ#pwX#&!Wv0uXcQhwdj2|*G3 zL>ib$>zm7Q!M_dzA>)4O{&n78K$dmE-?2>!gQ47Kn@_N9X0D5w{DW8neehrtX51NV|-ZHfIk59{giUA!4F* z7YwCB4IEpv1I!L{8c4ImTksf!VUue(=m?~^=M`#k#RJKEd&D)Px|gAb9t^4L9%^kIOflM_W(Ve`=wJq@3FSu zHT9_0DB4mLDMK>^LJ%><*7WCmTPlvd)pX>^XsD>f#89Qug$|ZE|I~z2tOM{seMNJ*? zi-+zl3Yih6Doi)LG!Mj(iX3*Bu=VDTO9f52_A74#aHL`4j0eem;y(S**^kxlFY<9*8*FLR35j&+ zOhpHBU`v}za@@F-k7j%Wyl}N>(5TtbT|4@@Mqw~5r;o_+BVZs?snMC@dG^!))dt-2 zpDA!s{}|W0)YOOXk2L=t*J{?lX#gT6){bO6L#*EcAe{dl*Se7U`1iP0K})u}MWzzT zxuOcAxyEKu+unS!Lx)YYUql=8G}^!)4ktex3q?jT;m;<7yM}!s5M!kWi4=_}82(*@ z!$H%nRwwHrqh;VkJ;y*z=GZ7+!Nb0A7Ui7WGYx-!709VC9bOI=KjdQXDqBBLnbK3! z0mE|Y)*)lYu6qJb-cKjMzT(4fc>i!{_y*E27;j11h%GgK1gkG?hYNKo!C2P|A8@xz=xLjL}%W8 zq)SXEbj?p+dpq7_;ACS`6nO;=`@-KB(`GX5hfN81bt<6vumx@M_Z&7_E za0c`KQzWf$@a04P#d8@JOr_;D!1*lkQE_!)aFzd$skA<;v)6%wzMR{hD4=G9+b&i5M^if_mt%k9H*8Cc^{8%E`I-~N7zi96B#}} zq9+H*p|E4(o+Uak&6F2u%U2^_25k~UhrnF&6>#t@GQ%xTV4*o$GBcaQ}AnS_z@)Cy@lHo_~E zIClSKpLJ~$GCmqa#wLN94S*TxoLeRAUDy~D?)jX|+5LhpjCb%H{UH?Rk4f-0pmbu- z(Dvc=0s%#{#i_#kF#y4j*5fLUj9$jd(rP3zl$vjq;`n`{-g(6E;jwQR%FDZ3C7>rj zrx|_0<Fo7$9I@2R=ik?zRp)9&FFj865Tsn_)N zx_4&HKa3z6;kEP0Y)|{_d}UjBy;>b$pWal-5ZSN%(H2_BMgIVFuJT7T%yh+OkN-#4 zm4HLJe}74(Md}tUN_%b-Q7)30(oHu}m>FAHQgTBSsVqb4RyRV_$d*wunX!x|$*$Z| z!n7D;2^CUfD;krr{m=IuO#J#k&+qwhhu#_Qd%ov<&gY!-IiK&)GHeFi@7)FA_VG$K zD3JlpdE%9izyq&}O%)V#p$wds8+#3dtZ91U2IGBv;}8n502HLIzXjhoDdm9*9-0Uq zy}z##;Eq~dIE4*IPMBPokkO_hZ%&!jGf86Czj3yTNWpgp2Oz|0!)J0>@D?Z)5B~Zg z=AehDaa3XqkK3+=OmHWrvt|!!P7ht`kD+x2!fHdb`U!O?4&$H9T_mhfXudyxqVt=U zs;1^~+`;VSudMwX=4ua~BxruzuqP@2b#4CQf0jk>yoL@(-@a`~e0GDUkhtvh^T)K0 zdT;?3HHws+dfoI;rGwcuDr;SBda6@}dG50yxz;wbT5ly+?cFIh=iaCm((Uf}{#*9= z%JNg!%R*mKspcO`T@x?fGE1JzsXVcElf$!rfotYht9?dcFB# z*|&ieONgo4`ETM(s#vqhi0h3<8B1d4R&2}6F6A9le|?vw;6$133f(-Gpo|_)FNJYs zAGp>_B) z-)}SXhrF}7?q#S&>{7%O4p-&~Gxp-djX3CmiGIu8K%I(wd)>GmS zXr4Y~-y5DXBgwh;!3cr4U#s~Z4@6x*t=ri;jpgNHDx8rRykQ&9Nb9Jg05si;O)!4eT^)7)bL)@g*`y}oSQ@RFlICQx>9Qt8MS#$rP zFQGMN*8zB(1ZkZv0vx#E@2o`hWQu(DYqtD|%Xq^3+BaqX-%UF8#W`*18?)tv0 zikKFwA{;ND_bWp7_hhl4NxiE=Cg)@p5TxcOjGtkR4#J~@p09b1*qZUDCz))1e(HId z1zRxJyn{Jy@vnAn?YNSJdZM|}Td+FxxEntYZQbWYVnW3@faqzn{)LG_c%-lPO?fs6 zUke}KVP$yApD*FC-X!gXKi+BJHRu_~OQyH4*FLm**P1jtf0r)%qBBnyYypF)l)Q7t z%|z0JvZjQ#A~A+s{z94_(|2=0;a#_9#tLLoYs5(d!`825zEm?~C(qWtXo#KcN>rZNc+_Yt{p~pcaC5)4(>SA81nz z$+|BJHUW8=dUkR-hvY~)J&{ELLh3i6-r*XUN0M4_NPUtRFv3V~+_@8s5M)?qD8W zGAY}Q^PbW;zJ_CEnj^ep^3ruvF?&jWDAxQ-!%91gK3HXVD10#gSjj*3Rg@58d#cu? zM1MbeYED2gZsuus<$3y_dj)l$&nDnT+^sNWsU zgwvI)43KyNjAtQXI?r}iQYq~5=oaMXB4I%&MA*hn%lLc!U7bL0$BJ-!Y+XTL{vMx) z`+&zqeFBhH(qM=p%t5}c6Sf3(Q#-BKXa2qANx4#Q_1@(Zhwp5^hy$XVe47wx#FEoZ;wq2+ek+z^@hX>`zbht^Nr!PmXtjpD)G% z9iLVfHwROkOIs>_P4qN`4ifcuzz2h0d*yWa87jz_TCA)piP1m7zu<9$WG!2=Dvcpz z4H)|?g`a6?{^G|L?X%UeS$mK&!{iyU8aNE_fv`%;2@8~b_9i^DuCRo?DQ@ArmiYV2 zCUV-V4H40RWTNQd8!=rZdDBLRN1$n--?i1MGFoH5wYKVz4|Ft3-i8UO8)sr<#<&2W zwQjtKj@Tyd^!xSX4~Gm!C56Kz9{p-sbjOtf0O-Gv2u*t=_S4M91c}gMeTj491FmCt z2P;=_bm0*EuSBT7&y=6Y+6fY&{;jjV>P&nx;2IG#n;Hbq&8fK@dd*aJh`-HzD-(Ip zWeHU_^7d^d`h$bBG>_l%{-ID4bG52n3OTG*6C4(1Ry*+1BD|IT5o^97q1q5hydv@q z$r+fy&K`TFJ^mY~W?0Fh_3CWXABOM*u)#W*T`!w;>v8@3&w)F_dY3Jx#;72fa!bkE zRNz#y?AB+ZUIt(fL4AmI#5oIJuzJOo;WoN)4iyHIjst#E@lO>g zFVsRTeQF7&ycZ`oC3T!_9`k8fgttV=MtB{P;@6&EgQn&_b(uZwTs@#Bok(|H%B-OK z)XTdhJ}9jux_CC9FmCP3em9@w+wDKHjMO;rjju=X6ZG6FO0kozFTCA9*jDs6t}|=j zisQBFg5<`Jqg6)@lsXP zcjWo}o>-@P@Ay80E=u>EnvG5PEHj}d$j@K0MtEoaTp{_&WfQ9$o;q&#WBgXim}Ev_s2 z5P(*_Xz0Ko$XX*M=p05T8aSQ1u~ODAGnb;#p#1hW`Gyl)X7{Qq{C4DlOPGeMwKk9% zpnul5G;i7Em-EdD{znZRj%*R08aIjGC)IgJQO5~{Iu5!Xn}j+h$Z<-3N2o)7s_J&+ zg^T|mInEtdoDdOj8K^qmD|1s7y%QW*)DJXRx`ABgGnrPgH%-t_Z;+yxi;G3Y({!C3|i}(hJ)$l z9NFY(#J5>QL~Bs4ucz7VRl(MvK}Rtn<=GE2^+D!20p`;Kq-xAGyjwX8G_tx;IJx@& zeerGrQ~9XItL=#rD0&%^&lJ#f+O69^MSkEg96~r%nJ|D*`_TMEu}j+>oBc4lENqxZ zvT2c72DHXB+P{9`ptqFef;2s&+z%)@+=lM4ORtX4)4hJIYwLFn2`LoNv!-Dqw_q;j z)x($e-h*Li7#LlDqj$i%QB_Z;q>gnBjrN{-X*GmaFnaV;vY&0b0<_z7-8dw()7ZPp z_4VcmY-o45Nen9qR%KQ=ArUk;PL4in2~Y?` z5~1V12=VPhXu@g*w|rt;z6Q%IMOK!KXc(s_7lw}5biwnbCt zFmBH>w?ul3+p`xmw?TSoBy0xQLK*2xKM+}lA8sB|rMUX>z0vHt$Bnwd3-oJ-*P@Yi ztgDFRz}!0$bVrL6(L^82rexD0U92bebY1af_rB}lV%@ed?!wFu2T$=U%gN<~nQXKs zP?az>v?>Pi#D zFm7xD1gJeT8-g0L9fih69F5^*v)6+QIOvEw9nujTd=3|5Q30mh8{ccKU5ZYRLuP1C5zDSMA}vV0}ri z!TeK+YbI6%|G&Y$(=~Wx2o9|BNro`FGX?Ya*YtJd_6j)@TajkVRS>`=rA6f z+UNT^?jmDE8C3j)MY&F>{1oM;ifOYIH;WJcYR4g1x(rx)(QrA`3#}x#53;YUFvW)A z9dqoqG#@dQK^quhGQN;sa>cN<8_)MMY+d8`Esj2zJ<``?*s9gk9}8%Lge?h7jFnAV z2STdYgYi6Qj&w6}ax@9YVIcr&Onc+_2S}c1Bj|@Z6UpfX#>fo;qVSf{eSTse5>T-A z#B>ydUwUNk!GINLDn$vB&l!>*=F@Zn!Mv=%ymG+_Jx0bzi`Djav>(bhVLg26=owpe zOW_r4XhmA)KjhIS!myU@u9=FeO9DYAAm&uhClaiN9BuS2cY3x+{Mh1-b+2Gg5RLud z@^fofzmLq}C0O7>Lc0g%AmfQN1LIK`UaEV&NaJ!`dru_C_wuDUrkT^Xx&^aq+M|(R z2giO;#{bT|2&4i7+H>~4zL=Kh$0GNnf8y{V2;G80b@wVy-n`uC?D|u>pIruH&M5uE zUZUXY!<9__bEUguW`LpiZ16cljZ;2NvYqx@U6Q6a%F#D&FNn{;)-2vsWM5vS^iYGVreQL3 zXC5ZPAaqDkZ=F_s_B3-Usw(IPr1K4}A}}P&f?vu5!|`Bx^p<~hVrP~*aV`Ix;5dLwcOR{%j`J59F~WP<*lnedwKspywd2L zzgrfx7Zk1eG}QIJ$cb@O*6^vH!sqp?PV+TU3(#QEW|$p)jaK?%l~@p5hBiTqi^7>< zuT8}g6TAqr5o8|A=D<^(eq@FDL_NNVtCK(902?A-aIggPn9y!LAp%}pT|A{Yu0x`I z{8bFUOkABzMs-Wq?*^y=?;40iPV`6c5wV*3N#Iu&#}wGY0?0IJ|H#_NnUwyz3s}r< zUw>Z+{=jW-!Q)+V?z3S#SF?yl1~IU3towNvLM zc{y4nsO_o5x|6b|Av{Ma|HO}JpKa&+>%qQ5)X=>p$EA!o=nxVx(m}L1y0<4`?cSDd z*Wpb4r_>ENx36lyGqTQ|kfI%%C1Gl{5@deYb-P=_evJTt?J35vB?e2E)zHWTH?k!w z=5X$&B!@ekLDeS1p7nEgj`+%4NNo$+HIZjnY(Hg8%Xb{02J8V$M*@(Y^9`XMp*$eiki0sb^Z$3WliNWBBtwNtOk^MD_(U1?*6YZiGc_M_H zw*CzkKc_A@OZG^r0bZiAG+VQ+93OjVQ8J>88rr_WB&c8zq zqt&DTiaT;@j0-4x#%l*0?e+%7eluMVLI%l~G9=T7rtA>xxtRcS41sJc??t|#<~-RW z)66$z0?e_D&FT(({S0c-lQv1~%*rs@56~YNOt4v`GUfr_g%arCrwN&%y#$ z*v#_O?^sfclsOWUMO&ao=0HOgtpBR9etGafHZR}dAQBmA%wP4nNuwwAzRn?WYzrH< z%b*q8d4^GeFrkt6K}zc`Mi7!xbDEze_PnXLo=?KIg=2%O^S+a<(dJ+`pC`hpl>DZ) zp|kdsZ!czI^3y%u-9raxJyhRrd{kNY$Omu3))4%UDWhd%E&Nv zG;~$Lm#lVcKX+nIf2x_Dj0Y2x7@A>O_PeFofsp*2DQSny6H7nM2A_Bs+dqnxkI$?- zdfGApQ-YbG9)=ka`aeV+&Ol}I$Mp+LCr*{j$rEcA1;xc;$PjH8n4{isBj+i(lhVIY zx?v^2EtP-soqT{+>Fze>z@|z1W9t(} zUBvD=1%Dq$##in7&K9?4xnLnd^TVSX2KFz*l|Yr{tsXEjI9eFzPdYKf1>5E_rjOo| zqVS@Y`Rj4x#%%+n?qf`lgBj2FU$&op)wk~#7Rj^VN5LXHC6+2PHI`)kvX_szgCAYC!td);T2CSV9FyKLSUdod1wlw|rfC-rHmKF1 zwR!e#UD-)41=|>hhN7I}%U;@$4T+)d4>>&LUp2#Z&=_dU5@T9a{=n#9XvxHOX(4GZri~w{yS+`x zyNX1fQue?qH3B~hGw$sUSyzB?`K;EY3LEp-NOa^5bfCQ}nRg-IflR$Tc*>-vRpC#JjF3*j1Z=Hem&obk_x!8+8~aQ*C+ELd6` zCV{rM>Ee56^Qh^>v$e^(pRlv_eyrAVNDf|U%q3j4Xt#j9dfN%DDQ5>A@Af>@ z8nH6+ENyT4jo4MhzrC|n!|w~{Vp(3dr-Kpd(zR;O8u0tJd}nJmv~0XGY}6SDkIT3h z?JT8i;+RZ0-d{B|X=d%25?#>a#J2YA{P?y~T37?St8)-s@NRIyso;Ve zoQBTzDXOaXnXeY2T|+a{%yW%E!x@#BG0hewi-z|!r+=ADCjHQR~AZi zgg!d{_Zw&WbXeV3>(08$+6SBUC`cC{js@1?hE&0$l(6;oAE{F)<#%D~J`abK9+83* z%miY~03YnxjA`6#xDV?)nAUv>lP35+X(uHLb(Aa{$$x(Y!%pjNHo-r<=+%Ilf`72& zk;VWlRYMbFce~V>{n{xgcY4}wg*NH#)}ESA`}7@?AskPykWl?v0Y4JD-G(2928`=R z!AK8a;-54sxYoTzRd!;ELd`5_bYZh<9O8AfVVHx1q^ zyQDznZ=lT6B`z^GtwXiIaK%?3*!bHK;UaWY{y~p!@e%LA%C*3&wFJe(=n8DFhc(54 znsb5cd}j7~S}vE#cC^p{o1*>ZuA>}e*+A5%WYE#}#xM=vfwLQhxvtFqfsarIvbVE) zLe#DE-S+QV&E^MnR2%FG)_SKD5c~HmIS1`FN-Q*NJgQpM^NcS~%+1jlvb_3g)2Dur zE2@j@Jd$_m&X0K51lp?9Xakf)Bi|hDZNsDkVXy|RfyCG!fI^6QMQS;i@Y~D&C@K}G z)PX}wyes^&(FOr%)`63Cvj7|0^lr~uHogDa_d=K&Mk*0P9|m8b*#p{YA6gDXXejf3 zUi=WCuw&0;V-RK@)8Rp1K77l3;sA%rbMa(Rf0OM>Mt&F$A->6mt(_X6xSq!NpLr^1Rsv=V-AyZ4z!?GyI0@Fh-urhqWMTt!W^U1ZD>t7#S=U@YpA3laSYz`jNiV4q__c+i=Z~Y?~YzIWzEMr4P)!JZqOZc7T z{)4-0_Csjy_Q%$m*^~p*e8U6>G_lFf_B^tw_Z5eaBbz!oGYzG+qErHXhebw|^p-q0 zm^^VPW%1f6)uJ{ql~>57zW1de&12hh5|iF|%=2B@2R8MgPT6!krhYe!+op32nFW?r zV9SI+%@3`WKx78gIPbxpy|uDfIT<}=qzU}wT|WJHRpwKWZ8;vi%i1dFgBq;3PkHUs zcrgH!_vFx4ENp6AC>Z5A7fluO<3QM~9pt3cc#&VDf}U|Q@)W`KzbPCr1kK=eu2Xzn zF(L!05rY<$y{;YouSPF41W~S39*wYmq+ZF=)xO<~=ULg*OK9a0m@C>Z1wQVjyU{Uk z$4)hR76Z-iAz?qhWusTV1_Zi%X*Svbc*XjL_h;{oeXsZ=@E9OQkIWoaw!;rz_AUv} z?Jfww$CF_8g03OAKGP^OSHHl;BQ&4Pr#{Akd~UTN@IEpl7KtCdlRxtR(Qh1L!o>6z z>*P=Pi=^DmU!5okoSs3pbtfGy$E_TS169pdUUFB3cGiWi_-|_0#b4}54cLuQRC6N5 zUjDjTmxdBrXRT*m7$-Ii`^&cP&&Vt69>O=dJGL{p_FjFj|9&u4{Kd+(>L=n~i`UHU zGaTGe)PAyahx31S|Jj{fc5Nyw7~kvTH>LiudS&-5?;AD8)RIm}21;zPox@q|T&non z%2$P}kJIuVx>ssbAJ2E?UxC-FZI&i@~C++o`{t>(jG ziF0Bq)Bl`1slX0o@-h)o`~DpK*2(RTK3G0o+#<2{e@6|<3&pgS1&T?FJ$v$e=Oojw z)<54YnsZo2h2IKh1u?OatB7l24!gztXUI4Dtjt$ z`5vnURJzk=RgVfX=v7ha-rVPkZY%VbKl!RHuY0|FrXSVdYfA2_{XU?SLCA$WzX2Ri7d+b}cAO*lQ!Y=Cy<8f9kqfR)j35DVT{NJad~V zm6Ha>z(r;%7tbyIy?E;R&30~+cJ2C~nspL|YoUAgUoijul;W$OzX?VD+ZBo=}ba~RqAA1Ze8Y=#>SUf@>DXj(`t8gVLGKpgp!IGvLUYNqW+Q}p9?^W3}C0Nv} zaMDhEyV%yv_(H6kz?Lkrb@qhFg#rk6Tr<&eom2K<>{g5ta?e&3|J10upLl+Tm;&xO z2V+%}3&b2I#WeuWwTo=899aanv1YI4%8Bn)e0A1Wo+z#=Y=TF!K%+%c(s{8z)w{KK zHXGC(>8ME2Z!`)3A zh;pBvq`kVb;5|!Ja2WkFFu%4`@~fDwl#%ABI>XopD84HBRrs8-SDNR+XWqI{b2|FW z#dR}J9vwG}(R(ouS>>bka6`=(n9dy+X%JfG$$W94L1Pc8762?GelB=) z*i)mSr$(@zJ81^-WU_d^Xc!JY%yzNGOoctWY#GxS$Db09XW22H_D>@yJ!mt8%-xWe z=w7**ooeN6kadK!iJ+wHs>-$q@wrK-3GC7yU0GnBjd%USk;df@&={~aLw}bY!@IkP zL)2*U%A|KaYTHksy9>&Do)A%SdG9(k(wyzU^hiygN_ZMv@;~ZxtBU^)nii&}qjN>X zA_~vjdkEDt$In*rBjgEOjDxYX_vAF|!>vwj6XvVA!pkR z-zLG`yT2Q-+j-76>pDFN3CA57Xp3N$ER_v3m*E$CTMKCg6(zq|2~}gYln7XxWRSJB z$d+-bhkVC`U&zw4M}+h4@MzqMqqH7=1dioS2+G}WjjtD3@n?jp&1?;6xGUwGAVmtySh(GysFS=I=@ ztG^>s*}FD|@h*9=KP9Hud(F(WYLEGURktd}Nc?(8X-=$4oIn4Yt;n6HnIfazXc3HodX-!;n@PxQ>`54+C!tqy zb<&gYH9tQhdUk1N(ABgK245?#nn`>cK*#NMWb9`;F?@?$88F4fxcj^Fy$cqbbs=SN zY%4XLOyFZk|#wE@A<&$Gu?bIZMlRRw5W;%b9ZPMuY`W&M>%wBcsNrH zTUNWhIX+Lab@k<3Wlt3X`)#!qgQk?qkPQ!CVWgzw>b=9mPhdo2)Vw>)4z%G1<}hlk zza&=GkZ!1KMYcyItpd0Yg zi~0j~6Dq%CN{`@IC=;J4OVD<_fB*R6Rc@P2Pp=jUKakNzy_efp=hV)qk$vfIO2qdv zeTSVXUMZ|#H=i74TYisbJ;|{XKnxWP+00w;l{J?l==c`t7fvtC>8Y?{n6^G1Vk|2B zdP#}Bn6m+IcBIrnCqv98Em-`;w%9;|$jXIh=_^@$P^7C@Y&i=av66?TIu=mUXMdfv zYii6jrK0Cz=CWV(;4xqK)oRM{I76^9?IHTDgEqm~K|Sd#oaei$>kCq%1%#ChA*P&D@HJ& z6Rzw>)+vegkKRCai@|1-2qdBX;CPKa7DY`OBw!v$P$*x#X`>qUWg zyN(<$Ki^kfBG#ib^AmNQ3I7p*+xE#DGppFvIwGQ$jADoXB+iqs^5>a^m65*5z@f>DJ$KZ^__z zk!_il2_Cof$uvPZKAM=$3PRyjS1p*u*el=sPnUM#xrS+B9{4p1BDNCq_ch;Gr|E#%hztkIlEd!%_zs~KJ1hcJ@>U5gx}Ia{2t%IIhgW=?j2`+@r74Uh>5t2UE5 zeqfLUJk3ozI7=k)1vUnfC4A5}2G+?rAyep(lJP1OFIKO{$x`+lmLw>MYo9DES=1J70jTD_{59bRgr136BoS> zBD&lwgTRsA8(u2OK=!8>ADW~;pqn)!7*ZoSYnRX8I^X}GsY`7<_w+VeSqgjx=77Oa zdAlmOHQqKW0;OA1Zk@-q_zEDjc(HvJ2P$cd)yPBc`Snu5ac!J=c7Fmaec>@JH2j`2qk~R4aGDOCaT_t z;=#HKPb?l>o)#gpozd@#J7%YqTty+s?t9F{%~mx&;vJ$_Y=;2HrukOKU|{Y2jA=i{ zw;7L_<4TnQ@s5)hz&%B*)VV)#oJIYXSf0o@%?|*wNWQP$rfd5|92ynaE)NaZj#&om zzyC0xfL=nt-L%kI$DT@p1Q^3Lg@Uf{I~Qt5))VifirRTf9!9#%ZC z+)M(`LqXYcL3d`2_a;LE;c4{}tzhad8Lhd!wX%PE986;TcY%(Y%d7Z_kP&Nt&a5nB z&~uZP6L{0f1a`XzpvG2 z#6ZToD2b&`wcqW6llx}Yk-tX%*n^_Ln|^2auJ&Ut0naG!Z@B9EBaI$~F)rZNie;-u z6t7EddAWP|tQ=*#UVkP<;M^A}FaT>J-zJ(6E~yMgF4y&u)$;9-H=<@iqOQ~Dxi!_( z<7q8A*yFgn@VG?ev`9s`UwCv8746re+urUV1-|w}=2gi4-kKu3( zJ8wM6lN1?~oT{3OoIN0{*$%2RQ3Un8a45-eTghfVS&wmK1e%n_pKHNPotsUg5AV z@9-=13un}KMlqVYqjCRy=$^Ss!jmN+FT3DNw)Dj>O#p<-nD_nL4Sh$3KJ;lc?Gw^d zrY$sF!0JT1v&P}}mvA?mj*(i^4FTHDB6&8(L82zb_MbXqI-_Utpq_1qxOcR-D}ml! zphIYS>tmWkG(_={fOi@w$7iBc1IM$(91WeH%0i)7SF)#9K|KhxYAQ34HR#@UM|e5f;`~qD$3Ht4Ito6-L(^p^Le}zBF)dNw1Mq#)V(XhLEx>pA zSKx{ZMLulQJ}|6&6U7z%O%g9Bez0SN^Hw5IW1tUC??zZ#K0)d08;wDeJ6P*JBt@t4{m4ZljozSh99We zi#{15XGVhH=XJ4=KHc*eqsy_Bn57T2B|L#4-zLB>P^Y<1u5RZUwEEG?1XBryAJ!e) z+rDyM#;eeTtJ93?nE}r$^4;W5L#QUu{!SP!q&!3e`U`c;=9bq&jy^Un*X!zb~3pXx7^1S zY=vGXy|`20l0ca7c2jYA&seh8--+Un*Oxs)@g-O8y7yDG+%C z$?_O6Iib)$GRue;TVtujiukB_b3UC3Nrth1GX^!nX-yn*J1}4aEs@mQm z1as^+Tjo#iD*P=hzA+G=L%MbGspwy#?=sgE?-#kU^&7!)y%4zfNv(fnVWCC>u^^sl z1<@hKBbTnb)PQpEFvB<70TL~P1nWHc%Fb>4~FGQ%eJ3O zyF2SrB%{_PlHrs2oSK9nLGDm2U9o2$`EtKvpJu#Hl23K}X+s&U%9Shw84KDUC!>2* z^@ay;KwM65E)6F5_C2TOA&92s>l|x--7loKfPT$J()pPG+K8)Mc2AM_zo;x##ZuI1 z=XucrLRl3QKh|$gt&7|~r@h#g^l-I_-=6Q00{M@syvS4AGiwA#dTZLuJ9z1y&MD~} ze0dB$c8mYfvg#5ykx^jZ9n(E;D6$*_OJs9};xTBFxMq%chfv1w=Y$S1VEb=_nbW$$ z(pHX#SuF52&rX{<{)+#L*YXCfhS@h_YX9*iLEEtvFaB0E<8@+fsPAX$kZ(~w>k8T?`zu~dP2gNt zO|R}!%`&5IkfUzcN8R8}eY))3UkP2)z}!k5fE^FK&EeeZ(N6SX;WSKg=#ILsc~b6m zgj@T`MkHo6aKOY5LGW z*1s|nvHKRtFLw-CFT6zGwlRq|tF_)LAsEcUn0frSe(%SLrB_qb&cwXQWD4H3>6noa z#pf@Dn^)!`Ei<5XGP_=lBB=fFJbC*gfz@!^0>}bR`Ir{&F>LiKHR@+wVAQa#ScC!^ z0c3f<`Xjn8PjznDxsNQR989co3Q>QVqQXvWPmjO-4?a3#$Ch+ece`<`z)Zqg_8S-<0p6>HlL_NkhXb(RN?~^lPyz)z1YW$ z&ufb!@u;0+IR;(k{gmP=>!q?2$qnc2Q%pq)sVdr#Je-Sg`u1Ac@B7vG?MqBlma;TX$0Geb3~o%1?dva*@vb`rgcDJjKZpd zsGPfKy=I{2e#gdxUn0uNzlVj{u4m9>2np-}x@_AbgREDv8YHAgY<*Ny#_799lA6E( zigT#);`BYzvibF~VKp57O4+EjWrY1TWXiw5g1f#gddoB{yse+VmURE^W{e;yYEt&|UA#Y~0o5kk&*beK1ppQ; zLw|?bpqg8L%w}k=tCwTCV43?M0xI$zXPU)ZLpTxC&F|>!oo;gQM4AqHVOq#L$ixnn2TCl zZ2fB&MMR#Ap)4IZ@oMV9VjD$CWCW^(7;t#DYA9eQOQuOrG4%06JjOzDxrZ0}a78JHt3a1ir^M>X9#3+3UEUQ%&hpnE;ME86_}aC&<}Y6|O` z%^r!tx1{8W=U3tCo`cKxiPxo}Fnk{0{2QOOtwb9?N*n&%>(gfGKAk?_a)yNGBS!b}ym8 zP}T0=i*Ed@E9rJS%d($rLxfZZ)!b3ni2S`}i~@lHl+mA7TLA9t=OjW2+9GGI@0v6h z@rsr^dy-5|O%2!<7D|3DOI%VG#qeeTwA`z6gL=Ewfg8usAceMKe4 z^s*#Ll7hwD%uK1eOX#{~58m(I+3IbY6UxowfB^K8JZUyYx~gXBQJ?l< zKPfXLrSn3z`MqEkY&TQNZs*fK)n{pu_-4}f8Q<@8_!>JEo{8obwmdfAedG+;r854I z<1=*E4N@?=2x90mZ!ls<$WTZfzJCEF$!=RpL+l-J+_;Q)M8BTGvymvhyG3st8RkcD z3%dQX>5bpIvZJ|E{rYrnkiQP~O?j==)O&_d&_2|y!XD81Do>zi{piSH`s}|O$=W=z%sX>5wcK`@g~$f@d)tPh7s)Vsw5<~LhJ4=hnq?C4H+_s@54O)Id@r55 zW_a+r^cG0n=TM&pQ)P0X#I?nEX@AVJmPoMdXqKJXs=iDn;ADxRB`dTF;kvr7N@wn5 z9Vrc|*!8M(10U#s(!;^U*Jdtk^}Rf6XORtq7lq2i`a^TNGF^%s7(Mql0>aoFq7K7f zMeo}GD%!On9*0iL9+V=ab3z_OY%bjTFt%oJ#eoXE`oB9ec2>XGB03V7+0jhS3mcs< z`!z^H_>@Jr4&lVjjgUsR@d9i!DJCER!7M`Wg-QJm@Matvf9<*R9 z4|3bPOk|Gx-oow0xsurRS-Tj|e1@*$h)=8-Yl%&a+^%OKGK_ZD{KD%E#LC?oK0}v3 zPJjJJlR@T#hb7X>x1gfew!v2)dUz#>)`p@~vg9TDAd84i7slui02fD656Wm|*CnxT z2C?8Ls1?ad8C>`B;CIqDq7Kx1r@a2V24P~14%bU@VNfa=^lgyQWDFM*QChUyxUlHY zRdbk||5?fT+-@oi4&cs_E!Av0f>0oJSF4jrzdW(ffh0LUdqu8vp||UQUG?);mqum` ztbI5fU%so~VHe%0H8XINXU3OUV&#=yrZFNuTLJs-jE!VKkp*o;10GEuI*pR5ooEao zHD`f##*Ni44HNoKAFXb$-$C>pP$Pj70*;w7d|N`5RIc!m-a$TdRQh8SasnR8KMWeQ zbn-rjeemwoQYHHdI4I6ksqrIoKk3X~^}Jo)-3Y)F80il-Ad-PLl&vlT#vHki+CwGW)jSKh0jyQS z7V!ZEIvIm%D@v;uL=QAgAvzTr?LS{Uec|&NaAdrnJEV`yjnmoZQ{CNX&`LFAEdEed z7C^Vdo1xNYfNiT^_L53IEg;3ADo1dQZ_(kds1B?><|t&f=JnDS{zY>mDNZV~*>b0u zuN?Q@#itQq$z@6>A;6*@@N<{>C{=|qn{oya0OUF@2sg-&9gQ8f+a!J(iY$JBE>_2! z*N$E6f|%2!A`nm=s1hT$A6={~EZug(`LOK~|7mX4Rxs^ZpV<31nVSj@%B=Z4;ECP_ zub6kq^DO3<;TLc6+J9;e-X&bxK<3~9XKQm8hMRe6<{;zajKGvkADJS~&bS7bXdGFw&&_JzEa#yOToXZEhY+qq=!5p9G6!y* zzyPIyDJ2J2x&^Ed#0eT_M7-df^|B)HGNHbxsKK^X`MqgT$%`A|C1Wf;>X4cg7)(u` zH>G%IlQ6x;18-E`>Av_f#O5vn)|XNrBK#k{B~t4_j8m@;jx{h#?~H% z3*IhyrNn~$EaH$0ipmb>r4Vf$lkPuo8cAsOEzGx!!!;iZdyvU!-hf#SoL%=|%} zxG>JU?rEnghIIbY%kL82132`zYCOq?fZ_gH@RV3rO-gu1EO0oU?{w zLwEaDUR}PY(W%w@X;C&k3<&0$Z%6P~l8&s1ywte6x-L z50visg_vFX1Dio1Rj-I}Bz~wVM6{=*Ky|~J#)uH8rRXm1{E^-ppcyaq`*r7HwaiIP zQ2tkEofLJ*`vi%Fg|9X}HOL95da%ZvSU-F%)5ZN$d9 zg*FSmASX6U6_t!Gm^X(;e(9ABzooT!6Vwz>+>~=FVXDqNb{DGB&<%0e!#LhlSk^{8 zD5$d(2X#7VKqxq)eazQ|)bS44ed*Uops;qLj&q5^$ zMPZ8OebmXrA+W2AFYGL% z&iq6|A;NDUd*m&VI^5!5NcyLzZGmxzdln1@;0$ko*6fGe+p+Yrv-B6MyP0}NQho4q z7xjL3VwymI;qLxjQMj8cR2geC_VZLZp^<|dQhxVSzqU5@s!dXjXM%mdYCPC_hZk6S zX3fxhClk7Ng#)+odt~k{^22J5mDNEYWF9;CG83x`KEZD+slU~2fog8N`H#NUXLl0& z)l6G2mJ_)JA2U&&5rg2$V%Wp}7}%L|zi`r1odb4F8hKELLq(aVsliaVP3Qd+$CuOc zU0T+?`|hdb_%n?)hdS8~=^Rz+et)L+$x;{6>jQp!Jswq)FK}yTP#cVf$~VRq?c&9l z={V$Z+pPQCUozVA2Q@=XwR`QAqX|~-6>20lI&N&%V2|1Wku{vqrn8?X%#D%WtCl0FW${Z|upcu4=tby{c zL#5x2keS`8%XmNXeKW*g96i9QonVd-55mNpL>Q%JD?;~MIRO-e=-;j{_7dUv(eJQY z$8=Oin_hTMQK%6=7Az+AwWft45EPm!i@gDD?|Ce-o{&^v?2D8VoG2-Bzd0r%G@fy! z`HBncx!4)CJu)-7f9m;t2kKW4&))VuyPLx6J;B)Nmu5zB=(o0r9eH`^=E5&?+3W6G z{kCcT@~yo)j3{kBVT|9WkL2NA_9)Qj#&~*q4t@YZ$Bei-^K8yDs}nlU4b(pK4AmFc z?5JW*$9S`Vs}*dyOAN~tSqyrZ&}-J3K zN*;aMZ7jjo4Dq{0wrLvR!=xG8IzodK|5^nllZaaG@&1c#)rrz_*t#vEaK_?^YSy#( zia{r$?_3IVZ>zUae=N!6o(bY|gy#z$CdT|6&>>9MAso{QvWYU z5v+*Ex|}@n$ONmA&>|HIWK>HlG_jV3{(_f!FS=KeBul&jICZ}m*6ePQBl>odP_f5X znvOcUGrmRE({C04Gu2}uS$9V^X9aq9=y(J4mOfx%ao@04+0%o&Vi`5a>iYHfVF)(}~~UovmSD&aT_^uAbdbewkbVs7EvUZb?%6jgs* zp@gVCV9$w3@~TwU;p?*1W-yO4Di77UXEPAAf@ZpeE;TBhHJw_K6-9Hb$TpP?{unzM)Q&>IDP_$_SjM!o{gi{ssNoN+e4{RBO(%Zsroq!|@__E6qPEczOCYawHiywBdv`kcYC*|XX1HoPag zyxtK(|0R7iLa=yGbioggBJ)H${)i>(MwZT$(n%%th-p*$M7ez0YjiMQr!HUh}W`0&lUC9*?#WtUUWDdZl2GRSi0pCOQ7LHWR$PBr%4yaQWE2__qeY_Aj} z5ZPgz$+QP{_QY?H6&nD{nWa|&%+byE75gW!1`s3N9#(e;bLyNfavyukr>z-!g|7#Z z4M+8;^-kgLuY;Fs8D>3z?UQhP9D}?(N9NoDzW0Tipzi6?=vEO?TbtNUbb>&&Rdl%R zUDl2s?#!T%c; zZ0Vjt`n|{|5q0C}ULOY0KsC_eM2&Bd)ZI*A!Fl#c!9k4vBhuwF(D23^j<*}v2X^d{PDBzPW&7NX<~0+g>urTPi@_11<*qln}piL zS{YAM>gA0{jzL9c4fcFKN!YjMT{4wSvYc&0v~Z*nNr5>fjDfdT1USELdKvXG^bx$( z*$13PKkFvcDFCOq%SW!G4-Q;{0`i#_CmiL2b``^PKID1aAwK~Kqz@EyZ(;k5#E&>K zvI}|AhN!ihpWl7JfS1ZId`t8je2D*p4P3`u_|+jlI|iTpUYq7sn%8)YVRNn%YUa76 zX?X4|e zYa?{lH(%L1!$u`kAm4@IgLe>QJ^I$Lwy;A+{v*)>$W2$t)E@prZu#2-sw7k=0o)2X zYy85Cb3>_l+inMAEj;V?t{xfCL-W*wTKfI`tbiZoy%yz~>LHzH7pnTDWI+CD3K>Z? z46%H*a31n(X>;^&h1}$&j@+MJBl9jdZG_G()r_JdyV&T?;j5a-yzLh43r_lsgGem+ z`Ue4-CkpNAG@vQeKY1KsBl`KC#8#0~*4SA_WM0gC0IB8AFCCSe7?tZJPhy?HqnE~k z8wm1hHAlK@&{$C^>h~Nwzo;VPpm%CFQqn);`?NrESHkZqwcM1Bma~u=0qmsg9!)LMGyaVZ$DQE8F zcD#9MNGhye9}25d|k74w=XQ4D)Incd@GJZEBTAU5CbB2byM|?@Vf2FtE zS$MEc@awg+8}L=()h2fwE3yo-^3$9d1$li@jyVOy#*q@G2a60n>beL9St$k1AjE`n zICPSo3id-k3LS{$+8>G!_cvWELu@zO&Z&{eZTuEFW;~Gd7mii^s`yqZ&=CqVU<`0c z6wn`k<7mgYvA@n92e~1Pi($nP?bf@q4O&Z0u*x@T0n_u?4|E^eP60@q@@Mc3bnLfl zP+*K{LjLNjh`9D}y{;9|Sy;}GGim#7Az8xN{*NuhXXmQ+RABV&IH#(b2cn3pK9d1Z z#K&s%c|onGvo`B3YB{X6wVnF<1BjEU;hVOw{WmJBlZ*>(h*!+a3`oGAfW?xM4uwF& zB58hqevsysc`a?I*HBSnNHFhvK5AEj+*`=+kqv?6Za*@2vxa?#s)wPEaPSK(dykLl zpIsY0q`{suVMYwPYP~-`SM1R->DHvmymQ@CsC-$aZb&vyde3be3<$5xc88ppgC&H> z2~sQ*20f2II@KTzyeRjjO~GqoeC$~l-%4VL@Aox^2)?yar{Q?DpE5y-%l8U`%o&;T= zQQl?@cVnfbBk-OP>9fnuO!%q)H_4Mou0r_E{y}J%Dad!4#YmLo_ifq)^7mbwXvcxR zh!?_fb>2`EDY!x@^FGD;#{@wuYWI{|`V4QFiO{yPSKzYFeBT<%DXoS) zbj#PsKXuB!);Td#l2G?mv}+;2h>D}N#e&ruCQsiv!thj>z8zx?NAHj-FZQd&UoZ0v zzyG74-3SMQP29}g&N7q%iU5!T91BD}DyouNT3@GcyN?l6eJ!f??=x$zQqs}m1%wj+V$)mP7{!2Y zuxwr-ghfb8?D)~S8sxsI{2qQoefj{t&-bdQK+UMX;BFLqz~K1H>VU{q$Od}cn+bDp!l&-?uI{7MSdwgdU7VVzJPq0mjjNykn)GyoMb zhRcK8j;)MpQ?^Ti3FiXU_RZ<#!~&0Ue3GHNX{c2?nk9xZn?YT!ZKh5A^QrxH4n2Kc zo}3bA=m1LWdlhlGDbGQkIu@ahlj&(fB!tNJJ!){& zIUNVxCpb?AiVs1F=7=>IeDx@}1K$CvGq@HCo8RgvXOy!~TnriJvVJY%>>+X0LH`7# zPc(pLtw5`Lt_oCc*Z=vdG~s0sirCt+X;;VVNrN1mD?Awi0pcEsh~7M-2c_s>GfF-ftu zXvPsTBPeFwSZc|<>KlY`Hb~n*@9NHy6bE;5PyBYy37aV9i z&unonC94kGh$|477ijpZRvX8(e&TWhactN;hC=%hBee}>U{0)q@)xRzY&e@=KS!VF zpo#-y+zph40~7_;YnT=ALgUQxNz>^1_0%&X2&G3obx!JC*?n#JfdQH6UUgMYL#YBGr$vgh zZkI{%*l3Yd&{#79YbuC3(`#QLeMzsqUq0eV0ElE2@vi?stuz%XoVuSD z{$((oO;;W8RHri|AT>r+E2;AtCU(}tBMA{JTFsl)IDe}JvG|opGzqJ{OZ<5a-m<9q z{E9OWT)Az?l!b45r3!Wn+E+eB@f>R8!D48~Gsu_BiH!JdY)0b3pF%T#0NBUbmm3Nq zx=}~ms(ijmRJfS3huABuU?DFJm#r>&V$a*=xk~%8!AuPMIut2}AGX<%S@RcdECq~? zHUR+Ax%EbJgv2^ILe9Gd6z}ACOG;8w(*1yOPN5lis=D?n#(C1QoiMm-2V9{@C~nOx zJo{kJd5TezzFEd+;YNCwdJ8*18`oa=Zt2?HawiQVeEW~84c3|^TTy_Jiz24%8fA-U zQJdU)<)~w02S-?+hkBJ8@XD^;(zVLX&-xR{uJ*TGD7mBd8mCJE5<6v}@-}^$iuTXvpQrKwZMjGN70CL&m*t9$l9cpd%ji`7w6kLhqRY@hwiSf^LO`3t=pYe>!xx6 zxo$KwTu#M4rU5COTgTt_&tM|1V?qp?M+ez@sra}E&FXji0aT zKna-+5acJyia~=L+}FxFwo)IVB4myC>juaWnucG0I5y(2JO3mqT_G5Czo#Zcjni9A z>SX*uf;?n2ov!qUE+BG_LxUkCwk<3B1`A0DK#OJms4$PCqBR8IcyI*6OFIZ430dQX zxfGECGpO~vP9tCrE)79+a&|eXrFyp6K=xZ6+T)@T%%QkFC(6d=YMWZ+FI~k5*<&x9 z1eeTkyiCMzpXbz1MUdc)+9L-xFI}Pto#z)@%BF`hO&>8VU3?1_4PVI0HSwOkU^rYe zrS;b_=y3G}WQ)V`v{*Z9?d<8BOr2QFI6p;~u~+0A;5o&gKF|4khP$<_8~w1M^sUNk z4q)w;wr%m=Hz|?}a8xM;=%`^Frk;Jhg>vm$#eFGrQ9PStRXBlQM1bdI*J&`0xW1s{ z+czyZ3#S7U3JUZ`SXMd{c#<3(^WK>cALr!{Uo3vCXyA)?NLR&s{`D``DLs!>XaFS` zFl>a>@IKi)u<@vLg@9D^M6ISQsd0*BJXjOJiY^2WUMNz)z8KD9O=O6Knj+z^nvc>+ z(2WzxYWV~5bN1L! z>b$D)n$^{$#%${btQqB-5#6TrthIFoUKu7+QmY;u0(^BJ;H$TH_Gx4lWdAaJjcXXS zH~)%CDN}{=siI+zaenM^@1;z`T%&Dj{{Btbr_9{$K*bzoEV4%b1?-aYdHcAMx#5sA zxgjpUetb88o zU8uo82-s8rjgLaQBr_=Ku&nx+kl~f?udaQ7U}u1p4fCrFi>`%(Xi3|W?d1+-%#+L; za1!Y`_3l8jBR_c(BM$qN5Fo-F@zjGwEd4{O^bBfRsko<9H7;z-Ng1$9FCbBj9ER9R z2=haYEcLicX0@1Y=wb%;?>?l$(hZR#c#<6)?r`FeuxK%QM%T#^3WN(X>f4H}m^Z=A zJ`R&0nHE&6@DiA6+1G`o?sg6|m=ym7O52eAbg#*lV-TDwNadfb*k?5fvICsWH&1;O zEPQF*=Ttg0THMcGolZk-qy}DfAy0vQ847BB7*+v!SBh2R@|_(`Pt1t7y7sUAZ9<|& z;(|=a=~LimD2NW@b;@MesyH9eF35g@ckXVn)_xlpwF z8A^|~L+5X2O_5{nxvIK;1NUxfc=!iGiz7H|uWcapQWa_e=vR!oAY4=I2NR_`lIp%A z#MWeHXOm2}R~CZO(j#vTHqGF+M{*4&;oRWNA;=?wT(3AW@+Hb;L}Sx9`&*TgF~!xh z74JFJy#s9W6>@|~UW{#t!g-2Vkt-ynhPL2xBOB}V6`JaVt;eBTCN#$OEfnn(+IA8~ zRO;|qfqG!DAosFe#oxF&y8_?iTJ+Sc+}g0fTo-}Rkhi^WCvJ#71!J2;uuL6H*RMWi zMy;0FN$SQc-pEEU(~g2yIav!ePYj4NNc;6tIy)okkiAM)0W12WO%^fIa^R7gWLrr2 zVvq5DZzYp0TYcGr-t@i_TMEKng&(5V5);glq1RqfjsV56aC}wmO4R8CL8g@JT1G1) zy3H887SvtVc$7-f*HsTrtoeaf6G}ukGY1XVT*SRl1^5mZg;B+H{wJ`dBa5lt?Jelp zR`Cr?Q)kTZ>x}5Cj4a!So-$kev{539qxEq5hJYCA9=KpK@Ytx>5CRn~&@}pA4+y<~ zj#nPCS0dP@8>W0S(#8P>9|5Mnfwp$}6cDJbV8D($Meieon_Cf5sZyNL7Z-NaqHgdl z$Mo3EyG^hzO5gFmRTO9{>MxZ~3H$fmnX30TNFf`IXhGQ++xw1}_UXEZvT+#w$4yk1xw&1@c%~wYLP?*KmpL;ic)4oi9n({*TakCHEAY1rZ_Ep4 z69a1EQ4R_p8T*D8oXOF=>^ozIqa4sVA7WU$Rc_6!H%g%ZK|;djW2h$zqNx6egF*)_ z58zX&+SER#wop@^M~}zrBc>q}m@(me>1a5gx5-$=Pzdrnj``=LzPVo+=<^<_X(>`o zHac}mjxg`RCD8}Zq;H)>ihiK^$d9`7-qrXGhwD_It?^a^7faMSh;1}c0X^~x9l=}p z*D^Z|K>Z!8U&U7Zl5v-L?J-5#b&sqdmHsO=0iZL1$&R^SU{Q+5#O zF_56LSG%ANi;p%1wM$G~0O-5JYp7?g_)e;U<5&#Yqd1=2>AV<2_FJl5HT(O=T`j7; zq85RyzrZlf2!GhNN8?OfIs?Icj(eXOh6Jv1XV>^zEDTo>i&js!GSaT<+H(BR$UyxC zI5=9ShlmyFMOdHHR-#zJ8Oxa%*@m%r}akIsg{-@V$)2UMU9r^XO67(#3 zNhbqnIC3fEF?n@@5v;7+!s_bMvo}$PI9S2}3(NxzC>9?trl4B49)`0D9H~q<=w{WZ z`?RJAtS>*8YVqHQ0HMVksW8H_mOjFp^AczADdGPG~K=^S5KRAQ&1 zQ^ykcJvU>qW)22T#*P<2>XA!XmmxQbWI0&PEL3%GjZdpls_-TvnT@L2@T@VozS4%NP4IA!l;h`9us^-#x2)CW~Ytk2Qg2 z^snz~lGOg8sMwut#(Zxum-??rsZ@%q3Ols0^P@(ODPHE|8VT~ZJckB~tqk5R)s|6E zOpyufk)eotzZd#z#duD2{BnF&?%3Uh#5H)%B~Hj(s{D2jBj7?xCW_!?*$pBB;e~mS zfO)pr#>&@f{4Kw-Vb@|xfrm$-)T!Zo%EJ}$>oxCcY)Lq&U5npxjFp)E*vWchwue(d z=Q|Nq%M&gY?vVo2@Q~77w?e_&w5)v6IW~TPv9Q*|Y}J-2Ko6Dyv>NX2uQXkY*YW)V zLotzM0nz~ID(Yqc8C(PBZPVAkI2{!t;=>oIUm}pr6V}Q*S)*>8e_jdPQm82il0eoV zbF&76C?LAAFJBU1cA$41==6z0{rIdDd?#6DLcHgou|?|UyZ7m0q_{iWkf0rciUy0P+Df*s1m^gFdG9C@lFGq_YSudTi(5sqk(2j_4|=?mZ6kAD5y!wcBC zToyJzb8@6S9FBOAJ)={(0KYc~HTULXTmwSQEn8_ZL*z7Z2q)O@l*q_6{c+8vY3gty zM>ErKPCeJir!$D;<4nQ(ZZr}6sxo-=9M`hCcf z{>){6k5uyrMFHSi&y}q&NNVHMj(Z<)Dm_^`%8v>MuV|h(P#NDL(we;YLXDp?-e6zv zGh@Qs8s(o3R8r|lzOl^9V{NrhK3x%_vMYNzET4C_U4Fi)doT1>5OJpL`oPjhgBg#$3OlOvO)?5Q?`f8h_g-l93qHP4?(ippIa1W)<}Mv^ZZVT=0gy!6V!Q$c zdx#r=61w@%z1qurTE1tR;!TFyhc%_NdmaM_@siZ3$Defx`(u8(N5e*amt#o zJ`ISSaMxaDyq7pERast|1G&=j3}A|`-g!6Z?|Xe~9fmm(O*lqK@K1;@ zfyOar^pTOQTCIBSku-3PWu#^5ucVljv=IudNqQNKXk_NJuR?^FT9*>pCBFS(QvA!% zepj4&a0b*b)XmcS6iVkxTq>=o+mk+GY4>Y4QV+Ot48ML`H*J@(q9fZ{$&H4!*+1##eK{6!I?kKf-*{|W_V?`r)I4%<2s z(&*iDb9(47FzYK$+l56=Zu*gsY|_6O7k9Dh2Nb|{Lv{!;Yu(spO6j%vx*>OOvF1Eo zH{~Tx*rVU#zBilE*}9b5fLNV=j?WtVADufNkwf?~lK5sOp$V}aZ!>u;B4vr~^2jlU zgY>Cr))+culU8u@6-vT5I)U40-!FQ(hxcB~Er>HGHx?0o;XEqt-fl#;5Or#5rIxLt zF|2IHPZ=nr<4n96)CS3*uBU6~0;T1uLD9aGunTYS#b&j5`qJ5d21+|378L-#61rUO z5>oYrfKNagb($K;hGYatw|zCcYhmcS9&-7HfWJVd265V<)>+&9CL|(;^A50{#2s%C zj}DLT^nfBbWTZu@<}I;cD6*k8#%xIG2r_j;HQ`0TRdS-+Cot^;^M1cds%7QPH{y)1 z&c26-Zsg=>+#IrRi%T_fPCH1@PQ7M(?p(o1nLObIghWLH;4kPOIE-&~K7cysVUS=< zZ0t5flmXN|e?bU)2E`eA5vtV)@o(g%FCb67!^|6g%78G*nf1uzE*U~glstTm<>diYD7iF zecK44CWY=`tPP+kM_k;{OB^`SvVxGpu%?I^M=lI!MZdH`=ybZ;%9QK`FY~~UwU(-y z&|b{8fjaBh2(r$G5#dC6h$_8tLiCQ%Dj9rJ1dyzEd)GPEMyly7ackV9Ba_j0LD{uO zks6U!4bDJy-_^FBQFeiKwJ^@1t)v|P;HY-4L!~S3O>QGe50#a`*6a2WmklB&W8$^@ z=6%cnTN7sO6Vdehp>5LGo}R{nKM8; zGLzo4KLOWh4HugKdb!P!fN(;)K06??8o=B>0=k>J1MA6d`DDxFnhD;(&Yz#lL52Q- zc~99;)Io9|2`z+{qXFa6IEXb6Gaj1b1FjQ-eOJ_xK@}S%Izme@!kA_aNNEzUEqhox zjflZ&WF!Qv^!#9x<(O8}qoDF+5F+@*@@_u8evxsY9k1&!+aj z7X}bQZ%(~8jD3Iyd}D(ZJkVn`-bIPSBjfkhG8htljpIUuk=3%kG+RgltKEa@^wkFVZOmpNq1yvN z>|Fa=tx(yZs&4}|-2vc$))xa|e~w|A1k8k7$1W@iCI7_@kx9*E=6x`b1+V!ie~ z0%@t|HmRwpq<~(#AkKQj_IBsLc~$gp-4DQ61Lnbl-T*!n2%&2bCb!)Gpse8XVGWSa zu}uP;-?TkX)4aVI()+D;wKdE4TMW$4oS~GQIx;Aaaife0iHx5r3)nNWhv7Udi&Eep znxTu$j7CY3Bm=cDgEL{IOQO=yNHGBtFDsnie4*x=xk0X7t{CM=Xt!RAQ&WD8L7FQ| zf@~Dt=}2|RZyx%aYNI;xs)M{FW35Mmly>#$E07EgG!6(n%IE5ynG=F`6Y|z8Y_!%6@-e&$GY5uhL8qWg4rx&&orq8wA7C zjblM9KlxLp-pNpcPCwbxm?M!g)V=2wD8_t@?#Z?(ujhbE-KN@I)b{wXO$S_FoJ)?i z?Tf#wooAQPBh=Fj_{QWun_|LgQ>b1xO)@sbosnEXA{PJb)iFrev#zyJaOG$6bDpW zgnmi977)YRwrMGt#~b9@7>w+Z-n+HGKn!wy$9^R4<%~&0bv~_BZN-P|E*{&r z{7tPalnzFyz+Db`KVy=SiAlD)ZknC~hKU0mx#rHOHW>L-eLMQ7o79}{@TXNWqTK{ zU9`c#lr^l`r*As)bz2{PyqY*1U8+Ami1Y1Nr20v$dvb^&>(igCmcgQm6!*(eh)=$2 zsHGNmY;*HE%($iLGw4D6uzmN>EmV3)(QqF@&E?bTKDB@Y^Xd)ep7 z>ART;v3NkJ;4&BuIwnq3CAjp5PD{E`M^nfL?SisgnwhbIH~m|Nicv1i@(QrMcyULH zYfsZ^=mk`0cannIO>rFDUSJ~C|)~qj$YzNMhzJiUhf}UlF$11sHQ*} ze~&IWy$UJo++S?ccIj+|pn&Zz64lvUId+45LWOY&mzJI$(;0U6#187QCb!tm)*?t} zsIH1aDulGRC+vf^OUDsk4@y|wpAU6HVY8|s|~z6$oO3An{d+mXNIbN3cIo+T^29S_Ej}YVRy@_ z>7}e2y3&6|LFfsqGgY1%6CZYUlbqEo|3-gd{ImK5=bRHxZYEVJlYt>J2F^zPaww-(AIQyoyb95X+T|LN8uK8%-Pn^yMg_Fo$4@Kp zSxvcUuWJYT`@G8m(Ku04nb6o^8SK02(nv8%aI zAEy=Mk!^De$xFOPGvT{!-PM*VK_9|&MYZ$=Wy0CgZbDVnC*RzfFSe1T0JWqqsD2W$ zR)!P*h1O+rpl?9|1WKc!F+fnqtx}1$Wge55)6mCVgB_Q+_SJn$BEKICl<1d)_k_#qyz`ah5hK zx4FrV6eq1=uT_Pl3x4c8&2y8PI`q ziW`y-MVYyLoa!rBWrmmeZ6-?%aYpdQve}mtKmFwWva%y9EYfBa|2!`=Y@)>6Y8GeR z`=6@}m&$cgNlwnvwvBU6we47dI?hppVc@_* zfZx={LTu3}IfH|-la-E=0_wK~8^YS$t|MAeM7oSd$%6(w78=$@yB-+5x)ki2-{S2T zj*o|VT6>--=oP%qC7 zEw|&LCv>=Znb6!2V357;WNwoK#8WGs_0_J9A{@|;xghP!20Ql8^HA;FYsDnI-k_L4 z>rycegDtz|Dn zEav|9?GtdjWq$rBr&_+^*DPMY1H?z1ONW<(qFtqENIQ084BD6t&1%%U3eTQU-29V# z-n(-%q4dM3IORYq#{ihMnHm&>;vWjvI+M;1Cs~GF7p}2ToKsIdIzz!fc0r%vp<-M; z$xm`nhJKnEER zT*!|?9P0bnFotwM$T%c}Af&9}ZVz~G@mLAy3ftE|o{E?z@=kEpk*cbQ+py^eNY1SE!RA0qB!sB?fWNO(rQosP9Ucops8U_`HtoqboCeSj57_cj8 z%wz@Dp@SI5RxF&LH-#D)YQ2Tp)=nSvRPs_6zMTtU6DjC~@00b77p(XjXzIgRi-6{- zylv&dd0FMgYgWLZB1D*WJuu$lx!Or!-9W4U5bNmR&(ffUHqK{v##?=o_tFtj&3s7PkZzT>fqktNwt<4&`A3s)pFDc2L$L@ z?og~prM?g`bI2vJ%?QvfDUG__p+e{E?5udavrkf0)TI<^-}d8K1%PPlT0XFecnsYB zz&Hbly#mGB`dkRz3>0*6lqpg}d-`Zc5M7+`h^L!fi338mO6AfL-=MnqNSh0E9sG~p z8s1r4>zBdQp8d_&F$#Fa2)nxjYv|^|@Q!QbfMytr<^4E18@fg9RDE#g zqzl=kt_9%`SU3)|7FR6Z$N^rPk(GBwB^1?IO`o1~9_yalcYgt$p@-&^98ZIkGo+hW zn(xtwTFtNM)chY~6EYDcB+_T701K)l8~_^jK@kEtx_(p@jRM6UF;%a6{HAr+Bhi5r zJz{auIOl;a%!)@4(}ZWzH!O(*?(vbneK19V^Zo(+K}C)7m%om%%sM-?LZ2Vm3bt;C zExopbf+nm2Vm&r>0!y3KeycE}{$lf`Fw2ghH&&Iw!2V|dW5X<&?%hv2RW6+d^ekPg zSOZw)Z>6aXd6d3D<zmiRaur$#-3Df0xwV|)uu68Cb*|#Z$JznZ@2!@)qjS&wp zUYL(8JusA7y1G@;<3p;CdsK-B$z!FwQJrpQd61u`}Ub11Q?CWRqp#55fqa~hXT*{EaP57~^g;xEO zkbx{U+c3k(&~OJ8!w+&I2&XI$L_lLEz~fc4sG-u_*vSNvP5j}X{p@g zO*uD8S<2D1i0jo-ZRx462-Z8cRx1CldOGR=+X>hr)tjawFevX&+Nm`mPJP36Ats_( z`SsqS#-$!QK;q($A)545GBo zqowHgf7^zS`*xL++;yvK?TT@oGj*9P-)SA-nrKdwmyYn+vs4#v-jw>~+ z+&C*;e-Djzjf9`hXHC4C$bjtz*Wtpw3tqelf!}(Q%d#LZ z@aa_2-$;Jtyk|Z7?T4Te4a$vOKsmhKj(baH>OLr2ed;`a%?zRZ<+7}WTHX9*Ny$A+ zDVraLoNQ?+NKW5-;T!$0u)uo$o)$ zE~d<0?qB^ezN&%!L3UvxfE;slgFk1e$dO#k)&P=hz{*#1ZQHgkh_{^r$4WQmm# z!PvGo7T^FhBkMz3Vd5ONk$)hzL_UiaSLXP-~0(fdm2~>{?$&?lm+>0BaQK zaczQm#<^%B5;!yMFhkM|K$^uJvjP9z)cUKE#7fNP071pC^!(^fhdz%~a_czTEoP$c z-uu(lJ|(I_DVu;p9sg!2KA&@CWiY2mc04~r5-;mMzHI^Z4{y`L+Z@+En0xKZ`HGoa4{(<)`~k!rnPkKlYl_z%3-6DnSmBaw)R_y&DqT@+=&P`CMaWuGHhBQeA|BOkD797?%jsS z{=|(CS>8$`j8YlkIwx|dlj6w07p(dJ(!5Nh$FXmn{%4{}GasD~0sfI0sx0iMsR-=G z=Il&r{KN%Fe~;UAb10pi&gs1nVE=qv%ntaF@x(ps&s?@m>6ebcbDf2zL{=R(McDh~k0RM9~USQ@eTQAWVilIFWe zqo!FSOXwN!sKq=L>+$0vOy1?nd}-u;o|3z3$O?K>U-#fezr1<55sFcV7Me^XwO{M7 zUq=#Zi&-|M>8uU|_SZOyx%=npwq(|iWR(FNW!pM)_PF|`A9EsG(+m5XCECanP@F=h zX1-KPI-vB52NTZb%h0vhi75k}tuSupjZ+%#g8?f<%rM_0mNuM2QI zr#C)W1Fot}e1QQa@2>pxn&)cFaHEpAUlx)?>04`g2gse;#y>INZ6XXTL(>sI4L6?| zN{t^6Aj;zJHvTLfj_!!E{m3w3Uegh#=!UHH9ACeB-|l5}!!uF~|HW@u3=F2v@Gmmn zNXX4rF6jt{>4fiL`hb2(2tI8jf*ju;CNV)_26-q{oZ%Y!miUmX-J6PLKJehRpD5s&f76rQz~3k>7ej*=n2s(zuyi2pqu_C{GfI7xDf z$Csd{jF~gaI~{iYg)wA;e3Y@4U|trji3Oib=&VYFll|hxs|PdtihMhs>9G6)Cl13_ zOC%^=H6Qhbhg?Eg-P~DdPnN7rIQ||6(LgWK`L{}FeA+GZ9LdbjLxKk-@#e#0Z81ns z?|^v_r;l0Q{QmZ;zm`yyQlc%_z$>gLS62|CKP))K`XVMfGD2Q&WKZJfG4Bbfk}3Jd z@VRpOey1O4v|Dhk0$LAPZ8@&DV3H$fxYr>WNW;}>T+W$Uv&mNzh>I7d z`WjHHylrECE72z1T+q)zo7A}Q!XG?WqraQbg!QNt?W(tgD=P-ubuWd_JY;6u%5I`O z+4IFp70V+c^6NJ@$~{pLjY@&0vc;@uDEq(3_9I(n*r-~~lFy4f5FZQUpPqUZ+X9QE zMnZ-U!w$OmJTMmDt3ZpFPr`0 zVy;H)bV9#kZ4__TWYfZ*bLKtrgC(rv3qQnLxs=#gM&o)%ZV3u$58bgs%W4OV6Td|m zu$Wkp#tx;N75<{%=h`G#%->pqZXxZ`e(|d$w$R-4F;j9dvCwN!UtW;K9%=5wu>Qin zSrdc0Cl|XNoxmrXZNBc7^)8ncqO5LcZFERH)1(!qzXC_KQ@~ln+#&tFsU)MK#TUPB zT^{wy`X4kp1cp6QSH@o|A)jdR%*K-0jDqWkJ(|KhWeEnPVL4!oqzMQTF~B+ygKBP~ zZTsi5o#?^Ljn&py`<-=!iblNCC@^{wX&}^Ow#Hl7Q^lD_iYx^9%>v3|=5MxhJ-viC z(YjtPflro8Yg>4s+$eF22Fi=Q*jDzATXr!io?LS@1zO=b{VngBOU`=A?JQqJ*ra68B2Q04BPNC!|@?=E;4BFy5+(cS4$ihYsyqubt<)o4@IeiFoF|$z9ycTdO zPHTC{c%?48@-)w<_|R`VdDF{hVjlHGixvz?;no%tlan81?azKu+3}O-BfeRc>&rB` zA3q-+|AkD|FL=*yrO2mwzg<3+0#`txam-3*-T?a3XMtgEp?HCKCVs^_9R@++WsTrH z4SSKT6}!D>rg0S=fD60$*^8zwgr5Tq@cd;LDNFkQrAVE!Ogt_6l{T>_!PjJ(@cv81 zRCN$D7Ljw)SJz;K2t3k533A72rf#OzVV05fo{As)T#P7dH)~?@J##LPA8Cm;j zSYQ~1h%<_RMwRbH8s`6vti3M~#g%#H8CiR4dzk^Z*kC$n!pPM9=g3+=ap6zCT!#rp z)^1Yc``h!^5T5ZXR@Em01p{h~r>Ql12sr(STo?T5yG9B7Mb|>Y8;TocLAAENp#BYD z#J9TE$%;+ihSxCfxykv_w28*lDIHGkpq%je`l=5fcacT*z0dkk8(z7*rLB--O`-$yaF?$0s59kmGT?U;| zROmFqYg>=)rR*Px9+ajoHZS_TIy=_!N&g@3bai&tsNKu85)!Uj`usuO_U*BtEn{u} z`s*EDIlpfg^~+d7(ECrp9V+H{i&QpEST5!ZaLcGmr;B zZJt%-3FruO*g+_2km~dQj14b44pc8wid50=ym3iVu*y^}U}y#!1{SGnec9G!r!@Rd zi`7<;f7|I2oy)#lSzikou-=&wg=-$?nC%0}{R=fW)X@NUigfZ=xxHi!%E$vrEaa+A-1f}8L zXhP>l`4a_NE}!W-CHtvHw%)o_@j;(M3I@cYV=%;xeT1;C{fuD-r>=z3A(LdZ!cJ`GLj>C$Ag-t`XH)7A_KP%MlWZ>AY$_X7PYk zAE~PMvSjSt7pnwBDSy)Yu~%BBmAOpFCe*KkC8%8v?J+QQYp+}oE>z)b5YBuyiZAwI zmQ%V)JX*}CtJ;F)-BV~!e<(<#y4pAWl`U3e@BjT{adH&uyeIATZaYV6%(2P`L;;1I zXK#wSzhfpiEo_?{Ca2e8=rxRE4JyFc0EbkdC}Ok}*=3L;nlzy*EgRGMxCQQM?Ad@V z*JLSJtHixQklUkp6wX(vZtbkxx2YqA(#86DIjT$JE+8^1E_7 zh}>gpp-iE}D;gkkllS_sF|`1#bmc0i!I;`xV|<^gax$J85RL)b(;*QYO_+#Cc83YZ zyN57B>`I?o%dYIZE>5c(rpe^DIps)cOOdLoyCkcftJQ(ujk0lD-`sbznW`3)rt`(+ zc(+zpg9ohsHs38Ns?Oy$+6*P)$Q5$Q;I#}vijGfzhL%f{15A<#hA4pQ;MRN&jmjP` zZ}WPECvsl5MRm$@zQ~hU@7ug9@NUf>$x~#p-N1v3I1Kje3~W9R49te^A~8~UXd8y1 z+=O$5_X6zKmYx}2rJUF2U4WUB6RIOXKOij=V~c?~8gnX9do&D9GtNb1H*V~@) z^18g(T9&o!Kd01M;1*<_PG;{TINbSBin1j^$-r_=%lU70IU!!xB8O89IM zZjr_AHc@Q)uPL>DZ?=>?c?9ltCUzEzM5uTZ>;P~jQGk7HP(5i&JPDVisWHk)k3 zN#V~1B>-4bHaXJ=!?o=5-r7eK&D&c}Afnip5#+n)UTcF?6#sZSE0-{#>@?kyfr z#U@y7)|NTuZ`|WH;lLrFQD?d<#+Gt$m8$E!1L+ks190yMj`__Qi-C^Gbu=wMGCm>p zd`^=(+*FjLH^FL&nxz#xy;pg9-wCIg3VM1AXU78&!s=e_Sar?rfyZu?hN38zPB`>B&=QDj$i# z^H5rG3&gj!ms}`+(ETUymoqdh5@x+RTwC*sYnj3Q(%w{dgzFuM&cQxpDA^z@QnIOx z!)1vkjL3xBt#u0Q!^#rAdpylMivD~>T(udCVr05nzua32=0~o4+6YaXBP>BJcM-l) zYiva(AD3WGM6O)XDQn@a9{w^vdD*3jk2!2%x|g7n;fe)bWn?IPL!g>h z+gmcKis7Z`?)qkxpL=~inc-AUdQgC7*0F@4k85%75QF}WN#bgNM?xi7^Pnx|fO{LI zgj4);oMR^XkwxkAeRGska?I@MZ3VSt1efpkG(sauu~5PDC%_Y>9^NEZ0VWd_Px@L= zT#=@a*@=nb&E!a)XPMUX4m6H3PEK%8*^kzUkz$B24WiXs0-*bV6*W3#_L!^WnRl$U z#-1yU1HHoo2 zF$eep<m9HTGJY{1_rlKYg&}!?-zb~s(Gao!SFGoj>@dJ zLVbg5!*Yl1ILu^r&V7%%5OcAK7Gxpg(GZo9s{5?uQQv(j>3jPCiVqF?IN2xCDZoqs zg+0qkU5E!Wj^&bDKiYEz%&^yl%d`!0|2ex=UZU(e_x{YxZnemnpZVV-r*D+~=j>L$ zh7}e{-1{>#yEQXfpdNMUP469-*8k7ht!3TwGFNg5$K>o*ot6gUg=wOQ4zRO{xzB&#iI)B1TEw{^S!swS{w`se{mF zyo&Q1q10ta&;4Y~(~5@po78=UtA7|Y;&0HlvWF;5_hVbx2qgUF=VfYeEzHE;O`MvK zCK7S!M{Kzi|5OLf)jCiE}^j&-kkeROw`7j;|tD&0hjRTCi%4D}3z#7l99)XKkaINZ~Ty)%9*^=Q^bCv*|+^Qt2ecenmR|eI< zhSFDj+4uL_(x>4$!^Z_kdh4UB2w9TckGbEXd_m>~u6Ia>z^Hw=D265iy{7PuaxX9z zKusT?YW{57sQoKIp=ky)>%xBTi=rl~WyGJbo&o z#f{(Gj!5Y(*u8xD(7cWFe$`+7_s51QQaKYCNN9V6tIyPrL|B4j>f~S|s zUcM5#d)8^QXS0`XKDux7zEeYkE-PN$an8yL-|c*HMOf;}YS%N(k(3-In>SC|d*Z;an3%bcj^Rly3xq#MYvH6p~ z*;(YR+QcuPyl?mZGCqsBFL8zHz5O`d5>{iJAbpsv8}R<&uv#g{-#4oDo>B=X&A?}y z`ksCfba-|ppouEX$L60aTKOWZ#( zwONyo{89G)A+%5RA(#2fe41Orr}ol--+SfE*6zPt7A&xc&sCsD@y_KnJU3sq{$%Op zCD;!!pY;ddXsDa{p}LOUe!w!5#cclt@>}6)Y{w=7(C9qHbSsATk~U8mi?6YUpFa5H(|KBP2I#qVDK34 zO@!elJBI7e)4mOPCP+tC3(_^sS$e@v%-(T9dh5IKOMPcm+)6zp)PD?kG_BMjN$U8N zH|d2{61_I6?|E_|>iSpMi`0_359?$>e5qg}UMnu1EZNgp5ENRtUA^GK-%$y>s=vt{H!tm+7Ebiy zq`*H&%!Xt@3G}VJ;5+p=YXt_6@;(ka;d=^1d6pafX{X5B4QP?N%|Ws`HWqUy@9)<* zXHbLZ7M{!C7PDDT&yzhTzh+7i-S^=aLpLs41(N;Z!h)eG?UG`+|2)s{%@pCEeYrR@ zgh>i9|9dPsao3(?Npn_}fnJzn14)wHVV8C4p(L}nSzFi4vnN+@ORnjH56*3Lr|5*{ z0%r+z_kPjVh=g5p12N5zWTX7!`*%sL$F3l*TXWC$B?&Vi`8Ik?CH{^#S>1+U`>r7Z zR79dp^2Y?5w2%F^4O;r^gm9_Z$1t+5;X z70(BS8sy`nRJUXL&50M&YG5BoY5Sgq${VJ1%%Atgr~V$hv_27j$hu#Ze|Pn<1KYeM zsv=8=!v(D`);~l~s?-tGSNhAL?RJ8R*I1Sy{g(vssBXMh|0}^QvN3{5wT0(m1nF6o z>oj$jELj4!t>Qp{lb6@Mgu_hf+=U|BA4+m*+5(L*RpQI+j~hqz0&6HA6F^+Q8%pMW zZ`ca|Z_8C1uS(r|-0UlLATu868MI}WL<*I4S%rUYJd< zztoDi3wV~Hn*aitF*Z<8aDw{=Xn$C9E@9H$zCw;~70tbV@#G)g7v}e#-Zb>0EFSd9 zkQd*;lj80F>n2v9Nmn)9tY12HlRx-XcyH2*ZsH@*-nhS}AkgWvsH_(*%-WMfmULTc z<~@e=tc1^CrBj%!*AR0_!oKj5A97W;L4Q_-a9;Yp)(!UUtGOoW)^D&b#OY^6Zx&kA zp-~Q#BX;;);ZUvm%^^Ko>oiHVkqizlc!jC4Er;GVc6wbXXY2v-rEZmxuKv*HJxA>B z;k%4GO4&ukDqWv3^YK%`{fF8{5ACT+*fab<(toaq&-&LD3ptCeY>mri~c9tC}J#A%sT z+l!?>9ZP+-R{8sWEjPc>|3RGfqeyN10b`IclA|`7Q!OdZdg~vY_^9rON48W3hxJlJ z)k!evJW-te)4xyM(0nB5_+zHt=*v>h%gFM**c3eCxRT_1Jei`DZn)9R4by=DvG#Q`60G zxE>x>M3wVQ?Uqx!()mkB8K^F&ztBwWQo7wmENW06sn2NbOfVVE6)D^>QZL)qov_F- z(WEH$!^KFWISDpTKPocz6pr-2*?xR5dVB8o9D*&~P&^dn+IT^jzYl3K zzl#gC&hW`O9x0mo&9BY)c-QEb799N3bM-1+FCCbajH#8K^08JG!2;Loykt*r!Lm#Z z9x+=L2UmO#KFtz+&;P%KcnoP*wN1*%M@HA&GA*0FA+{A3|IG3f3{0v8}!5+S|`@^*Wj~g;SXJ$SHsL{zG#b+lP#z^0XapBS)^# z`ov$sdYxAuJLDVrs%*_o6;60m^>2n^y%jmlr;a2USg}!keuVzUOm)BSt7VA=jM~FR ztVf554`_BO#G>!=Mz#*M9Z4DQO1ctj^~vhQG`%ik^Ef`gy8=&-pvT26J4?zu<~jB3 z%T{GwPMeZNY*ou7;dmZ#m;TTahG}f>O`0-tqzz!?f}FE8C)d90)ST`>?h6HuNWm5F zuSS2%>yF|1VBWInqaXx=PQDlBJ>{FckhIX@JqkvC#f$m2m-IYK)pa^Syct?}@7ds6 zGv6OZA|R$pg_0`Ol1rCe*y>j>|B`8B;@5>5#G6jCE#5n-zFZh-kkoJsE?Lzvd{@J* z&Y9CYZl~M7bNpafA}!cgscK=y)1Q%vuY0_bTh9;LM>H}-GTi?1V0#X*I`nCC3x-5# zg}Z4649Q=Ne6x}U^#XPmd|keI$+(Oz$;WKSH@l2(v)y;YaWloORsCkM*B?6I0^YaS z=|!b$rq+HiVilf^`BVMXp5%M99Fy(1uo4D!zWt%~9xu!@7+%{GYEP0Ek4Q(@CDvXd zGZ?G9^N!1OFlzN{_Keww*BZC6z}b5~i-PG3F~2i=jdO8RLhg5Ge*F?2!M=40j?Hs_ z`LwhK8J-Wg^u=+Ic-&qY&n;6D5Bg&22u(=*N2In@sVaH{#d#=7Ne*VQrir`Z`6iib7&UOm>YNt2rU5=q`eC;u@ z#5bx3?{_%`ga#X^8C>1f^B4SehR^yVd(6fkEq*U11F>KaG+ZZKGR<$~cvO{YCl01% zoUjm`^-kW*cI&X#Q?o$TL#alC(c5xMYR}P_1-<8Xvh2fSY7Le~?eueAcnZ@9q(4ux zGm^+X4L;LKbx7tDn^!hHKziSazZ+IMiz)WWl|>%Jbo~7TJUy+x*WFQ*Cm{1YKU0G1 zLO#Fw^Wch4w_g;iPwT}gA7siw*V2Xk4M;vyJNfl~-V2@pFA~>}(K={xe)eV3IXx`W zLmt>+yD+22N66}SVU3$l*!>gxc*`tj;g{7z8P5$LJ~h#yB?($Lr1_N0d8Hwu7iDb* zVfc2ptyNCoio=<~h4nreO_X$2?b8DOpxd2Ie zTd=N^qh9cev0JigOp#Q(#KU%xMm4EK`T^DutbF7wdi0VUkDA08=s}XFtLs$2U!Qw< zlvh*!BXC5C4?F0oaYugS1lLLCo(%$ht5K|Tzt@B2a_(qn-P@Lve)Qsd3A=u*zjjW9 zJU=wpIpF;|x2>QwU zeFt1|Q>=b>o}CEK2V8PZhLn)jxIhnaO0F03GpF_d6JHq1Z12tYbF3rY*B28?b?4g& zgRhQEh$SN}(Z|CtCVgx;`MjE#wYzNc2J)-JvdJQU_X74fGU5N~y7G9a^Z(C8k&?4+_t0lL=Y`e9at}R;%ky~<=v6bv<9N_taDzXke)0az~}4Io}IPia~9|GmZA#A$L72 z_?^KVtBt8y(e&McVwsNNEva%BctXPjH|ysf+kH`jL8RUugGS>NJ==JVqyx@3Fe*>~ zO@~|F_?TR*W9628tvl%4BJM=$F{Sjyj0dbAhGhYknxnocZ1)rT&&{GChA!@-pSIgw z>!rtN5EAwR` z@eahPM(I$`n((Si<_0;X2)~owG-`quD=g{NeF!J7IHmse5BHBh0Rm~ zWF*GBpZLjo$z?EK1j`%=sq$1QdH+H}#kg{ld5EEldB|YKCgZXC?dwlwXXOk@>|xm_ z8U8;%i+!}-X0c_`Dd;TB7*T6p{Kyj9nzc0=70g16&0@!Ik`J*FfL$NcIQg>q57HYm z$;4q`->7;HNy~9PFyloZk!g(OKqY{Zpt~ihOyN^~CTywbHca{#4Ptsrp8n zkk!RL$r6$AtbcE8S^;Fr^+bQI=;3C~6Zuu+H9Qj- zEH&)*bD8L=a7e9+W}OD`D?)rcF%U36AmCE}E3U{{sq%T4c&Zf3tE#WLAoPl8t*6P7 zZ6FtH;O`~pwl{joklvVau~cWUfvkwc0JKV&RQh}b51yhA+JX%X8s$#TZ(_`)`AE<_ z-Qgkf<4hmX0_2$Zu~t=zpOzSQ1E+?$kKg%@IvD=bo@_+R=y02F){t*<`PMNm_q>sg z;r`?V)r0x_R1Ri5G}@o+8`9Na-fLOxU{KL=Af+(udBDlA4PPGZDOz$i`Pzn0y)|h~ zzD6PJz&@E)gY|#~E$R2;34x!|4D&|nWv0wR7PPod4n~}R%YYlms5d|so#|4sBW9TEY6kA%@FthQfn~9jJ9m0c$b^gb62T&!?-3K)VS1Zbu35A=~{FDEW+bM>&ho6|&2WYWSqULI4WoIW0? z=IC@_Ci!<*@o_H+Gl}1UWnMnnWV_sA!|VhKz=HCmDixa0VRl{*iizhega=Tq$v0kO zU=>t#UiW4G@I7hqS%6Hz0D1or5quq%ev~IYo46OtwXiVq;0dPd^J{9;BsfoQx|`~x zIo$E{9x5E{X;e-gln>|#H|org{iQcD;CA1dY21^w^-X7Y60no8{U1xPt_5~%-COfu{d}I|rL!C&ty;M{ zulV(^&a2ublcn4~CCqWzK|kq#(!5Utb=4I5e!i=m92xPR_2yRpx9wR)>^#=4LV4i` z3?bA)tn9Bk@DMRq%pXOa!bxsN6>6ZwE{*Mtm#dM_!s7@*PHuzbsLKDTFT&oUrRT_X z*-=Q-4p;x=k}A8Alup72q58T9VpZaVzXyt7+9^T3q|b}mf>p*1E0+=*@vKT_6v zW_zaTDYkE!XZGkwcr8nV{e9oRTRJrQ9v0mXd0M^U!d7SFU4uW|`D>E}S0Sm}qW6)~ zg4!b6UP}W}KcB*yjA{SJizlu+TiCyFp<0}d8Ta5e77rvue~B06k$faE?-gX=@lWZ7CQvTr(y)d;$#@tucxavrfp;p{T zlb3CY86*=nuUl6s8f1U2QO4RITG0LoInn*YKK;)&cicmq4ch50@0J?{ZZ!VU?kv4m zcVbQJotQm^w@+AZEU7LYE7UOtwx8RVkY?MzCT?JSaMRx3M{ME2kV1IDBT}1}kLpV) z>iJB&?y>ZLJ~&`>rp5Eio#+rhqxz~LpRv1d?S5Ov|wy zD`amsJiC<~8M!NZo9V+pv$F5rI(Vs|rgrz^Yg;lCin!ae%HnI*K8@7>U_vh%uj$Tr zwJT&P?PxUb^_!aTAFmn6FG_34F|{jnjWDU6(7jYM-M%wmTERGgGu0R~+*e%aJ=$k> z&%o=84Ai2P#|GT{lSflBl6)iGTiM?g;-oXRj|V-;WCPsWz`qOabejadhrm}S_U~i0 z-uQ|Hg;~5f7lU5lOJ4IA3#0#O>mGgpvGUhTzD2hS!bpqHBvKj+Af?m^eG!{``&OUo^+F}%$QEBH4k<& z-uwhopuVBz+VNwp?%eIs)>EmV#lfbDRO?{34*IcxZN`}|Ezj_I_(>>BZSP&s=GEn zM_d49=&N!aY-6SSqwXHb@I_>kl=nWS9YPb&TSlD)j6J+QI{Yq=oaoPjp*lR`6OrSB z{&0!N7jmQaPXPPT0A_+C>-$-$JkO7#`G-8} zm1{t6f00n9caJZg&~$E&BC9I&S4f~YUCS%ppGI1HR-EXBoJWJ@Ub~I|xv0rToRN7D z+lE{DPhmVVaaQI;a8!8Byno221V4%aeZS{Nxz>(2aI7$jB-41 zqNMZ?^%dz+jc;HH*)=0!R@^xoOJx9DcYS&x&Pxm}D<=odQe!9tEM84=?Gpxb9M$z( zfs*|vOU?Mab5b)_YAK$Gsfz#iWMux*-(c2eBg;5suypa8t9R18%seY2@(&ueb-vx6 zuUw(&ZNAyJ#`K}di&y#xS|a}w<|!#O2LxWgvK!^^p6M@go;+Zn2`)Iao>5$p+DiN_ z-@=LL?+*R;(23X4nJL8hLOvawH{@?wVmM;YR4jzsCOEq<9p3zVy~;P<@6(UUU7>&s@N*!T-{4U zRplNjlpKS={QN>jlW&IwWRM4HpDJ&+!^rLG4AWM5M?D#O-?69xpVcP@{O-FJoR5(h z8szrxy%Cny)D=CPQf#N^rKI5{JjqiLBV>_~t|)$h|IQ3#NMn+E>_{dfX3U!!1;nSc zDAC{E7=>~!{y{^NKoyT9Z8JzBn!%hf#T6DPc;ANT6>0?KDY;ayUwFku=v-f%=!<%~LSWq;PJ^qMT^ zPSltwr5|8~e_-pfb8V+gG}q^IUKEN+Y42w`@{ZW{j`A+7c*ciNzoOhD(~k8J6H42b zmam)3wwPAnbX!#aMV^*9EP8&HSH!?~Q<%zK!k9m&_-bH<8k3_)GnFgS(PFrbrZ1}- z7iz1nEgDvje$>Basssboa@zvc0DeQUCvN}rjvYmjT7ML6i~qUO!{+ioInzKfyiMAV z%?Fy@Osf?Q=pPN}|6Mt)SUaZG&35{3h`VIuyTO9ZFpd;gutJgTJt@1?kt^9tmVtjC&E6X|-MU$Cy6}ek zmw{W@v_{iV>ybAy!jzrM&++LKDe^ClGTkvn*5f5rwhf(()X#kOE z3R0kiztvE{VVqf5hleL5=+F1SxN8;8e%U=!@$)f^qLMI$4u(MA(t|^r(JfvlFf8*~ zlaaDS==OrKVjzdLFluMiWeUVd#X@T{OzHKeNSXY*QGl%9z@bqpa!L`#+SE!p>fya5u~y>i>+_v$2Lp6&3IAaI1oe&F>2K<3QzBAgHu75L$z z0O-p$6S*w^7=la1?EsO^&;|zdnvQ%@#owT&6^CILcA=b6mY+)7r+|tByCA^FVd6BkjBA^O}Yr3DpB+!J_&yV zkx5e8*eJ)D5NjUa4?0Q$P4pM9Ma{P4W=YcAoOCTh09|{7ga6rFTM17j9R>5D|x&2Om43P9b`B z#;Ova3eippA-IGO%hM5UibJU!sP^&$nprZOIYW2bFvvF{$4wE**P7yq#Dt5{R0?x} zJjO_oS13OFSHbYiAPh)8$gwPpwZzfStP*{idSExk7rCWtTTlAA>CyG+qoqERtq*}r zY>n+`O@aWjS~dmA%Zp zguU@zFn@<#D-9m(Fq|MIWN-*V=_@xtI$ip<8n;212dqON!V@y@UjP>01jT=RqDOod zo}3dQdJzbDrD`W=kN?3_q8yaY;hNGlr}fSYddsq&`Yr@)fj8~!?Gq9mTOTNlOHi!p z>vLn>Z+-Tu6%LsfN&onIm6FZs6q~d3fus-8=fBlr6tPougU!ZMiw9FT>XcM_8H8P0 zf8s-IL!EBlC1$25=RQxNi)2n;EPk<*5XFdUTPJ=xTzhTUz*Yiv)sW%{$|;B~;FHY? zFvK%2C?nAajmpsiDKo>o{4<#XsdY{@{;}EiR;&`?ok6D)zluxb^8NwjVdFe0DCl$`UiV>`$>)V2=(z=MCodT=uqFAjJ zYV!S5vy;c|B^-jx{?y@|YU@XT=tF|!0RQFz-vSz?UgKE<#s$J{g0ipEovv5jz*xcX zlM*dN{c`TCunZ5ej3M!@Y`=Uj)BqOa>|vS^_~0X!3hHLiPUbcd%}HbtXaW-)6X@G^ z*8p;$PIk=h^9B167qCWPMH;O5?8k|K3lqfW3Ytwg3?jFExoCmV=X8vT!asuQB1|lD z2@})0#*Le?Sci zZYIRO13&EavI3RMj6SjB=uQA`|KTvw(RStBgm;+VoLvvAjeD4!+$|zq_F^vbecf z()`kWwV8Q2W~a!#cbiWsB2h4|Ekuhv{41`6h%et{5qdZ+A+%>Tt<(%K`>g+(EJ&>TvfFvRi?Hi0~w)Uw7LUyncsCPb3TmRc% zr)3@!X(@v)&TlF}x3s=izuD_POi&#^3zgmv4O&^d273aRUKGDS89t=@*u#XTL~-F0 zYuVqVkF#4mS7f97GKeWFQt&HTWlsA*-Meoz9)Ednwj#mqXA+f0=(E(_e&m4;`dqZ& zg1{;VVU?31VYaV*=UxQ@PTl?`TIL(DLqooY;+Er?zc8VDEXJm*2HZH~v zsA1NGcSoTz{feQMARP;n^Kq_AZ1PWRFlG(4=3IkoLJl$?O?hffH(}U^1zQo!dRrAm zO(54;ja^YuX2-9{AP@1)P`E)%Pe{?TdmSOY;d|q55o>{3OKTJC`iF9pO%99a#FI0I zC#$+~TsRCPiQJzBBxns1{1D5wDW5e#qMs z)nmE@gbEwwd_-|a*)cZ?tg;bXjwIQ6Tt4@2idMpn!#HgcIIixzuM*OBK?;tq%Rc?<{^k-1Mz@k z+(1X+u9t$`KJE@^j@V{n);vw`C4|g>n4k#fYb-f5 zykPK8g|LQV53%sQ3cj}w^vxT1dhgPD|Ch&DQ*mvYN6#kIhdIt-XJ|RF$9%5mc7)s2 zlmL_+;O1rp%v0T#k7sUs%{AE`#7u=fdT#Cyzy-hvS&3{F7h4Jj?1;~1+dq=8=*>2v zeryrf{%iQTn?#2X5e|^|!czf+HLv}a%X?H$BiopX<8+AQoZZcOe2Fu3B)THdL;S@c zbHXkK(zlxloO7n45V#Z=njA#TB;tGHUkY5)yq92I@SV;CHu9xF+BFJl86frImjbO^ z+Xbj7;?9K-V-iCut0e+IO`dp{K!L|O45ztNx1_a%UOv*u8ShiW-6qgghkd|xYH<(Vk$0of(>UDfr3Zq zlzv>TrMsxt@y#N;V*?s@DtYZD?{Bt107snZMW{AQw4nwHEU^SzVz1ZEIhXhr5OU?c zGzT9|`p>O5Doq_*;*=Me+@2lwf5MjdAjiRdbK>_@f%*vsU}1@0yf)6ci^td!9qT!G zfJ`)_3eajaS8RzGFM(2jmMlJDORzU_a2`0(glZrli|g1De|fE*a~IzNzOHm{<>0|S zaX(dn%A%!VOT715KIalYVN3MtaxU`KooGm1E3gX|wuH7&4vHGcHOy4-VUQ!$nf{GW zlrdI`45M&_|ILURppW~_xp{ML;}f=xfrA|U3Qy?MAb!h(03%~5h|6hAYLkFdnF&7{ zdjY}U-oLDe=e$Q&q@zX!4rPsn@I;FIg%@+0$xE;`jWYMgxZ-IKDI)^O%ieWxlouD$ zw-P(!znC$T<6tH)eYcF@`2&oS-zR?_^E5OFvpuC(%r#Yo5nsYgZ`R8)-2Enr*Qt{~ zZ{;8G#BIsvPsqxemCc<5zrS**yKXiA4>c5piJJ(x24k>jT=LU#0Y;O!D?+6;f$Bf# zuSH|>@#|=jQ%yTA_nQ?igXk+5jc$D ziL3I#FVGS2lg^|J0vB*-k0?mT$Rw}}IO)$WJeDRai?~A;#5@YBk9RX4!P$%}01oo! zF;4@0v^=-2Kq&=Un=rS~YoPk`WhMBX5yoS2{5oZi%lb?qp~dU=@7Z;fFjlx~B+R@h z`DzPUakGGO1Yi*Q&zbs-I8ZhS`w5hAF<1)m`qOc8$7&Y)OFIEDsNA8RkLP=EA6L+e zw8ImtwG|Ga&cR%WKf&{1! z-rbMzp&JDPS;Z{OUxtky(cR{U8z)h661fa*89c$>vB7mt^9_v$nQvviOU2_pT|8I7 zd_#YOCv+rBtjL~W=C-X!JU~gK`c{T3-zwnS68aGXhRb8aH&Ebq#tf2&HfP7VZm^1j zqZ|%CPFE**mjbTBfZGlKlwL4*9#n#fLthV(_MR$jwqzvH%;5=#9cr#~12!8Do5^DJ zfH=2B#M|<9#xPlUoO~Nm?BEHe zP}|X0>~(WG_NU+tdv+XZ#$_G0EM1^N56uN&s7RJ8k})^Sdu0KFt30E}ahIj_HBF#A z*YJU(8p%J9m=jw)*pT1AL61Fr6^0*U&eZ0-Kcb4lQLk(7Q703Vv)HsMWf(90kks=# zKbUA=4;m#$M20FH)l_${I{DYLmw?n`)+n`ha?q$iki$l)O||#UIUyxh1;{zv`=$ri zgLZJx=qwZij2LHO3E%7g%z52b^^1gaoxQJ@A{Sh=ZkQ#2}kcP+N1#2Ju954fhgQ{&d_n( z{pV|N5-q?;S=Vap=H3Lv8I8z{8Wp~{KUxU4lI?(T8B&%a&)g{_T?Ceyl;su(E8Ns7 zjV~~&xuPF8RruGE}b$=^gjwuwLrPE>V% z9ff9zanWh)WXMVi*?YZQC6McBN|)oKgfyWxSsVrg+zD8OK45a@3u)?}+$>-*_2Q@T z3}N3JA?6Vj;nkwhC_37}0mj|MLiRo{?+I>TdAS-Nq=&(!U;Y_4Iqt$PfnHGQQJMwJ zrrm#>Eg+poB3tpqqX4|j$BP$m28yvm^t=G|ZNE_?MwscuI?mS}VY#%uloNQyFAvqZ z?hW)6P=^5#WYc0^5w+J83jHMOD3E!V?xn`?lo77LZ@Xg~iS&*C}; literal 0 HcmV?d00001 diff --git a/gradle.properties b/gradle.properties index e37e9d6..174c9f2 100755 --- a/gradle.properties +++ b/gradle.properties @@ -10,7 +10,7 @@ fabric.loom.multiProjectOptimisation=true mod.name=Jurassic Revived mod.id=jurassicrevived mod.group=net.cmr.jurassicrevived -mod.version=0.228.0 +mod.version=0.229.0 mod.author=CMR Team, Eli Gibbs mod.description=A Minecraft mod that brings dinosaurs back to life using ancient DNA and modern technology\nBreed, study, and build your own prehistoric park with a wide variety of creatures... mod.license=CC-BY-ND-4.0