Yes,This is my EntityClass
package net.thetruescp.lootbugs.entities.entities;
import net.minecraft.block.BlockState;
import net.minecraft.block.SoundType;
import net.minecraft.entity.AgeableEntity;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityType;
import net.minecraft.entity.MobEntity;
import net.minecraft.entity.ai.attributes.AttributeModifierMap;
import net.minecraft.entity.ai.attributes.Attributes;
import net.minecraft.entity.ai.goal.*;
import net.minecraft.entity.monster.SpiderEntity;
import net.minecraft.entity.passive.AnimalEntity;
import net.minecraft.entity.passive.PigEntity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.item.crafting.Ingredient;
import net.minecraft.network.datasync.DataParameter;
import net.minecraft.network.datasync.DataSerializers;
import net.minecraft.network.datasync.EntityDataManager;
import net.minecraft.util.*;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import net.minecraft.world.server.ServerWorld;
import net.minecraftforge.event.entity.PlaySoundAtEntityEvent;
import net.minecraftforge.event.entity.player.PlayerInteractEvent;
import net.minecraftforge.fml.common.Mod;
import net.thetruescp.lootbugs.LootbugsMain;
import net.thetruescp.lootbugs.client.Sound.ModSounds;
import net.thetruescp.lootbugs.client.model.LootbugModel;
import net.thetruescp.lootbugs.entities.ModEntityType;
import sun.security.ssl.Debug;
import javax.annotation.Nullable;
public class LootbugEntity extends AnimalEntity
{
public static boolean isPetting = false;
public static final Ingredient TEMPTATION_ITEMS = Ingredient.fromItems(Items.REDSTONE);
public LootbugEntity(EntityType<? extends AnimalEntity> type, World world) {
super(type, world);
}
//Register
public static AttributeModifierMap.MutableAttribute setCustomAttributes()
{
return MobEntity.func_233666_p_()
.createMutableAttribute(Attributes.MAX_HEALTH, 10.009)
.createMutableAttribute(Attributes.MOVEMENT_SPEED, 0.25);
}
public ActionResultType getEntityInteractionResult(PlayerEntity playerIn, Hand hand) {
boolean flag = this.isBreedingItem(playerIn.getHeldItem(hand));
if (!playerIn.isCrouching() && playerIn.getHeldItem(hand).getItem() == Items.REDSTONE)
{
if (!this.world.isRemote) {
playerIn.startRiding(this);
}
return ActionResultType.func_233537_a_(this.world.isRemote);
}
else if(playerIn.isCrouching())
{
return ActionResultType.func_233537_a_(this.world.isRemote);
}
else {
world.playSound(playerIn.getPosX(),playerIn.getPosY(),playerIn.getPosZ(), ModSounds.LOOTBUG_REACTION.get(),SoundCategory.NEUTRAL,12,12,true);
LootbugEntity.isPetting = true;
System.out.println("Feed Lootubg");
return ActionResultType.func_233537_a_(this.world.isRemote);
}
}
@Override
protected void registerGoals() {
super.registerGoals();
this.goalSelector.addGoal(0, new SwimGoal(this));
// this.goalSelector.addGoal(1, new PanicGoal(this, 2.250));
this.goalSelector.addGoal(2, new BreedGoal(this, 1.80));
this.goalSelector.addGoal(4, new TemptGoal(this, 1.2D, false, TEMPTATION_ITEMS));
this.goalSelector.addGoal(5, new FollowParentGoal(this, 1.1D));
this.goalSelector.addGoal(6, new WaterAvoidingRandomWalkingGoal(this, 1.0D));
this.goalSelector.addGoal(7, new LookAtGoal(this, PlayerEntity.class, 6.0F));
this.goalSelector.addGoal(8, new LookRandomlyGoal(this));
}
//Riding
@Nullable
public Entity getControllingPassenger() {
return this.getPassengers().isEmpty() ? null : this.getPassengers().get(0);
}
@Nullable
@Override
public AgeableEntity createChild(ServerWorld world, AgeableEntity mate) {
return ModEntityType.LOOTBUG.get().create(this.world);
}
@Override
protected int getExperiencePoints(PlayerEntity player) {
return 1 + this.world.rand.nextInt(4);
}
@Nullable
@Override
protected SoundEvent getAmbientSound()
{
return ModSounds.LOOTBUG_IDLE.get();
}
@Nullable
@Override
protected SoundEvent getDeathSound() {
return ModSounds.LOOTBUG_DEATH.get();
}
@Nullable
@Override
protected SoundEvent getHurtSound(DamageSource damageSourceIn) {
return ModSounds.LOOTBUG_HURT.get();
}
@Override
protected void playStepSound(BlockPos pos, BlockState blockIn) {
this.playSound(ModSounds.LOOTBUG_IDLE.get(), 0.30F, 1.0F);
}
@Override
public boolean isBreedingItem(ItemStack stack) {
return TEMPTATION_ITEMS.test(stack);
}
}
and this is my ModelClass:
package net.thetruescp.lootbugs.client.model;
import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.vertex.IVertexBuilder;
import net.minecraft.client.renderer.entity.model.EntityModel;
import net.minecraft.client.renderer.entity.model.QuadrupedModel;
import net.minecraft.client.renderer.model.ModelRenderer;
import net.minecraft.util.math.MathHelper;
import net.thetruescp.lootbugs.entities.entities.LootbugEntity;
import javax.swing.text.html.parser.Entity;
public class LootbugModel<T extends LootbugEntity> extends EntityModel<T>
{
private final ModelRenderer Leg3;
private final ModelRenderer Head2;
private final ModelRenderer Leg4;
private final ModelRenderer Leg1;
private final ModelRenderer tail3;
private final ModelRenderer tail2;
private final ModelRenderer head1;
private final ModelRenderer tail1;
private final ModelRenderer Leg2;
private final ModelRenderer body;
public LootbugModel() {
textureWidth = 128;
textureHeight = 128;
Leg3 = new ModelRenderer(this);
Leg3.setRotationPoint(0.0F, 22.0F, 4.0F);
Leg3.setTextureOffset(68, 84).addBox(8.0F, -2.0F, -2.0F, 6.0F, 4.0F, 4.0F, 0.0F, false);
Leg3.setTextureOffset(70, 44).addBox(-14.0F, -2.0F, -2.0F, 6.0F, 4.0F, 4.0F, 0.0F, false);
Head2 = new ModelRenderer(this);
Head2.setRotationPoint(0.0F, 17.0F, -11.0F);
Head2.setTextureOffset(58, 52).addBox(-8.0F, -7.0F, -5.0F, 16.0F, 14.0F, 10.0F, 0.0F, false);
Leg4 = new ModelRenderer(this);
Leg4.setRotationPoint(0.0F, 22.0F, 10.0F);
Leg4.setTextureOffset(0, 86).addBox(6.0F, -2.0F, -2.0F, 6.0F, 4.0F, 4.0F, 0.0F, false);
Leg4.setTextureOffset(52, 76).addBox(-12.0F, -2.0F, -2.0F, 6.0F, 4.0F, 4.0F, 0.0F, false);
Leg1 = new ModelRenderer(this);
Leg1.setRotationPoint(0.0F, 22.0F, -8.0F);
Leg1.setTextureOffset(72, 76).addBox(8.0F, -2.0F, -2.0F, 6.0F, 4.0F, 4.0F, 0.0F, false);
Leg1.setTextureOffset(54, 40).addBox(-14.0F, -2.0F, -2.0F, 6.0F, 4.0F, 4.0F, 0.0F, false);
tail3 = new ModelRenderer(this);
tail3.setRotationPoint(0.0F, 21.0F, 14.0F);
tail3.setTextureOffset(68, 22).addBox(-4.0F, -3.0F, -6.0F, 8.0F, 6.0F, 12.0F, 0.0F, false);
tail2 = new ModelRenderer(this);
tail2.setRotationPoint(0.0F, 19.0F, 11.0F);
tail2.setTextureOffset(0, 62).addBox(-6.0F, -5.0F, -7.0F, 12.0F, 10.0F, 14.0F, 0.0F, false);
head1 = new ModelRenderer(this);
head1.setRotationPoint(0.0F, 20.0F, -14.0F);
head1.setTextureOffset(64, 0).addBox(-4.0F, -4.0F, -4.0F, 8.0F, 8.0F, 8.0F, 0.0F, false);
tail1 = new ModelRenderer(this);
tail1.setRotationPoint(0.0F, 17.0F, 5.0F);
tail1.setTextureOffset(0, 34).addBox(-10.0F, -7.0F, -7.0F, 20.0F, 14.0F, 14.0F, 0.0F, false);
Leg2 = new ModelRenderer(this);
Leg2.setRotationPoint(0.0F, 22.0F, -2.0F);
Leg2.setTextureOffset(48, 84).addBox(8.0F, -2.0F, -2.0F, 6.0F, 4.0F, 4.0F, 0.0F, false);
Leg2.setTextureOffset(38, 62).addBox(-14.0F, -2.0F, -2.0F, 6.0F, 4.0F, 4.0F, 0.0F, false);
body = new ModelRenderer(this);
body.setRotationPoint(0.0F, 15.0F, -4.0F);
body.setTextureOffset(0, 0).addBox(-12.0F, -9.0F, -8.0F, 24.0F, 18.0F, 16.0F, 0.0F, false);
}
@Override
public void render(MatrixStack matrixStack, IVertexBuilder buffer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha){
Leg3.render(matrixStack, buffer, packedLight, packedOverlay);
Head2.render(matrixStack, buffer, packedLight, packedOverlay);
Leg4.render(matrixStack, buffer, packedLight, packedOverlay);
Leg1.render(matrixStack, buffer, packedLight, packedOverlay);
tail3.render(matrixStack, buffer, packedLight, packedOverlay);
tail2.render(matrixStack, buffer, packedLight, packedOverlay);
head1.render(matrixStack, buffer, packedLight, packedOverlay);
tail1.render(matrixStack, buffer, packedLight, packedOverlay);
Leg2.render(matrixStack, buffer, packedLight, packedOverlay);
body.render(matrixStack, buffer, packedLight, packedOverlay);
}
public void setRotationAngle(ModelRenderer modelRenderer, float x, float y, float z) {
modelRenderer.rotateAngleX = x;
modelRenderer.rotateAngleY = y;
modelRenderer.rotateAngleZ = z;
}
@Override
public void setRotationAngles(T entityIn, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) {
// LEGS-LEGS-LEGS-LEGS-LEGS-LEGS-LEGS-LEGS
this.Leg1.rotateAngleX = MathHelper.sin(limbSwing * 0.6662F + (float)Math.PI) * 0.2F * limbSwingAmount;
this.Leg1.rotateAngleY = MathHelper.sin(limbSwing * 0.6662F + (float)Math.PI) * 0.2F * limbSwingAmount;
this.Leg2.rotateAngleX = MathHelper.sin(limbSwing * 0.6662F) * 0.2F * limbSwingAmount;
this.Leg2.rotateAngleY = MathHelper.sin(limbSwing * 0.6662F) * 0.2F * limbSwingAmount;
this.Leg3.rotateAngleX = MathHelper.sin(limbSwing * 0.6662F + (float)Math.PI) * 0.2F * limbSwingAmount;
this.Leg3.rotateAngleY = MathHelper.sin(limbSwing * 0.6662F + (float)Math.PI) * 0.2F * limbSwingAmount;
this.Leg4.rotateAngleX = MathHelper.sin(limbSwing * 0.6662F) * 0.2F * limbSwingAmount;
this.Leg4.rotateAngleY = MathHelper.sin(limbSwing * 0.6662F) * 0.2F * limbSwingAmount;
// LEGS-LEGS-LEGS-LEGS-LEGS-LEGS-LEGS-LEGS
// BODY-BODY-BODY-BODY-BODY-BODY-BODY
this.body.rotateAngleZ = MathHelper.sin(limbSwing * 0.6662F) * 0.1F * limbSwingAmount;//
if(LootbugEntity.isPetting)
{
this.tail1.rotateAngleX = 0.45F * 0.1F * ageInTicks;
this.tail1.rotateAngleX = -0.45F * 0.1F * ageInTicks;
this.tail1.rotateAngleX = 0.45F * 0.1F * ageInTicks;
this.tail2.rotateAngleX = 0.45F *0.1F * ageInTicks;
this.tail2.rotateAngleX = - 0.45F *0.1F * ageInTicks;
this.tail2.rotateAngleX = 0.45F *0.1F * ageInTicks;
this.tail3.rotateAngleX = 0.45F * 0.1F * ageInTicks;
this.tail3.rotateAngleX = -0.45F * 0.1F * ageInTicks;
this.tail3.rotateAngleX = 0.45F * 0.1F * ageInTicks;
LootbugEntity.isPetting = false;
}
}
}