
public static final AnimationDefinition PUCKOO_SHOCK = AnimationDefinition.Builder.withLength(4f).looping()
.addAnimation("kneck",
	new AnimationChannel(AnimationChannel.Targets.POSITION, 
		new Keyframe(0f, KeyframeAnimations.posVec(0f, 0f, 0f),
			AnimationChannel.Interpolations.LINEAR), 
		new Keyframe(0.2916767f, KeyframeAnimations.posVec(0f, 1f, 1f),
			AnimationChannel.Interpolations.LINEAR), 
		new Keyframe(3.5f, KeyframeAnimations.posVec(0f, 1f, 1f),
			AnimationChannel.Interpolations.LINEAR), 
		new Keyframe(4f, KeyframeAnimations.posVec(0f, 0f, 0f),
			AnimationChannel.Interpolations.LINEAR)))
.addAnimation("kneck",
	new AnimationChannel(AnimationChannel.Targets.ROTATION,
		new Keyframe(0f, KeyframeAnimations.degreeVec(0f, 0f, 0f),
			AnimationChannel.Interpolations.LINEAR),
		new Keyframe(0.2916767f, KeyframeAnimations.degreeVec(-30f, 0f, 0f),
			AnimationChannel.Interpolations.LINEAR),
		new Keyframe(3.5f, KeyframeAnimations.degreeVec(-30f, 0f, 0f),
			AnimationChannel.Interpolations.LINEAR),
		new Keyframe(4f, KeyframeAnimations.degreeVec(0f, 0f, 0f),
			AnimationChannel.Interpolations.LINEAR)))
.addAnimation("head",
	new AnimationChannel(AnimationChannel.Targets.POSITION, 
		new Keyframe(0f, KeyframeAnimations.posVec(0f, 0f, 0f),
			AnimationChannel.Interpolations.LINEAR), 
		new Keyframe(0.2916767f, KeyframeAnimations.posVec(0f, 2f, -1f),
			AnimationChannel.Interpolations.LINEAR), 
		new Keyframe(3.5f, KeyframeAnimations.posVec(0f, 2f, -1f),
			AnimationChannel.Interpolations.LINEAR), 
		new Keyframe(4f, KeyframeAnimations.posVec(0f, 0f, 0f),
			AnimationChannel.Interpolations.LINEAR)))
.addAnimation("head",
	new AnimationChannel(AnimationChannel.Targets.ROTATION,
		new Keyframe(0f, KeyframeAnimations.degreeVec(0f, 0f, 0f),
			AnimationChannel.Interpolations.LINEAR),
		new Keyframe(0.2916767f, KeyframeAnimations.degreeVec(55f, 0f, 0f),
			AnimationChannel.Interpolations.LINEAR),
		new Keyframe(3.5f, KeyframeAnimations.degreeVec(75f, 0f, 0f),
			AnimationChannel.Interpolations.LINEAR),
		new Keyframe(4f, KeyframeAnimations.degreeVec(0f, 0f, 0f),
			AnimationChannel.Interpolations.LINEAR)))
.addAnimation("Lowerjaw",
	new AnimationChannel(AnimationChannel.Targets.POSITION, 
		new Keyframe(0.2916767f, KeyframeAnimations.posVec(0f, 0f, 0.5f),
			AnimationChannel.Interpolations.LINEAR), 
		new Keyframe(3.5f, KeyframeAnimations.posVec(0f, 0f, 0.5f),
			AnimationChannel.Interpolations.LINEAR)))
.addAnimation("Lowerjaw",
	new AnimationChannel(AnimationChannel.Targets.ROTATION,
		new Keyframe(0f, KeyframeAnimations.degreeVec(0f, 0f, 0f),
			AnimationChannel.Interpolations.LINEAR),
		new Keyframe(0.2916767f, KeyframeAnimations.degreeVec(0f, 0f, 0f),
			AnimationChannel.Interpolations.LINEAR),
		new Keyframe(0.5416766f, KeyframeAnimations.degreeVec(45f, 0f, 0f),
			AnimationChannel.Interpolations.LINEAR),
		new Keyframe(3.5f, KeyframeAnimations.degreeVec(75f, 0f, 0f),
			AnimationChannel.Interpolations.LINEAR),
		new Keyframe(4f, KeyframeAnimations.degreeVec(0f, 0f, 0f),
			AnimationChannel.Interpolations.LINEAR)))
.addAnimation("Lowerjaw",
	new AnimationChannel(AnimationChannel.Targets.SCALE,
		new Keyframe(0.2916767f, KeyframeAnimations.scaleVec(0.95f, 1f, 1f),
			AnimationChannel.Interpolations.LINEAR),
		new Keyframe(3.5f, KeyframeAnimations.scaleVec(0.95f, 1f, 1f),
			AnimationChannel.Interpolations.LINEAR))).build();
