Jump to content

Recommended Posts

Posted

NOTE: WHAT I HAVE IN MY CODE SO FAR IS AT THE BOTTOM OF THE PAGE

 

So basically I'm trying to make a tamable entity in singleplayer, render as a dragon, if that makes any sense. I've gotten the basic idea around it complete but there's a lot of bugs. I'm not trying to get the tamable entity to fly, just trying to replace an entity with a dragon

 

One problem is i can't get the wings to "flap" properly, i'm not trying to make the entity fly, but i just want the dragon model to have a flapping animation, but it just glitches out for me. 

If anyone can help please do.

 

Another problem is I can't get the dragon to follow the direction of the player when the player is riding it. For example: Me as a player is facing west or east, so is the dragon model, however when i face south or north, the dragon model doesn't look that direction. Here's some screenshots: 

 

Facing west, dragon is facing west
2018-12-24_21_18_13.png.160b9ff16481c7a8daabaae21d32939e.png

 

 

Facing North, Dragon isn't

2018-12-24_21_18_17.png.c93efbf561ad4802751e9dcd5f060f37.png
 

Here's the code for rendering the dragon

    @SideOnly(Side.CLIENT)
    @SubscribeEvent
    public void onRender(final RenderLivingEvent.Pre event) {
        if (event.entity instanceof EntityHorse && this.dragon) {
            final EntityPig entity = (EntityPig)event.entity;
            final EntityDragon dragon = new EntityDragon(entity.getEntityWorld());
            final float partialTicks = Animation.getPartialTickTime();
            dragon.distanceWalkedModified = entity.distanceWalkedModified;
            dragon.distanceWalkedOnStepModified = entity.distanceWalkedOnStepModified;
            dragon.swingProgress = entity.swingProgress;
            dragon.prevSwingProgress = entity.prevSwingProgress;
            dragon.ticksExisted = 1;
            dragon.posX = entity.posX;
            dragon.lastTickPosX = entity.lastTickPosX;
            dragon.posY = entity.posY;
            dragon.lastTickPosY = entity.lastTickPosY;
            dragon.posZ = entity.posZ;
            dragon.lastTickPosZ = entity.lastTickPosZ;
            dragon.rotationPitch = entity.rotationPitch;
            dragon.prevRotationPitch = entity.prevRotationPitch;
            dragon.rotationYaw = entity.rotationYaw;
            dragon.prevRotationYaw = entity.prevRotationYaw;
            dragon.renderYawOffset = entity.renderYawOffset;
            dragon.prevRenderYawOffset = entity.prevRenderYawOffset;
            dragon.rotationYawHead = entity.rotationYawHead;
            dragon.prevRotationYawHead = entity.prevRotationYawHead;
            dragon.limbSwing = entity.limbSwing;
            dragon.limbSwingAmount = entity.limbSwingAmount;
            dragon.prevLimbSwingAmount = entity.prevLimbSwingAmount;
            dragon.swingProgress = entity.swingProgress;
            dragon.isAirBorne = true;
            dragon.moveStrafing = entity.moveStrafing;
            dragon.moveForward = entity.moveForward;
            dragon.swingProgressInt = entity.swingProgressInt;
            dragon.prevAnimTime = dragon.animTime;
            dragon.renderYawOffset = dragon.rotationYaw;
            final EntityDragonPart dragonPartHead = dragon.dragonPartHead;
            final EntityDragonPart dragonPartHead2 = dragon.dragonPartHead;
            final float n = 3.0f;
            dragonPartHead2.height = 3.0f;
            dragonPartHead.width = 3.0f;
            final EntityDragonPart dragonPartTail1 = dragon.dragonPartTail1;
            final EntityDragonPart dragonPartTail2 = dragon.dragonPartTail1;
            final float n2 = 2.0f;
            dragonPartTail2.height = 2.0f;
            dragonPartTail1.width = 2.0f;
            final EntityDragonPart dragonPartTail3 = dragon.dragonPartTail2;
            final EntityDragonPart dragonPartTail4 = dragon.dragonPartTail2;
            final float n3 = 2.0f;
            dragonPartTail4.height = 2.0f;
            dragonPartTail3.width = 2.0f;
            final EntityDragonPart dragonPartTail5 = dragon.dragonPartTail3;
            final EntityDragonPart dragonPartTail6 = dragon.dragonPartTail3;
            final float n4 = 2.0f;
            dragonPartTail6.height = 2.0f;
            dragonPartTail5.width = 2.0f;
            dragon.dragonPartBody.height = 3.0f;
            dragon.dragonPartBody.width = 5.0f;
            dragon.dragonPartWing1.height = 2.0f;
            dragon.dragonPartWing1.width = 4.0f;
            dragon.dragonPartWing2.height = 3.0f;
            dragon.dragonPartWing2.width = 4.0f;
//            final float f2 = 0.0f;
            float f3 = 0.03f / (MathHelper.sqrt_double(dragon.motionX * dragon.motionX + dragon.motionZ * dragon.motionZ) * 10.0f + 1.0f);
            f3 *= (float)Math.pow(0.05, dragon.motionY);
            if (dragon.slowed) {
                final EntityDragon entityDragon4;
                final EntityDragon entityDragon7;
                final EntityDragon entityDragon3 = entityDragon7 = (entityDragon4 = dragon);
                entityDragon7.animTime += f3 * 0.0f;
            }
            else {
                final EntityDragon entityDragon6;
                final EntityDragon entityDragon8;
                final EntityDragon entityDragon5 = entityDragon8 = (entityDragon6 = dragon);
                entityDragon8.animTime += f3;
            }
            for (int i = 0; i < dragon.ringBuffer.length; ++i) {
                dragon.ringBuffer[i][0] = -dragon.rotationYaw;
                dragon.ringBuffer[i][1] = -dragon.posY;
            }
            final float rotation = 0.0f;
            GL11.glPushMatrix();
            final float baseRotation = dragon.renderYawOffset - dragon.prevRenderYawOffset * partialTicks + dragon.prevRenderYawOffset;
            final RenderManager renderManager = Minecraft.getMinecraft().getRenderManager();
//            GL11.glScalef(0.4f, 0.4f, 0.4f);
            renderManager.renderEntitySimple((Entity)dragon, partialTicks);
            final double x = entity.lastTickPosX + (entity.posX - entity.lastTickPosX) * partialTicks - renderManager.viewerPosX;
            final double y = entity.lastTickPosY + (entity.posY - entity.lastTickPosY) * partialTicks - renderManager.viewerPosY;
            final double z = entity.lastTickPosZ + (entity.posZ - entity.lastTickPosZ) * partialTicks - renderManager.viewerPosZ;
            event.renderer.renderName((EntityLivingBase)entity, x, y, z);
            event.setCanceled(true);
        }
    }

 

Posted

1.8.9 is no longer supported on this forum due to its age.

Please update to a modern version of Minecraft (and post in the proper sub-forum) to receive support.

This is my Forum Signature, I am currently attempting to transform it into a small guide for fixing easier issues using spoiler blocks to keep things tidy.

 

As the most common issue I feel I should put this outside the main bulk:

The only official source for Forge is https://files.minecraftforge.net, and the only site I trust for getting mods is CurseForge.

If you use any site other than these, please take a look at the StopModReposts project and install their browser extension, I would also advise running a virus scan.

 

For players asking for assistance with Forge please expand the spoiler below and read the appropriate section(s) in its/their entirety.

  Reveal hidden contents

 

Guest
This topic is now closed to further replies.

Announcements



×
×
  • Create New...

Important Information

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