Jump to content

Tile Entity Block Animations


Flenix

Recommended Posts

Can anyone point me to a place where I can see how they work? A tutorial would be brilliant, but failing that some simple working source code to look at would be nice (The only one I could think of was Buildcraft, which to be honest isn't exactly simple :P)

 

I don't need to do anything too fancy, just want to animate a few things with the Tile Entity Special Renderer.

 

Any help is great :D

width=463 height=200

http://s13.postimg.org/z9mlly2av/siglogo.png[/img]

My mods (Links coming soon)

Cities | Roads | Remula | SilvaniaMod | MoreStats

Link to comment
Share on other sites

I guess the TileEntity of the Engine in Buildcraft just changes the Speed of the movement. The actual animation is done in the Renderer which uses the given PartialTickTime (PTT) which is a float variable to sync the Animation to the Framerate. If you just want to make something rotate try to increase the new rotation by the PTT and multiply it with the speed. Try it out and experiment a bit with it. If you want to have a more advanced style of animation you have to write a System which can handle Wavefront keyframes.

PM's regarding modding questions should belong in the Modder Support sub-forum and won't be answered.

Link to comment
Share on other sites

https://github.com/BuildCraft/BuildCraft/blob/master/common/buildcraft/energy/render/RenderEngine.java

 

The reason I didn't want Buildcraft is because it seems to do things quite differently to other mods. I'm sure it's all very efficient, but the above render class is TOTALLY different to any other render class I've seen before. I can't see any reference to power or redstone in there, nor to the PartialTickTime you just mentioned. Maybe I'm just being blind? :P

width=463 height=200

http://s13.postimg.org/z9mlly2av/siglogo.png[/img]

My mods (Links coming soon)

Cities | Roads | Remula | SilvaniaMod | MoreStats

Link to comment
Share on other sites

I am using the TileEntitySpecialRenderer for the rendering. Its render functions are called every tick and the TileEntity is given so I can use its variables. The coordinates are for the renderer and relative to the player which is always  0, 0, 0

Use this setup for the rendere:

	@Override
public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float partialTickTime) {
Rendere here...
}

I will upload a Tutorial tomorrow at 8:00GMT featuring the TileEntitySpecialRenderer and animations

PM's regarding modding questions should belong in the Modder Support sub-forum and won't be answered.

Link to comment
Share on other sites

http://www.minecraftforge.net/wiki/TileEntitySpecialRenderers_and_Animation

 

The tutorial is now online but I cant add it to the tutorial list.

 

Oh thanks, now I know how to make rotation animation, but how do I make it animate in line (like the build craft engine)?

If someone helps you, click that thank you button ;)

 

EasyTessellator library: http://www.minecraftforge.net/forum/index.php/topic,14705.0.html

Link to comment
Share on other sites

The model file contains each part of the model does it not?

By modifying a parts position and rotation you could achieve that :)

 

I'd look at this: http://www.minecraftforum.net/topic/1866695-modding-animation-guide/

Assuming you are using Techne models for your block, then it's similar to mobs as they have the same model type :)

If you guys dont get it.. then well ya.. try harder...

Link to comment
Share on other sites

Ok, so I got the animations working via the renderer class, but now it speeds up with each instance rendered, which is back to where I was before. am I doing this incorrectly somehow?? I'm using "this.model.[part].offsetY to modify a position in my RenderTileEntityAt method. I tried using glTranslatef, but I'm not seeing how to specify a specific piece of my model....

Link to comment
Share on other sites

yeah heres the thing, you are using a variable that is local to your object, since the object is called twice within the same tick, with 2 tesr itll go twice as fast, becasue the rotation is increased twice per tick

 

to fix this you should use the system time, this way all tesr will render using the same value

 

//aka dont do
animation++;
model.rotate(animation, 0, 1, 0);
//but do
long time = System.currentTimeMillis() % 40000L;
model.rotate(time, 0, 1, 0);

 

btw both method describe a continous rotation around Y axis

how to debug 101:http://www.minecraftforge.net/wiki/Debug_101

-hydroflame, author of the forge revolution-

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.