public static final AnimationDefinition PUCKOO_EAT_STONE = AnimationDefinition.Builder.withLength(7f)
.addAnimation("kneck",
	new AnimationChannel(AnimationChannel.Targets.POSITION, 
		new Keyframe(0f, KeyframeAnimations.posVec(0f, 0f, 0f),
			AnimationChannel.Interpolations.LINEAR), 
		new Keyframe(1f, KeyframeAnimations.posVec(0f, -5f, 0f),
			AnimationChannel.Interpolations.LINEAR), 
		new Keyframe(2f, KeyframeAnimations.posVec(0f, 0f, 0f),
			AnimationChannel.Interpolations.LINEAR), 
		new Keyframe(6f, KeyframeAnimations.posVec(0f, -1f, 0f),
			AnimationChannel.Interpolations.LINEAR), 
		new Keyframe(7f, KeyframeAnimations.posVec(0f, 0f, 0f),
			AnimationChannel.Interpolations.LINEAR)))
.addAnimation("kneck",
	new AnimationChannel(AnimationChannel.Targets.ROTATION,
		new Keyframe(0f, KeyframeAnimations.degreeVec(0f, 0f, 0f),
			AnimationChannel.Interpolations.LINEAR),
		new Keyframe(1f, KeyframeAnimations.degreeVec(90f, 0f, 0f),
			AnimationChannel.Interpolations.LINEAR),
		new Keyframe(2f, KeyframeAnimations.degreeVec(0f, 0f, 0f),
			AnimationChannel.Interpolations.LINEAR),
		new Keyframe(6f, KeyframeAnimations.degreeVec(20f, 0f, 0f),
			AnimationChannel.Interpolations.LINEAR),
		new Keyframe(7f, KeyframeAnimations.degreeVec(0f, 0f, 0f),
			AnimationChannel.Interpolations.LINEAR)))
.addAnimation("head",
	new AnimationChannel(AnimationChannel.Targets.POSITION, 
		new Keyframe(0f, KeyframeAnimations.posVec(0f, 0f, 0f),
			AnimationChannel.Interpolations.LINEAR), 
		new Keyframe(1f, KeyframeAnimations.posVec(0f, 0f, -3f),
			AnimationChannel.Interpolations.LINEAR), 
		new Keyframe(2f, KeyframeAnimations.posVec(0f, 0f, 0f),
			AnimationChannel.Interpolations.LINEAR), 
		new Keyframe(7f, KeyframeAnimations.posVec(0f, 0f, 0f),
			AnimationChannel.Interpolations.LINEAR)))
.addAnimation("head",
	new AnimationChannel(AnimationChannel.Targets.ROTATION,
		new Keyframe(0f, KeyframeAnimations.degreeVec(0f, 0f, 0f),
			AnimationChannel.Interpolations.LINEAR),
		new Keyframe(1f, KeyframeAnimations.degreeVec(-45f, 0f, 0f),
			AnimationChannel.Interpolations.LINEAR),
		new Keyframe(2f, KeyframeAnimations.degreeVec(0f, 0f, 0f),
			AnimationChannel.Interpolations.LINEAR),
		new Keyframe(6f, KeyframeAnimations.degreeVec(10f, 0f, 0f),
			AnimationChannel.Interpolations.LINEAR),
		new Keyframe(7f, KeyframeAnimations.degreeVec(0f, 0f, 0f),
			AnimationChannel.Interpolations.LINEAR)))
.addAnimation("upperjaw",
	new AnimationChannel(AnimationChannel.Targets.POSITION, 
		new Keyframe(0f, KeyframeAnimations.posVec(0f, 0f, 0f),
			AnimationChannel.Interpolations.LINEAR)))
.addAnimation("Lowerjaw",
	new AnimationChannel(AnimationChannel.Targets.POSITION, 
		new Keyframe(0f, KeyframeAnimations.posVec(0f, 0f, 0f),
			AnimationChannel.Interpolations.LINEAR), 
		new Keyframe(1f, KeyframeAnimations.posVec(0f, -1f, 0f),
			AnimationChannel.Interpolations.LINEAR), 
		new Keyframe(3f, KeyframeAnimations.posVec(0f, 0f, 0f),
			AnimationChannel.Interpolations.LINEAR), 
		new Keyframe(3.5f, KeyframeAnimations.posVec(0f, 0f, 0f),
			AnimationChannel.Interpolations.LINEAR), 
		new Keyframe(4.5833f, KeyframeAnimations.posVec(0f, -1f, 0f),
			AnimationChannel.Interpolations.LINEAR), 
		new Keyframe(7f, KeyframeAnimations.posVec(0f, 0f, 0f),
			AnimationChannel.Interpolations.LINEAR)))
