/
alexmakov
/
Minecraft_Java
Обзор
Документация
Войти
/
alexmakov
/
Minecraft_Java
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/main/java/com/mojang/minecraft/net/NetworkPlayer.java
235 строк
7 KB
Oliver Yasuna
Fixed walking on water. Close #2.
04 окт 2012, 00:19
04 окт 2012, 00:19
17a47fc
Код
Авторство
О чём код?
package com.mojang.minecraft.net; import com.mojang.minecraft.Minecraft; import com.mojang.minecraft.gui.FontRenderer; import com.mojang.minecraft.mob.HumanoidMob; import com.mojang.minecraft.net.PositionUpdate; import com.mojang.minecraft.net.SkinDownloadThread; import com.mojang.minecraft.render.TextureManager; import java.awt.image.BufferedImage; import java.util.LinkedList; import java.util.List; import org.lwjgl.opengl.GL11; public class NetworkPlayer extends HumanoidMob { public static final long serialVersionUID = 77479605454997290L; private List moveQueue = new LinkedList(); private Minecraft minecraft; private int xp; private int yp; private int zp; private transient int a = -1; public transient BufferedImage newTexture = null; public String name; public String displayName; int tickCount = 0; private TextureManager textures; public NetworkPlayer(Minecraft var1, int var2, String var3, int var4, int var5, int var6, float var7, float var8) { super(var1.level, (float)var4, (float)var5, (float)var6); this.minecraft = var1; this.displayName = var3; var3 = FontRenderer.stripColor(var3); this.name = var3; this.xp = var4; this.yp = var5; this.zp = var6; this.heightOffset = 0.0F; this.pushthrough = 0.8F; this.setPos((float)var4 / 32.0F, (float)var5 / 32.0F, (float)var6 / 32.0F); this.xRot = var8; this.yRot = var7; this.armor = this.helmet = false; this.renderOffset = 0.6875F; (new SkinDownloadThread(this)).start(); this.allowAlpha = false; } public void aiStep() { int var1 = 5; do { if(this.moveQueue.size() > 0) { this.setPos((PositionUpdate)this.moveQueue.remove(0)); } } while(var1-- > 0 && this.moveQueue.size() > 10); this.onGround = true; } public void bindTexture(TextureManager var1) { this.textures = var1; if(this.newTexture != null) { BufferedImage var2 = this.newTexture; int[] var3 = new int[512]; var2.getRGB(32, 0, 32, 16, var3, 0, 32); int var5 = 0; boolean var10001; while(true) { if(var5 >= var3.length) { var10001 = false; break; } if(var3[var5] >>> 24 < 128) { var10001 = true; break; } ++var5; } this.hasHair = var10001; this.a = var1.load(this.newTexture); this.newTexture = null; } if(this.a < 0) { GL11.glBindTexture(3553, var1.load("/char.png")); } else { GL11.glBindTexture(3553, this.a); } } public void renderHover(TextureManager var1, float var2) { FontRenderer var3 = this.minecraft.fontRenderer; GL11.glPushMatrix(); GL11.glTranslatef(this.xo + (this.x - this.xo) * var2, this.yo + (this.y - this.yo) * var2 + 0.8F + this.renderOffset, this.zo + (this.z - this.zo) * var2); GL11.glRotatef(-this.minecraft.player.yRot, 0.0F, 1.0F, 0.0F); var2 = 0.05F; GL11.glScalef(0.05F, -var2, var2); GL11.glTranslatef((float)(-var3.getWidth(this.displayName)) / 2.0F, 0.0F, 0.0F); GL11.glNormal3f(1.0F, -1.0F, 1.0F); GL11.glDisable(2896); GL11.glDisable(16384); if(this.name.equalsIgnoreCase("Notch")) { var3.renderNoShadow(this.displayName, 0, 0, 16776960); } else { var3.renderNoShadow(this.displayName, 0, 0, 16777215); } GL11.glDepthFunc(516); GL11.glDepthMask(false); GL11.glColor4f(1.0F, 1.0F, 1.0F, 0.8F); GL11.glEnable(3042); GL11.glBlendFunc(770, 771); var3.renderNoShadow(this.displayName, 0, 0, 16777215); GL11.glDisable(3042); GL11.glDepthMask(true); GL11.glDepthFunc(515); GL11.glTranslatef(1.0F, 1.0F, -0.05F); var3.renderNoShadow(this.name, 0, 0, 5263440); GL11.glEnable(16384); GL11.glEnable(2896); GL11.glPopMatrix(); } public void queue(byte var1, byte var2, byte var3, float var4, float var5) { float var6 = var4 - this.yRot; float var7; for(var7 = var5 - this.xRot; var6 >= 180.0F; var6 -= 360.0F) { ; } while(var6 < -180.0F) { var6 += 360.0F; } while(var7 >= 180.0F) { var7 -= 360.0F; } while(var7 < -180.0F) { var7 += 360.0F; } var6 = this.yRot + var6 * 0.5F; var7 = this.xRot + var7 * 0.5F; this.moveQueue.add(new PositionUpdate(((float)this.xp + (float)var1 / 2.0F) / 32.0F, ((float)this.yp + (float)var2 / 2.0F) / 32.0F, ((float)this.zp + (float)var3 / 2.0F) / 32.0F, var6, var7)); this.xp += var1; this.yp += var2; this.zp += var3; this.moveQueue.add(new PositionUpdate((float)this.xp / 32.0F, (float)this.yp / 32.0F, (float)this.zp / 32.0F, var4, var5)); } public void teleport(short var1, short var2, short var3, float var4, float var5) { float var6 = var4 - this.yRot; float var7; for(var7 = var5 - this.xRot; var6 >= 180.0F; var6 -= 360.0F) { ; } while(var6 < -180.0F) { var6 += 360.0F; } while(var7 >= 180.0F) { var7 -= 360.0F; } while(var7 < -180.0F) { var7 += 360.0F; } var6 = this.yRot + var6 * 0.5F; var7 = this.xRot + var7 * 0.5F; this.moveQueue.add(new PositionUpdate((float)(this.xp + var1) / 64.0F, (float)(this.yp + var2) / 64.0F, (float)(this.zp + var3) / 64.0F, var6, var7)); this.xp = var1; this.yp = var2; this.zp = var3; this.moveQueue.add(new PositionUpdate((float)this.xp / 32.0F, (float)this.yp / 32.0F, (float)this.zp / 32.0F, var4, var5)); } public void queue(byte var1, byte var2, byte var3) { this.moveQueue.add(new PositionUpdate(((float)this.xp + (float)var1 / 2.0F) / 32.0F, ((float)this.yp + (float)var2 / 2.0F) / 32.0F, ((float)this.zp + (float)var3 / 2.0F) / 32.0F)); this.xp += var1; this.yp += var2; this.zp += var3; this.moveQueue.add(new PositionUpdate((float)this.xp / 32.0F, (float)this.yp / 32.0F, (float)this.zp / 32.0F)); } public void queue(float var1, float var2) { float var3 = var1 - this.yRot; float var4; for(var4 = var2 - this.xRot; var3 >= 180.0F; var3 -= 360.0F) { ; } while(var3 < -180.0F) { var3 += 360.0F; } while(var4 >= 180.0F) { var4 -= 360.0F; } while(var4 < -180.0F) { var4 += 360.0F; } var3 = this.yRot + var3 * 0.5F; var4 = this.xRot + var4 * 0.5F; this.moveQueue.add(new PositionUpdate(var3, var4)); this.moveQueue.add(new PositionUpdate(var1, var2)); } public void clear() { if(this.a >= 0 && this.textures != null) { TextureManager var10000 = this.textures; int var1 = this.a; TextureManager var2 = this.textures; var10000.textureImages.remove(Integer.valueOf(var1)); var2.idBuffer.clear(); var2.idBuffer.put(var1); var2.idBuffer.flip(); GL11.glDeleteTextures(var2.idBuffer); } } }