Jump to content
View in the app

A better way to browse. Learn more.

Forge Forums

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Featured Replies

Posted

Hi guys, i need help to the topic Variables. I have an entity and want animate them. My idea is if i Right Click my Animal should play an animation. For this I wrote a variable which is set to true with the getEntityInteractionResult() function. But if i rightclick my animal ALL my Enimals play the animation. How can i fix this?

  • Author

 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;


      }

    }
}

 

Yup, as suspected, your field is static meaning that it's bound to the class and not to a specific instance of your entity.
All entities will share this variable meaning that if one sets it to true, it changes for the other ones too.
Please learn basic Java before modding.

  • Author

sorry for writing again but I've tried a bit and although I now use the variables from Minecraft, but the same thing still happens 

this is the piece of code that I have rewritten:

 @Override
    public void setRotationAngles(T entityIn, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) {


      if(entityIn.isBurning())
      {



          this.tail1.rotateAngleX =  0.45F * 0.1F * ageInTicks;


          this.tail2.rotateAngleX =  0.45F *0.1F * ageInTicks;


          this.tail3.rotateAngleX =  0.45F * 0.1F * ageInTicks;




      }

    }

 

Edited by TheTrueSCP

What exactly are you trying to accomplish?

By using the isBurning() method you are checking if the entity is on fire, which is not what you want to check?

You simply had to remove 'static' from the isPetting variable.

Like @uSkizzik said, please learn basic Java before modding.

  • Author

my problem is, that despite the variables provided by Forge, all entities do the same thing, although I use the isBurning method

You seem to be actively disregarding our answers. Please read our previous posts, the explanation has already been given.

  • Author

 

I have already removed the static from the isPetting and now used the is burning for the test. but still it doesn't work

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.model.ModelRenderer;
import net.thetruescp.lootbugs.entities.LootbugEntity;

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) {


      if(entityIn.isBurning())
      {



          this.tail1.rotateAngleX =  0.45F * 0.1F * ageInTicks;


          this.tail2.rotateAngleX =  0.45F *0.1F * ageInTicks;


          this.tail3.rotateAngleX =  0.45F * 0.1F * ageInTicks;




      }

    }
}

 

  • Author
package net.thetruescp.lootbugs.client.render;

import net.minecraft.client.renderer.entity.EntityRendererManager;
import net.minecraft.client.renderer.entity.MobRenderer;
import net.minecraft.util.ResourceLocation;
import net.thetruescp.lootbugs.LootbugsMain;

import net.thetruescp.lootbugs.client.model.LootbugModel;
import net.thetruescp.lootbugs.entities.LootbugEntity;

public class LootbugRender extends MobRenderer<LootbugEntity, LootbugModel<LootbugEntity>>
{

    protected static final ResourceLocation TEXTURE = new ResourceLocation(LootbugsMain.MOD_ID,"textures/entity/lootbug_hannes.png");

    public LootbugRender(EntityRendererManager renderManagerIn) {
        super(renderManagerIn, new LootbugModel<>(), 0.7f);
    }


    @Override
    public ResourceLocation getEntityTexture(LootbugEntity entity) {
        return TEXTURE;
    }
}

 

  • Author

 

what do you mean by debugger? (sorry for the question, but i haven't been programming with forge for that long)

  • Author

 

it looks like everything is going to work. The entity is recognized whether it is in the water and if so, the function is carried out. But nothing happens or the same thing happens to everyone

  • Author

That's right, but if you spawn a second one and if the other entity is in the water, the tail of the second one rotates

  • Author

and how should I then make custom animations and trigger them?

Edited by TheTrueSCP

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

Important Information

By using this site, you agree to our Terms of Use.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.