.addAnimation("Lowerjaw",
	new AnimationChannel(AnimationChannel.Targets.ROTATION,
		new Keyframe(0f, KeyframeAnimations.degreeVec(0f, 0f, 0f),
			AnimationChannel.Interpolations.LINEAR),
		new Keyframe(1f, KeyframeAnimations.degreeVec(17.5f, 0f, 0f),
			AnimationChannel.Interpolations.LINEAR),
		new Keyframe(2.5f, KeyframeAnimations.degreeVec(2.5f, 0f, 0f),
			AnimationChannel.Interpolations.LINEAR),
		new Keyframe(3f, KeyframeAnimations.degreeVec(0f, 0f, 0f),
			AnimationChannel.Interpolations.LINEAR),
		new Keyframe(3.5f, KeyframeAnimations.degreeVec(7.5f, 0f, 0f),
			AnimationChannel.Interpolations.LINEAR),
		new Keyframe(4f, KeyframeAnimations.degreeVec(0f, 0f, 0f),
			AnimationChannel.Interpolations.LINEAR),
		new Keyframe(4.5833f, KeyframeAnimations.degreeVec(7.5f, 0f, 0f),
			AnimationChannel.Interpolations.LINEAR),
		new Keyframe(6f, KeyframeAnimations.degreeVec(22.5f, 0f, 0f),
			AnimationChannel.Interpolations.LINEAR),
		new Keyframe(7f, KeyframeAnimations.degreeVec(0f, 0f, 0f),
			AnimationChannel.Interpolations.LINEAR)))
.addAnimation("mossy_pebble",
	new AnimationChannel(AnimationChannel.Targets.POSITION, 
		new Keyframe(0.9583f, KeyframeAnimations.posVec(0f, 1f, 0f),
			AnimationChannel.Interpolations.LINEAR), 
		new Keyframe(3f, KeyframeAnimations.posVec(0f, 1f, 1f),
			AnimationChannel.Interpolations.LINEAR)))
.addAnimation("mossy_pebble",
	new AnimationChannel(AnimationChannel.Targets.SCALE,
		new Keyframe(0f, KeyframeAnimations.scaleVec(-1f, -1f, -1f),
			AnimationChannel.Interpolations.LINEAR),
		new Keyframe(0.9583f, KeyframeAnimations.scaleVec(0f, 0f, 0f),
			AnimationChannel.Interpolations.LINEAR),
		new Keyframe(1f, KeyframeAnimations.scaleVec(1f, 1f, 1f),
			AnimationChannel.Interpolations.LINEAR),
		new Keyframe(5f, KeyframeAnimations.scaleVec(1f, 1f, 1f),
			AnimationChannel.Interpolations.LINEAR),
		new Keyframe(5.0417f, KeyframeAnimations.scaleVec(0f, 0f, 0f),
			AnimationChannel.Interpolations.LINEAR)))
.addAnimation("Pebble",
	new AnimationChannel(AnimationChannel.Targets.POSITION, 
		new Keyframe(5.0417f, KeyframeAnimations.posVec(0f, 1f, 1f),
			AnimationChannel.Interpolations.LINEAR), 
		new Keyframe(6f, KeyframeAnimations.posVec(0f, 1f, 0f),
			AnimationChannel.Interpolations.LINEAR), 
		new Keyframe(6.375f, KeyframeAnimations.posVec(0f, 0f, -9f),
			AnimationChannel.Interpolations.LINEAR), 
		new Keyframe(6.9583f, KeyframeAnimations.posVec(0f, -12f, -12f),
			AnimationChannel.Interpolations.LINEAR)))
.addAnimation("Pebble",
	new AnimationChannel(AnimationChannel.Targets.ROTATION,
		new Keyframe(6f, KeyframeAnimations.degreeVec(0f, 0f, 0f),
			AnimationChannel.Interpolations.LINEAR),
		new Keyframe(6.375f, KeyframeAnimations.degreeVec(9.55f, 0f, 0f),
			AnimationChannel.Interpolations.LINEAR),
		new Keyframe(6.9583f, KeyframeAnimations.degreeVec(0f, 0f, 0f),
			AnimationChannel.Interpolations.LINEAR),
		new Keyframe(7f, KeyframeAnimations.degreeVec(-52.5f, 0f, 0f),
			AnimationChannel.Interpolations.LINEAR)))
.addAnimation("Pebble",
	new AnimationChannel(AnimationChannel.Targets.SCALE,
		new Keyframe(0f, KeyframeAnimations.scaleVec(0f, 0f, 0f),
			AnimationChannel.Interpolations.LINEAR),
		new Keyframe(5f, KeyframeAnimations.scaleVec(0f, 0f, 0f),
			AnimationChannel.Interpolations.LINEAR),
		new Keyframe(5.0417f, KeyframeAnimations.scaleVec(1f, 1f, 1f),
			AnimationChannel.Interpolations.LINEAR),
		new Keyframe(6.9583f, KeyframeAnimations.scaleVec(1f, 1f, 1f),
			AnimationChannel.Interpolations.LINEAR),
		new Keyframe(7f, KeyframeAnimations.scaleVec(0f, 0f, 0f),
			AnimationChannel.Interpolations.LINEAR))).build();
public static final AnimationDefinition PUCKOO_SETUP = AnimationDefinition.Builder.withLength(0f)
.addAnimation("mossy_pebble",
	new AnimationChannel(AnimationChannel.Targets.SCALE,
		new Keyframe(0f, KeyframeAnimations.scaleVec(0f, 0f, 0f),
			AnimationChannel.Interpolations.LINEAR)))
.addAnimation("Pebble",
	new AnimationChannel(AnimationChannel.Targets.SCALE,
		new Keyframe(0f, KeyframeAnimations.scaleVec(0f, 0f, 0f),
			AnimationChannel.Interpolations.LINEAR))).build();