ModelHat.java 3.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. package me.km.items;
  2. import net.minecraft.client.renderer.entity.model.BipedModel;
  3. import net.minecraft.client.renderer.model.ModelRenderer;
  4. import net.minecraft.entity.LivingEntity;
  5. import net.minecraft.entity.item.ArmorStandEntity;
  6. import net.minecraftforge.api.distmarker.Dist;
  7. import net.minecraftforge.api.distmarker.OnlyIn;
  8. @OnlyIn(Dist.CLIENT)
  9. public class ModelHat extends BipedModel<LivingEntity> {
  10. private final static float FACTOR = ((float) Math.PI / 180.0f);
  11. private final ModelRenderer firstHeadPart;
  12. private final ModelRenderer secHeadPart;
  13. public ModelHat(float scale) {
  14. super(scale, 0, 64, 64);
  15. firstHeadPart = new ModelRenderer(this, 0, 32);
  16. firstHeadPart.addBox(-5, -8.6f, -5, 10, 1, 10);
  17. firstHeadPart.setRotationPoint(0.0f, 0.0f, 0.0f);
  18. firstHeadPart.setTextureSize(64, 64);
  19. firstHeadPart.mirror = true;
  20. setRotation(firstHeadPart, 0.0f, 0.0f, 0.0f);
  21. secHeadPart = new ModelRenderer(this, 0, 43);
  22. secHeadPart.addBox(-3, -11.6f, -3, 6, 3, 6);
  23. secHeadPart.setRotationPoint(0.0f, 0.0f, 0.0f);
  24. secHeadPart.setTextureSize(64, 64);
  25. secHeadPart.mirror = true;
  26. setRotation(secHeadPart, 0.0f, 0.0f, 0.0f);
  27. bipedHead.addChild(firstHeadPart);
  28. bipedHead.addChild(secHeadPart);
  29. }
  30. @Override
  31. public void setRotationAngles(LivingEntity ent, float limbSwing, float limbSwingAmount,
  32. float ageInTicks, float netHeadYaw, float headPitch) {
  33. if(ent instanceof ArmorStandEntity) {
  34. ArmorStandEntity ase = (ArmorStandEntity) ent;
  35. this.bipedHead.rotateAngleX = FACTOR * ase.getHeadRotation().getX();
  36. this.bipedHead.rotateAngleY = FACTOR * ase.getHeadRotation().getY();
  37. this.bipedHead.rotateAngleZ = FACTOR * ase.getHeadRotation().getZ();
  38. this.bipedHead.setRotationPoint(0.0f, 1.0f, 0.0f);
  39. this.bipedBody.rotateAngleX = FACTOR * ase.getBodyRotation().getX();
  40. this.bipedBody.rotateAngleY = FACTOR * ase.getBodyRotation().getY();
  41. this.bipedBody.rotateAngleZ = FACTOR * ase.getBodyRotation().getZ();
  42. this.bipedLeftArm.rotateAngleX = FACTOR * ase.getLeftArmRotation().getX();
  43. this.bipedLeftArm.rotateAngleY = FACTOR * ase.getLeftArmRotation().getY();
  44. this.bipedLeftArm.rotateAngleZ = FACTOR * ase.getLeftArmRotation().getZ();
  45. this.bipedRightArm.rotateAngleX = FACTOR * ase.getRightArmRotation().getX();
  46. this.bipedRightArm.rotateAngleY = FACTOR * ase.getRightArmRotation().getY();
  47. this.bipedRightArm.rotateAngleZ = FACTOR * ase.getRightArmRotation().getZ();
  48. this.bipedLeftLeg.rotateAngleX = FACTOR * ase.getLeftLegRotation().getX();
  49. this.bipedLeftLeg.rotateAngleY = FACTOR * ase.getLeftLegRotation().getY();
  50. this.bipedLeftLeg.rotateAngleZ = FACTOR * ase.getLeftLegRotation().getZ();
  51. this.bipedLeftLeg.setRotationPoint(1.9f, 11.0f, 0.0f);
  52. this.bipedRightLeg.rotateAngleX = FACTOR * ase.getRightLegRotation().getX();
  53. this.bipedRightLeg.rotateAngleY = FACTOR * ase.getRightLegRotation().getY();
  54. this.bipedRightLeg.rotateAngleZ = FACTOR * ase.getRightLegRotation().getZ();
  55. this.bipedRightLeg.setRotationPoint(-1.9f, 11.0f, 0.0f);
  56. this.bipedHeadwear.copyModelAngles(this.bipedHead);
  57. }
  58. super.setRotationAngles(ent, limbSwing, limbSwingAmount, ageInTicks, netHeadYaw, headPitch);
  59. }
  60. private void setRotation(ModelRenderer model, float x, float y, float z) {
  61. model.rotateAngleX = x;
  62. model.rotateAngleY = y;
  63. model.rotateAngleZ = z;
  64. }
  65. }