TheTrueSCP Posted October 10, 2021 Posted October 10, 2021 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? Quote
TheTrueSCP Posted October 10, 2021 Author Posted October 10, 2021 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; } } } Quote
uSkizzik Posted October 10, 2021 Posted October 10, 2021 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. 1 Quote
TheTrueSCP Posted October 10, 2021 Author Posted October 10, 2021 (edited) 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 October 10, 2021 by TheTrueSCP Quote
Leronus Posted October 10, 2021 Posted October 10, 2021 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. Quote
TheTrueSCP Posted October 10, 2021 Author Posted October 10, 2021 my problem is, that despite the variables provided by Forge, all entities do the same thing, although I use the isBurning method Quote
Leronus Posted October 10, 2021 Posted October 10, 2021 You seem to be actively disregarding our answers. Please read our previous posts, the explanation has already been given. Quote
TheTrueSCP Posted October 10, 2021 Author Posted October 10, 2021 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; } } } Quote
TheTrueSCP Posted October 11, 2021 Author Posted October 11, 2021 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; } } Quote
TheTrueSCP Posted October 11, 2021 Author Posted October 11, 2021 if I enter a system out command in the SetRotationAngles class, nothing can be seen in the log Quote
TheTrueSCP Posted October 11, 2021 Author Posted October 11, 2021 but when I go to a save, these are called Quote
TheTrueSCP Posted October 11, 2021 Author Posted October 11, 2021 Means that if the entities are created when loading a game, then the method is called Quote
TheTrueSCP Posted October 11, 2021 Author Posted October 11, 2021 what do you mean by debugger? (sorry for the question, but i haven't been programming with forge for that long) Quote
TheTrueSCP Posted October 11, 2021 Author Posted October 11, 2021 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 Quote
TheTrueSCP Posted October 11, 2021 Author Posted October 11, 2021 (edited) I only currently have a google drive link Edited October 12, 2021 by TheTrueSCP Quote
Luis_ST Posted October 11, 2021 Posted October 11, 2021 you need to create a git repo since .zip files are very bad to work with Quote
TheTrueSCP Posted October 11, 2021 Author Posted October 11, 2021 Unfortunately this is not possible because there are too many and to big files for github Quote
TheTrueSCP Posted October 11, 2021 Author Posted October 11, 2021 but i could save the files as a folder in google drive Quote
Luis_ST Posted October 11, 2021 Posted October 11, 2021 use a git client for that like: https://desktop.github.com/ Quote
TheTrueSCP Posted October 11, 2021 Author Posted October 11, 2021 ok thanks, here is the github link: https://github.com/TheTrueSCP/Lootbugs_Minecraft_Mod Quote
TheTrueSCP Posted October 11, 2021 Author Posted October 11, 2021 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 Quote
TheTrueSCP Posted October 12, 2021 Author Posted October 12, 2021 (edited) and how should I then make custom animations and trigger them? Edited October 12, 2021 by TheTrueSCP Quote
Recommended Posts
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.