Non résolu [1.12.2] Lever les bras d'une entité comme les Zombies
-
Bonjour,
J’aimerais que mon entité Mommie lève les bras, comme un Zombie. Mais je n’y arrive pas.
J’ai copier/coller le modèle du Zombie dans ma classe modèle pour la mommie mais toujours rien.package fr.hugo.hostile.models; import fr.hugo.hostile.entity.EntityMummy; import net.minecraft.client.model.ModelBiped; import net.minecraft.entity.Entity; import net.minecraft.entity.monster.EntityZombie; import net.minecraft.util.math.MathHelper; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; @SideOnly(Side.CLIENT) public class ModelMummy extends ModelBiped { public ModelMummy() { this(0.0F, false); } public ModelMummy(float modelSize, boolean p_i1168_2_) { super(modelSize, 0.0F, 64, p_i1168_2_ ? 32 : 64); } /** * Sets the model's various rotation angles. For bipeds, par1 and par2 are used for animating the movement of arms * and legs, where par1 represents the time(so that arms and legs swing back and forth) and par2 represents how * "far" arms and legs can swing at most. */ public void setRotationAngles(float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch, float scaleFactor, Entity entityIn) { super.setRotationAngles(limbSwing, limbSwingAmount, ageInTicks, netHeadYaw, headPitch, scaleFactor, entityIn); boolean flag = entityIn instanceof EntityMummy && ((EntityMummy)entityIn).isArmsRaised(); float f = MathHelper.sin(this.swingProgress * (float)Math.PI); float f1 = MathHelper.sin((1.0F - (1.0F - this.swingProgress) * (1.0F - this.swingProgress)) * (float)Math.PI); this.bipedRightArm.rotateAngleZ = 0.0F; this.bipedLeftArm.rotateAngleZ = 0.0F; this.bipedRightArm.rotateAngleY = -(0.1F - f * 0.6F); this.bipedLeftArm.rotateAngleY = 0.1F - f * 0.6F; float f2 = -(float)Math.PI / (flag ? 1.5F : 2.25F); this.bipedRightArm.rotateAngleX = f2; this.bipedLeftArm.rotateAngleX = f2; this.bipedRightArm.rotateAngleX += f * 1.2F - f1 * 0.4F; this.bipedLeftArm.rotateAngleX += f * 1.2F - f1 * 0.4F; this.bipedRightArm.rotateAngleZ += MathHelper.cos(ageInTicks * 0.09F) * 0.05F + 0.05F; this.bipedLeftArm.rotateAngleZ -= MathHelper.cos(ageInTicks * 0.09F) * 0.05F + 0.05F; this.bipedRightArm.rotateAngleX += MathHelper.sin(ageInTicks * 0.067F) * 0.05F; this.bipedLeftArm.rotateAngleX -= MathHelper.sin(ageInTicks * 0.067F) * 0.05F; } }
J’ai lu le code et j’ai remarqué qu’il y a ARM_RAISED. J’ai donc implémenté un code dans la classe EntityMummy.
private static final DataParameter<Boolean> ARMS_RAISED = EntityDataManager.<Boolean>createKey(EntityZombie.class, DataSerializers.BOOLEAN);
@SideOnly(Side.CLIENT) public boolean isArmsRaised() { return ((Boolean)this.getDataManager().get(ARMS_RAISED)).booleanValue(); }
Et voici la classe RenderMummy, je me suis inspiré des classes Zombies et PigZombies.
package fr.hugo.hostile.renders; import fr.hugo.hostile.Reference; import fr.hugo.hostile.entity.EntityAssassin; import fr.hugo.hostile.entity.EntityBabyMummy; import fr.hugo.hostile.entity.EntityMummy; import fr.hugo.hostile.models.ModelAssassin; import fr.hugo.hostile.models.ModelBabyMummy; import fr.hugo.hostile.models.ModelMummy; import net.minecraft.client.model.ModelBiped; import net.minecraft.client.model.ModelZombie; import net.minecraft.client.renderer.entity.RenderBiped; import net.minecraft.client.renderer.entity.RenderLiving; import net.minecraft.client.renderer.entity.RenderManager; import net.minecraft.client.renderer.entity.layers.LayerBipedArmor; import net.minecraft.client.renderer.entity.layers.LayerHeldItem; import net.minecraft.entity.Entity; import net.minecraft.entity.passive.EntityOcelot; import net.minecraft.entity.passive.EntityParrot; import net.minecraft.util.ResourceLocation; import net.minecraftforge.fml.relauncher.SideOnly; public class RenderMummy extends RenderBiped<EntityMummy> { public static final ResourceLocation[] MUMMIES_TEXTURES = new ResourceLocation[] {new ResourceLocation(Reference.MOD_ID + ":textures/humans/mummy.png"), new ResourceLocation(Reference.MOD_ID + ":textures/humans/mummy1.png"), new ResourceLocation(Reference.MOD_ID + ":textures/humans/mummy2.png"), new ResourceLocation(Reference.MOD_ID + ":textures/humans/mummy3.png")}; public RenderMummy(RenderManager renderManagerIn) { super(renderManagerIn, new ModelZombie(), 0.5F); this.addLayer(new LayerBipedArmor(this) { protected void initArmor() { this.modelLeggings = new ModelZombie(0.5F, true); this.modelArmor = new ModelZombie(1.0F, true); } }); } protected ResourceLocation getEntityTexture(EntityMummy entity) { return MUMMIES_TEXTURES[entity.getVariant()]; } }
A la fin, j’obtiens ceci:
Voila, si quelqu’un sait comment faire lever les bras de mon entité, je suis preneur
Merci!