Jump to content

Entity Animation playing the same despite different conditions


Recommended Posts

So I have this problem where one entity would play the animation fine on land (like it's supposed to) and when i add another similar entity whereas it is not on land (not supposed to play animation) will not play animation until the first entity renders on screen. 

In which it will follow the same exact animation as the one on land until the first entity goes off screen.


Any help would be greatly appreciated. Feel free to clarify if my explanation isn't understandable


Model Code


import com.google.common.collect.ImmutableList;
import com.hoopawolf.mwaw.entities.SandWyrmEntity;
import com.sun.javafx.geom.Vec3f;
import net.minecraft.client.renderer.entity.model.SegmentedModel;
import net.minecraft.client.renderer.model.ModelRenderer;
import net.minecraft.util.math.MathHelper;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;

import java.util.ArrayList;

public class SandWyrmModel<T extends SandWyrmEntity> extends SegmentedModel<T>
    private final ModelRenderer Head;
    private final ModelRenderer Mouth;
    private final ModelRenderer TuskRight;
    private final ModelRenderer TuskLeft;
    private final ModelRenderer Body1;
    private final ModelRenderer Body2;
    private final ModelRenderer Tail1;
    private final ModelRenderer Tail2;
    private final ModelRenderer Tail3;
    private final ModelRenderer EndTail;
    private final ModelRenderer LeftFrontLeg;
    private final ModelRenderer LeftBackLeg;
    private final ModelRenderer RightFrontLeg;
    private final ModelRenderer RightBackLeg;

    private ArrayList<ModelRenderer> modelParts = new ArrayList<ModelRenderer>();
    private final ImmutableList<ModelRenderer> immutableList;
    Vec3f lastPos = new Vec3f();
    Vec3f newPos = new Vec3f();

    public SandWyrmModel()
        textureWidth = 123;
        textureHeight = 121;

        Head = new ModelRenderer(this);
        Head.setRotationPoint(0.0F, 14.0F, -20.0F);
        Head.addBox("Head", -7.0F, -3.0F, -9.0F, 14, 9, 5, 0.0F, 73, 91);
        Head.addBox("Head", -9.0F, -6.0F, -21.0F, 18, 5, 21, 0.0F, 0, 58);

        Mouth = new ModelRenderer(this);
        Mouth.setRotationPoint(0.0F, 4.0F, -7.0F);
        Mouth.rotateAngleX = -0.2618F;
        Mouth.rotateAngleY = 0.0F;
        Mouth.rotateAngleZ = 0.0F;
        Mouth.addBox("Mouth", -6.0F, -1.1603F, -12.5484F, 12, 3, 12, 0.0F, 0, 84);

        TuskRight = new ModelRenderer(this);
        TuskRight.setRotationPoint(7.0F, 1.0F, 9.0F);
        TuskRight.addBox("TuskRight", -15.0F, -2.0F, -32.0F, 2, 4, 17, 0.0F, 31, 84);

        TuskLeft = new ModelRenderer(this);
        TuskLeft.setRotationPoint(-7.0F, 1.0F, 8.0F);
        TuskLeft.addBox("TuskLeft", 13.0F, -2.0F, -31.0F, 2, 4, 17, 0.0F, 52, 91);

        Body1 = new ModelRenderer(this);
        Body1.setRotationPoint(0.0F, 14.0F, -20.0F);
        Body1.addBox("Body1", -12.0F, -4.0F, -4.0F, 24, 11, 19, 0.0F, 0, 0);

        LeftFrontLeg = new ModelRenderer(this);
        LeftFrontLeg.setRotationPoint(14.0F, 1.0F, -0.5F);
        LeftFrontLeg.addBox("LeftFrontLeg", -2.0F, -1.0F, -2.5F, 5, 10, 7, 0.0F, 0, 99);

        RightFrontLeg = new ModelRenderer(this);
        RightFrontLeg.setRotationPoint(-14.0F, 1.0F, -0.5F);
        RightFrontLeg.addBox("RightFrontLeg", -3.0F, -1.0F, -2.5F, 5, 10, 7, 0.0F, 0, 99);

        Body2 = new ModelRenderer(this);
        Body2.setRotationPoint(0.0F, 2.0F, 13.0F);
        Body2.addBox("Body2", -11.0F, -5.0F, 2.0F, 22, 10, 18, 0.0F, 0, 30);

        LeftBackLeg = new ModelRenderer(this);
        LeftBackLeg.setRotationPoint(-11.0F, 2.0F, -41.5F);
        LeftBackLeg.addBox("LeftBackLeg", 22.0F, -1.0F, 53.5F, 5, 7, 7, 0.0F, 24, 105);

        RightBackLeg = new ModelRenderer(this);
        RightBackLeg.setRotationPoint(11.0F, 2.0F, -41.5F);
        RightBackLeg.addBox("RightBackLeg", -27.0F, -1.0F, 53.5F, 5, 7, 7, 0.0F, 24, 105);

        Tail1 = new ModelRenderer(this);
        Tail1.setRotationPoint(0.0F, 0.0F, 18.0F);
        Tail1.addBox("Tail1", -9.0F, -4.0F, 2.0F, 18, 8, 9, 0.0F, 67, 0);

        Tail2 = new ModelRenderer(this);
        Tail2.setRotationPoint(0.0F, 0.0F, 9.0F);
        Tail2.addBox("Tail2", -9.0F, -4.0F, 2.0F, 18, 7, 10, 0.0F, 57, 58);

        Tail3 = new ModelRenderer(this);
        Tail3.setRotationPoint(0.0F, 0.0F, 10.0F);
        Tail3.addBox("Tail3", -8.0F, -4.0F, 2.0F, 16, 6, 10, 0.0F, 68, 75);

        EndTail = new ModelRenderer(this);
        EndTail.setRotationPoint(0.0F, 0.0F, 9.0F);
        EndTail.addBox("EndTail", -14.0F, -1.0F, -1.0F, 28, 0, 16, 0.0F, 46, 30);

        ImmutableList.Builder<ModelRenderer> builder = ImmutableList.builder();
        this.immutableList = builder.build();

    public Iterable<ModelRenderer> getParts()
        return immutableList;

    public void setRotationAngles(SandWyrmEntity entityIn, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch)
        Head.rotateAngleY = netHeadYaw * ((float) Math.PI / 270F);
        Head.rotateAngleX = headPitch * ((float) Math.PI / 270F);

        if (entityIn.onGround)
            for (int i = 0; i < this.modelParts.size(); ++i)
                if (i == 0)
                    lastPos.set(this.modelParts.get(i).rotateAngleX, this.modelParts.get(i).rotateAngleY, this.modelParts.get(i).rotateAngleZ);
                    this.modelParts.get(i).rotateAngleX = MathHelper.cos(ageInTicks * 0.4F) * (float) Math.PI * 0.02F * (float) (1 + Math.abs(i - 2));
                    this.modelParts.get(i).rotateAngleY = 0.0F;
                    this.modelParts.get(i).rotateAngleZ = 0.0F;
                } else
                    newPos.set(lastPos.x, lastPos.y, lastPos.z);
                    lastPos.set(this.modelParts.get(i).rotateAngleX, this.modelParts.get(i).rotateAngleY, this.modelParts.get(i).rotateAngleZ);

                    this.modelParts.get(i).rotateAngleX = newPos.x;
                    this.modelParts.get(i).rotateAngleY = newPos.y;
                    this.modelParts.get(i).rotateAngleZ = newPos.z;


