Files
Chisel/src/main/java/com/cricketcraft/chisel/client/player/PlayerSpecials.java
T

85 lines
2.8 KiB
Java

package com.cricketcraft.chisel.client.player;
import java.util.ArrayList;
import java.util.List;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.ItemRenderer;
import net.minecraft.client.renderer.OpenGlHelper;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.texture.TextureMap;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.util.IIcon;
import net.minecraftforge.client.event.RenderLivingEvent;
import net.minecraftforge.client.event.RenderPlayerEvent;
import org.lwjgl.opengl.GL11;
import com.cricketcraft.chisel.init.ChiselItems;
import cpw.mods.fml.common.eventhandler.EventPriority;
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
public class PlayerSpecials {
private List<String> names = new ArrayList<String>();
private boolean resetRender;
public PlayerSpecials() {
names.add("Cricket");
names.add("Drullkus");
}
@SubscribeEvent(priority = EventPriority.HIGHEST)
public void renderItem(RenderPlayerEvent.Specials.Post event) {
EntityPlayer player = event.entityPlayer;
for (int x = 0; x < names.size(); x++) {
if (player.getCommandSenderName().equals(names.get(x))) {
GL11.glPushMatrix();
Minecraft.getMinecraft().renderEngine.bindTexture(TextureMap.locationItemsTexture);
if (player.isSneaking()) {
GL11.glRotatef(28.64789F, 1.0F, 0.0F, 0.0F);
}
boolean armor = player.getCurrentArmor(1) != null;
GL11.glRotatef(180.0F, 1.0F, 0.0F, 0.0F);
GL11.glRotatef(90.0F, 0.0F, 1.0F, 0.0F);
GL11.glTranslatef(-0.25F, -0.85F, armor ? 0.2F : 0.28F);
GL11.glScalef(0.5F, 0.5F, 0.5F);
GL11.glColor3f(1.0F, 1.0F, 1.0F);
int light = 15728880;
int lightmapX = light % 65536;
int lightmapY = light / 65536;
OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, lightmapX, lightmapY);
IIcon icon = ChiselItems.obsidianChisel.getIcon(new ItemStack(ChiselItems.obsidianChisel, 1, 0), 1);
ItemRenderer.renderItemIn2D(Tessellator.instance, icon.getMaxU(), icon.getMinV(), icon.getMinU(), icon.getMaxV(), icon.getIconWidth(), icon.getIconHeight(), 1.0F / 16.0F);
GL11.glPopMatrix();
}
}
}
@SubscribeEvent(priority = EventPriority.HIGHEST)
public void renderDev(RenderLivingEvent.Pre event) {
for (int x = 0; x < names.size(); x++) {
if (EnumChatFormatting.getTextWithoutFormattingCodes(event.entity.getCommandSenderName()).equals(names.get(x))) {
GL11.glColor4f(1.0F, 1.0F, 1.0F, 0.75F);
GL11.glEnable(3042);
GL11.glBlendFunc(770, 771);
resetRender = true;
}
}
}
@SubscribeEvent
public void entityColorRender(RenderLivingEvent.Post event) {
if (this.resetRender) {
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
GL11.glDisable(3042);
resetRender = false;
}
}
}