diff --git a/src/main/java/mod/icarus/crimsonrevelations/client/model/gear/ModelCultistArcherArmor.java b/src/main/java/mod/icarus/crimsonrevelations/client/model/gear/ModelCultistArcherArmor.java new file mode 100644 index 0000000..4476c96 --- /dev/null +++ b/src/main/java/mod/icarus/crimsonrevelations/client/model/gear/ModelCultistArcherArmor.java @@ -0,0 +1,491 @@ +package mod.icarus.crimsonrevelations.client.model.gear; + +import org.lwjgl.opengl.GL11; + +import net.minecraft.client.model.ModelBiped; +import net.minecraft.client.model.ModelRenderer; +import net.minecraft.entity.Entity; +import net.minecraft.util.math.MathHelper; + +public class ModelCultistArcherArmor extends ModelBiped { + public ModelRenderer GauntletstrapR1; + public ModelRenderer GauntletstrapR2; + public ModelRenderer GauntletR; + public ModelRenderer GauntletL; + public ModelRenderer GauntletstrapL1; + public ModelRenderer GauntletstrapL2; + public ModelRenderer ShoulderL1; + public ModelRenderer ShoulderL2; + public ModelRenderer ShoulderL3; + public ModelRenderer ShoulderL4; + public ModelRenderer ShoulderL5; + public ModelRenderer ShoulderR1; + public ModelRenderer ShoulderR4; + public ModelRenderer ShoulderR2; + public ModelRenderer ShoulderR3; + public ModelRenderer ShoulderR5; + public ModelRenderer Helmet; + public ModelRenderer Helmet1; + public ModelRenderer Helmet2; + public ModelRenderer Chestthing; + public ModelRenderer Mbelt; + public ModelRenderer clothchestL; + public ModelRenderer clothchestR; + public ModelRenderer BeltR; + public ModelRenderer Backplate; + public ModelRenderer MbeltL; + public ModelRenderer MbeltR; + public ModelRenderer BeltL; + public ModelRenderer Chestplate; + public ModelRenderer Quiver; + public ModelRenderer ShoulderR; + public ModelRenderer ShoulderL; + + public ModelRenderer LegpanelL1; + public ModelRenderer LegpanelL4; + public ModelRenderer LegpanelL5; + public ModelRenderer LegpanelL6; + public ModelRenderer BackpanelL1; + public ModelRenderer BackpanelL2; + public ModelRenderer BackpanelL3; + public ModelRenderer BackpanelL4; + + public ModelRenderer LegpanelR6; + public ModelRenderer LegpanelR5; + public ModelRenderer LegpanelR4; + public ModelRenderer BackpanelR1; + public ModelRenderer BackpanelR2; + public ModelRenderer BackpanelR3; + public ModelRenderer BackpanelR4; + + public ModelRenderer FrontclothR1; + private ModelRenderer FrontclothR2; + private ModelRenderer FrontclothL1; + private ModelRenderer FrontclothL2; + private ModelRenderer ClothBackR1; + private ModelRenderer ClothBackR2; + private ModelRenderer ClothBackR3; + private ModelRenderer ClothBackL1; + private ModelRenderer ClothBackL2; + private ModelRenderer ClothBackL3; + + public ModelRenderer MbeltB; + + public ModelCultistArcherArmor(float f) { + super(f, 0.0F, 128, 64); + this.textureWidth = 128; + this.textureHeight = 64; + + this.BackpanelR3 = new ModelRenderer(this, 84, 3); + this.BackpanelR3.setRotationPoint(0.0F, 0.0F, 0.0F); + this.BackpanelR3.addBox(0.0F, 2.5F, -2.5F, 2, 2, 5, 0.0F); + this.setRotation(BackpanelR3, 0.0F, -0.0F, 0.13962634015954636F); + + this.ShoulderL3 = new ModelRenderer(this, 0, 50); + this.ShoulderL3.setRotationPoint(0.0F, 0.0F, 0.0F); + this.ShoulderL3.addBox(2.299999952316284F, 3.0F, -3.0F, 1, 2, 6, 0.0F); + this.setRotation(ShoulderL3, 0.0F, -0.0F, -0.6457718014717102F); + + this.Quiver = new ModelRenderer(this, 85, 18); + this.Quiver.setRotationPoint(0.0F, 0.0F, 0.0F); + this.Quiver.addBox(1.0F, 0.0F, 3.0F, 5, 8, 4, 0.0F); + this.setRotation(Quiver, 0.0F, -0.0F, 0.767944872379303F); + + this.Chestplate = new ModelRenderer(this, 16, 25); + this.Chestplate.setRotationPoint(0.0F, 0.0F, 0.0F); + this.Chestplate.addBox(-4.0F, 1.0F, -3.0F, 8, 6, 1, 0.0F); + + this.ShoulderL2 = new ModelRenderer(this, 0, 58); + this.ShoulderL2.setRotationPoint(0.0F, 0.0F, 0.0F); + this.ShoulderL2.addBox(3.299999952316284F, 3.0F, -2.5F, 1, 1, 5, 0.0F); + this.setRotation(ShoulderL2, 0.0F, -0.0F, -0.6457718014717102F); + + this.BackpanelL1 = new ModelRenderer(this, 104, 9); + this.BackpanelL1.setRotationPoint(0.0F, 0.0F, 0.0F); + this.BackpanelL1.addBox(2.0F, 2.5F, -2.5F, 1, 6, 5, 0.0F); + this.setRotation(BackpanelL1, 0.0F, -0.0F, -0.13962633907794952F); + + this.Helmet1 = new ModelRenderer(this, 2, 1); + this.Helmet1.setRotationPoint(0.0F, 0.0F, 0.0F); + this.Helmet1.addBox(-5.5F, -6.0F, -5.5F, 11, 1, 11, 0.0F); + + this.Mbelt = new ModelRenderer(this, 16, 55); + this.Mbelt.setRotationPoint(0.0F, 0.0F, 0.0F); + this.Mbelt.addBox(-4.0F, 7.0F, -3.0F, 8, 5, 1, 0.0F); + + this.MbeltB = new ModelRenderer(this, 16, 55); + this.MbeltB.addBox(-4.0F, 7.0F, -4.0F, 8, 5, 1); + this.MbeltB.setTextureSize(128, 64); + setRotation(this.MbeltB, 0.0F, 3.141593F, 0.0F); + + this.ShoulderR = new ModelRenderer(this, 16, 45); + this.ShoulderR.setRotationPoint(0.0F, 0.0F, 0.0F); + this.ShoulderR.addBox(-3.5F, -2.5F, -2.5F, 5, 5, 5, 0.0F); + + this.GauntletstrapR1 = new ModelRenderer(this, 84, 58); + this.GauntletstrapR1.setRotationPoint(0.0F, 0.0F, 0.0F); + this.GauntletstrapR1.addBox(-1.5F, 3.5F, -2.5F, 3, 1, 5, 0.0F); + + this.GauntletL = new ModelRenderer(this, 114, 53); + this.GauntletL.setRotationPoint(0.0F, 0.0F, 0.0F); + this.GauntletL.addBox(1.5F, 3.5F, -2.5F, 2, 6, 5, 0.0F); + + this.ShoulderL = new ModelRenderer(this, 16, 45); + this.ShoulderL.mirror = true; + this.ShoulderL.setRotationPoint(0.0F, 0.0F, 0.0F); + this.ShoulderL.addBox(-1.5F, -2.5F, -2.5F, 5, 5, 5, 0.0F); + + this.LegpanelL5 = new ModelRenderer(this, 76, 42); + this.LegpanelL5.mirror = true; + this.LegpanelL5.setRotationPoint(0.0F, 0.0F, 0.0F); + this.LegpanelL5.addBox(1.0F, 2.5F, -2.5F, 2, 3, 1, 0.0F); + this.setRotation(LegpanelL5, -0.43633231520652765F, -0.0F, 0.0F); + + this.BackpanelL2 = new ModelRenderer(this, 84, 10); + this.BackpanelL2.setRotationPoint(0.0F, 0.0F, 0.0F); + this.BackpanelL2.addBox(-2.0F, -0.5F, -2.5F, 5, 3, 5, 0.0F); + this.setRotation(BackpanelL2, 0.0F, -0.0F, -0.13962634015954636F); + + this.GauntletstrapL2 = new ModelRenderer(this, 84, 58); + this.GauntletstrapL2.setRotationPoint(0.0F, 0.0F, 0.0F); + this.GauntletstrapL2.addBox(-1.5F, 6.5F, -2.5F, 3, 1, 5, 0.0F); + + this.BackpanelR1 = new ModelRenderer(this, 84, 10); + this.BackpanelR1.setRotationPoint(0.0F, 0.0F, 0.0F); + this.BackpanelR1.addBox(-3.0F, -0.5F, -2.5F, 5, 3, 5, 0.0F); + this.setRotation(BackpanelR1, 0.0F, -0.0F, 0.13962633907794952F); + + this.ShoulderR5 = new ModelRenderer(this, 0, 38); + this.ShoulderR5.setRotationPoint(0.0F, 0.0F, 0.0F); + this.ShoulderR5.addBox(-3.299999952316284F, -2.0F, 3.0F, 1, 6, 1, 0.0F); + this.setRotation(ShoulderR5, 0.0F, -0.0F, 0.6457718014717102F); + + this.BackpanelL3 = new ModelRenderer(this, 84, 3); + this.BackpanelL3.setRotationPoint(0.0F, 0.0F, 0.0F); + this.BackpanelL3.addBox(-2.0F, 2.5F, -2.5F, 2, 2, 5, 0.0F); + this.setRotation(BackpanelL3, 0.0F, -0.0F, -0.13962634015954636F); + + this.Helmet = new ModelRenderer(this, 48, 0); + this.Helmet.setRotationPoint(0.0F, 0.0F, 0.0F); + this.Helmet.addBox(-4.5F, -5.0F, -4.5F, 9, 5, 9, 0.0F); + + this.GauntletstrapL1 = new ModelRenderer(this, 84, 58); + this.GauntletstrapL1.setRotationPoint(0.0F, 0.0F, 0.0F); + this.GauntletstrapL1.addBox(-1.5F, 3.5F, -2.5F, 3, 1, 5, 0.0F); + + this.clothchestL = new ModelRenderer(this, 108, 38); + this.clothchestL.mirror = true; + this.clothchestL.setRotationPoint(2.0F, 12.0F, 0.0F); + this.clothchestL.addBox(0.10000000149011612F, -11.5F, -3.5F, 2, 8, 1, 0.0F); + + this.ShoulderR1 = new ModelRenderer(this, 0, 39); + this.ShoulderR1.setRotationPoint(0.0F, 0.0F, 0.0F); + this.ShoulderR1.addBox(-4.300000190734863F, -2.0F, -3.0F, 1, 5, 6, 0.0F); + this.setRotation(ShoulderR1, 0.0F, -0.0F, 0.6457718014717102F); + + this.MbeltR = new ModelRenderer(this, 16, 36); + this.MbeltR.setRotationPoint(0.0F, 0.0F, 0.0F); + this.MbeltR.addBox(-5.0F, 8.0F, -3.0F, 1, 3, 6, 0.0F); + + this.LegpanelR6 = new ModelRenderer(this, 82, 38); + this.LegpanelR6.setRotationPoint(0.0F, 0.0F, 0.0F); + this.LegpanelR6.addBox(-3.0F, 4.5F, -1.5F, 2, 3, 1, 0.0F); + this.setRotation(LegpanelR6, -0.43633231520652765F, -0.0F, 0.0F); + + this.Chestthing = new ModelRenderer(this, 56, 50); + this.Chestthing.setRotationPoint(0.0F, 0.0F, 0.0F); + this.Chestthing.addBox(-2.5F, 1.0F, -4.0F, 5, 7, 1, 0.0F); + + this.BackpanelR4 = new ModelRenderer(this, 102, 1); + this.BackpanelR4.setRotationPoint(0.0F, 0.0F, 0.0F); + this.BackpanelR4.addBox(-2.0F, 2.5F, -2.5F, 2, 3, 5, 0.0F); + this.setRotation(BackpanelR4, 0.0F, -0.0F, 0.13962634015954636F); + + this.ShoulderR4 = new ModelRenderer(this, 0, 38); + this.ShoulderR4.setRotationPoint(0.0F, 0.0F, 0.0F); + this.ShoulderR4.addBox(-3.299999952316284F, -2.0F, -4.0F, 1, 6, 1, 0.0F); + this.setRotation(ShoulderR4, 0.0F, -0.0F, 0.6457718014717102F); + + this.clothchestR = new ModelRenderer(this, 108, 38); + this.clothchestR.setRotationPoint(2.0F, 12.0F, 0.0F); + this.clothchestR.addBox(-6.099999904632568F, -11.5F, -3.5F, 2, 8, 1, 0.0F); + + this.ShoulderR3 = new ModelRenderer(this, 0, 50); + this.ShoulderR3.setRotationPoint(0.0F, 0.0F, 0.0F); + this.ShoulderR3.addBox(-3.299999952316284F, 3.0F, -3.0F, 1, 2, 6, 0.0F); + this.setRotation(ShoulderR3, 0.0F, -0.0F, 0.6457718014717102F); + + this.LegpanelR4 = new ModelRenderer(this, 76, 38); + this.LegpanelR4.setRotationPoint(0.0F, 0.0F, 0.0F); + this.LegpanelR4.addBox(-3.0F, 0.5F, -3.5F, 2, 3, 1, 0.0F); + this.setRotation(LegpanelR4, -0.43633231520652765F, -0.0F, 0.0F); + + this.ShoulderL1 = new ModelRenderer(this, 0, 39); + this.ShoulderL1.setRotationPoint(0.0F, 0.0F, 0.0F); + this.ShoulderL1.addBox(3.299999952316284F, -2.0F, -3.0F, 1, 5, 6, 0.0F); + this.setRotation(ShoulderL1, 0.0F, -0.0F, -0.6457718014717102F); + + this.BeltR = new ModelRenderer(this, 16, 36); + this.BeltR.setRotationPoint(0.0F, 0.0F, 0.0F); + this.BeltR.addBox(-5.0F, 4.0F, -3.0F, 1, 3, 6, 0.0F); + + this.GauntletstrapR2 = new ModelRenderer(this, 84, 58); + this.GauntletstrapR2.setRotationPoint(0.0F, 0.0F, 0.0F); + this.GauntletstrapR2.addBox(-1.5F, 6.5F, -2.5F, 3, 1, 5, 0.0F); + + this.LegpanelL1 = new ModelRenderer(this, 123, 9); + this.LegpanelL1.mirror = true; + this.LegpanelL1.setRotationPoint(0.0F, 0.0F, 0.0F); + this.LegpanelL1.addBox(1.0F, 8.800000190734863F, 1.2999999523162842F, 1, 2, 1, 0.0F); + this.setRotation(LegpanelL1, 0.22689279913902285F, -0.0F, 0.0F); + + this.Backplate = new ModelRenderer(this, 38, 46); + this.Backplate.setRotationPoint(0.0F, 0.0F, 0.0F); + this.Backplate.addBox(-4.0F, 1.0F, 2.0F, 8, 11, 1, 0.0F); + + this.BackpanelL4 = new ModelRenderer(this, 102, 1); + this.BackpanelL4.setRotationPoint(0.0F, 0.0F, 0.0F); + this.BackpanelL4.addBox(0.0F, 2.5F, -2.5F, 2, 3, 5, 0.0F); + this.setRotation(BackpanelL4, 0.0F, -0.0F, -0.13962634015954636F); + + this.LegpanelR5 = new ModelRenderer(this, 76, 42); + this.LegpanelR5.setRotationPoint(0.0F, 0.0F, 0.0F); + this.LegpanelR5.addBox(-3.0F, 2.5F, -2.5F, 2, 3, 1, 0.0F); + this.setRotation(LegpanelR5, -0.43633231520652765F, -0.0F, 0.0F); + + this.BackpanelR2 = new ModelRenderer(this, 104, 9); + this.BackpanelR2.setRotationPoint(0.0F, 0.0F, 0.0F); + this.BackpanelR2.addBox(-3.0F, 2.5F, -2.5F, 1, 6, 5, 0.0F); + this.setRotation(BackpanelR2, 0.0F, -0.0F, 0.13962634015954636F); + + this.ShoulderL4 = new ModelRenderer(this, 0, 38); + this.ShoulderL4.setRotationPoint(0.0F, 0.0F, 0.0F); + this.ShoulderL4.addBox(2.299999952316284F, -2.0F, -4.0F, 1, 6, 1, 0.0F); + this.setRotation(ShoulderL4, 0.0F, -0.0F, -0.6457718014717102F); + + this.LegpanelL6 = new ModelRenderer(this, 82, 38); + this.LegpanelL6.mirror = true; + this.LegpanelL6.setRotationPoint(0.0F, 0.0F, 0.0F); + this.LegpanelL6.addBox(1.0F, 4.5F, -1.5F, 2, 3, 1, 0.0F); + this.setRotation(LegpanelL6, -0.43633231520652765F, -0.0F, 0.0F); + + this.ShoulderR2 = new ModelRenderer(this, 0, 58); + this.ShoulderR2.setRotationPoint(0.0F, 0.0F, 0.0F); + this.ShoulderR2.addBox(-4.300000190734863F, 3.0F, -2.5F, 1, 1, 5, 0.0F); + this.setRotation(ShoulderR2, 0.0F, -0.0F, 0.6457718014717102F); + + this.ShoulderL5 = new ModelRenderer(this, 0, 38); + this.ShoulderL5.setRotationPoint(0.0F, 0.0F, 0.0F); + this.ShoulderL5.addBox(2.299999952316284F, -2.0F, 3.0F, 1, 6, 1, 0.0F); + this.setRotation(ShoulderL5, 0.0F, -0.0F, -0.6457718014717102F); + + this.BeltL = new ModelRenderer(this, 16, 36); + this.BeltL.setRotationPoint(0.0F, 0.0F, 0.0F); + this.BeltL.addBox(4.0F, 4.0F, -3.0F, 1, 3, 6, 0.0F); + + this.Helmet2 = new ModelRenderer(this, 0, 13); + this.Helmet2.setRotationPoint(0.0F, 0.0F, 0.0F); + this.Helmet2.addBox(-4.5F, -9.0F, -4.5F, 9, 3, 9, 0.0F); + + this.MbeltL = new ModelRenderer(this, 16, 36); + this.MbeltL.setRotationPoint(0.0F, 0.0F, 0.0F); + this.MbeltL.addBox(4.0F, 8.0F, -3.0F, 1, 3, 6, 0.0F); + + this.LegpanelL4 = new ModelRenderer(this, 76, 38); + this.LegpanelL4.mirror = true; + this.LegpanelL4.setRotationPoint(0.0F, 0.0F, 0.0F); + this.LegpanelL4.addBox(1.0F, 0.5F, -3.5F, 2, 3, 1, 0.0F); + this.setRotation(LegpanelL4, -0.43633231520652765F, -0.0F, 0.0F); + + this.GauntletR = new ModelRenderer(this, 100, 53); + this.GauntletR.setRotationPoint(0.0F, 0.0F, 0.0F); + this.GauntletR.addBox(-3.5F, 3.5F, -2.5F, 2, 6, 5, 0.0F); + + this.FrontclothR1 = new ModelRenderer(this, 108, 38); + this.FrontclothR1.addBox(0.0F, 0.0F, 0.0F, 3, 8, 1); + this.FrontclothR1.setRotationPoint(-3.0F, 11.0F, -2.9F); + this.FrontclothR1.setTextureSize(128, 64); + setRotation(this.FrontclothR1, -0.1047198F, 0.0F, 0.0F); + + this.FrontclothR2 = new ModelRenderer(this, 108, 47); + this.FrontclothR2.addBox(0.0F, 7.5F, 1.7F, 3, 3, 1); + this.FrontclothR2.setRotationPoint(-3.0F, 11.0F, -2.9F); + this.FrontclothR2.setTextureSize(128, 64); + setRotation(this.FrontclothR2, -0.3316126F, 0.0F, 0.0F); + + this.FrontclothL1 = new ModelRenderer(this, 108, 38); + this.FrontclothL1.mirror = true; + this.FrontclothL1.addBox(0.0F, 0.0F, 0.0F, 3, 8, 1); + this.FrontclothL1.setRotationPoint(0.0F, 11.0F, -2.9F); + this.FrontclothL1.setTextureSize(128, 64); + setRotation(this.FrontclothL1, -0.1047198F, 0.0F, 0.0F); + + this.FrontclothL2 = new ModelRenderer(this, 108, 47); + this.FrontclothL2.mirror = true; + this.FrontclothL2.addBox(0.0F, 7.5F, 1.7F, 3, 3, 1); + this.FrontclothL2.setRotationPoint(0.0F, 11.0F, -2.9F); + this.FrontclothL2.setTextureSize(128, 64); + setRotation(this.FrontclothL2, -0.3316126F, 0.0F, 0.0F); + + this.ClothBackR1 = new ModelRenderer(this, 118, 16); + this.ClothBackR1.mirror = true; + this.ClothBackR1.addBox(0.0F, 0.0F, 0.0F, 4, 8, 1); + this.ClothBackR1.setRotationPoint(-4.0F, 11.5F, 2.9F); + this.ClothBackR1.setTextureSize(128, 64); + setRotation(this.ClothBackR1, 0.1047198F, 0.0F, 0.0F); + + this.ClothBackR2 = new ModelRenderer(this, 123, 9); + this.ClothBackR2.addBox(0.0F, 7.8F, -0.9F, 1, 2, 1); + this.ClothBackR2.setRotationPoint(-4.0F, 11.5F, 2.9F); + this.ClothBackR2.setTextureSize(128, 64); + setRotation(this.ClothBackR2, 0.2268928F, 0.0F, 0.0F); + + this.ClothBackR3 = new ModelRenderer(this, 120, 12); + this.ClothBackR3.mirror = true; + this.ClothBackR3.addBox(1.0F, 7.8F, -0.9F, 3, 3, 1); + this.ClothBackR3.setRotationPoint(-4.0F, 11.5F, 2.9F); + this.ClothBackR3.setTextureSize(128, 64); + setRotation(this.ClothBackR3, 0.2268928F, 0.0F, 0.0F); + + this.ClothBackL1 = new ModelRenderer(this, 118, 16); + this.ClothBackL1.addBox(0.0F, 0.0F, 0.0F, 4, 8, 1); + this.ClothBackL1.setRotationPoint(0.0F, 11.5F, 2.9F); + this.ClothBackL1.setTextureSize(128, 64); + setRotation(this.ClothBackL1, 0.1047198F, 0.0F, 0.0F); + + this.ClothBackL2 = new ModelRenderer(this, 123, 9); + this.ClothBackL2.mirror = true; + this.ClothBackL2.addBox(3.0F, 7.8F, -0.9F, 1, 2, 1); + this.ClothBackL2.setRotationPoint(0.0F, 11.5F, 2.9F); + this.ClothBackL2.setTextureSize(128, 64); + setRotation(this.ClothBackL2, 0.2268928F, 0.0F, 0.0F); + + this.ClothBackL3 = new ModelRenderer(this, 120, 12); + this.ClothBackL3.addBox(0.0F, 7.8F, -0.9F, 3, 3, 1); + this.ClothBackL3.setRotationPoint(0.0F, 11.5F, 2.9F); + this.ClothBackL3.setTextureSize(128, 64); + setRotation(this.ClothBackL3, 0.2268928F, 0.0F, 0.0F); + + + // TODO: Child Mods + this.bipedHeadwear.cubeList.clear(); + this.bipedHead.cubeList.clear(); + this.bipedHead.addChild(this.Helmet); + this.bipedHead.addChild(this.Helmet1); + this.bipedHead.addChild(this.Helmet2); + + this.bipedBody.cubeList.clear(); + this.bipedRightLeg.cubeList.clear(); + this.bipedLeftLeg.cubeList.clear(); + + this.bipedBody.addChild(this.Mbelt); + this.bipedBody.addChild(this.MbeltL); + this.bipedBody.addChild(this.MbeltR); + this.bipedBody.addChild(this.MbeltB); + + if (f >= 1.0F) { + this.bipedBody.addChild(this.Quiver); + this.bipedBody.addChild(this.Chestthing); + this.bipedBody.addChild(this.Backplate); + this.bipedBody.addChild(this.Chestplate); + this.bipedBody.addChild(this.clothchestL); + this.bipedBody.addChild(this.clothchestR); + this.bipedBody.addChild(this.BeltL); + this.bipedBody.addChild(this.BeltR); + } else { + this.bipedBody.addChild(this.FrontclothR1); + this.bipedBody.addChild(this.FrontclothR2); + this.bipedBody.addChild(this.FrontclothL1); + this.bipedBody.addChild(this.FrontclothL2); + + this.bipedBody.addChild(this.ClothBackR1); + this.bipedBody.addChild(this.ClothBackR2); + this.bipedBody.addChild(this.ClothBackR3); + + this.bipedBody.addChild(this.ClothBackL1); + this.bipedBody.addChild(this.ClothBackL2); + this.bipedBody.addChild(this.ClothBackL3); + } + + this.bipedRightArm.cubeList.clear(); + this.bipedRightArm.addChild(this.ShoulderR); + this.bipedRightArm.addChild(this.ShoulderR1); + this.bipedRightArm.addChild(this.ShoulderR2); + this.bipedRightArm.addChild(this.ShoulderR3); + this.bipedRightArm.addChild(this.ShoulderR4); + this.bipedRightArm.addChild(this.ShoulderR5); + this.bipedRightArm.addChild(this.GauntletR); + this.bipedRightArm.addChild(this.GauntletstrapR1); + this.bipedRightArm.addChild(this.GauntletstrapR2); + + this.bipedLeftArm.cubeList.clear(); + this.bipedLeftArm.addChild(this.ShoulderL); + this.bipedLeftArm.addChild(this.ShoulderL1); + this.bipedLeftArm.addChild(this.ShoulderL2); + this.bipedLeftArm.addChild(this.ShoulderL3); + this.bipedLeftArm.addChild(this.ShoulderL4); + this.bipedLeftArm.addChild(this.ShoulderL5); + this.bipedLeftArm.addChild(this.GauntletL); + this.bipedLeftArm.addChild(this.GauntletstrapL1); + this.bipedLeftArm.addChild(this.GauntletstrapL2); + + this.bipedRightLeg.addChild(this.BackpanelR1); + this.bipedRightLeg.addChild(this.BackpanelR2); + this.bipedRightLeg.addChild(this.BackpanelR3); + this.bipedRightLeg.addChild(this.BackpanelR4); + + this.bipedLeftLeg.addChild(this.BackpanelL1); + this.bipedLeftLeg.addChild(this.BackpanelL2); + this.bipedLeftLeg.addChild(this.BackpanelL3); + this.bipedLeftLeg.addChild(this.BackpanelL4); + } + + public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { + setRotationAngles(f, f1, f2, f3, f4, f5, entity); + float a = MathHelper.cos(f * 0.6662F) * 1.4F * f1; + float b = MathHelper.cos(f * 0.6662F + 3.1415927F) * 1.4F * f1; + float c = Math.min(a, b); + + this.FrontclothR1.rotateAngleX = (this.FrontclothL1.rotateAngleX = c - 0.1047198F); + this.FrontclothR2.rotateAngleX = (this.FrontclothL2.rotateAngleX = c - 0.3316126F); + + this.ClothBackR1.rotateAngleX = (this.ClothBackL1.rotateAngleX = -c + 0.1047198F); + this.ClothBackR2.rotateAngleX = (this.ClothBackL2.rotateAngleX = this.ClothBackR3.rotateAngleX = this.ClothBackL3.rotateAngleX = -c + 0.2268928F); + + if (this.isChild) { + float f6 = 2.0F; + GL11.glPushMatrix(); + GL11.glScalef(1.5F / f6, 1.5F / f6, 1.5F / f6); + GL11.glTranslatef(0.0F, 16.0F * f5, 0.0F); + this.bipedHead.render(f5); + GL11.glPopMatrix(); + GL11.glPushMatrix(); + GL11.glScalef(1.0F / f6, 1.0F / f6, 1.0F / f6); + GL11.glTranslatef(0.0F, 24.0F * f5, 0.0F); + this.bipedBody.render(f5); + this.bipedRightArm.render(f5); + this.bipedLeftArm.render(f5); + this.bipedRightLeg.render(f5); + this.bipedLeftLeg.render(f5); + this.bipedHeadwear.render(f5); + GL11.glPopMatrix(); + } else { + GL11.glPushMatrix(); + GL11.glScalef(1.01F, 1.01F, 1.01F); + this.bipedHead.render(f5); + GL11.glPopMatrix(); + this.bipedBody.render(f5); + this.bipedRightArm.render(f5); + this.bipedLeftArm.render(f5); + this.bipedRightLeg.render(f5); + this.bipedLeftLeg.render(f5); + this.bipedHeadwear.render(f5); + } + } + + private void setRotation(ModelRenderer model, float x, float y, float z) { + model.rotateAngleX = x; + model.rotateAngleY = y; + model.rotateAngleZ = z; + } +} diff --git a/src/main/java/mod/icarus/crimsonrevelations/init/RegistryHandler.java b/src/main/java/mod/icarus/crimsonrevelations/init/RegistryHandler.java index 46853b1..8324093 100644 --- a/src/main/java/mod/icarus/crimsonrevelations/init/RegistryHandler.java +++ b/src/main/java/mod/icarus/crimsonrevelations/init/RegistryHandler.java @@ -6,14 +6,19 @@ import mod.icarus.crimsonrevelations.entity.boss.EntityOvergrownTaintacle; import mod.icarus.crimsonrevelations.item.ItemCR; import mod.icarus.crimsonrevelations.item.ItemCRSword; +import mod.icarus.crimsonrevelations.item.armor.ItemCultistArcherArmor; + import net.minecraft.block.Block; import net.minecraft.block.BlockDoor; import net.minecraft.block.BlockSlab; import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.entity.Entity; +import net.minecraft.init.SoundEvents; +import net.minecraft.inventory.EntityEquipmentSlot; import net.minecraft.item.EnumRarity; import net.minecraft.item.Item; import net.minecraft.item.Item.ToolMaterial; +import net.minecraft.item.ItemArmor.ArmorMaterial; import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.IRecipe; @@ -51,14 +56,20 @@ public class RegistryHandler { @GameRegistry.ObjectHolder("crimson_sword") public static Item crimsonSword; - static ToolMaterial TOOL_CULTIST = EnumHelper.addToolMaterial("CULTIST", 3, 321, 7.5F, 2.5F, 20).setRepairItem(new ItemStack(crimsonPlate)); + public static ArmorMaterial ARMOR_CULTIST_ARCHER = EnumHelper.addArmorMaterial("CULTIST_ARCHER", "CULTIST_ARCHER", 17, new int[]{2, 5, 5, 2}, 13, SoundEvents.ITEM_ARMOR_EQUIP_CHAIN, 0.0F).setRepairItem(new ItemStack(crimsonPlate)); + + public static ToolMaterial TOOL_CULTIST = EnumHelper.addToolMaterial("CULTIST", 3, 321, 7.5F, 2.5F, 20).setRepairItem(new ItemStack(crimsonPlate)); @SubscribeEvent public static void registerItems(RegistryEvent.Register event) { event.getRegistry().registerAll( setup(new ItemCR(EnumRarity.UNCOMMON), "crimson_fabric"), setup(new ItemCR(EnumRarity.UNCOMMON), "crimson_plate"), - setup(new ItemCRSword(TOOL_CULTIST, EnumRarity.UNCOMMON), "crimson_sword") + setup(new ItemCRSword(TOOL_CULTIST, EnumRarity.UNCOMMON), "crimson_sword"), + + setup(new ItemCultistArcherArmor(EntityEquipmentSlot.HEAD), "crimson_archer_helmet"), + setup(new ItemCultistArcherArmor(EntityEquipmentSlot.CHEST), "crimson_archer_chestplate"), + setup(new ItemCultistArcherArmor(EntityEquipmentSlot.LEGS), "crimson_archer_leggings") ); } diff --git a/src/main/java/mod/icarus/crimsonrevelations/init/RenderingHandler.java b/src/main/java/mod/icarus/crimsonrevelations/init/RenderingHandler.java index 5c06f7a..cb40ee6 100644 --- a/src/main/java/mod/icarus/crimsonrevelations/init/RenderingHandler.java +++ b/src/main/java/mod/icarus/crimsonrevelations/init/RenderingHandler.java @@ -3,6 +3,13 @@ import mod.icarus.crimsonrevelations.client.renderer.RenderOvergrownTaintacle; import mod.icarus.crimsonrevelations.core.CRConfig; import mod.icarus.crimsonrevelations.entity.boss.EntityOvergrownTaintacle; + +import net.minecraft.client.model.ModelBiped; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.inventory.EntityEquipmentSlot; +import net.minecraft.item.EnumAction; +import net.minecraft.item.ItemStack; +import net.minecraft.util.EnumHandSide; import net.minecraftforge.fml.client.registry.RenderingRegistry; import net.minecraftforge.fml.common.Loader; import net.minecraftforge.fml.relauncher.Side; @@ -14,4 +21,55 @@ public static void preInit() { if (Loader.isModLoaded("thaumicaugmentation") && CRConfig.general_settings.TA_INTEGRATION) RenderingRegistry.registerEntityRenderingHandler(EntityOvergrownTaintacle.class, RenderOvergrownTaintacle::new); } + + @SideOnly(Side.CLIENT) + public static ModelBiped getCustomArmorModel(EntityLivingBase entityLiving, ItemStack itemStack, EntityEquipmentSlot armorSlot, ModelBiped model) { + if (model != null) { + model.bipedHead.showModel = (armorSlot == EntityEquipmentSlot.HEAD); + model.bipedHeadwear.showModel = (armorSlot == EntityEquipmentSlot.HEAD); + model.bipedBody.showModel = (armorSlot == EntityEquipmentSlot.CHEST || armorSlot == EntityEquipmentSlot.LEGS); + model.bipedRightArm.showModel = (armorSlot == EntityEquipmentSlot.CHEST); + model.bipedLeftArm.showModel = (armorSlot == EntityEquipmentSlot.CHEST); + model.bipedRightLeg.showModel = (armorSlot == EntityEquipmentSlot.LEGS); + model.bipedLeftLeg.showModel = (armorSlot == EntityEquipmentSlot.LEGS); + model.isSneak = entityLiving.isSneaking(); + model.isRiding = entityLiving.isRiding(); + model.isChild = entityLiving.isChild(); + + ItemStack stackMain = entityLiving.getHeldItemMainhand(); + ModelBiped.ArmPose armPoseMain = ModelBiped.ArmPose.EMPTY; + + if (stackMain != null && !stackMain.isEmpty()) { + armPoseMain = ModelBiped.ArmPose.ITEM; + + if (entityLiving.getItemInUseCount() > 0) { + EnumAction actionMain = stackMain.getItemUseAction(); + + if (actionMain == EnumAction.BLOCK) { + armPoseMain = ModelBiped.ArmPose.BLOCK; + } else if (actionMain == EnumAction.BOW) { + armPoseMain = ModelBiped.ArmPose.BOW_AND_ARROW; + } + } + } + + ItemStack stackOff = entityLiving.getHeldItemOffhand(); + ModelBiped.ArmPose armPoseOff = ModelBiped.ArmPose.EMPTY; + + if (stackOff != null && !stackOff.isEmpty()) { + armPoseOff = ModelBiped.ArmPose.ITEM; + if (entityLiving.getItemInUseCount() > 0) { + EnumAction actionOff = stackOff.getItemUseAction(); + if (actionOff == EnumAction.BLOCK) { + armPoseOff = ModelBiped.ArmPose.BLOCK; + } + } + } + + model.rightArmPose = (entityLiving.getPrimaryHand() == EnumHandSide.RIGHT) ? armPoseMain : armPoseOff; + model.leftArmPose = (entityLiving.getPrimaryHand() == EnumHandSide.RIGHT) ? armPoseOff : armPoseMain; + } + + return model; + } } diff --git a/src/main/java/mod/icarus/crimsonrevelations/item/armor/ItemCultistArcherArmor.java b/src/main/java/mod/icarus/crimsonrevelations/item/armor/ItemCultistArcherArmor.java new file mode 100644 index 0000000..4fa0276 --- /dev/null +++ b/src/main/java/mod/icarus/crimsonrevelations/item/armor/ItemCultistArcherArmor.java @@ -0,0 +1,52 @@ +package mod.icarus.crimsonrevelations.item.armor; + +import mod.icarus.crimsonrevelations.CrimsonRevelations; +import mod.icarus.crimsonrevelations.client.model.gear.ModelCultistArcherArmor; +import mod.icarus.crimsonrevelations.init.RegistryHandler; +import mod.icarus.crimsonrevelations.init.RenderingHandler; + +import net.minecraft.client.model.ModelBiped; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.inventory.EntityEquipmentSlot; +import net.minecraft.item.EnumRarity; +import net.minecraft.item.ItemArmor; +import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; + +public class ItemCultistArcherArmor extends ItemArmor { + ModelBiped model1 = null; + ModelBiped model2 = null; + + protected static final String TEXTURE_PATH = new ResourceLocation(CrimsonRevelations.MODID, "textures/models/armor/cultist_archer_armor.png").toString(); + + public ItemCultistArcherArmor(EntityEquipmentSlot equipmentSlot) { + super(RegistryHandler.ARMOR_CULTIST_ARCHER, 4, equipmentSlot); + } + + @Override + @SideOnly(Side.CLIENT) + public ModelBiped getArmorModel(EntityLivingBase entityLiving, ItemStack itemStack, EntityEquipmentSlot armorSlot, ModelBiped _default) { + if (this.model1 == null) { + this.model1 = new ModelCultistArcherArmor(0.5f); + } + if (this.model2 == null) { + this.model2 = new ModelCultistArcherArmor(1.0F); + } + EntityEquipmentSlot type = ((ItemArmor) itemStack.getItem()).armorType; + ModelBiped model = (type == EntityEquipmentSlot.LEGS) ? this.model1 : this.model2; + return RenderingHandler.getCustomArmorModel(entityLiving, itemStack, armorSlot, model); + } + + @Override + public String getArmorTexture(ItemStack stack, Entity entity, EntityEquipmentSlot slot, String type) { + return TEXTURE_PATH; + } + + @Override + public EnumRarity getRarity(ItemStack stack) { + return EnumRarity.UNCOMMON; + } +} diff --git a/src/main/resources/assets/crimsonrevelations/lang/en_us.lang b/src/main/resources/assets/crimsonrevelations/lang/en_us.lang index bf07e9c..f2676f2 100644 --- a/src/main/resources/assets/crimsonrevelations/lang/en_us.lang +++ b/src/main/resources/assets/crimsonrevelations/lang/en_us.lang @@ -2,6 +2,9 @@ itemGroup.CrimsonRevelationsTab=New Crimson Revelations entity.crimsonrevelations.overgrown_taintacle.name=Overgrown Taintacle +item.crimsonrevelations.crimson_archer_helmet.name=Crimson Archer Helm +item.crimsonrevelations.crimson_archer_chestplate.name=Crimson Archer Chestplate +item.crimsonrevelations.crimson_archer_leggings.name=Crimson Archer Leggings item.crimsonrevelations.crimson_fabric.name=Crimson Fabric item.crimsonrevelations.crimson_plate.name=Crimson Plate item.crimsonrevelations.crimson_sword.name=Crimson Cult Sword @@ -53,10 +56,14 @@ crimsonrevelations.research.focus_taint_poison.stage.0=Taint Poison is much more crimsonrevelations.research.overgrown_taintacle.title=Overgrown Taintacle crimsonrevelations.research.overgrown_taintacle.stage.0=During one of my treks in the Emptiness, I have discovered a significantly stronger and more aggressive Taintacle variant. It seems to have a symbiotic relationship with the environment, which would explain the main source of its power.
Hunting these larger Taintacles would be ideal, I should be able to harvest whatever congealed energy it leaves off for my own purposes. +crimsonrevelations.text.overgrown_taintacle=You have absorbed some of the Overgrown Taintacle's power. + focus.crimsonrevelations.poison.name=Poison focus.crimsonrevelations.poison.text=Summons a blob of goo at your target and poisons it for double the usual duration. focus.crimsonrevelations.taint_poison.name=Taint Poison focus.crimsonrevelations.taint_poison.text=Unleashes a glob of infectious taint at your target and poisons it for double the usual duration. Vulnerable targets can become corrupted with taint. -focus.common.double_duration=Duration (two seconds) \ No newline at end of file +focus.common.double_duration=Duration (two seconds) + +research.m_OVERGROWN_TAINTACLE.text=Eliminate an Overgrown Taintacle. \ No newline at end of file diff --git a/src/main/resources/assets/crimsonrevelations/models/item/crimson_archer_chestplate.json b/src/main/resources/assets/crimsonrevelations/models/item/crimson_archer_chestplate.json new file mode 100644 index 0000000..0d8e252 --- /dev/null +++ b/src/main/resources/assets/crimsonrevelations/models/item/crimson_archer_chestplate.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "crimsonrevelations:items/crimson_archer_chestplate" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/crimsonrevelations/models/item/crimson_archer_helmet.json b/src/main/resources/assets/crimsonrevelations/models/item/crimson_archer_helmet.json new file mode 100644 index 0000000..a7aebcb --- /dev/null +++ b/src/main/resources/assets/crimsonrevelations/models/item/crimson_archer_helmet.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "crimsonrevelations:items/crimson_archer_helmet" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/crimsonrevelations/models/item/crimson_archer_leggings.json b/src/main/resources/assets/crimsonrevelations/models/item/crimson_archer_leggings.json new file mode 100644 index 0000000..fb236d2 --- /dev/null +++ b/src/main/resources/assets/crimsonrevelations/models/item/crimson_archer_leggings.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "crimsonrevelations:items/crimson_archer_leggings" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/crimsonrevelations/textures/items/bone_bow_pulling_0.png b/src/main/resources/assets/crimsonrevelations/textures/items/bone_bow_pulling_0.png new file mode 100644 index 0000000..58966ee Binary files /dev/null and b/src/main/resources/assets/crimsonrevelations/textures/items/bone_bow_pulling_0.png differ diff --git a/src/main/resources/assets/crimsonrevelations/textures/items/bone_bow_pulling_1.png b/src/main/resources/assets/crimsonrevelations/textures/items/bone_bow_pulling_1.png new file mode 100644 index 0000000..0825b48 Binary files /dev/null and b/src/main/resources/assets/crimsonrevelations/textures/items/bone_bow_pulling_1.png differ diff --git a/src/main/resources/assets/crimsonrevelations/textures/items/bone_bow_pulling_2.png b/src/main/resources/assets/crimsonrevelations/textures/items/bone_bow_pulling_2.png new file mode 100644 index 0000000..f789d6e Binary files /dev/null and b/src/main/resources/assets/crimsonrevelations/textures/items/bone_bow_pulling_2.png differ diff --git a/src/main/resources/assets/crimsonrevelations/textures/items/bone_bow_standby.png b/src/main/resources/assets/crimsonrevelations/textures/items/bone_bow_standby.png new file mode 100644 index 0000000..66c2142 Binary files /dev/null and b/src/main/resources/assets/crimsonrevelations/textures/items/bone_bow_standby.png differ diff --git a/src/main/resources/assets/crimsonrevelations/textures/items/crimson_archer_chestplate.png b/src/main/resources/assets/crimsonrevelations/textures/items/crimson_archer_chestplate.png new file mode 100644 index 0000000..d8d8d35 Binary files /dev/null and b/src/main/resources/assets/crimsonrevelations/textures/items/crimson_archer_chestplate.png differ diff --git a/src/main/resources/assets/crimsonrevelations/textures/items/crimson_archer_helmet.png b/src/main/resources/assets/crimsonrevelations/textures/items/crimson_archer_helmet.png new file mode 100644 index 0000000..82a4923 Binary files /dev/null and b/src/main/resources/assets/crimsonrevelations/textures/items/crimson_archer_helmet.png differ diff --git a/src/main/resources/assets/crimsonrevelations/textures/items/crimson_archer_leggings.png b/src/main/resources/assets/crimsonrevelations/textures/items/crimson_archer_leggings.png new file mode 100644 index 0000000..16b6a98 Binary files /dev/null and b/src/main/resources/assets/crimsonrevelations/textures/items/crimson_archer_leggings.png differ diff --git a/src/main/resources/assets/crimsonrevelations/textures/items/primal_arrow_air.png b/src/main/resources/assets/crimsonrevelations/textures/items/primal_arrow_air.png new file mode 100644 index 0000000..c3a15e1 Binary files /dev/null and b/src/main/resources/assets/crimsonrevelations/textures/items/primal_arrow_air.png differ diff --git a/src/main/resources/assets/crimsonrevelations/textures/items/primal_arrow_earth.png b/src/main/resources/assets/crimsonrevelations/textures/items/primal_arrow_earth.png new file mode 100644 index 0000000..0a997f6 Binary files /dev/null and b/src/main/resources/assets/crimsonrevelations/textures/items/primal_arrow_earth.png differ diff --git a/src/main/resources/assets/crimsonrevelations/textures/items/primal_arrow_entropy.png b/src/main/resources/assets/crimsonrevelations/textures/items/primal_arrow_entropy.png new file mode 100644 index 0000000..d22b21b Binary files /dev/null and b/src/main/resources/assets/crimsonrevelations/textures/items/primal_arrow_entropy.png differ diff --git a/src/main/resources/assets/crimsonrevelations/textures/items/primal_arrow_fire.png b/src/main/resources/assets/crimsonrevelations/textures/items/primal_arrow_fire.png new file mode 100644 index 0000000..df2361d Binary files /dev/null and b/src/main/resources/assets/crimsonrevelations/textures/items/primal_arrow_fire.png differ diff --git a/src/main/resources/assets/crimsonrevelations/textures/items/primal_arrow_order.png b/src/main/resources/assets/crimsonrevelations/textures/items/primal_arrow_order.png new file mode 100644 index 0000000..9a23ebf Binary files /dev/null and b/src/main/resources/assets/crimsonrevelations/textures/items/primal_arrow_order.png differ diff --git a/src/main/resources/assets/crimsonrevelations/textures/items/primal_arrow_water.png b/src/main/resources/assets/crimsonrevelations/textures/items/primal_arrow_water.png new file mode 100644 index 0000000..9c2ad3e Binary files /dev/null and b/src/main/resources/assets/crimsonrevelations/textures/items/primal_arrow_water.png differ diff --git a/src/main/resources/assets/crimsonrevelations/textures/models/armor/cultist_archer_armor.png b/src/main/resources/assets/crimsonrevelations/textures/models/armor/cultist_archer_armor.png new file mode 100644 index 0000000..674ffbd Binary files /dev/null and b/src/main/resources/assets/crimsonrevelations/textures/models/armor/cultist_archer_armor.png differ