diff --git a/src/main/java/com/klikli_dev/occultism/client/model/entity/AfritModel.java b/src/main/java/com/klikli_dev/occultism/client/model/entity/AfritModel.java index a7b02ec2b..abf011223 100644 --- a/src/main/java/com/klikli_dev/occultism/client/model/entity/AfritModel.java +++ b/src/main/java/com/klikli_dev/occultism/client/model/entity/AfritModel.java @@ -26,22 +26,14 @@ import com.klikli_dev.occultism.common.entity.spirit.AfritEntity; import net.minecraft.client.renderer.RenderType; import net.minecraft.resources.ResourceLocation; +import software.bernie.geckolib.model.DefaultedEntityGeoModel; import software.bernie.geckolib.model.DefaultedGeoModel; -public class AfritModel extends DefaultedGeoModel { +public class AfritModel extends DefaultedEntityGeoModel { public AfritModel() { - super(new ResourceLocation(Occultism.MODID, "afrit")); + super(new ResourceLocation(Occultism.MODID, "afrit"), true); } - @Override - protected String subtype() { - return "entity"; - } - - @Override - public RenderType getRenderType(AfritEntity animatable, ResourceLocation texture) { - return RenderType.entityTranslucent(this.getTextureResource(animatable)); - } } diff --git a/src/main/java/com/klikli_dev/occultism/client/model/entity/MaridModel.java b/src/main/java/com/klikli_dev/occultism/client/model/entity/MaridModel.java index 57bd0b8de..4c7c6ffcf 100644 --- a/src/main/java/com/klikli_dev/occultism/client/model/entity/MaridModel.java +++ b/src/main/java/com/klikli_dev/occultism/client/model/entity/MaridModel.java @@ -22,6 +22,8 @@ package com.klikli_dev.occultism.client.model.entity; +import com.klikli_dev.occultism.Occultism; +import com.klikli_dev.occultism.common.entity.spirit.AfritEntity; import com.klikli_dev.occultism.common.entity.spirit.MaridEntity; import net.minecraft.client.model.HumanoidModel; import net.minecraft.client.model.geom.ModelPart; @@ -30,36 +32,16 @@ import net.minecraft.client.model.geom.builders.LayerDefinition; import net.minecraft.client.model.geom.builders.MeshDefinition; import net.minecraft.client.model.geom.builders.PartDefinition; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.resources.ResourceLocation; +import software.bernie.geckolib.model.DefaultedEntityGeoModel; +import software.bernie.geckolib.model.DefaultedGeoModel; -public class MaridModel extends HumanoidModel { +public class MaridModel extends DefaultedEntityGeoModel { - public ModelPart nose; - public ModelPart earLeft; - public ModelPart earRight; - - public MaridModel(ModelPart part) { - super(part); - - this.nose = this.head.getChild("nose"); - this.earLeft = this.head.getChild("left_ear"); - this.earRight = this.head.getChild("right_ear"); - } - - public static LayerDefinition createBodyLayer() { - MeshDefinition mesh = new MeshDefinition(); - PartDefinition parts = mesh.getRoot(); - PartDefinition head = parts.addOrReplaceChild("head", CubeListBuilder.create().texOffs(0, 0).addBox(-4.0F, -10.0F, -4.0F, 8, 10, 8, false), PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0, 0, 0)); - PartDefinition hat = parts.addOrReplaceChild("hat", CubeListBuilder.create().texOffs(1, 45).addBox(-4.0F, -8.0F, -4.0F, 8, 10, 8, false), PartPose.offsetAndRotation(0.0F, -3.0F, 0.0F, 0, 0, 0)); - PartDefinition body = parts.addOrReplaceChild("body", CubeListBuilder.create().texOffs(16, 20).addBox(-4.0F, 0.0F, -3.0F, 8, 12, 6, false), PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0, 0, 0)); - PartDefinition rightArm = parts.addOrReplaceChild("right_arm", CubeListBuilder.create().texOffs(44, 22).addBox(-3.0F, -2.0F, -2.0F, 4, 12, 4, false), PartPose.offsetAndRotation(-5.0F, 3.0F, -1.0F, -0.7499679795819634F, 0.0F, 0.0F)); - PartDefinition leftArm = parts.addOrReplaceChild("left_arm", CubeListBuilder.create().texOffs(44, 22).addBox(-1.0F, -2.0F, -2.0F, 4, 11, 4, false), PartPose.offsetAndRotation(5.0F, 3.0F, -1.0F, -0.7499679795819634F, 0.0F, 0.0F)); - PartDefinition rightLeg = parts.addOrReplaceChild("right_leg", CubeListBuilder.create().texOffs(0, 22).addBox(-2.0F, 0.0F, -2.0F, 4, 12, 4, false), PartPose.offsetAndRotation(-2.0F, 12.0F, 0.0F, 0, 0, 0)); - PartDefinition leftLeg = parts.addOrReplaceChild("left_leg", CubeListBuilder.create().texOffs(0, 22).addBox(-2.0F, 0.0F, -2.0F, 4, 12, 4, true), PartPose.offsetAndRotation(2.0F, 12.0F, 0.0F, 0, 0, 0)); - PartDefinition nose = head.addOrReplaceChild("nose", CubeListBuilder.create().texOffs(24, 0).addBox(-1.0F, 0.0F, 0.0F, 2, 4, 2, false), PartPose.offsetAndRotation(0.0F, -5.0F, -4.4F, -0.4553564018453205F, 0.0F, 0.0F)); - PartDefinition earLeft = head.addOrReplaceChild("left_ear", CubeListBuilder.create().texOffs(0, 0).addBox(-0.5F, 0.0F, 0.0F, 1, 3, 1, false), PartPose.offsetAndRotation(4.0F, -11.3F, 3.5F, -0.5009094953223726F, 0.0F, 0.0F)); - PartDefinition earRight = head.addOrReplaceChild("right_ear", CubeListBuilder.create().texOffs(0, 0).addBox(-0.5F, 0.0F, 0.0F, 1, 3, 1, false), PartPose.offsetAndRotation(-4.0F, -11.3F, 3.5F, -0.5009094953223726F, 0.0F, 0.0F)); - return LayerDefinition.create(mesh, 64, 64); + public MaridModel() { + super(new ResourceLocation(Occultism.MODID, "marid"), true); } - } + diff --git a/src/main/java/com/klikli_dev/occultism/client/render/entity/MaridRenderer.java b/src/main/java/com/klikli_dev/occultism/client/render/entity/MaridRenderer.java index 995c07d0c..a0b5c650b 100644 --- a/src/main/java/com/klikli_dev/occultism/client/render/entity/MaridRenderer.java +++ b/src/main/java/com/klikli_dev/occultism/client/render/entity/MaridRenderer.java @@ -22,32 +22,17 @@ package com.klikli_dev.occultism.client.render.entity; -import com.klikli_dev.occultism.Occultism; import com.klikli_dev.occultism.client.model.entity.MaridModel; import com.klikli_dev.occultism.common.entity.spirit.MaridEntity; -import com.klikli_dev.occultism.registry.OccultismModelLayers; -import com.mojang.blaze3d.vertex.PoseStack; import net.minecraft.client.renderer.entity.EntityRendererProvider; -import net.minecraft.resources.ResourceLocation; +import software.bernie.geckolib.renderer.GeoEntityRenderer; +import software.bernie.geckolib.renderer.layer.AutoGlowingGeoLayer; -public class MaridRenderer extends BipedSpiritRenderer { +public class MaridRenderer extends GeoEntityRenderer { - private static final ResourceLocation[] TEXTURES = {new ResourceLocation(Occultism.MODID, - "textures/entity/marid.png")}; + public MaridRenderer(EntityRendererProvider.Context renderManager) { + super(renderManager, new MaridModel()); - public MaridRenderer(EntityRendererProvider.Context context) { - super(context, new MaridModel(context.bakeLayer(OccultismModelLayers.MARID)), 0.5f); + this.addRenderLayer(new AutoGlowingGeoLayer<>(this)); } - - @Override - public ResourceLocation getTextureLocation(MaridEntity entity) { - return TEXTURES[entity.getEntityData().get(entity.getDataParameterSkin())]; - } - - @Override - protected void scale(MaridEntity entity, PoseStack matrixStackIn, float partialTickTime) { - super.scale(entity, matrixStackIn, partialTickTime); - matrixStackIn.scale(1.2f, 1.2f, 1.2f); - } - } diff --git a/src/main/java/com/klikli_dev/occultism/common/entity/spirit/MaridEntity.java b/src/main/java/com/klikli_dev/occultism/common/entity/spirit/MaridEntity.java index f8a3a45a5..7427a1fdd 100644 --- a/src/main/java/com/klikli_dev/occultism/common/entity/spirit/MaridEntity.java +++ b/src/main/java/com/klikli_dev/occultism/common/entity/spirit/MaridEntity.java @@ -22,18 +22,30 @@ package com.klikli_dev.occultism.common.entity.spirit; +import net.minecraft.core.BlockPos; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.ai.attributes.AttributeSupplier; import net.minecraft.world.entity.ai.attributes.Attributes; import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.state.BlockState; +import software.bernie.geckolib.animatable.GeoEntity; +import software.bernie.geckolib.core.animatable.GeoAnimatable; +import software.bernie.geckolib.core.animatable.instance.AnimatableInstanceCache; +import software.bernie.geckolib.core.animation.AnimatableManager; +import software.bernie.geckolib.core.animation.AnimationController; +import software.bernie.geckolib.core.animation.AnimationState; +import software.bernie.geckolib.core.animation.RawAnimation; +import software.bernie.geckolib.core.object.PlayState; +import software.bernie.geckolib.util.GeckoLibUtil; -public class MaridEntity extends SpiritEntity { +public class MaridEntity extends SpiritEntity implements GeoEntity { + + AnimatableInstanceCache animatableInstanceCache = GeckoLibUtil.createInstanceCache(this); public MaridEntity(EntityType type, Level level) { super(type, level); } - //region Static Methods public static AttributeSupplier.Builder createAttributes() { return SpiritEntity.createAttributes() .add(Attributes.ATTACK_DAMAGE, 16.0) @@ -43,5 +55,33 @@ public static AttributeSupplier.Builder createAttributes() { .add(Attributes.ARMOR, 16.0) .add(Attributes.ARMOR_TOUGHNESS, 100.0); } - //endregion Static Methods + + @Override + protected void playStepSound(BlockPos pPos, BlockState pBlock) { + } + + @Override + public int getCurrentSwingDuration() { + return 11; //to match our attack animation speed + 1 tick + } + + @Override + public void registerControllers(AnimatableManager.ControllerRegistrar controllers) { + var mainController = new AnimationController<>(this, "mainController", 0, this::animPredicate); + controllers.add(mainController); + } + + private PlayState animPredicate(AnimationState tAnimationState) { + + if (this.swinging) { + return tAnimationState.setAndContinue(RawAnimation.begin().thenPlay("attack")); + } + + return tAnimationState.setAndContinue(tAnimationState.isMoving() ? RawAnimation.begin().thenPlay("walk") : RawAnimation.begin().thenPlay("idle")); + } + + @Override + public AnimatableInstanceCache getAnimatableInstanceCache() { + return this.animatableInstanceCache; + } } diff --git a/src/main/java/com/klikli_dev/occultism/handlers/ClientSetupEventHandler.java b/src/main/java/com/klikli_dev/occultism/handlers/ClientSetupEventHandler.java index 9e0673f98..f10da2016 100644 --- a/src/main/java/com/klikli_dev/occultism/handlers/ClientSetupEventHandler.java +++ b/src/main/java/com/klikli_dev/occultism/handlers/ClientSetupEventHandler.java @@ -98,7 +98,6 @@ public static void onRegisterEntityRendererLayerDefinitions(EntityRenderersEvent event.registerLayerDefinition(OccultismModelLayers.FAMILIAR_FAIRY, FairyFamiliarModel::createBodyLayer); event.registerLayerDefinition(OccultismModelLayers.FAMILIAR_MUMMY, MummyFamiliarModel::createBodyLayer); event.registerLayerDefinition(OccultismModelLayers.FAMILIAR_BEAVER, BeaverFamiliarModel::createBodyLayer); - event.registerLayerDefinition(OccultismModelLayers.MARID, MaridModel::createBodyLayer); event.registerLayerDefinition(OccultismModelLayers.KAPOW, MummyFamiliarRenderer.KapowModel::createBodyLayer); } diff --git a/src/main/resources/assets/occultism/animations/entity/marid.animation.json b/src/main/resources/assets/occultism/animations/entity/marid.animation.json new file mode 100644 index 000000000..08c36edee --- /dev/null +++ b/src/main/resources/assets/occultism/animations/entity/marid.animation.json @@ -0,0 +1,706 @@ +{ + "format_version": "1.8.0", + "animations": { + "idle": { + "loop": true, + "animation_length": 2, + "bones": { + "1": { + "rotation": { + "0.0": { + "vector": [0, 0, 2.5] + }, + "1.0": { + "vector": [0, 0, -5] + }, + "2.0": { + "vector": [0, 0, 2.5] + } + } + }, + "2": { + "rotation": { + "0.0": { + "vector": [-9.99067, -0.43399, -2.46207] + }, + "1.0": { + "vector": [-9.96271, 0.86717, 4.92442] + }, + "2.0": { + "vector": [-9.99067, -0.43399, -2.46207] + } + } + }, + "3": { + "rotation": { + "0.0": { + "vector": [7.49294, -0.32621, 2.47864] + }, + "1.0": { + "vector": [7.43656, 0.9762, -7.43656] + }, + "2.0": { + "vector": [7.49294, -0.32621, 2.47864] + } + } + }, + "Torso": { + "position": { + "0.0": { + "vector": [0, 0, 0] + }, + "1.0": { + "vector": [0, 0.5, 0] + }, + "2.0": { + "vector": [0, 0, 0] + } + }, + "scale": { + "vector": [1, 1, 1] + } + }, + "Lhand": { + "rotation": { + "0.0": { + "vector": [7.5, 0, -10] + }, + "1.0": { + "vector": [7.49294, 0.32621, -12.47864] + }, + "2.0": { + "vector": [7.5, 0, -10] + } + } + }, + "bone": { + "rotation": { + "vector": [-27.5, 0, 0] + } + }, + "Rhand": { + "rotation": { + "0.0": { + "vector": [-32.84189, -17.1222, 29.57358] + }, + "1.0": { + "vector": [-32.84189, -17.1222, 29.57358] + }, + "2.0": { + "vector": [-32.84189, -17.1222, 29.57358] + } + }, + "position": { + "vector": [0, 0, 0] + } + }, + "bone2": { + "rotation": { + "vector": [-14.75008, 58.82558, 27.10954] + }, + "position": { + "vector": [0, 0, 0] + } + }, + "Tail": { + "rotation": { + "vector": [0, 0, 0] + } + }, + "bone3": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "1.0": { + "vector": [0, -180, 0] + }, + "2.0": { + "vector": [0, -357.5, 0] + } + } + }, + "bone4": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "1.0": { + "vector": [0, 180, 0] + }, + "2.0": { + "vector": [0, 360, 0] + } + } + }, + "bone5": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "1.0": { + "vector": [0, -180, 0] + }, + "2.0": { + "vector": [0, -357.5, 0] + } + } + }, + "chest": { + "scale": { + "0.0": { + "vector": [1, 1, 1] + }, + "1.0": { + "vector": [1.07, 1, 1] + }, + "2.0": { + "vector": [1, 1, 1] + } + } + } + } + }, + "walk": { + "loop": true, + "animation_length": 2, + "bones": { + "1": { + "rotation": { + "0.0": { + "vector": [0, 0, 2.5] + }, + "1.0": { + "vector": [0, 0, -5] + }, + "2.0": { + "vector": [0, 0, 2.5] + } + } + }, + "2": { + "rotation": { + "0.0": { + "vector": [-9.99067, -0.43399, -2.46207] + }, + "1.0": { + "vector": [-9.96271, 0.86717, 4.92442] + }, + "2.0": { + "vector": [-9.99067, -0.43399, -2.46207] + } + } + }, + "3": { + "rotation": { + "0.0": { + "vector": [7.49294, -0.32621, 2.47864] + }, + "1.0": { + "vector": [7.43656, 0.9762, -7.43656] + }, + "2.0": { + "vector": [7.49294, -0.32621, 2.47864] + } + } + }, + "Torso": { + "position": { + "0.0": { + "vector": [0, 0, 0] + }, + "1.0": { + "vector": [0, 0.5, 0] + }, + "2.0": { + "vector": [0, 0, 0] + } + }, + "scale": { + "vector": [1, 1, 1] + } + }, + "Lhand": { + "rotation": { + "0.0": { + "vector": [-29, 0, -10] + }, + "1.0": { + "vector": [-33, 0, -10] + }, + "2.0": { + "vector": [-29, 0, -10] + } + } + }, + "bone": { + "rotation": { + "vector": [-27.5, 0, 0] + } + }, + "Rhand": { + "rotation": { + "0.0": { + "vector": [21, 0, 12.5] + }, + "1.0": { + "vector": [18, 0, 12.5] + }, + "2.0": { + "vector": [21, 0, 12.5] + } + } + }, + "bone2": { + "rotation": { + "vector": [-21.43432, -6.18092, -9.24859] + }, + "position": { + "vector": [0, 0.5, -0.4] + } + }, + "Tail": { + "rotation": { + "vector": [0, 0, 0] + } + }, + "bone3": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "1.0": { + "vector": [0, -180, 0] + }, + "2.0": { + "vector": [0, -357.5, 0] + } + } + }, + "bone4": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "1.0": { + "vector": [0, 180, 0] + }, + "2.0": { + "vector": [0, 360, 0] + } + } + }, + "bone5": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "1.0": { + "vector": [0, -180, 0] + }, + "2.0": { + "vector": [0, -357.5, 0] + } + } + }, + "chest": { + "scale": { + "0.0": { + "vector": [1, 1, 1] + }, + "1.0": { + "vector": [1.07, 1, 1] + }, + "2.0": { + "vector": [1, 1, 1] + } + } + }, + "All": { + "rotation": { + "vector": [8, 0, 0] + } + } + } + }, + "AttackAfrit": { + "loop": "hold_on_last_frame", + "animation_length": 0.5, + "bones": { + "1": { + "rotation": { + "0.0": { + "vector": [0, 0, 2.5] + }, + "0.25": { + "vector": [0, 0, -5] + }, + "0.5": { + "vector": [0, 0, 2.5] + } + } + }, + "2": { + "rotation": { + "0.0": { + "vector": [-9.99067, -0.43399, -2.46207] + }, + "0.25": { + "vector": [-9.96271, 0.86717, 4.92442] + }, + "0.5": { + "vector": [-9.99067, -0.43399, -2.46207] + } + } + }, + "3": { + "rotation": { + "0.0": { + "vector": [7.49294, -0.32621, 2.47864] + }, + "0.25": { + "vector": [7.43656, 0.9762, -7.43656] + }, + "0.5": { + "vector": [7.49294, -0.32621, 2.47864] + } + } + }, + "Torso": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.25": { + "vector": [0, -45, 0] + }, + "0.2917": { + "vector": [0, -2, 0] + }, + "0.5": { + "vector": [0, 0, 0] + } + }, + "position": { + "vector": [0, 0, 0] + }, + "scale": { + "vector": [1, 1, 1] + } + }, + "Lhand": { + "rotation": { + "vector": [7.5, 0, -10] + } + }, + "bone": { + "rotation": { + "vector": [-27.5, 0, 0] + } + }, + "Rhand": { + "rotation": { + "0.0": { + "vector": [-10, 0, 12.5] + }, + "0.2083": { + "vector": [-55.11756, -17.98449, 37.66083] + }, + "0.25": { + "vector": [-43.96521, 11.10344, 43.241] + }, + "0.2917": { + "vector": [-4.05266, -5.23211, 27.36235] + }, + "0.375": { + "vector": [-13.12996, 0.13083, 34.13127] + }, + "0.5": { + "vector": [-10, 0, 12.5] + } + } + }, + "bone2": { + "rotation": { + "0.0": { + "vector": [-12, -17.5, 0] + }, + "0.25": { + "vector": [-32, -17.5, 0] + }, + "0.2917": { + "vector": [10.20951, -5.54343, -1.04318] + }, + "0.5": { + "vector": [-12, -17.5, 0] + } + } + }, + "Tail": { + "rotation": { + "vector": [0, 0, 0] + } + }, + "bone3": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.25": { + "vector": [0, -180, 0] + }, + "0.5": { + "vector": [0, -357.5, 0] + } + } + }, + "bone4": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.25": { + "vector": [0, 180, 0] + }, + "0.5": { + "vector": [0, 360, 0] + } + } + }, + "bone5": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.25": { + "vector": [0, -180, 0] + }, + "0.5": { + "vector": [0, -357.5, 0] + } + } + }, + "chest": { + "scale": { + "vector": [1, 1, 1] + } + }, + "Head": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.25": { + "vector": [0, 45, 0] + }, + "0.2917": { + "vector": [0, 5.75, 0] + }, + "0.4167": { + "vector": [0, 0, 0] + } + } + }, + "bone6": { + "position": { + "vector": [0, 0, -6] + } + } + } + }, + "attack": { + "loop": "hold_on_last_frame", + "animation_length": 0.5, + "bones": { + "1": { + "rotation": { + "0.0": { + "vector": [0, 0, 2.5] + }, + "0.25": { + "vector": [0, 0, -5] + }, + "0.5": { + "vector": [0, 0, 2.5] + } + } + }, + "2": { + "rotation": { + "0.0": { + "vector": [-9.99067, -0.43399, -2.46207] + }, + "0.25": { + "vector": [-9.96271, 0.86717, 4.92442] + }, + "0.5": { + "vector": [-9.99067, -0.43399, -2.46207] + } + } + }, + "3": { + "rotation": { + "0.0": { + "vector": [7.49294, -0.32621, 2.47864] + }, + "0.25": { + "vector": [7.43656, 0.9762, -7.43656] + }, + "0.5": { + "vector": [7.49294, -0.32621, 2.47864] + } + } + }, + "Torso": { + "rotation": { + "0.0": { + "vector": [0, 27.5, 0] + }, + "0.125": { + "vector": [0, -24.5, 0] + }, + "0.25": { + "vector": [0, -24.5, 0] + }, + "0.5": { + "vector": [0, 27.5, 0] + } + }, + "position": { + "vector": [0, 0, 0] + }, + "scale": { + "vector": [1, 1, 1] + } + }, + "Lhand": { + "rotation": { + "vector": [7.5, 0, -10] + } + }, + "bone": { + "rotation": { + "vector": [-27.5, 0, 0] + } + }, + "Rhand": { + "rotation": { + "0.0": { + "vector": [44, 0, 12.5] + }, + "0.125": { + "vector": [-20.9419, 16.88077, 6.15879] + }, + "0.25": { + "vector": [-20.9419, 16.88077, 6.15879] + }, + "0.5": { + "vector": [44, 0, 12.5] + } + } + }, + "bone2": { + "rotation": { + "0.0": { + "vector": [-41, -17.5, 0] + }, + "0.125": { + "vector": [1.00475, -3.99745, 2.31019] + }, + "0.25": { + "vector": [1.00475, -3.99745, 2.31019] + }, + "0.5": { + "vector": [-41, -17.5, 0] + } + } + }, + "Tail": { + "rotation": { + "vector": [0, 0, 0] + } + }, + "bone3": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.25": { + "vector": [0, -180, 0] + }, + "0.5": { + "vector": [0, -357.5, 0] + } + } + }, + "bone4": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.25": { + "vector": [0, 180, 0] + }, + "0.5": { + "vector": [0, 360, 0] + } + } + }, + "bone5": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.25": { + "vector": [0, -180, 0] + }, + "0.5": { + "vector": [0, -357.5, 0] + } + } + }, + "chest": { + "scale": { + "vector": [1, 1, 1] + } + }, + "Head": { + "rotation": { + "0.0": { + "vector": [0, -27.5, 0] + }, + "0.125": { + "vector": [0, 23.5, 0] + }, + "0.25": { + "vector": [0, 23.5, 0] + }, + "0.5": { + "vector": [0, -27.5, 0] + } + } + }, + "bone6": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.125": { + "vector": [12, 0, 0] + }, + "0.25": { + "vector": [12, 0, 0] + }, + "0.5": { + "vector": [0, 0, 0] + } + }, + "position": { + "vector": [0, 0, -6] + } + } + } + } + }, + "geckolib_format_version": 2 +} \ No newline at end of file diff --git a/src/main/resources/assets/occultism/geo/entity/marid.geo.json b/src/main/resources/assets/occultism/geo/entity/marid.geo.json new file mode 100644 index 000000000..7e923c313 --- /dev/null +++ b/src/main/resources/assets/occultism/geo/entity/marid.geo.json @@ -0,0 +1,189 @@ +{ + "format_version": "1.12.0", + "minecraft:geometry": [ + { + "description": { + "identifier": "geometry.marid", + "texture_width": 64, + "texture_height": 64, + "visible_bounds_width": 5, + "visible_bounds_height": 3.5, + "visible_bounds_offset": [0, 1.25, 0] + }, + "bones": [ + { + "name": "All", + "pivot": [0, 0, 0] + }, + { + "name": "Torso", + "parent": "All", + "pivot": [0, 22, 0] + }, + { + "name": "Head", + "parent": "Torso", + "pivot": [0, 0, 0], + "cubes": [ + {"origin": [-2.5, 32, -3], "size": [5, 4, 5], "uv": [32, 0]}, + { + "origin": [0, 33, -1], + "size": [0, 5, 6], + "pivot": [0, 39, 1], + "rotation": [-20, 0, 0], + "uv": { + "north": {"uv": [2, 2], "uv_size": [0, 5]}, + "east": {"uv": [2, 2], "uv_size": [6, 5]}, + "south": {"uv": [8, 2], "uv_size": [0, 5]}, + "west": {"uv": [2, 2], "uv_size": [6, 5]}, + "up": {"uv": [2, -4], "uv_size": [0, 6]}, + "down": {"uv": [2, 2], "uv_size": [0, -6]} + } + }, + {"origin": [0.8, 30.1, -3.8], "size": [1.3, 2.9, 0.8], "pivot": [-0.6, 32, -3.3], "rotation": [-37.65617, -5.52676, -7.11422], "uv": [2, 2], "mirror": true}, + {"origin": [1.2, 29, -4.4], "size": [0.8, 2.2, 0.4], "uv": [2, 2]}, + {"origin": [-2.1, 30.1, -3.8], "size": [1.3, 2.9, 0.8], "pivot": [0.6, 32, -3.3], "rotation": [-37.65617, 5.52676, 7.11422], "uv": [2, 2]}, + {"origin": [-2, 29, -4.4], "size": [0.8, 2.2, 0.4], "uv": [2, 2], "mirror": true} + ] + }, + { + "name": "Lhand", + "parent": "Torso", + "pivot": [5.5, 30, 0], + "cubes": [ + {"origin": [5, 23, -2], "size": [3, 8, 4], "uv": [46, 45]} + ] + }, + { + "name": "bone", + "parent": "Lhand", + "pivot": [6.5, 23.5, 0], + "cubes": [ + {"origin": [5.2, 17.5, -1.8], "size": [2.6, 6, 3.6], "uv": [50, 7]} + ] + }, + { + "name": "Rhand", + "parent": "Torso", + "pivot": [-5.5, 30, 0], + "cubes": [ + {"origin": [-8, 23, -2], "size": [3, 8, 4], "uv": [0, 40]}, + {"origin": [-7.4, 30, -1], "size": [0.9, 4.2, 0.8], "pivot": [-5.5, 30, 0], "rotation": [-28.62959, -4.82924, -8.76703], "uv": [2, 2]}, + {"origin": [-7.4, 30, -1], "size": [0.9, 4.2, 0.8], "pivot": [-5.5, 30, 0], "rotation": [-22.70162, -18.54587, -37.24556], "uv": [2, 2]} + ] + }, + { + "name": "bone2", + "parent": "Rhand", + "pivot": [-6.5, 23, 0], + "cubes": [ + {"origin": [-7.8, 17.3, -1.8], "size": [2.6, 5.7, 3.7], "uv": [50, 17]} + ] + }, + { + "name": "bone6", + "parent": "bone2", + "pivot": [-6.4, 18.7, 6], + "cubes": [ + { + "origin": [-7, 18.3, -8.9], + "size": [1, 1.2, 34.1], + "pivot": [-6.4, 18.7, 0], + "rotation": [0, 0, -37.5], + "uv": { + "north": {"uv": [32, 63], "uv_size": [1, 1]}, + "east": {"uv": [0, 63], "uv_size": [32, 1]}, + "south": {"uv": [65, 63], "uv_size": [1, 1]}, + "west": {"uv": [33, 63], "uv_size": [32, 1]}, + "up": {"uv": [32, 57], "uv_size": [1, 6]}, + "down": {"uv": [33, 63], "uv_size": [1, -5.5]} + } + }, + {"origin": [-9.4, 18.1, -8.9], "size": [6, 1.6, 2], "pivot": [-6.4, 18.7, 0], "rotation": [0, 0, -37.5], "uv": [18, 44]}, + {"origin": [-9.1, 18.5, -13.8], "size": [1.2, 0.9, 4.9], "pivot": [-6.4, 18.7, 0], "rotation": [0, 0, -37.5], "uv": [36, 55]}, + {"origin": [-7.1, 18.5, -13.8], "size": [1.2, 0.9, 4.9], "pivot": [-6.4, 18.7, 0], "rotation": [0, 0, -37.5], "uv": [34, 52]}, + {"origin": [-5.1, 18.5, -13.8], "size": [1.2, 0.9, 4.9], "pivot": [-6.4, 18.7, 0], "rotation": [0, 0, -37.5], "uv": [25, 57]} + ] + }, + { + "name": "chest", + "parent": "Torso", + "pivot": [0, 4, 0], + "cubes": [ + {"origin": [-5, 26, -3], "size": [10, 6, 6], "uv": [0, 16]}, + {"origin": [-3, 20, -2.2], "size": [6, 8, 4.7], "uv": [0, 28]} + ] + }, + { + "name": "Rhand2", + "parent": "Torso", + "pivot": [5.5, 30, 0], + "cubes": [ + {"origin": [6.5, 30, -1], "size": [0.9, 4.2, 0.8], "pivot": [5.5, 30, 0], "rotation": [-22.70162, 18.54587, 37.24556], "uv": [2, 2], "mirror": true} + ] + }, + { + "name": "Rhand3", + "parent": "Torso", + "pivot": [5.5, 30, 0], + "cubes": [ + {"origin": [6.5, 30, -1], "size": [0.9, 4.2, 0.8], "pivot": [5.5, 30, 0], "rotation": [-28.62959, 4.82924, 8.76703], "uv": [2, 2], "mirror": true} + ] + }, + { + "name": "Tail", + "parent": "All", + "pivot": [0, 0, 0] + }, + { + "name": "1", + "parent": "Tail", + "pivot": [0, 19, 0], + "cubes": [ + {"origin": [-2.9, 15.1, -2.1], "size": [5.8, 8, 4.9], "uv": [16, 36]} + ] + }, + { + "name": "bone3", + "parent": "1", + "pivot": [0, 19, 0], + "cubes": [ + {"origin": [-4.4, 15, -4.2], "size": [8.8, 8, 8.4], "uv": [0, 0]} + ] + }, + { + "name": "2", + "parent": "Tail", + "pivot": [0, 12, 0], + "cubes": [ + {"origin": [-2, 9, -1.6], "size": [4, 7, 3.6], "uv": [14, 48]} + ] + }, + { + "name": "bone4", + "parent": "2", + "pivot": [0, 12, 0], + "cubes": [ + {"origin": [-3, 8, -3], "size": [6, 8, 5.9], "uv": [27, 23]} + ] + }, + { + "name": "3", + "parent": "Tail", + "pivot": [0, 4, 0], + "cubes": [ + {"origin": [-1, 4, -1], "size": [2, 5, 2], "uv": [0, 0]} + ] + }, + { + "name": "bone5", + "parent": "3", + "pivot": [0, 5, 0], + "cubes": [ + {"origin": [-2, -0.3, -2], "size": [4, 9, 4], "uv": [34, 36]} + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/occultism/textures/entity/marid.png b/src/main/resources/assets/occultism/textures/entity/marid.png index d089ec1e7..552180bed 100644 Binary files a/src/main/resources/assets/occultism/textures/entity/marid.png and b/src/main/resources/assets/occultism/textures/entity/marid.png differ