Render Code


import com.hoopawolf.mwaw.entities.SandWyrmEntity;
import com.hoopawolf.mwaw.entities.model.SandWyrmModel;
import com.hoopawolf.mwaw.ref.Reference;
import net.minecraft.client.renderer.entity.EntityRendererManager;
import net.minecraft.client.renderer.entity.MobRenderer;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;

public class SandWyrmRenderer extends MobRenderer<SandWyrmEntity, SandWyrmModel<SandWyrmEntity>>
    private static final ResourceLocation TEXTURE = new ResourceLocation(Reference.MOD_ID, "textures/entity/sandwyrm.png");

    public SandWyrmRenderer(EntityRendererManager _manager)
        super(_manager, new SandWyrmModel<>(), 1.0f);

    public ResourceLocation getEntityTexture(SandWyrmEntity _entity)
        return TEXTURE;



Client Proxy (if needed)


import com.hoopawolf.mwaw.entities.renderer.FairyRenderer;
import com.hoopawolf.mwaw.entities.renderer.SandWyrmRenderer;
import com.hoopawolf.mwaw.ref.Reference;
import com.hoopawolf.mwaw.util.RegistryHandler;
import net.minecraft.client.Minecraft;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.world.World;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.client.registry.RenderingRegistry;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent;

@Mod.EventBusSubscriber(modid = Reference.MOD_ID, value = Dist.CLIENT, bus = Mod.EventBusSubscriber.Bus.MOD)
public class ClientProxy implements IProxy
    public World getClientWorld()
        return Minecraft.getInstance().world;

    public PlayerEntity getClientPlayer()
        return Minecraft.getInstance().player;

    public static void onClientSetUp(final FMLClientSetupEvent event)
        RenderingRegistry.registerEntityRenderingHandler(RegistryHandler.FAIRY_ENTITY.get(), FairyRenderer::new);
        RenderingRegistry.registerEntityRenderingHandler(RegistryHandler.SAND_WYRM_ENTITY.get(), SandWyrmRenderer::new);



