Skip to content
This repository has been archived by the owner on Oct 17, 2020. It is now read-only.

Commit

Permalink
Player Model fix
Browse files Browse the repository at this point in the history
Self player models can now be changed by the ChangeModel packet when
EntityID is set to -1
  • Loading branch information
123DMWM committed Feb 28, 2014
1 parent 325732b commit da2c27a
Show file tree
Hide file tree
Showing 2 changed files with 72 additions and 14 deletions.
26 changes: 14 additions & 12 deletions src/main/java/com/mojang/minecraft/Minecraft.java
Expand Up @@ -2942,19 +2942,21 @@ private void tick() {
if (PlayerID >= 0) {
NetworkPlayer netPlayer;
if ((netPlayer = networkManager.players
.get(Byte.valueOf(PlayerID))) != null) {
ModelManager m = new ModelManager();
if (m.getModel(ModelName
.toLowerCase()) == null) {
netPlayer.modelName = "humanoid";
} else {
netPlayer.modelName = ModelName
.toLowerCase();
}
netPlayer
.bindTexture(textureManager);
.get(Byte.valueOf(PlayerID))) != null) {
ModelManager m = new ModelManager();
if (m.getModel(ModelName.toLowerCase()) == null) {
netPlayer.modelName = "humanoid";
} else netPlayer.modelName = ModelName.toLowerCase();
netPlayer.bindTexture(textureManager);
}
}
} else if (PlayerID == -1){
Player thisPlayer = player;
ModelManager m = new ModelManager();
if (m.getModel(ModelName.toLowerCase()) == null) {
thisPlayer.modelName = "humanoid";
} else thisPlayer.modelName = ModelName.toLowerCase();
thisPlayer.bindTexture(textureManager);
}
}

else if (packetType == PacketType.ENV_SET_WEATHER_TYPE) {
Expand Down
60 changes: 58 additions & 2 deletions src/main/java/com/mojang/minecraft/player/Player.java
Expand Up @@ -11,8 +11,13 @@
import com.mojang.minecraft.HackState;
import com.mojang.minecraft.level.Level;
import com.mojang.minecraft.level.tile.Block;
import com.mojang.minecraft.level.tile.BlockModelRenderer;
import com.mojang.minecraft.mob.Mob;
import static com.mojang.minecraft.mob.Mob.modelCache;
import com.mojang.minecraft.model.HumanoidModel;
import com.mojang.minecraft.model.Model;
import static com.mojang.minecraft.net.NetworkPlayer.isInteger;
import com.mojang.minecraft.render.ShapeRenderer;
import com.mojang.minecraft.render.TextureManager;
import com.mojang.util.MathHelper;
import org.lwjgl.input.Keyboard;
Expand Down Expand Up @@ -334,10 +339,37 @@ public void awardKillScore(Entity var1, int var2) {
@Override
public void bindTexture(TextureManager var1) {
if (newTexture != null) {
newTextureId = var1.load(newTexture);
BufferedImage var2 = 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;
}
hasHair = var10001;

if (modelName.equals("humanoid")) {
newTextureId = var1.load(newTexture);
}
newTexture = null;
}

if (isInteger(modelName)) {
GL11.glBindTexture(3553, var1.load("/terrain.png"));
return;
} else if (!modelName.startsWith("humanoid")) {
GL11.glBindTexture(3553, var1.load("/mob/" + modelName.replace('.', '_') + ".png"));
return;
}
int var2;
if (newTextureId < 0) {
var2 = var1.load("/char.png");
Expand Down Expand Up @@ -507,9 +539,33 @@ public void render(TextureManager var1, float var2) {
}
}

BlockModelRenderer block;

@Override
public void renderModel(TextureManager var1, float var2, float var3, float var4, float var5,
float var6, float var7) {
if (isInteger(modelName)) {
try {
block = new BlockModelRenderer(Block.blocks[Integer.parseInt(modelName)].textureId);
GL11.glPushMatrix();
GL11.glTranslatef(-0.5f, 0.4f, -0.5f);
GL11.glBindTexture(3553, var1.load("/terrain.png"));
block.renderPreview(ShapeRenderer.instance);
GL11.glPopMatrix();
} catch (Exception e) {
modelName = "humanoid";
}
return;
}
Model model = modelCache.getModel(modelName);
if (hasHair && model instanceof HumanoidModel) {
GL11.glDisable(2884);
HumanoidModel modelHeadwear = null;
(modelHeadwear = (HumanoidModel) model).headwear.yaw = modelHeadwear.head.yaw;
modelHeadwear.headwear.pitch = modelHeadwear.head.pitch;
modelHeadwear.headwear.render(var7);
GL11.glEnable(2884);
}
modelCache.getModel(modelName).render(var2, var4, tickCount + var3, var5, var6, var7);
}

Expand Down

0 comments on commit da2c27a

Please sign in to comment.