160 lines
6.9 KiB
Java
160 lines
6.9 KiB
Java
package net.minecraft.client.model;
|
|
|
|
import net.lax1dude.eaglercraft.v1_8.opengl.GlStateManager;
|
|
import net.minecraft.entity.Entity;
|
|
import net.minecraft.entity.item.EntityArmorStand;
|
|
import net.minecraft.util.EnumHandSide;
|
|
|
|
/**
|
|
* +
|
|
* This portion of EaglercraftX contains deobfuscated Minecraft 1.8 source code.
|
|
*
|
|
* Minecraft 1.8.8 bytecode is (c) 2015 Mojang AB. "Do not distribute!"
|
|
* Mod Coder Pack v9.18 deobfuscation configs are (c) Copyright by the MCP Team
|
|
*
|
|
* EaglercraftX 1.8 patch files (c) 2022-2024 lax1dude, hoosiertransfer,
|
|
* ayunami2000. All Rights Reserved.
|
|
*
|
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
* AND
|
|
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
* DISCLAIMED.
|
|
* IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
|
|
* DIRECT,
|
|
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
* (INCLUDING, BUT
|
|
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
* DATA, OR
|
|
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
|
* LIABILITY,
|
|
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
|
* OTHERWISE)
|
|
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
* POSSIBILITY OF SUCH DAMAGE.
|
|
*
|
|
*/
|
|
public class ModelArmorStand extends ModelArmorStandArmor {
|
|
public ModelRenderer standRightSide;
|
|
public ModelRenderer standLeftSide;
|
|
public ModelRenderer standWaist;
|
|
public ModelRenderer standBase;
|
|
|
|
public ModelArmorStand() {
|
|
this(0.0F);
|
|
}
|
|
|
|
public ModelArmorStand(float parFloat1) {
|
|
super(parFloat1, 64, 64);
|
|
this.bipedHead = new ModelRenderer(this, 0, 0);
|
|
this.bipedHead.addBox(-1.0F, -7.0F, -1.0F, 2, 7, 2, parFloat1);
|
|
this.bipedHead.setRotationPoint(0.0F, 0.0F, 0.0F);
|
|
this.bipedBody = new ModelRenderer(this, 0, 26);
|
|
this.bipedBody.addBox(-6.0F, 0.0F, -1.5F, 12, 3, 3, parFloat1);
|
|
this.bipedBody.setRotationPoint(0.0F, 0.0F, 0.0F);
|
|
this.bipedRightArm = new ModelRenderer(this, 24, 0);
|
|
this.bipedRightArm.addBox(-2.0F, -2.0F, -1.0F, 2, 12, 2, parFloat1);
|
|
this.bipedRightArm.setRotationPoint(-5.0F, 2.0F, 0.0F);
|
|
this.bipedLeftArm = new ModelRenderer(this, 32, 16);
|
|
this.bipedLeftArm.mirror = true;
|
|
this.bipedLeftArm.addBox(0.0F, -2.0F, -1.0F, 2, 12, 2, parFloat1);
|
|
this.bipedLeftArm.setRotationPoint(5.0F, 2.0F, 0.0F);
|
|
this.bipedRightLeg = new ModelRenderer(this, 8, 0);
|
|
this.bipedRightLeg.addBox(-1.0F, 0.0F, -1.0F, 2, 11, 2, parFloat1);
|
|
this.bipedRightLeg.setRotationPoint(-1.9F, 12.0F, 0.0F);
|
|
this.bipedLeftLeg = new ModelRenderer(this, 40, 16);
|
|
this.bipedLeftLeg.mirror = true;
|
|
this.bipedLeftLeg.addBox(-1.0F, 0.0F, -1.0F, 2, 11, 2, parFloat1);
|
|
this.bipedLeftLeg.setRotationPoint(1.9F, 12.0F, 0.0F);
|
|
this.standRightSide = new ModelRenderer(this, 16, 0);
|
|
this.standRightSide.addBox(-3.0F, 3.0F, -1.0F, 2, 7, 2, parFloat1);
|
|
this.standRightSide.setRotationPoint(0.0F, 0.0F, 0.0F);
|
|
this.standRightSide.showModel = true;
|
|
this.standLeftSide = new ModelRenderer(this, 48, 16);
|
|
this.standLeftSide.addBox(1.0F, 3.0F, -1.0F, 2, 7, 2, parFloat1);
|
|
this.standLeftSide.setRotationPoint(0.0F, 0.0F, 0.0F);
|
|
this.standWaist = new ModelRenderer(this, 0, 48);
|
|
this.standWaist.addBox(-4.0F, 10.0F, -1.0F, 8, 2, 2, parFloat1);
|
|
this.standWaist.setRotationPoint(0.0F, 0.0F, 0.0F);
|
|
this.standBase = new ModelRenderer(this, 0, 32);
|
|
this.standBase.addBox(-6.0F, 11.0F, -6.0F, 12, 1, 12, parFloat1);
|
|
this.standBase.setRotationPoint(0.0F, 12.0F, 0.0F);
|
|
}
|
|
|
|
/**
|
|
* +
|
|
* Sets the model's various rotation angles. For bipeds, par1
|
|
* and par2 are used for animating the movement of arms and
|
|
* legs, where par1 represents the time(so that arms and legs
|
|
* swing back and forth) and par2 represents how "far" arms and
|
|
* legs can swing at most.
|
|
*/
|
|
public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) {
|
|
super.setRotationAngles(f, f1, f2, f3, f4, f5, entity);
|
|
if (entity instanceof EntityArmorStand) {
|
|
EntityArmorStand entityarmorstand = (EntityArmorStand) entity;
|
|
this.bipedLeftArm.showModel = entityarmorstand.getShowArms();
|
|
this.bipedRightArm.showModel = entityarmorstand.getShowArms();
|
|
this.standBase.showModel = !entityarmorstand.hasNoBasePlate();
|
|
this.bipedLeftLeg.setRotationPoint(1.9F, 12.0F, 0.0F);
|
|
this.bipedRightLeg.setRotationPoint(-1.9F, 12.0F, 0.0F);
|
|
this.standRightSide.rotateAngleX = 0.017453292F * entityarmorstand.getBodyRotation().getX();
|
|
this.standRightSide.rotateAngleY = 0.017453292F * entityarmorstand.getBodyRotation().getY();
|
|
this.standRightSide.rotateAngleZ = 0.017453292F * entityarmorstand.getBodyRotation().getZ();
|
|
this.standLeftSide.rotateAngleX = 0.017453292F * entityarmorstand.getBodyRotation().getX();
|
|
this.standLeftSide.rotateAngleY = 0.017453292F * entityarmorstand.getBodyRotation().getY();
|
|
this.standLeftSide.rotateAngleZ = 0.017453292F * entityarmorstand.getBodyRotation().getZ();
|
|
this.standWaist.rotateAngleX = 0.017453292F * entityarmorstand.getBodyRotation().getX();
|
|
this.standWaist.rotateAngleY = 0.017453292F * entityarmorstand.getBodyRotation().getY();
|
|
this.standWaist.rotateAngleZ = 0.017453292F * entityarmorstand.getBodyRotation().getZ();
|
|
float f6 = (entityarmorstand.getLeftLegRotation().getX() + entityarmorstand.getRightLegRotation().getX())
|
|
/ 2.0F;
|
|
float f7 = (entityarmorstand.getLeftLegRotation().getY() + entityarmorstand.getRightLegRotation().getY())
|
|
/ 2.0F;
|
|
float f8 = (entityarmorstand.getLeftLegRotation().getZ() + entityarmorstand.getRightLegRotation().getZ())
|
|
/ 2.0F;
|
|
this.standBase.rotateAngleX = 0.0F;
|
|
this.standBase.rotateAngleY = 0.017453292F * -entity.rotationYaw;
|
|
this.standBase.rotateAngleZ = 0.0F;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* +
|
|
* Sets the models various rotation angles then renders the
|
|
* model.
|
|
*/
|
|
public void render(Entity entityIn, float scale, float parFloat2, float parFloat3, float parFloat4, float parFloat5,
|
|
float parFloat6) {
|
|
super.render(entityIn, scale, parFloat2, parFloat3, parFloat4, parFloat5, parFloat6);
|
|
GlStateManager.pushMatrix();
|
|
if (this.isChild) {
|
|
float f = 2.0F;
|
|
GlStateManager.scale(1.0F / f, 1.0F / f, 1.0F / f);
|
|
GlStateManager.translate(0.0F, 24.0F * parFloat6, 0.0F);
|
|
this.standRightSide.render(parFloat6);
|
|
this.standLeftSide.render(parFloat6);
|
|
this.standWaist.render(parFloat6);
|
|
this.standBase.render(parFloat6);
|
|
} else {
|
|
if (entityIn.isSneaking()) {
|
|
GlStateManager.translate(0.0F, 0.2F, 0.0F);
|
|
}
|
|
|
|
this.standRightSide.render(parFloat6);
|
|
this.standLeftSide.render(parFloat6);
|
|
this.standWaist.render(parFloat6);
|
|
this.standBase.render(parFloat6);
|
|
}
|
|
|
|
GlStateManager.popMatrix();
|
|
}
|
|
|
|
public void postRenderArm(float scale) {
|
|
// TODO: implement offhand
|
|
boolean flag = this.bipedRightArm.showModel;
|
|
this.bipedRightArm.showModel = true;
|
|
super.postRenderArm(scale, EnumHandSide.RIGHT);
|
|
this.bipedRightArm.showModel = flag;
|
|
}
|
|
} |