Started by
scorpion981
on
Topic category: Help with Minecraft modding (Java Edition)
I make a mob with legs, arms, body, head and one other part. I choice head animation for this part. I go in the code, at the end and the part had the same animation than the head.
This is the code of the mob:
package net.mcreator.adventure;
import net.minecraftforge.fml.relauncher.SideOnly;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.common.registry.EntityEntryBuilder;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
import net.minecraftforge.fml.client.registry.RenderingRegistry;
import net.minecraft.world.biome.Biome;
import net.minecraft.world.World;
import net.minecraft.util.registry.RegistryNamespaced;
import net.minecraft.util.math.MathHelper;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.DamageSource;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Item;
import net.minecraft.inventory.EntityEquipmentSlot;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.monster.EntityMob;
import net.minecraft.entity.ai.EntityAIWatchClosest;
import net.minecraft.entity.ai.EntityAIWander;
import net.minecraft.entity.ai.EntityAISwimming;
import net.minecraft.entity.ai.EntityAILookIdle;
import net.minecraft.entity.ai.EntityAILeapAtTarget;
import net.minecraft.entity.ai.EntityAIHurtByTarget;
import net.minecraft.entity.ai.EntityAIAttackMelee;
import net.minecraft.entity.SharedMonsterAttributes;
import net.minecraft.entity.EnumCreatureAttribute;
import net.minecraft.entity.Entity;
import net.minecraft.client.renderer.entity.RenderLiving;
import net.minecraft.client.model.ModelRenderer;
import net.minecraft.client.model.ModelBase;
import java.util.Iterator;
import java.util.HashMap;
import java.util.ArrayList;
@Elementsadventure.ModElement.Tag
public class MCreatorDwarf extends Elementsadventure.ModElement {
public static final int ENTITYID = 1;
public static final int ENTITYID_RANGED = 2;
public MCreatorDwarf(Elementsadventure instance) {
super(instance, 4);
}
@Override
public void initElements() {
elements.entities.add(() -> EntityEntryBuilder.create().entity(EntityCustom.class).id(new ResourceLocation("adventure", "dwarf"), ENTITYID)
.name("dwarf").tracker(64, 1, true).egg(-5407380, -10994131).build());
}
private Biome[] allbiomes(net.minecraft.util.registry.RegistryNamespaced<ResourceLocation, Biome> in) {
Iterator<Biome> itr = in.iterator();
ArrayList<Biome> ls = new ArrayList<Biome>();
while (itr.hasNext())
ls.add(itr.next());
return ls.toArray(new Biome[ls.size()]);
}
@SideOnly(Side.CLIENT)
@Override
public void preInit(FMLPreInitializationEvent event) {
RenderingRegistry.registerEntityRenderingHandler(EntityCustom.class, renderManager -> {
return new RenderLiving(renderManager, new ModelDwarf(), 0.5f) {
protected ResourceLocation getEntityTexture(Entity entity) {
return new ResourceLocation("adventure:textures/dwarf.png");
}
};
});
}
public static class EntityCustom extends EntityMob {
public EntityCustom(World world) {
super(world);
setSize(0.6f, 1.4000000000000001f);
experienceValue = 7;
this.isImmuneToFire = false;
setNoAI(!true);
enablePersistence();
this.tasks.addTask(1, new EntityAIWander(this, 1));
this.tasks.addTask(2, new EntityAIWatchClosest(this, EntityPlayer.class, (float) 6));
this.tasks.addTask(3, new EntityAIAttackMelee(this, 1, false));
this.targetTasks.addTask(4, new EntityAIHurtByTarget(this, true));
this.tasks.addTask(5, new EntityAILookIdle(this));
this.tasks.addTask(6, new EntityAISwimming(this));
this.tasks.addTask(7, new EntityAILeapAtTarget(this, (float) 0.8));
this.setItemStackToSlot(EntityEquipmentSlot.MAINHAND, new ItemStack(MCreatorDwarfPick.block, (int) (1)));
}
@Override
public EnumCreatureAttribute getCreatureAttribute() {
return EnumCreatureAttribute.UNDEFINED;
}
@Override
protected boolean canDespawn() {
return false;
}
@Override
protected Item getDropItem() {
return null;
}
@Override
public net.minecraft.util.SoundEvent getAmbientSound() {
return (net.minecraft.util.SoundEvent) net.minecraft.util.SoundEvent.REGISTRY.getObject(new ResourceLocation(""));
}
@Override
public net.minecraft.util.SoundEvent getHurtSound(DamageSource ds) {
return (net.minecraft.util.SoundEvent) net.minecraft.util.SoundEvent.REGISTRY.getObject(new ResourceLocation("entity.villager.hurt"));
}
@Override
public net.minecraft.util.SoundEvent getDeathSound() {
return (net.minecraft.util.SoundEvent) net.minecraft.util.SoundEvent.REGISTRY.getObject(new ResourceLocation("entity.villager.death"));
}
@Override
protected float getSoundVolume() {
return 1.0F;
}
@Override
public void onDeath(DamageSource source) {
super.onDeath(source);
int x = (int) this.posX;
int y = (int) this.posY;
int z = (int) this.posZ;
Entity entity = this;
{
java.util.HashMap<String, Object> $_dependencies = new java.util.HashMap<>();
$_dependencies.put("x", x);
$_dependencies.put("y", y);
$_dependencies.put("z", z);
$_dependencies.put("world", world);
MCreatorDwarfEntityDies.executeProcedure($_dependencies);
}
}
@Override
protected void applyEntityAttributes() {
super.applyEntityAttributes();
if (this.getEntityAttribute(SharedMonsterAttributes.ARMOR) != null)
this.getEntityAttribute(SharedMonsterAttributes.ARMOR).setBaseValue(0D);
if (this.getEntityAttribute(SharedMonsterAttributes.MOVEMENT_SPEED) != null)
this.getEntityAttribute(SharedMonsterAttributes.MOVEMENT_SPEED).setBaseValue(0.3D);
if (this.getEntityAttribute(SharedMonsterAttributes.MAX_HEALTH) != null)
this.getEntityAttribute(SharedMonsterAttributes.MAX_HEALTH).setBaseValue(20D);
if (this.getEntityAttribute(SharedMonsterAttributes.ATTACK_DAMAGE) != null)
this.getEntityAttribute(SharedMonsterAttributes.ATTACK_DAMAGE).setBaseValue(3D);
}
protected void dropRareDrop(int par1) {
this.dropItem(new ItemStack(MCreatorDwarfPick.block, (int) (1)).getItem(), 1);
}
}
// Date: 2019-09-27 20:09:35
// Template version 1.1
// Java generated by Techne
// Keep in mind that you still need to fill in some blanks
// - ZeuX
public static class ModelDwarf extends ModelBase {
// fields
ModelRenderer head;
ModelRenderer body;
ModelRenderer rightarm;
ModelRenderer leftarm;
ModelRenderer rightleg;
ModelRenderer leftleg;
ModelRenderer Nose;
public ModelDwarf() {
textureWidth = 128;
textureHeight = 64;
head = new ModelRenderer(this, 0, 0);
head.addBox(-4F, -8F, -4F, 8, 8, 8);
head.setRotationPoint(0F, 6F, 0F);
head.setTextureSize(128, 64);
head.mirror = true;
setRotation(head, 0F, 0F, 0F);
body = new ModelRenderer(this, 16, 16);
body.addBox(-4F, 0F, -2F, 8, 10, 4);
body.setRotationPoint(0F, 6F, 0F);
body.setTextureSize(128, 64);
body.mirror = true;
setRotation(body, 0F, 0F, 0F);
rightarm = new ModelRenderer(this, 40, 16);
rightarm.addBox(-3F, -2F, -2F, 4, 10, 4);
rightarm.setRotationPoint(-5F, 8F, 0F);
rightarm.setTextureSize(128, 64);
rightarm.mirror = true;
setRotation(rightarm, 0F, 0F, 0F);
leftarm = new ModelRenderer(this, 40, 16);
leftarm.addBox(-1F, -2F, -2F, 4, 10, 4);
leftarm.setRotationPoint(5F, 8F, 0F);
leftarm.setTextureSize(128, 64);
leftarm.mirror = true;
setRotation(leftarm, 0F, 0F, 0F);
rightleg = new ModelRenderer(this, 0, 16);
rightleg.addBox(-2F, 0F, -2F, 4, 8, 4);
rightleg.setRotationPoint(-2F, 16F, 0F);
rightleg.setTextureSize(128, 64);
rightleg.mirror = true;
setRotation(rightleg, 0F, 0F, 0F);
leftleg = new ModelRenderer(this, 0, 16);
leftleg.addBox(-2F, 0F, -2F, 4, 8, 4);
leftleg.setRotationPoint(2F, 16F, 0F);
leftleg.setTextureSize(128, 64);
leftleg.mirror = true;
setRotation(leftleg, 0F, 0F, 0F);
Nose = new ModelRenderer(this, 32, 0);
Nose.addBox(0F, 0F, 0F, 2, 2, 1);
Nose.setRotationPoint(-1F, 2F, -5F);
Nose.setTextureSize(128, 64);
Nose.mirror = true;
setRotation(Nose, 0F, 0F, 0F);
}
public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) {
super.render(entity, f, f1, f2, f3, f4, f5);
setRotationAngles(f, f1, f2, f3, f4, f5, entity);
head.render(f5);
body.render(f5);
rightarm.render(f5);
leftarm.render(f5);
rightleg.render(f5);
leftleg.render(f5);
Nose.render(f5);
}
private void setRotation(ModelRenderer model, float x, float y, float z) {
model.rotateAngleX = x;
model.rotateAngleY = y;
model.rotateAngleZ = z;
}
public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity e) {
super.setRotationAngles(f, f1, f2, f3, f4, f5, e);
this.head.rotateAngleY = f3 / (180F / (float) Math.PI);
this.head.rotateAngleX = f4 / (180F / (float) Math.PI);
this.rightleg.rotateAngleX = MathHelper.cos(f * 1.0F) * 1.0F * f1;
this.Nose.rotateAngleY = f3 / (180F / (float) Math.PI);
this.Nose.rotateAngleX = f4 / (180F / (float) Math.PI);
this.rightarm.rotateAngleX = MathHelper.cos(f * 0.6662F + (float) Math.PI) * f1;
this.leftleg.rotateAngleX = MathHelper.cos(f * 1.0F) * -1.0F * f1;
this.leftarm.rotateAngleX = MathHelper.cos(f * 0.6662F) * f1;
}
}
}
I was knowing how to do that before the update and i remenber how to do this but this time its now working
I know that my English its really bad
im so stupid, i dont write what its the problem: The part dont follow the head
So is the problem that you're having the dorf's nose isn't following his head / face?
If this is what you are trying to say
The nose part doesn't need its own group / bone
You put the nose part in the head group of your model
And remove the nose group
Or just don't animate the nose at all
Im using techne and there is no group in techne...
How do i make a group?