Jump to content

How can I assign a private variable to an entity?


TheTrueSCP

Recommended Posts

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?

Link to comment
Share on other sites

 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;


      }

    }
}

 

Link to comment
Share on other sites

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.

  • Like 1
Link to comment
Share on other sites

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
Link to comment
Share on other sites

 

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;




      }

    }
}

 

Link to comment
Share on other sites

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;
    }
}

 

Link to comment
Share on other sites

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...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



×
×
  • Create New...

Important Information

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