Made SpectatorRenderer code readable for the average human who does not happen to know all of the MCPBot's field and function name translations.
This commit is contained in:
@@ -30,48 +30,53 @@ public class SpectatorRenderer {
|
||||
|
||||
private final Minecraft mc = Minecraft.getMinecraft();
|
||||
|
||||
private EntityPlayer getSpectatedPlayer() {
|
||||
Entity current = ReplayHandler.getCurrentEntity();
|
||||
if(!(current instanceof EntityPlayer)) return null;
|
||||
return (EntityPlayer)current;
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public void renderSpectatorHand(RenderHandEvent event) {
|
||||
public void renderHandEvent(RenderHandEvent event) {
|
||||
if(!ReplayHandler.isInReplay() || ReplayHandler.isCamera()) {
|
||||
return;
|
||||
}
|
||||
|
||||
Entity current = ReplayHandler.getCurrentEntity();
|
||||
if(!(current instanceof EntityPlayer)) return;
|
||||
EntityPlayer entityPlayer = (EntityPlayer)current;
|
||||
EntityPlayer entityPlayer = getSpectatedPlayer();
|
||||
if(entityPlayer == null) return;
|
||||
|
||||
event.setCanceled(true);
|
||||
|
||||
GlStateManager.matrixMode(5889);
|
||||
GlStateManager.matrixMode(GL11.GL_PROJECTION);
|
||||
GlStateManager.loadIdentity();
|
||||
|
||||
float f1 = 0.07F;
|
||||
|
||||
if (this.mc.gameSettings.anaglyph) {
|
||||
if(this.mc.gameSettings.anaglyph) {
|
||||
GlStateManager.translate((float)(-(event.renderPass * 2 - 1)) * f1, 0.0F, 0.0F);
|
||||
}
|
||||
|
||||
Project.gluPerspective(mc.entityRenderer.getFOVModifier(event.partialTicks, false),
|
||||
(float)this.mc.displayWidth / (float) this.mc.displayHeight, 0.05F, mc.entityRenderer.farPlaneDistance * 2.0F);
|
||||
GlStateManager.matrixMode(5888);
|
||||
|
||||
GlStateManager.matrixMode(GL11.GL_MODELVIEW);
|
||||
GlStateManager.loadIdentity();
|
||||
|
||||
if (this.mc.gameSettings.anaglyph)
|
||||
{
|
||||
if(this.mc.gameSettings.anaglyph) {
|
||||
GlStateManager.translate((float)(event.renderPass * 2 - 1) * 0.1F, 0.0F, 0.0F);
|
||||
}
|
||||
|
||||
GlStateManager.pushMatrix();
|
||||
mc.entityRenderer.hurtCameraEffect(event.partialTicks);
|
||||
|
||||
if (this.mc.gameSettings.viewBobbing)
|
||||
{
|
||||
if(this.mc.gameSettings.viewBobbing) {
|
||||
mc.entityRenderer.setupViewBobbing(event.partialTicks);
|
||||
}
|
||||
|
||||
boolean flag = this.mc.getRenderViewEntity() instanceof EntityLivingBase && ((EntityLivingBase)this.mc.getRenderViewEntity()).isPlayerSleeping();
|
||||
boolean sleeping = this.mc.getRenderViewEntity() instanceof EntityLivingBase &&
|
||||
((EntityLivingBase)this.mc.getRenderViewEntity()).isPlayerSleeping();
|
||||
|
||||
if (this.mc.gameSettings.thirdPersonView == 0 && !flag && !this.mc.gameSettings.hideGUI)
|
||||
{
|
||||
if(this.mc.gameSettings.thirdPersonView == 0 && !sleeping && !this.mc.gameSettings.hideGUI) {
|
||||
mc.entityRenderer.enableLightmap();
|
||||
renderItemInFirstPerson(event.partialTicks);
|
||||
mc.entityRenderer.disableLightmap();
|
||||
@@ -79,151 +84,75 @@ public class SpectatorRenderer {
|
||||
|
||||
GlStateManager.popMatrix();
|
||||
|
||||
if (this.mc.gameSettings.thirdPersonView == 0 && !flag)
|
||||
{
|
||||
if(this.mc.gameSettings.thirdPersonView == 0 && !sleeping) {
|
||||
renderOverlays(event.partialTicks, entityPlayer);
|
||||
mc.entityRenderer.hurtCameraEffect(event.partialTicks);
|
||||
}
|
||||
|
||||
if (this.mc.gameSettings.viewBobbing)
|
||||
{
|
||||
if(this.mc.gameSettings.viewBobbing) {
|
||||
mc.entityRenderer.setupViewBobbing(event.partialTicks);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void renderOverlays(float p_78447_1_, EntityPlayer player) {
|
||||
GlStateManager.disableAlpha();
|
||||
public void renderItemInFirstPerson(float partialTicks) {
|
||||
EntityPlayer entityPlayer = getSpectatedPlayer();
|
||||
|
||||
if(player.isEntityInsideOpaqueBlock()) {
|
||||
IBlockState iblockstate = this.mc.theWorld.getBlockState(new BlockPos(player));
|
||||
float equippedProgressState = 1.0F - (prevEquippedProgress + (equippedProgress - prevEquippedProgress) * partialTicks);
|
||||
float swingProgress = entityPlayer.getSwingProgress(partialTicks);
|
||||
float rotationPitchState = entityPlayer.prevRotationPitch + (entityPlayer.rotationPitch - entityPlayer.prevRotationPitch) * partialTicks;
|
||||
float rotationYawState = entityPlayer.prevRotationYaw + (entityPlayer.rotationYaw - entityPlayer.prevRotationYaw) * partialTicks;
|
||||
|
||||
for (int i = 0; i < 8; ++i)
|
||||
{
|
||||
double d0 = player.posX + (double)(((float)((i >> 0) % 2) - 0.5F) * player.width * 0.8F);
|
||||
double d1 = player.posY + (double)(((float)((i >> 1) % 2) - 0.5F) * 0.1F);
|
||||
double d2 = player.posZ + (double)(((float)((i >> 2) % 2) - 0.5F) * player.width * 0.8F);
|
||||
BlockPos blockpos = new BlockPos(d0, d1 + (double)player.getEyeHeight(), d2);
|
||||
IBlockState iblockstate1 = this.mc.theWorld.getBlockState(blockpos);
|
||||
|
||||
if (iblockstate1.getBlock().isVisuallyOpaque())
|
||||
{
|
||||
iblockstate = iblockstate1;
|
||||
}
|
||||
}
|
||||
|
||||
if (iblockstate.getBlock().getRenderType() != -1)
|
||||
{
|
||||
mc.entityRenderer.itemRenderer.func_178108_a(p_78447_1_, this.mc.getBlockRendererDispatcher().getBlockModelShapes().getTexture(iblockstate));
|
||||
}
|
||||
}
|
||||
|
||||
if(!player.isSpectator()) {
|
||||
if (player.isInsideOfMaterial(Material.water)) {
|
||||
renderWaterOverlayTexture(p_78447_1_, player);
|
||||
}
|
||||
|
||||
if (this.mc.thePlayer.isBurning()) {
|
||||
mc.entityRenderer.itemRenderer.renderFireInFirstPerson(p_78447_1_);
|
||||
}
|
||||
}
|
||||
|
||||
GlStateManager.enableAlpha();
|
||||
}
|
||||
|
||||
public void renderWaterOverlayTexture(float p_78448_1_, EntityPlayer player)
|
||||
{
|
||||
this.mc.getTextureManager().bindTexture(mc.entityRenderer.itemRenderer.RES_UNDERWATER_OVERLAY);
|
||||
Tessellator tessellator = Tessellator.getInstance();
|
||||
WorldRenderer worldrenderer = tessellator.getWorldRenderer();
|
||||
float f1 = player.getBrightness(p_78448_1_);
|
||||
GlStateManager.color(f1, f1, f1, 0.5F);
|
||||
GlStateManager.enableBlend();
|
||||
GlStateManager.tryBlendFuncSeparate(770, 771, 1, 0);
|
||||
GlStateManager.pushMatrix();
|
||||
float f2 = 4.0F;
|
||||
float f3 = -1.0F;
|
||||
float f4 = 1.0F;
|
||||
float f5 = -1.0F;
|
||||
float f6 = 1.0F;
|
||||
float f7 = -0.5F;
|
||||
float f8 = -player.rotationYaw / 64.0F;
|
||||
float f9 = player.rotationPitch / 64.0F;
|
||||
worldrenderer.startDrawingQuads();
|
||||
worldrenderer.addVertexWithUV((double)f3, (double)f5, (double)f7, (double)(f2 + f8), (double)(f2 + f9));
|
||||
worldrenderer.addVertexWithUV((double)f4, (double)f5, (double)f7, (double)(0.0F + f8), (double)(f2 + f9));
|
||||
worldrenderer.addVertexWithUV((double)f4, (double)f6, (double)f7, (double)(0.0F + f8), (double)(0.0F + f9));
|
||||
worldrenderer.addVertexWithUV((double)f3, (double)f6, (double)f7, (double)(f2 + f8), (double)(0.0F + f9));
|
||||
tessellator.draw();
|
||||
GlStateManager.popMatrix();
|
||||
GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
GlStateManager.disableBlend();
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public void tickEvent(TickEvent event) {
|
||||
if(event.type != TickEvent.Type.CLIENT) return;
|
||||
if(event.phase != TickEvent.Phase.START) return;
|
||||
Entity current = ReplayHandler.getCurrentEntity();
|
||||
if(!(current instanceof EntityPlayer)) return;
|
||||
EntityPlayer entityPlayer = (EntityPlayer)current;
|
||||
updateEquippedItem(entityPlayer);
|
||||
updateArmYawAndPitch(entityPlayer);
|
||||
}
|
||||
|
||||
public void renderItemInFirstPerson(float p_78440_1_) {
|
||||
//System.out.println("HERE");
|
||||
float f1 = 1.0F - (prevEquippedProgress + (equippedProgress - prevEquippedProgress) * p_78440_1_);
|
||||
Entity current = ReplayHandler.getCurrentEntity();
|
||||
if(!(current instanceof EntityPlayer)) return;
|
||||
EntityPlayer entityPlayer = (EntityPlayer)current;
|
||||
float f2 = entityPlayer.getSwingProgress(p_78440_1_);
|
||||
float f3 = entityPlayer.prevRotationPitch + (entityPlayer.rotationPitch - entityPlayer.prevRotationPitch) * p_78440_1_;
|
||||
float f4 = entityPlayer.prevRotationYaw + (entityPlayer.rotationYaw - entityPlayer.prevRotationYaw) * p_78440_1_;
|
||||
mc.entityRenderer.itemRenderer.func_178101_a(f3, f4); //does not rely on a player
|
||||
//lights the hand
|
||||
mc.entityRenderer.itemRenderer.func_178101_a(rotationPitchState, rotationYawState);
|
||||
setLightmapTextureCoords(entityPlayer);
|
||||
rotateHand(entityPlayer, p_78440_1_);
|
||||
|
||||
//sets the rotation of the hand
|
||||
rotateHandPosition(entityPlayer, partialTicks);
|
||||
|
||||
GlStateManager.enableRescaleNormal();
|
||||
GlStateManager.pushMatrix();
|
||||
|
||||
if (itemToRender != null)
|
||||
{
|
||||
if (itemToRender.getItem() == Items.filled_map) {
|
||||
renderMapInHand(entityPlayer, f3, f1, f2);
|
||||
}
|
||||
else if (entityPlayer.getItemInUseCount() > 0)
|
||||
{
|
||||
EnumAction enumaction = itemToRender.getItemUseAction();
|
||||
if (itemToRender != null) {
|
||||
|
||||
switch (ItemRenderer.SwitchEnumAction.field_178094_a[enumaction.ordinal()])
|
||||
{
|
||||
case 1:
|
||||
mc.entityRenderer.itemRenderer.func_178096_b(f1, 0.0F);
|
||||
//treat map rendering diffently
|
||||
if(itemToRender.getItem() == Items.filled_map) {
|
||||
renderMapInHand(entityPlayer, rotationPitchState, equippedProgressState, swingProgress);
|
||||
}
|
||||
|
||||
else if(entityPlayer.getItemInUseCount() > 0) {
|
||||
EnumAction action = itemToRender.getItemUseAction();
|
||||
|
||||
//places the arm according to the current action
|
||||
switch(action) {
|
||||
case NONE:
|
||||
mc.entityRenderer.itemRenderer.func_178096_b(equippedProgressState, 0.0F);
|
||||
break;
|
||||
case 2:
|
||||
case 3:
|
||||
renderItem1(entityPlayer, p_78440_1_);
|
||||
mc.entityRenderer.itemRenderer.func_178096_b(f1, 0.0F);
|
||||
case EAT:
|
||||
case DRINK:
|
||||
prepareFoodItem(entityPlayer, partialTicks);
|
||||
mc.entityRenderer.itemRenderer.func_178096_b(equippedProgressState, 0.0F);
|
||||
break;
|
||||
case 4:
|
||||
mc.entityRenderer.itemRenderer.func_178096_b(f1, 0.0F);
|
||||
case BLOCK:
|
||||
mc.entityRenderer.itemRenderer.func_178096_b(equippedProgressState, 0.0F);
|
||||
//rotate into blocking animation position
|
||||
mc.entityRenderer.itemRenderer.func_178103_d();
|
||||
break;
|
||||
case 5:
|
||||
mc.entityRenderer.itemRenderer.func_178096_b(f1, 0.0F);
|
||||
renderItem2(p_78440_1_, entityPlayer);
|
||||
case BOW:
|
||||
mc.entityRenderer.itemRenderer.func_178096_b(equippedProgressState, 0.0F);
|
||||
prepareBowItem(partialTicks, entityPlayer);
|
||||
}
|
||||
}
|
||||
else {
|
||||
//those calls are fine
|
||||
mc.entityRenderer.itemRenderer.func_178105_d(f2);
|
||||
mc.entityRenderer.itemRenderer.func_178096_b(f1, f2);
|
||||
//swings the arm
|
||||
mc.entityRenderer.itemRenderer.func_178105_d(swingProgress);
|
||||
mc.entityRenderer.itemRenderer.func_178096_b(equippedProgressState, swingProgress);
|
||||
}
|
||||
|
||||
mc.entityRenderer.itemRenderer.renderItem(entityPlayer, itemToRender, ItemCameraTransforms.TransformType.FIRST_PERSON);
|
||||
}
|
||||
else if (!entityPlayer.isInvisible()) {
|
||||
func_178095_a(entityPlayer, f1, f2);
|
||||
renderPlayerHand(entityPlayer, equippedProgressState, swingProgress);
|
||||
}
|
||||
|
||||
GlStateManager.popMatrix();
|
||||
@@ -231,33 +160,11 @@ public class SpectatorRenderer {
|
||||
RenderHelper.disableStandardItemLighting();
|
||||
}
|
||||
|
||||
public void setLightmapTextureCoords(EntityPlayer p_178109_1_) {
|
||||
int i = this.mc.theWorld.getCombinedLight(new BlockPos(p_178109_1_.posX, p_178109_1_.posY + (double)p_178109_1_.getEyeHeight(), p_178109_1_.posZ), 0);
|
||||
float f = (float)(i & 65535);
|
||||
float f1 = (float)(i >> 16);
|
||||
OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, f, f1);
|
||||
}
|
||||
/**
|
||||
* Rendering a Map Item
|
||||
*/
|
||||
|
||||
private float prevRenderArmPitch, renderArmPitch;
|
||||
private float prevRenderArmYaw, renderArmYaw;
|
||||
|
||||
public void updateArmYawAndPitch(EntityPlayer player) {
|
||||
this.prevRenderArmYaw = this.renderArmYaw;
|
||||
this.prevRenderArmPitch = this.renderArmPitch;
|
||||
this.renderArmPitch = (float)((double)this.renderArmPitch + (double)(player.rotationPitch - this.renderArmPitch) * 0.5D);
|
||||
this.renderArmYaw = (float)((double)this.renderArmYaw + (double)(player.rotationYaw - this.renderArmYaw) * 0.5D);
|
||||
|
||||
}
|
||||
|
||||
public void rotateHand(EntityPlayer p_178110_1_, float p_178110_2_) {
|
||||
float f1 = prevRenderArmPitch + (renderArmPitch - prevRenderArmPitch) * p_178110_2_;
|
||||
float f2 = prevRenderArmYaw + (renderArmYaw - prevRenderArmYaw) * p_178110_2_;
|
||||
GlStateManager.rotate((p_178110_1_.rotationPitch - f1) * 0.1F, 1.0F, 0.0F, 0.0F);
|
||||
GlStateManager.rotate((p_178110_1_.rotationYaw - f2) * 0.1F, 0.0F, 1.0F, 0.0F);
|
||||
}
|
||||
|
||||
public void renderMapInHand(EntityPlayer p_178097_1_, float p_178097_2_, float p_178097_3_, float p_178097_4_)
|
||||
{
|
||||
public void renderMapInHand(EntityPlayer p_178097_1_, float p_178097_2_, float p_178097_3_, float p_178097_4_) {
|
||||
float f3 = -0.4F * MathHelper.sin(MathHelper.sqrt_float(p_178097_4_) * (float) Math.PI);
|
||||
float f4 = 0.2F * MathHelper.sin(MathHelper.sqrt_float(p_178097_4_) * (float)Math.PI * 2.0F);
|
||||
float f5 = -0.2F * MathHelper.sin(p_178097_4_ * (float)Math.PI);
|
||||
@@ -269,7 +176,7 @@ public class SpectatorRenderer {
|
||||
GlStateManager.rotate(90.0F, 0.0F, 1.0F, 0.0F);
|
||||
GlStateManager.rotate(f6 * -85.0F, 0.0F, 0.0F, 1.0F);
|
||||
GlStateManager.rotate(0.0F, 1.0F, 0.0F, 0.0F);
|
||||
renderArmSkin(p_178097_1_);
|
||||
renderMapArms(p_178097_1_);
|
||||
float f7 = MathHelper.sin(p_178097_4_ * p_178097_4_ * (float)Math.PI);
|
||||
float f8 = MathHelper.sin(MathHelper.sqrt_float(p_178097_4_) * (float)Math.PI);
|
||||
GlStateManager.rotate(f7 * -20.0F, 0.0F, 1.0F, 0.0F);
|
||||
@@ -293,58 +200,153 @@ public class SpectatorRenderer {
|
||||
tessellator.draw();
|
||||
MapData mapdata = Items.filled_map.getMapData(itemToRender, this.mc.theWorld);
|
||||
|
||||
if (mapdata != null)
|
||||
{
|
||||
if(mapdata != null) {
|
||||
this.mc.entityRenderer.getMapItemRenderer().func_148250_a(mapdata, false);
|
||||
}
|
||||
}
|
||||
|
||||
public void renderArmSkin(EntityPlayer p_178102_1_) {
|
||||
bindPlayerTexture(p_178102_1_);
|
||||
public void renderMapArms(EntityPlayer entityPlayer) {
|
||||
bindPlayerTexture(entityPlayer);
|
||||
Render render = mc.entityRenderer.itemRenderer.renderManager.getEntityRenderObject((EntityPlayer)ReplayHandler.getCurrentEntity());
|
||||
RenderPlayer renderplayer = (RenderPlayer)render;
|
||||
|
||||
if (!p_178102_1_.isInvisible()) {
|
||||
func_180534_a(renderplayer, p_178102_1_);
|
||||
func_178106_b(renderplayer, p_178102_1_);
|
||||
if(!entityPlayer.isInvisible()) {
|
||||
renderRightMapArm(renderplayer, entityPlayer);
|
||||
renderLeftMapArm(renderplayer, entityPlayer);
|
||||
}
|
||||
}
|
||||
|
||||
public void func_180534_a(RenderPlayer p_180534_1_, EntityPlayer player) {
|
||||
public void renderRightMapArm(RenderPlayer renderPlayer, EntityPlayer entityPlayer) {
|
||||
GlStateManager.pushMatrix();
|
||||
GlStateManager.rotate(54.0F, 0.0F, 1.0F, 0.0F);
|
||||
GlStateManager.rotate(64.0F, 1.0F, 0.0F, 0.0F);
|
||||
GlStateManager.rotate(-62.0F, 0.0F, 0.0F, 1.0F);
|
||||
GlStateManager.translate(0.25F, -0.85F, 0.75F);
|
||||
func_177138_b(p_180534_1_, player);
|
||||
renderRightArm(renderPlayer, entityPlayer);
|
||||
GlStateManager.popMatrix();
|
||||
}
|
||||
|
||||
public void func_178106_b(RenderPlayer p_178106_1_, EntityPlayer player) {
|
||||
public void renderLeftMapArm(RenderPlayer renderPlayer, EntityPlayer entityPlayer) {
|
||||
GlStateManager.pushMatrix();
|
||||
GlStateManager.rotate(92.0F, 0.0F, 1.0F, 0.0F);
|
||||
GlStateManager.rotate(45.0F, 1.0F, 0.0F, 0.0F);
|
||||
GlStateManager.rotate(41.0F, 0.0F, 0.0F, 1.0F);
|
||||
GlStateManager.translate(-0.3F, -1.1F, 0.45F);
|
||||
func_177139_c(p_178106_1_, player);
|
||||
renderRightArm(renderPlayer, entityPlayer);
|
||||
GlStateManager.popMatrix();
|
||||
}
|
||||
|
||||
public void func_177139_c(RenderPlayer r, EntityPlayer p_177139_1_) {
|
||||
float f = 1.0F;
|
||||
GlStateManager.color(f, f, f);
|
||||
ModelPlayer modelplayer = r.getPlayerModel();
|
||||
func_177137_d(r, p_177139_1_);
|
||||
modelplayer.isSneak = false;
|
||||
modelplayer.swingProgress = 0.0F;
|
||||
modelplayer.setRotationAngles(0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, p_177139_1_);
|
||||
modelplayer.func_178726_b();
|
||||
/**
|
||||
* Basic Rendering Preparations
|
||||
*/
|
||||
|
||||
public void setLightmapTextureCoords(EntityPlayer p_178109_1_) {
|
||||
int i = this.mc.theWorld.getCombinedLight(new BlockPos(p_178109_1_.posX, p_178109_1_.posY + (double)p_178109_1_.getEyeHeight(), p_178109_1_.posZ), 0);
|
||||
float f = (float)(i & 65535);
|
||||
float f1 = (float)(i >> 16);
|
||||
OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, f, f1);
|
||||
}
|
||||
|
||||
public void renderItem1(EntityPlayer p_178104_1_, float p_178104_2_) {
|
||||
float f1 = (float)p_178104_1_.getItemInUseCount() - p_178104_2_ + 1.0F;
|
||||
public void rotateHandPosition(EntityPlayer p_178110_1_, float p_178110_2_) {
|
||||
float f1 = prevRenderArmPitch + (renderArmPitch - prevRenderArmPitch) * p_178110_2_;
|
||||
float f2 = prevRenderArmYaw + (renderArmYaw - prevRenderArmYaw) * p_178110_2_;
|
||||
GlStateManager.rotate((p_178110_1_.rotationPitch - f1) * 0.1F, 1.0F, 0.0F, 0.0F);
|
||||
GlStateManager.rotate((p_178110_1_.rotationYaw - f2) * 0.1F, 0.0F, 1.0F, 0.0F);
|
||||
}
|
||||
|
||||
private void bindPlayerTexture(EntityPlayer player) {
|
||||
this.mc.getTextureManager().bindTexture(
|
||||
SkinProvider.getResourceLocationForPlayerUUID(player.getUniqueID()));
|
||||
}
|
||||
|
||||
public void renderPlayerHand(EntityPlayer p_178095_1_, float equippedProgressState, float swingProgress) {
|
||||
float f2 = -0.3F * MathHelper.sin(MathHelper.sqrt_float(swingProgress) * (float)Math.PI);
|
||||
float f3 = 0.4F * MathHelper.sin(MathHelper.sqrt_float(swingProgress) * (float)Math.PI * 2.0F);
|
||||
float f4 = -0.4F * MathHelper.sin(swingProgress * (float)Math.PI);
|
||||
|
||||
GlStateManager.translate(f2, f3, f4);
|
||||
GlStateManager.translate(0.64000005F, -0.6F, -0.71999997F);
|
||||
GlStateManager.translate(0.0F, equippedProgressState * -0.6F, 0.0F);
|
||||
GlStateManager.rotate(45.0F, 0.0F, 1.0F, 0.0F);
|
||||
|
||||
float f5 = MathHelper.sin(swingProgress * swingProgress * (float)Math.PI);
|
||||
float f6 = MathHelper.sin(MathHelper.sqrt_float(swingProgress) * (float)Math.PI);
|
||||
|
||||
GlStateManager.rotate(f6 * 70.0F, 0.0F, 1.0F, 0.0F);
|
||||
GlStateManager.rotate(f5 * -20.0F, 0.0F, 0.0F, 1.0F);
|
||||
|
||||
bindPlayerTexture(p_178095_1_);
|
||||
|
||||
GlStateManager.translate(-1.0F, 3.6F, 3.5F);
|
||||
GlStateManager.rotate(120.0F, 0.0F, 0.0F, 1.0F);
|
||||
GlStateManager.rotate(200.0F, 1.0F, 0.0F, 0.0F);
|
||||
GlStateManager.rotate(-135.0F, 0.0F, 1.0F, 0.0F);
|
||||
GlStateManager.scale(1.0F, 1.0F, 1.0F);
|
||||
GlStateManager.translate(5.6F, 0.0F, 0.0F);
|
||||
|
||||
Render render = mc.entityRenderer.itemRenderer.renderManager.getEntityRenderObject(p_178095_1_);
|
||||
RenderPlayer renderplayer = (RenderPlayer)render;
|
||||
|
||||
renderRightArm(renderplayer, p_178095_1_);
|
||||
}
|
||||
|
||||
public void renderRightArm(RenderPlayer renderPlayer, EntityPlayer entityPlayer) {
|
||||
float f = 1.0F;
|
||||
GlStateManager.color(f, f, f);
|
||||
ModelPlayer modelplayer = renderPlayer.getPlayerModel();
|
||||
prepareModelPlayer(renderPlayer, entityPlayer);
|
||||
modelplayer.swingProgress = 0.0F;
|
||||
modelplayer.isSneak = false;
|
||||
modelplayer.setRotationAngles(0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, entityPlayer);
|
||||
modelplayer.func_178725_a();
|
||||
}
|
||||
|
||||
private void prepareModelPlayer(RenderPlayer renderPlayer, EntityPlayer entityPlayer) {
|
||||
ModelPlayer modelplayer = renderPlayer.getPlayerModel();
|
||||
|
||||
if (entityPlayer.isSpectator()) {
|
||||
modelplayer.setInvisible(false);
|
||||
modelplayer.bipedHead.showModel = true;
|
||||
modelplayer.bipedHeadwear.showModel = true;
|
||||
} else {
|
||||
ItemStack itemstack = entityPlayer.inventory.getCurrentItem();
|
||||
modelplayer.setInvisible(true);
|
||||
modelplayer.bipedHeadwear.showModel = entityPlayer.func_175148_a(EnumPlayerModelParts.HAT);
|
||||
modelplayer.bipedBodyWear.showModel = entityPlayer.func_175148_a(EnumPlayerModelParts.JACKET);
|
||||
modelplayer.bipedLeftLegwear.showModel = entityPlayer.func_175148_a(EnumPlayerModelParts.LEFT_PANTS_LEG);
|
||||
modelplayer.bipedRightLegwear.showModel = entityPlayer.func_175148_a(EnumPlayerModelParts.RIGHT_PANTS_LEG);
|
||||
modelplayer.bipedLeftArmwear.showModel = entityPlayer.func_175148_a(EnumPlayerModelParts.LEFT_SLEEVE);
|
||||
modelplayer.bipedRightArmwear.showModel = entityPlayer.func_175148_a(EnumPlayerModelParts.RIGHT_SLEEVE);
|
||||
modelplayer.heldItemLeft = 0;
|
||||
modelplayer.aimedBow = false;
|
||||
modelplayer.isSneak = entityPlayer.isSneaking();
|
||||
|
||||
if (itemstack == null) {
|
||||
modelplayer.heldItemRight = 0;
|
||||
} else {
|
||||
modelplayer.heldItemRight = 1;
|
||||
|
||||
if(entityPlayer.getItemInUseCount() > 0) {
|
||||
EnumAction enumaction = itemstack.getItemUseAction();
|
||||
|
||||
if (enumaction == EnumAction.BLOCK) {
|
||||
modelplayer.heldItemRight = 3;
|
||||
} else if (enumaction == EnumAction.BOW) {
|
||||
modelplayer.aimedBow = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Preparing the Rendering of drawn Bows or Food/Potions which are being consumed
|
||||
*/
|
||||
|
||||
public void prepareFoodItem(EntityPlayer entityPlayer, float partialTicks) {
|
||||
float f1 = (float)entityPlayer.getItemInUseCount() - partialTicks + 1.0F;
|
||||
float f2 = f1 / (float)itemToRender.getMaxItemUseDuration();
|
||||
float f3 = MathHelper.abs(MathHelper.cos(f1 / 4.0F * (float)Math.PI) * 0.1F);
|
||||
float f3 = MathHelper.abs(MathHelper.cos(f1 / 4.0F * (float) Math.PI) * 0.1F);
|
||||
|
||||
if (f2 >= 0.8F) {
|
||||
f3 = 0.0F;
|
||||
@@ -358,119 +360,54 @@ public class SpectatorRenderer {
|
||||
GlStateManager.rotate(f4 * 30.0F, 0.0F, 0.0F, 1.0F);
|
||||
}
|
||||
|
||||
public void renderItem2(float p_178098_1_, EntityPlayer p_178098_2_) {
|
||||
public void prepareBowItem(float partialTicks, EntityPlayer player) {
|
||||
GlStateManager.rotate(-18.0F, 0.0F, 0.0F, 1.0F);
|
||||
GlStateManager.rotate(-12.0F, 0.0F, 1.0F, 0.0F);
|
||||
GlStateManager.rotate(-8.0F, 1.0F, 0.0F, 0.0F);
|
||||
GlStateManager.translate(-0.9F, 0.2F, 0.0F);
|
||||
float f1 = (float)itemToRender.getMaxItemUseDuration() - ((float)p_178098_2_.getItemInUseCount() - p_178098_1_ + 1.0F);
|
||||
float f2 = f1 / 20.0F;
|
||||
f2 = (f2 * f2 + f2 * 2.0F) / 3.0F;
|
||||
float drawState = (float)itemToRender.getMaxItemUseDuration() -
|
||||
((float)player.getItemInUseCount() - partialTicks + 1.0F);
|
||||
float drawTicks = drawState / 20.0F;
|
||||
drawTicks = (drawTicks * drawTicks + drawTicks * 2.0F) / 3.0F;
|
||||
|
||||
if (f2 > 1.0F)
|
||||
{
|
||||
f2 = 1.0F;
|
||||
if (drawTicks > 1.0F) {
|
||||
drawTicks = 1.0F;
|
||||
}
|
||||
|
||||
if (f2 > 0.1F)
|
||||
{
|
||||
float f3 = MathHelper.sin((f1 - 0.1F) * 1.3F);
|
||||
float f4 = f2 - 0.1F;
|
||||
if (drawTicks > 0.1F) {
|
||||
float f3 = MathHelper.sin((drawState - 0.1F) * 1.3F);
|
||||
float f4 = drawTicks - 0.1F;
|
||||
float f5 = f3 * f4;
|
||||
GlStateManager.translate(f5 * 0.0F, f5 * 0.01F, f5 * 0.0F);
|
||||
}
|
||||
|
||||
GlStateManager.translate(f2 * 0.0F, f2 * 0.0F, f2 * 0.1F);
|
||||
GlStateManager.scale(1.0F, 1.0F, 1.0F + f2 * 0.2F);
|
||||
GlStateManager.translate(drawTicks * 0.0F, drawTicks * 0.0F, drawTicks * 0.1F);
|
||||
GlStateManager.scale(1.0F, 1.0F, 1.0F + drawTicks * 0.2F);
|
||||
}
|
||||
|
||||
private void bindPlayerTexture(EntityPlayer player) {
|
||||
this.mc.getTextureManager().bindTexture(
|
||||
SkinProvider.getResourceLocationForPlayerUUID(player.getUniqueID()));
|
||||
/**
|
||||
* Handling the spectated Player's Arm Item, Hand Pitch and Yaw, and Equipment process
|
||||
*/
|
||||
|
||||
@SubscribeEvent
|
||||
public void tickEvent(TickEvent event) {
|
||||
if(event.type != TickEvent.Type.CLIENT) return;
|
||||
if(event.phase != TickEvent.Phase.START) return;
|
||||
Entity current = ReplayHandler.getCurrentEntity();
|
||||
if(!(current instanceof EntityPlayer)) return;
|
||||
EntityPlayer entityPlayer = (EntityPlayer)current;
|
||||
updateEquippedItem(entityPlayer);
|
||||
updateArmYawAndPitch(entityPlayer);
|
||||
}
|
||||
|
||||
public void func_178095_a(EntityPlayer p_178095_1_, float p_178095_2_, float p_178095_3_)
|
||||
{
|
||||
float f2 = -0.3F * MathHelper.sin(MathHelper.sqrt_float(p_178095_3_) * (float)Math.PI);
|
||||
float f3 = 0.4F * MathHelper.sin(MathHelper.sqrt_float(p_178095_3_) * (float)Math.PI * 2.0F);
|
||||
float f4 = -0.4F * MathHelper.sin(p_178095_3_ * (float)Math.PI);
|
||||
GlStateManager.translate(f2, f3, f4);
|
||||
GlStateManager.translate(0.64000005F, -0.6F, -0.71999997F);
|
||||
GlStateManager.translate(0.0F, p_178095_2_ * -0.6F, 0.0F);
|
||||
GlStateManager.rotate(45.0F, 0.0F, 1.0F, 0.0F);
|
||||
float f5 = MathHelper.sin(p_178095_3_ * p_178095_3_ * (float)Math.PI);
|
||||
float f6 = MathHelper.sin(MathHelper.sqrt_float(p_178095_3_) * (float)Math.PI);
|
||||
GlStateManager.rotate(f6 * 70.0F, 0.0F, 1.0F, 0.0F);
|
||||
GlStateManager.rotate(f5 * -20.0F, 0.0F, 0.0F, 1.0F);
|
||||
bindPlayerTexture(p_178095_1_);
|
||||
GlStateManager.translate(-1.0F, 3.6F, 3.5F);
|
||||
GlStateManager.rotate(120.0F, 0.0F, 0.0F, 1.0F);
|
||||
GlStateManager.rotate(200.0F, 1.0F, 0.0F, 0.0F);
|
||||
GlStateManager.rotate(-135.0F, 0.0F, 1.0F, 0.0F);
|
||||
GlStateManager.scale(1.0F, 1.0F, 1.0F);
|
||||
GlStateManager.translate(5.6F, 0.0F, 0.0F);
|
||||
Render render = mc.entityRenderer.itemRenderer.renderManager.getEntityRenderObject(p_178095_1_);
|
||||
RenderPlayer renderplayer = (RenderPlayer)render;
|
||||
func_177138_b(renderplayer, p_178095_1_);
|
||||
}
|
||||
private float prevRenderArmPitch, renderArmPitch;
|
||||
private float prevRenderArmYaw, renderArmYaw;
|
||||
|
||||
public void func_177138_b(RenderPlayer r, EntityPlayer p_177138_1_) {
|
||||
float f = 1.0F;
|
||||
GlStateManager.color(f, f, f);
|
||||
ModelPlayer modelplayer = r.getPlayerModel();
|
||||
func_177137_d(r, p_177138_1_);
|
||||
modelplayer.swingProgress = 0.0F;
|
||||
modelplayer.isSneak = false;
|
||||
modelplayer.setRotationAngles(0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, p_177138_1_);
|
||||
modelplayer.func_178725_a();
|
||||
}
|
||||
|
||||
private void func_177137_d(RenderPlayer r, EntityPlayer p_177137_1_) {
|
||||
ModelPlayer modelplayer = r.getPlayerModel();
|
||||
|
||||
if (p_177137_1_.isSpectator())
|
||||
{
|
||||
modelplayer.setInvisible(false);
|
||||
modelplayer.bipedHead.showModel = true;
|
||||
modelplayer.bipedHeadwear.showModel = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
ItemStack itemstack = p_177137_1_.inventory.getCurrentItem();
|
||||
modelplayer.setInvisible(true);
|
||||
modelplayer.bipedHeadwear.showModel = p_177137_1_.func_175148_a(EnumPlayerModelParts.HAT);
|
||||
modelplayer.bipedBodyWear.showModel = p_177137_1_.func_175148_a(EnumPlayerModelParts.JACKET);
|
||||
modelplayer.bipedLeftLegwear.showModel = p_177137_1_.func_175148_a(EnumPlayerModelParts.LEFT_PANTS_LEG);
|
||||
modelplayer.bipedRightLegwear.showModel = p_177137_1_.func_175148_a(EnumPlayerModelParts.RIGHT_PANTS_LEG);
|
||||
modelplayer.bipedLeftArmwear.showModel = p_177137_1_.func_175148_a(EnumPlayerModelParts.LEFT_SLEEVE);
|
||||
modelplayer.bipedRightArmwear.showModel = p_177137_1_.func_175148_a(EnumPlayerModelParts.RIGHT_SLEEVE);
|
||||
modelplayer.heldItemLeft = 0;
|
||||
modelplayer.aimedBow = false;
|
||||
modelplayer.isSneak = p_177137_1_.isSneaking();
|
||||
|
||||
if (itemstack == null)
|
||||
{
|
||||
modelplayer.heldItemRight = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
modelplayer.heldItemRight = 1;
|
||||
|
||||
if (p_177137_1_.getItemInUseCount() > 0)
|
||||
{
|
||||
EnumAction enumaction = itemstack.getItemUseAction();
|
||||
|
||||
if (enumaction == EnumAction.BLOCK)
|
||||
{
|
||||
modelplayer.heldItemRight = 3;
|
||||
}
|
||||
else if (enumaction == EnumAction.BOW)
|
||||
{
|
||||
modelplayer.aimedBow = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
public void updateArmYawAndPitch(EntityPlayer player) {
|
||||
this.prevRenderArmYaw = this.renderArmYaw;
|
||||
this.prevRenderArmPitch = this.renderArmPitch;
|
||||
this.renderArmPitch = (float)((double)this.renderArmPitch + (double)(player.rotationPitch - this.renderArmPitch) * 0.5D);
|
||||
this.renderArmYaw = (float)((double)this.renderArmYaw + (double)(player.rotationYaw - this.renderArmYaw) * 0.5D);
|
||||
}
|
||||
|
||||
private ItemStack itemToRender;
|
||||
@@ -481,19 +418,13 @@ public class SpectatorRenderer {
|
||||
ItemStack itemstack = player.inventory.getCurrentItem();
|
||||
boolean flag = false;
|
||||
|
||||
if (itemToRender != null && itemstack != null)
|
||||
{
|
||||
if (!itemToRender.getIsItemStackEqual(itemstack))
|
||||
{
|
||||
if(itemToRender != null && itemstack != null) {
|
||||
if(!itemToRender.getIsItemStackEqual(itemstack)) {
|
||||
flag = true;
|
||||
}
|
||||
}
|
||||
else if(itemToRender == null && itemstack == null)
|
||||
{
|
||||
} else if(itemToRender == null && itemstack == null) {
|
||||
flag = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
flag = true;
|
||||
}
|
||||
|
||||
@@ -502,10 +433,80 @@ public class SpectatorRenderer {
|
||||
float f2 = MathHelper.clamp_float(f1 - equippedProgress, -f, f);
|
||||
equippedProgress += f2;
|
||||
|
||||
if (equippedProgress < 0.1F)
|
||||
{
|
||||
if(equippedProgress < 0.1F) {
|
||||
itemToRender = itemstack;
|
||||
mc.entityRenderer.itemRenderer.equippedItemSlot = player.inventory.currentItem;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* The GUI Overlays (Fire, Water)
|
||||
*/
|
||||
|
||||
public void renderOverlays(float partialTicks, EntityPlayer player) {
|
||||
GlStateManager.disableAlpha();
|
||||
|
||||
if(player.isEntityInsideOpaqueBlock()) {
|
||||
IBlockState iblockstate = this.mc.theWorld.getBlockState(new BlockPos(player));
|
||||
|
||||
for (int i = 0; i < 8; ++i)
|
||||
{
|
||||
double d0 = player.posX + (double)(((float)((i >> 0) % 2) - 0.5F) * player.width * 0.8F);
|
||||
double d1 = player.posY + (double)(((float)((i >> 1) % 2) - 0.5F) * 0.1F);
|
||||
double d2 = player.posZ + (double)(((float)((i >> 2) % 2) - 0.5F) * player.width * 0.8F);
|
||||
BlockPos blockpos = new BlockPos(d0, d1 + (double)player.getEyeHeight(), d2);
|
||||
IBlockState iblockstate1 = this.mc.theWorld.getBlockState(blockpos);
|
||||
|
||||
if (iblockstate1.getBlock().isVisuallyOpaque())
|
||||
{
|
||||
iblockstate = iblockstate1;
|
||||
}
|
||||
}
|
||||
|
||||
if (iblockstate.getBlock().getRenderType() != -1)
|
||||
{
|
||||
mc.entityRenderer.itemRenderer.func_178108_a(partialTicks, this.mc.getBlockRendererDispatcher().getBlockModelShapes().getTexture(iblockstate));
|
||||
}
|
||||
}
|
||||
|
||||
if(!player.isSpectator()) {
|
||||
if (player.isInsideOfMaterial(Material.water)) {
|
||||
renderWaterOverlayTexture(partialTicks, player);
|
||||
}
|
||||
|
||||
if (this.mc.thePlayer.isBurning()) {
|
||||
mc.entityRenderer.itemRenderer.renderFireInFirstPerson(partialTicks);
|
||||
}
|
||||
}
|
||||
|
||||
GlStateManager.enableAlpha();
|
||||
}
|
||||
|
||||
public void renderWaterOverlayTexture(float partialTicks, EntityPlayer player) {
|
||||
this.mc.getTextureManager().bindTexture(mc.entityRenderer.itemRenderer.RES_UNDERWATER_OVERLAY);
|
||||
Tessellator tessellator = Tessellator.getInstance();
|
||||
WorldRenderer worldrenderer = tessellator.getWorldRenderer();
|
||||
float f1 = player.getBrightness(partialTicks);
|
||||
GlStateManager.color(f1, f1, f1, 0.5F);
|
||||
GlStateManager.enableBlend();
|
||||
GlStateManager.tryBlendFuncSeparate(770, 771, 1, 0);
|
||||
GlStateManager.pushMatrix();
|
||||
float f2 = 4.0F;
|
||||
float f3 = -1.0F;
|
||||
float f4 = 1.0F;
|
||||
float f5 = -1.0F;
|
||||
float f6 = 1.0F;
|
||||
float f7 = -0.5F;
|
||||
float f8 = -player.rotationYaw / 64.0F;
|
||||
float f9 = player.rotationPitch / 64.0F;
|
||||
worldrenderer.startDrawingQuads();
|
||||
worldrenderer.addVertexWithUV((double)f3, (double)f5, (double)f7, (double)(f2 + f8), (double)(f2 + f9));
|
||||
worldrenderer.addVertexWithUV((double)f4, (double)f5, (double)f7, (double)(0.0F + f8), (double)(f2 + f9));
|
||||
worldrenderer.addVertexWithUV((double)f4, (double)f6, (double)f7, (double)(0.0F + f8), (double)(0.0F + f9));
|
||||
worldrenderer.addVertexWithUV((double)f3, (double)f6, (double)f7, (double)(f2 + f8), (double)(0.0F + f9));
|
||||
tessellator.draw();
|
||||
GlStateManager.popMatrix();
|
||||
GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
GlStateManager.disableBlend();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -79,8 +79,6 @@ public net.minecraft.client.renderer.entity.RenderManager field_178636_l # skinM
|
||||
# ItemRenderer
|
||||
public net.minecraft.client.renderer.ItemRenderer *
|
||||
public net.minecraft.client.renderer.ItemRenderer *()
|
||||
public net.minecraft.client.renderer.ItemRenderer$SwitchEnumAction
|
||||
public net.minecraft.client.renderer.ItemRenderer$SwitchEnumAction *
|
||||
|
||||
# Example
|
||||
# public net.minecraft.package.ClassName func_some_id(Ljava/lang/Class;IZS)V # methodName
|
||||
|
||||
Reference in New Issue
Block a user