Link to comment
Share on other sites

You need an else statement in the setRotationAngles method to reset the angles back to default if the entity isn't on the ground as it is using the rotation angles for the one that is on the ground. There is only one Model object which is used globally for all entities so the rotation angles are being shared and only updated on the one which is grounded.

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.

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.


  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • DAFTAR KLIK DISINI DAFTAR KLIK DISINI Prediksi HK merupakan salah satu metode meracik angka yang sangat dibutuhkan para pecinta togel Hongkong untuk mendapatkan angka jitu. Prediksi Hongkong akan memberikan anda racikan yang sudah dibuat oleh para master angka togel dan akan dibagikan melalui situs Prediksi HK ini. Namun sebelum itu kami menegaskan yang namanya prediksi tidak ada yang sempurna, karena yang sempurna hanya milik Tuhan saja. Kami juga tidak mengatakan bahwa prediksi yang kami berikan itu asal dan tidak berdasar. Kami memberikan Bocoran HK malam ini pastinya melalui berbagai macam rumus dan dibantu oleh peracik angka togel handal. Jadi anda tidak ada salahnya juga jika menggunakan Prediksi Bocoran Togel Hongkong yang akan kami berikan disitus ini. Selaku situs Prediksi Hongkong jitu malam ini, kami juga memberikan saran kepada anda jika ingin mencari prediksi togel HK yang bagus jangan asal memilih. Karena banyak situs palsu yang tersebar di internet dan hanya memberikan angka prediksi Hk asal dan tidak berdasar. Maka kami sarankan anda bisa menggunakan Bocoran Togel Hongkong di situs kami ini sebagai acuan memilih angka yang ingin dipasang. Bocoran HK Paling Jitu Malam Ini Bocoran Hk Malam Ini tentu saja sangat membantu untuk para member yang kesulitan untuk mendapatkan angka racikan togel HK malam ini. Tapi tenang saja kami disini akan memberikan Prediksi Bocoran HK Jitu secara gratis untuk anda, sehingga anda tidak perlu lagi khawatir jika ingin mencari situs prediksi togel HK yang akurat dan gratis. Tetapi kami juga mengingatkan untuk anda jika sering mendapatkan jackpot dari bocoran togel hongkong malam ini yang ada di situs ini, kami berharap anda dapat membagikannya juga kepada kerabat dan teman anda yang memiliki hobi yang sama yaitu bermain togel online. Dengan saling berbagi tidak ada ruginya bahkan kita bisa mengalahkan bandot togel bersama-sama. Forum Master Prediksi Hongkong Malam Ini Terpercaya Apakah anda sedang mencari Master Prediksi HK yang akan memberikan racikan atau bocoran togel khususnya pasaran Hongkong? Maka disini adalah tempat yang tepat jika anda mencari racikan Prediksi Hongkong dari master togel terpercaya. Pada kesempatan hari ini Master Prediksi Togel Hongkong telah memberikan racikannya yang dapat anda lihat dalam tabel bocoran HK di atas. Kami sangat senang jika anda selalu mengunjungi forum atau situs prediksi HK kami ini. Seluruh Bocoran HK yang telah kami berikan tentu saja gratis dan tanpa dipungut biaya apapun. Karena kami membuat situs prediksi ini murni demi membantu para pemain togel yang bingung untuk mencari angka kuat untuk dipasangkan dalam pasaran togel Hongkong Malam Ini. Manfaat Prediksi Togel Hongkong Untuk Para Togelers Prediksi Togel Hongkong tentu saja sangat bermanfaat bagi setiap pemain togel online yang menggunakannya. Manfaat yang paling menonjol yaitu anda bisa mencocokkan angka anda sendiri dengan angka yang telah diracik oleh para master togel jitu. Selain itu apabila anda tidak memiliki angka sama sekali yang ingin dipasangkan, anda dapat menggunakan hasil racikan Bocoran HK dalam situs ini untuk dijadikan angka taruhan. Jadi jangan sampai kelewatan segala jenis prediksi togel hongkong yang sudah kami bagikan pada hari ini sehingga anda mendapatkan angka jitu yang ingin digunakan. Sekali lagi kami ingatkan bahwa setiap prediksi yang diberikan tidak kami jamin 100% akan tembus, tetapi setidaknya menambah peluang kemenangan. Sekian pembahasan kami dan kami harapkan anda puas dengan prediksi hk yang sudah kami berikan di situs ini. Semoga kalian jackpot dan salam togel mania. Angka Main: 5746 Angka Ikut: 8463 Colok Bebas: 6 Kepala: 5 7 | Ekor: 8 3 Twin: 44 / 66 ANGKA JITU 2D 57*54*56*58*53*75*74*76* 78*73*45*47*46*48*43*65* SHIO: KAMBING Angka Main: 4092 Angka Ikut: 6410 Colok Bebas: 4 Kepala: 6 9 | Ekor: 1 2 Twin: 44 / 00 ANGKA JITU 2D 40*49*42*46*41*04*09*02* 06*01*94*90*92*96*91*24* SHIO: TIKUS Angka Main: 6128 Angka Ikut: 4368 Colok Bebas: 8 Kepala: 1 4 | Ekor: 3 2 Twin: 66 / 88 ANGKA JITU 2D 61*62*68*64*63*16*12*18* 14*13*26*21*28*24*23*86* SHIO: HARIMAU Angka Main: 1495 Angka Ikut: 5871 Colok Bebas: 5 Kepala: 8 9 | Ekor: 7 4 Twin: 11 / 55 ANGKA JITU 2D 14*19*15*18*17*41*49*45* 48*47*91*94*95*98*97*51* SHIO: AYAM Angka Main: 9124 Angka Ikut: 4859 Colok Bebas: 9 Kepala: 5 1 | Ekor: 2 8 Twin: 99 / 44 ANGKA JITU 2D 91*92*94*98*95*19*12*14* 18*15*29*21*24*28*25*49* SHIO: KERBAU Angka Main: 2095 Angka Ikut: 8152 Colok Bebas: 2 Kepala: 1 0 | Ekor: 9 8 Twin: 22 / 55 ANGKA JITU 2D 20*29*25*28*21*02*09*05* 08*01*92*90*95*98*91*52* SHIO: KUDA
    • Hm. I did try adding that in the user_jvm_args.txt but I get this:  Error: Could not find or load main class C:Program FilesJavajdk-17.0.9binjavaw.exe Caused by: java.lang.ClassNotFoundException: C:Program FilesJavajdk-17.0.9binjavaw.exe Press any key to continue . . . I tried both with "\jdk-17\" (as it appears in the program files) as well as "\jdk-17.0.9\"  No luck. am I placing it in the wrong file? Could the second part be incorrect? 
    • Hello, I am trying to make a drowned transform into a custom mod I made (called Hot Drowned) when it goes through a magma bubble column. I already have the mob fully working in game, but the code for the transformation is giving me trouble. Since I can't edit the drowned code, I tried to make it check on Living Tick Event for a drowned that is doing the ticking and check its position from there in relation to a magma block but its not working. My code is below, thank you in advance. @SubscribeEvent(priority = EventPriority.HIGHEST) public void entityJoinWorld(LivingEvent.LivingTickEvent event, ServerLevel pServerLevel) { System.out.println("Entity Ticked"); Entity entity = event.getEntity(); if (entity.isAlive() && entity instanceof Drowned) { Drowned drowned = (Drowned) entity; BlockPos bPos = BlockPos.of(drowned.blockPosition().get(Direction.Axis.Y)); BlockState bPosBlock = pServerLevel.getBlockState(bPos); int dHieght = bPos.getY(); if (bPosBlock == Blocks.WATER.defaultBlockState() || bPosBlock == Blocks.MAGMA_BLOCK.defaultBlockState()){ if (bPosBlock == Blocks.MAGMA_BLOCK.defaultBlockState()){ ModEntities.HOT_DROWN.get().spawn(pServerLevel, BlockPos.of(drowned.blockPosition().get(Direction.Axis.Y)), NATURAL); }else { for (int x = dHieght + 64; x > 0; x--) { bPos = BlockPos.of(bPos.below().get(Direction.Axis.Y)); bPosBlock = pServerLevel.getBlockState(bPos); System.out.println(bPosBlock); if (bPosBlock == Blocks.MAGMA_BLOCK.defaultBlockState()) { ModEntities.HOT_DROWN.get().spawn(pServerLevel, BlockPos.of(drowned.blockPosition().get(Direction.Axis.Y)), NATURAL); } else { return; } } } } } } }  
    • DAFTAR KLIK DISINI DAFTAR KLIK DISINI Situs Slot Thailand Terpercaya adalah situs yang menyediakan permainan slot online dengan tema dan layanan yang sesuai dengan kebutuhan dan preferensi pemain asal Thailand. Situs-situs ini biasanya menawarkan permainan slot dengan server khusus yang berasal dari Thailand, yang diklaim memiliki tingkat kemenangan yang tinggi dan mudah mendapatkan jackpot. Beberapa situs juga menyediakan permainan slot dengan server dari negara lain, seperti Rusia dan Singapura, yang juga populer di kalangan pemain Thailand.  
  • Topics

  • Create New...

Important Information

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