diff --git a/src/main/java/assets/hbm/lang/de_DE.lang b/src/main/java/assets/hbm/lang/de_DE.lang index 812cb3471..db9b9c6fa 100644 --- a/src/main/java/assets/hbm/lang/de_DE.lang +++ b/src/main/java/assets/hbm/lang/de_DE.lang @@ -2187,6 +2187,19 @@ tile.glass_trinitite.name=Trinity-Glas tile.glass_uranium.name=Uranglas tile.gravel_diamond.name=Diamantkies tile.gravel_obsidian.name=Gebrochener Obsidian +tile.hadron_analysis.name=Partikelbeschleuniger-Analysekammernwand +tile.hadron_analysis.name=Partikelbeschleuniger-Analysekammernfenster +tile.hadron_coil_alloy.name=Dichte Supraleiterspule +tile.hadron_coil_schrabidium.name=Dichte Schrabidiumspule +tile.hadron_coil_starmetal.name=Dichte Sternenmetallspule +tile.hadron_diode.name=Schottky-Partikeldiode +tile.hadron_plating.name=Partikelbeschleuniger-Außenwand +tile.hadron_plating_black.name=Partikelbeschleuniger-Außenwand (Schwarz) +tile.hadron_plating_blue.name=Partikelbeschleuniger-Außenwand (Blau) +tile.hadron_plating_glass.name=Partikelbeschleuniger-Außenwand (Fenster) +tile.hadron_plating_striped.name=Partikelbeschleuniger-Außenwand (Coole Gefahrenstreifen) +tile.hadron_plating_voltz.name=Partikelbeschleuniger-Außenwand (VOLTZ) +tile.hadron_plating_yellow.name=Partikelbeschleuniger-Außenwand (Gelb) tile.hazmat.name=Strahlenschutzstoff-Block tile.iter.name=Kernfusionsreaktor tile.launch_pad.name=Raketenabschussrampe diff --git a/src/main/java/assets/hbm/lang/en_US.lang b/src/main/java/assets/hbm/lang/en_US.lang index 29fa13572..da2794401 100644 --- a/src/main/java/assets/hbm/lang/en_US.lang +++ b/src/main/java/assets/hbm/lang/en_US.lang @@ -2187,6 +2187,19 @@ tile.glass_trinitite.name=Trinity Glass tile.glass_uranium.name=Uranium Glass tile.gravel_diamond.name=Diamond Gravel tile.gravel_obsidian.name=Crushed Obsidian +tile.hadron_analysis.name=Particle Accelerator Analysis Chamber Wall +tile.hadron_analysis_glass.name=Particle Accelerator Analysis Chamber Window +tile.hadron_coil_alloy.name=Dense Super Conducting Coil +tile.hadron_coil_schrabidium.name=Dense Schrabidic Coil +tile.hadron_coil_starmetal.name=Dense Starmetal Coil +tile.hadron_diode.name=Schottky Particle Diode +tile.hadron_plating.name=Particle Accelerator Plating +tile.hadron_plating_black.name=Particle Accelerator Plating (Black) +tile.hadron_plating_blue.name=Particle Accelerator Plating (Blue) +tile.hadron_plating_glass.name=Particle Accelerator Plating (Window) +tile.hadron_plating_striped.name=Particle Accelerator Plating (Cool Hazard Stripes) +tile.hadron_plating_voltz.name=Particle Accelerator Plating (VOLTZ) +tile.hadron_plating_yellow.name=Particle Accelerator Plating (Yellow) tile.hazmat.name=Hazmat Cloth Block tile.iter.name=Fusion Reactor tile.launch_pad.name=Missile Launch Pad diff --git a/src/main/java/assets/hbm/textures/blocks/hadron_analysis.png b/src/main/java/assets/hbm/textures/blocks/hadron_analysis.png new file mode 100644 index 000000000..58e01b02c Binary files /dev/null and b/src/main/java/assets/hbm/textures/blocks/hadron_analysis.png differ diff --git a/src/main/java/assets/hbm/textures/blocks/hadron_analysis_glass.png b/src/main/java/assets/hbm/textures/blocks/hadron_analysis_glass.png new file mode 100644 index 000000000..afe1d0b13 Binary files /dev/null and b/src/main/java/assets/hbm/textures/blocks/hadron_analysis_glass.png differ diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 1c4d97454..8d1b39640 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -456,6 +456,8 @@ public class ModBlocks { public static Block hadron_coil_starmetal; public static Block hadron_power; public static Block hadron_diode; + public static Block hadron_analysis; + public static Block hadron_analysis_glass; public static Block hadron_access; public static Block hadron_core; @@ -1200,7 +1202,9 @@ public class ModBlocks { hadron_coil_schrabidium = new BlockHadronCoil(Material.iron).setStepSound(Block.soundTypeMetal).setBlockName("hadron_coil_schrabidium").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_coil_schrabidium"); hadron_coil_starmetal = new BlockHadronCoil(Material.iron).setStepSound(Block.soundTypeMetal).setBlockName("hadron_coil_starmetal").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_coil_starmetal"); hadron_diode = new BlockHadronDiode(Material.iron).setStepSound(Block.soundTypeMetal).setBlockName("hadron_diode").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); - + hadron_analysis = new BlockHadronPlating(Material.iron).setStepSound(Block.soundTypeMetal).setBlockName("hadron_analysis").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_analysis"); + hadron_analysis_glass = new BlockNTMGlass(RefStrings.MODID + ":hadron_analysis_glass", Material.iron).setStepSound(Block.soundTypeMetal).setBlockName("hadron_analysis_glass").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_analysis_glass"); + /*public static Block hadron_plating; public static Block hadron_plating_blue; public static Block hadron_plating_black; @@ -1987,6 +1991,8 @@ public class ModBlocks { GameRegistry.registerBlock(hadron_coil_schrabidium, hadron_coil_schrabidium.getUnlocalizedName()); GameRegistry.registerBlock(hadron_coil_starmetal, hadron_coil_starmetal.getUnlocalizedName()); GameRegistry.registerBlock(hadron_diode, hadron_diode.getUnlocalizedName()); + GameRegistry.registerBlock(hadron_analysis, hadron_analysis.getUnlocalizedName()); + GameRegistry.registerBlock(hadron_analysis_glass, hadron_analysis_glass.getUnlocalizedName()); /*public static Block hadron_plating; public static Block hadron_plating_blue; diff --git a/src/main/java/com/hbm/handler/ArmorUtil.java b/src/main/java/com/hbm/handler/ArmorUtil.java index 260b99569..847028324 100644 --- a/src/main/java/com/hbm/handler/ArmorUtil.java +++ b/src/main/java/com/hbm/handler/ArmorUtil.java @@ -134,8 +134,11 @@ public class ArmorUtil { "bronze", "electrum", "t45", + "bj", + "starmetal", "hazmat", //also count because rubber is insulating - "rubber" + "rubber", + "spacesuit" }; public static boolean isFaradayArmor(Item item) { diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 7ab2521a7..21344e7c9 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -3573,6 +3573,7 @@ public class ModItems { t45_helmet = new ArmorT45(MainRegistry.aMatT45, 2, 0, 1000000, 10000, 1000).setCap(6.5F).setMod(0.25F) .setFireproof(true) + .enableVATS(true) .addEffect(new PotionEffect(Potion.damageBoost.id, 20, 0)) .addEffect(new PotionEffect(Potion.moveSpeed.id, 20, 1)) .setBlastProtection(0.5F) @@ -3635,7 +3636,9 @@ public class ModItems { bj_helmet = new ArmorBJ(MainRegistry.aMatStarmetal, 7, 0, RefStrings.MODID + ":textures/armor/starmetal_1.png", 10000000, 10000, 1000).setMod(0.25F).setCap(4.0F) .setFireproof(true) + .enableVATS(true) .enableThermalSight(true) + .addEffect(new PotionEffect(Potion.moveSpeed.id, 20, 1)) .addEffect(new PotionEffect(Potion.jump.id, 20, 0)) .addEffect(new PotionEffect(Potion.field_76443_y.id, 20, 0)) .addEffect(new PotionEffect(HbmPotion.radx.id, 20, 0)) diff --git a/src/main/java/com/hbm/items/armor/ArmorFSB.java b/src/main/java/com/hbm/items/armor/ArmorFSB.java index ff03b5f41..a5437b122 100644 --- a/src/main/java/com/hbm/items/armor/ArmorFSB.java +++ b/src/main/java/com/hbm/items/armor/ArmorFSB.java @@ -46,6 +46,7 @@ public class ArmorFSB extends ItemArmor { public float damageMod = -1; public boolean fireproof = false; public boolean noHelmet = false; + public boolean vats = false; public boolean thermal = false; public double gravity = 0; public String step; @@ -92,6 +93,11 @@ public class ArmorFSB extends ItemArmor { return this; } + public ArmorFSB enableVATS(boolean vats) { + this.vats = vats; + return this; + } + public ArmorFSB enableThermalSight(boolean thermal) { this.thermal = thermal; return this; @@ -132,6 +138,7 @@ public class ArmorFSB extends ItemArmor { this.blastProtection = original.blastProtection; this.fireproof = original.fireproof; this.noHelmet = original.noHelmet; + this.vats = original.vats; this.thermal = original.thermal; this.gravity = original.gravity; this.step = original.step; @@ -186,6 +193,10 @@ public class ArmorFSB extends ItemArmor { list.add(EnumChatFormatting.RED + " Fireproof"); } + if(vats) { + list.add(EnumChatFormatting.RED + " Enemy HUD"); + } + if(thermal) { list.add(EnumChatFormatting.RED + " Thermal Sight"); } @@ -263,20 +274,23 @@ public class ArmorFSB extends ItemArmor { ArmorFSB chestplate = (ArmorFSB)player.inventory.armorInventory[2].getItem(); - if(chestplate.damageMod != -1) { - event.ammount *= chestplate.damageMod; - } - - if(chestplate.resistance.get(event.source.getDamageType()) != null) { - event.ammount *= chestplate.resistance.get(event.source.getDamageType()); - } - - if(chestplate.blastProtection != -1 && event.source.isExplosion()) { - event.ammount *= chestplate.blastProtection; - } - - if(chestplate.damageCap != -1) { - event.ammount = Math.min(event.ammount, chestplate.damageCap); + if(event.ammount < 100) { + + if(chestplate.damageMod != -1) { + event.ammount *= chestplate.damageMod; + } + + if(chestplate.resistance.get(event.source.getDamageType()) != null) { + event.ammount *= chestplate.resistance.get(event.source.getDamageType()); + } + + if(chestplate.blastProtection != -1 && event.source.isExplosion()) { + event.ammount *= chestplate.blastProtection; + } + + if(chestplate.damageCap != -1) { + event.ammount = Math.min(event.ammount, chestplate.damageCap); + } } } } diff --git a/src/main/java/com/hbm/lib/RefStrings.java b/src/main/java/com/hbm/lib/RefStrings.java index 77414c90e..65bd057e4 100644 --- a/src/main/java/com/hbm/lib/RefStrings.java +++ b/src/main/java/com/hbm/lib/RefStrings.java @@ -3,7 +3,7 @@ package com.hbm.lib; public class RefStrings { public static final String MODID = "hbm"; public static final String NAME = "Hbm's Nuclear Tech Mod"; - public static final String VERSION = "1.0.27 BETA (3697)"; + public static final String VERSION = "1.0.27 BETA (MEMEPACK)"; //HBM's Beta Naming Convention: //V T (X) //V -> next release version diff --git a/src/main/java/com/hbm/main/ModEventHandlerClient.java b/src/main/java/com/hbm/main/ModEventHandlerClient.java index 878a91983..e7fbbe965 100644 --- a/src/main/java/com/hbm/main/ModEventHandlerClient.java +++ b/src/main/java/com/hbm/main/ModEventHandlerClient.java @@ -27,6 +27,7 @@ import com.hbm.packet.PacketDispatcher; import com.hbm.render.anim.HbmAnimations; import com.hbm.render.anim.HbmAnimations.Animation; import com.hbm.render.util.RenderAccessoryUtility; +import com.hbm.render.util.RenderOverhead; import com.hbm.render.util.RenderScreenOverlay; import com.hbm.render.util.SoyuzPronter; import com.hbm.sound.MovingSoundChopper; @@ -52,6 +53,7 @@ import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.entity.RenderPlayer; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLiving; +import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.boss.IBossDisplayData; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.item.EntityXPOrb; @@ -69,6 +71,7 @@ import net.minecraft.util.Vec3; import net.minecraftforge.client.event.MouseEvent; import net.minecraftforge.client.event.RenderGameOverlayEvent; import net.minecraftforge.client.event.RenderGameOverlayEvent.ElementType; +import net.minecraftforge.client.event.RenderLivingEvent; import net.minecraftforge.client.event.RenderPlayerEvent; import net.minecraftforge.client.event.RenderWorldLastEvent; import net.minecraftforge.client.event.TextureStitchEvent; @@ -386,94 +389,37 @@ public class ModEventHandlerClient { ArmorFSB chestplate = (ArmorFSB)plate.getItem(); if(chestplate.thermal) - renderThermalSight(event.partialTicks); + RenderOverhead.renderThermalSight(event.partialTicks); } } - public void renderThermalSight(float partialTicks) { + @SubscribeEvent + public void preRenderEvent(RenderLivingEvent.Pre event) { EntityPlayer player = Minecraft.getMinecraft().thePlayer; - double x = player.prevPosX + (player.posX - player.prevPosX) * partialTicks; - double y = player.prevPosY + (player.posY - player.prevPosY) * partialTicks; - double z = player.prevPosZ + (player.posZ - player.prevPosZ) * partialTicks; - - GL11.glPushMatrix(); - GL11.glDisable(GL11.GL_COLOR_MATERIAL); - GL11.glDisable(GL11.GL_TEXTURE_2D); - GL11.glDisable(GL11.GL_LIGHTING); - GL11.glEnable(GL11.GL_POINT_SMOOTH); - GL11.glEnable(GL11.GL_BLEND); - GL11.glDisable(GL11.GL_DEPTH_TEST); - GL11.glBlendFunc(GL11.GL_SRC_ALPHA,GL11.GL_ONE_MINUS_SRC_ALPHA); - Tessellator tess = Tessellator.instance; - tess.startDrawing(GL11.GL_LINES); - - for(Object o : player.worldObj.loadedEntityList) { + if(ArmorFSB.hasFSBArmor(player)) { + ItemStack plate = player.inventory.armorInventory[2]; + ArmorFSB chestplate = (ArmorFSB)plate.getItem(); - Entity ent = (Entity) o; - - if(ent == player) - continue; - - if(ent.getDistanceSqToEntity(player) > 4096) - continue; - - if(ent instanceof IBossDisplayData) - tess.setColorOpaque_F(1F, 0.5F, 0F); - else if(ent instanceof EntityMob) - tess.setColorOpaque_F(1F, 0F, 0F); - else if(ent instanceof EntityPlayer) - tess.setColorOpaque_F(1F, 0F, 1F); - else if(ent instanceof EntityLiving) - tess.setColorOpaque_F(0F, 1F, 0F); - else if(ent instanceof EntityItem) - tess.setColorOpaque_F(1F, 1F, 0.5F); - else if(ent instanceof EntityXPOrb) { - if(player.ticksExisted % 10 < 5) - tess.setColorOpaque_F(1F, 1F, 0.5F); - else - tess.setColorOpaque_F(0.5F, 1F, 0.5F); - } else - continue; - - AxisAlignedBB bb = ent.boundingBox; - tess.addVertex(bb.minX - x, bb.maxY - y, bb.minZ - z); - tess.addVertex(bb.minX - x, bb.minY - y, bb.minZ - z); - tess.addVertex(bb.minX - x, bb.maxY - y, bb.minZ - z); - tess.addVertex(bb.maxX - x, bb.maxY - y, bb.minZ - z); - tess.addVertex(bb.maxX - x, bb.maxY - y, bb.minZ - z); - tess.addVertex(bb.maxX - x, bb.minY - y, bb.minZ - z); - tess.addVertex(bb.minX - x, bb.minY - y, bb.minZ - z); - tess.addVertex(bb.maxX - x, bb.minY - y, bb.minZ - z); - tess.addVertex(bb.maxX - x, bb.minY - y, bb.minZ - z); - tess.addVertex(bb.maxX - x, bb.minY - y, bb.maxZ - z); - tess.addVertex(bb.maxX - x, bb.maxY - y, bb.maxZ - z); - tess.addVertex(bb.maxX - x, bb.maxY - y, bb.minZ - z); - tess.addVertex(bb.maxX - x, bb.maxY - y, bb.maxZ - z); - tess.addVertex(bb.maxX - x, bb.minY - y, bb.maxZ - z); - tess.addVertex(bb.minX - x, bb.maxY - y, bb.minZ - z); - tess.addVertex(bb.minX - x, bb.maxY - y, bb.maxZ - z); - tess.addVertex(bb.minX - x, bb.maxY - y, bb.maxZ - z); - tess.addVertex(bb.minX - x, bb.minY - y, bb.maxZ - z); - tess.addVertex(bb.minX - x, bb.maxY - y, bb.maxZ - z); - tess.addVertex(bb.maxX - x, bb.maxY - y, bb.maxZ - z); - tess.addVertex(bb.minX - x, bb.minY - y, bb.maxZ - z); - tess.addVertex(bb.maxX - x, bb.minY - y, bb.maxZ - z); - tess.addVertex(bb.minX - x, bb.minY - y, bb.minZ - z); - tess.addVertex(bb.minX - x, bb.minY - y, bb.maxZ - z); + if(chestplate.vats) { + + int count = (int)Math.min(event.entity.getMaxHealth(), 100); + + int bars = (int)Math.ceil(event.entity.getHealth() * count / event.entity.getMaxHealth()); + + String bar = EnumChatFormatting.RED + ""; + + for(int i = 0; i < count; i++) { + + if(i == bars) + bar += EnumChatFormatting.RESET + ""; + + bar += "|"; + } + RenderOverhead.renderTag(event.entity, event.x, event.y, event.z, event.renderer, bar, chestplate.thermal); + } } - - tess.draw(); - - tess.setColorOpaque_F(1F, 1F, 1F); - - GL11.glEnable(GL11.GL_COLOR_MATERIAL); - GL11.glEnable(GL11.GL_TEXTURE_2D); - GL11.glDisable(GL11.GL_POINT_SMOOTH); - GL11.glDisable(GL11.GL_BLEND); - GL11.glEnable(GL11.GL_DEPTH_TEST); - GL11.glPopMatrix(); } public static IIcon particleBase; diff --git a/src/main/java/com/hbm/render/util/RenderDecoItem.java b/src/main/java/com/hbm/render/util/RenderDecoItem.java index 472e21b90..bfca8e9ff 100644 --- a/src/main/java/com/hbm/render/util/RenderDecoItem.java +++ b/src/main/java/com/hbm/render/util/RenderDecoItem.java @@ -4,30 +4,31 @@ import net.minecraft.client.renderer.entity.RenderItem; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.item.ItemStack; - public class RenderDecoItem extends RenderItem { - public RenderDecoItem(TileEntitySpecialRenderer render) {} +/** + * For small items as part of a TESR, e.g. items in a press + * @author hbm + */ +public class RenderDecoItem extends RenderItem { + public RenderDecoItem(TileEntitySpecialRenderer render) { + } - @Override - public byte getMiniBlockCount(ItemStack stack, byte original) - { - return 1; - } + @Override + public byte getMiniBlockCount(ItemStack stack, byte original) { + return 1; + } - @Override - public byte getMiniItemCount(ItemStack stack, byte original) - { - return 1; - } + @Override + public byte getMiniItemCount(ItemStack stack, byte original) { + return 1; + } - @Override - public boolean shouldBob() - { - return false; - } + @Override + public boolean shouldBob() { + return false; + } - @Override - public boolean shouldSpreadItems() - { - return false; - } + @Override + public boolean shouldSpreadItems() { + return false; + } } diff --git a/src/main/java/com/hbm/render/util/RenderOverhead.java b/src/main/java/com/hbm/render/util/RenderOverhead.java new file mode 100644 index 000000000..26055d3ae --- /dev/null +++ b/src/main/java/com/hbm/render/util/RenderOverhead.java @@ -0,0 +1,187 @@ +package com.hbm.render.util; + +import org.lwjgl.opengl.GL11; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.FontRenderer; +import net.minecraft.client.renderer.OpenGlHelper; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.client.renderer.entity.RenderManager; +import net.minecraft.client.renderer.entity.RendererLivingEntity; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLiving; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.boss.IBossDisplayData; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.entity.item.EntityXPOrb; +import net.minecraft.entity.monster.EntityMob; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.util.AxisAlignedBB; + +public class RenderOverhead { + + public static void renderTag(EntityLivingBase living, double x, double y, double z, RendererLivingEntity renderer, String name, boolean depthTest) { + + EntityPlayer thePlayer = Minecraft.getMinecraft().thePlayer; + + GL11.glAlphaFunc(GL11.GL_GREATER, 0.1F); + + if(shouldRenderTag(living)) { + float f = 1.6F; + double distSq = living.getDistanceSqToEntity(thePlayer); + float range = living.isSneaking() ? renderer.NAME_TAG_RANGE_SNEAK : renderer.NAME_TAG_RANGE; + + if(distSq < (double) (range * range)) { + String s = name; + drawTagAware(living, x, y, z, name, depthTest); + } + } + } + + protected static boolean shouldRenderTag(EntityLivingBase p_110813_1_) { + return Minecraft.isGuiEnabled() && p_110813_1_ != RenderManager.instance.livingPlayer && !p_110813_1_.isInvisibleToPlayer(Minecraft.getMinecraft().thePlayer) && p_110813_1_.riddenByEntity == null; + } + + protected static void drawTagAware(EntityLivingBase entity, double x, double y, double z, String string, boolean depthTest) { + if(entity.isPlayerSleeping()) { + drawTag(entity, string, x, y - 1.5D, z, 64, depthTest); + } else { + drawTag(entity, string, x, y, z, 64, depthTest); + } + } + + protected static void drawTag(Entity entity, String name, double x, double y, double z, int dist, boolean depthTest) { + + double distsq = entity.getDistanceSqToEntity(RenderManager.instance.livingPlayer); + + if(distsq <= (double) (dist * dist)) { + FontRenderer fontrenderer = Minecraft.getMinecraft().fontRenderer; + float f = 1.6F; + float scale = 0.016666668F * f; + GL11.glPushMatrix(); + GL11.glTranslatef((float) x + 0.0F, (float) y + entity.height + 0.75F, (float) z); + GL11.glNormal3f(0.0F, 1.0F, 0.0F); + GL11.glRotatef(-RenderManager.instance.playerViewY, 0.0F, 1.0F, 0.0F); + GL11.glRotatef(RenderManager.instance.playerViewX, 1.0F, 0.0F, 0.0F); + GL11.glScalef(-scale, -scale, scale); + GL11.glDisable(GL11.GL_LIGHTING); + GL11.glDepthMask(false); + if(depthTest) { + GL11.glDisable(GL11.GL_DEPTH_TEST); + } + GL11.glEnable(GL11.GL_BLEND); + OpenGlHelper.glBlendFunc(770, 771, 1, 0); + Tessellator tessellator = Tessellator.instance; + byte heightOffset = 0; + + if(name.equals("deadmau5")) { + heightOffset = -10; + } + + GL11.glDisable(GL11.GL_TEXTURE_2D); + tessellator.startDrawingQuads(); + int center = fontrenderer.getStringWidth(name) / 2; + tessellator.setColorRGBA_F(0.0F, 0.0F, 0.0F, 0.25F); + tessellator.addVertex((double) (-center - 1), (double) (-1 + heightOffset), 0.0D); + tessellator.addVertex((double) (-center - 1), (double) (8 + heightOffset), 0.0D); + tessellator.addVertex((double) (center + 1), (double) (8 + heightOffset), 0.0D); + tessellator.addVertex((double) (center + 1), (double) (-1 + heightOffset), 0.0D); + tessellator.draw(); + GL11.glEnable(GL11.GL_TEXTURE_2D); + fontrenderer.drawString(name, -fontrenderer.getStringWidth(name) / 2, heightOffset, 553648127); + GL11.glEnable(GL11.GL_DEPTH_TEST); + GL11.glDepthMask(true); + fontrenderer.drawString(name, -fontrenderer.getStringWidth(name) / 2, heightOffset, -1); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glDisable(GL11.GL_BLEND); + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + GL11.glPopMatrix(); + } + } + + public static void renderThermalSight(float partialTicks) { + + EntityPlayer player = Minecraft.getMinecraft().thePlayer; + double x = player.prevPosX + (player.posX - player.prevPosX) * partialTicks; + double y = player.prevPosY + (player.posY - player.prevPosY) * partialTicks; + double z = player.prevPosZ + (player.posZ - player.prevPosZ) * partialTicks; + + GL11.glPushMatrix(); + GL11.glDisable(GL11.GL_COLOR_MATERIAL); + GL11.glDisable(GL11.GL_TEXTURE_2D); + GL11.glDisable(GL11.GL_LIGHTING); + GL11.glEnable(GL11.GL_POINT_SMOOTH); + GL11.glEnable(GL11.GL_BLEND); + GL11.glDisable(GL11.GL_DEPTH_TEST); + GL11.glBlendFunc(GL11.GL_SRC_ALPHA,GL11.GL_ONE_MINUS_SRC_ALPHA); + + Tessellator tess = Tessellator.instance; + tess.startDrawing(GL11.GL_LINES); + + for(Object o : player.worldObj.loadedEntityList) { + + Entity ent = (Entity) o; + + if(ent == player) + continue; + + if(ent.getDistanceSqToEntity(player) > 4096) + continue; + + if(ent instanceof IBossDisplayData) + tess.setColorOpaque_F(1F, 0.5F, 0F); + else if(ent instanceof EntityMob) + tess.setColorOpaque_F(1F, 0F, 0F); + else if(ent instanceof EntityPlayer) + tess.setColorOpaque_F(1F, 0F, 1F); + else if(ent instanceof EntityLiving) + tess.setColorOpaque_F(0F, 1F, 0F); + else if(ent instanceof EntityItem) + tess.setColorOpaque_F(1F, 1F, 0.5F); + else if(ent instanceof EntityXPOrb) { + if(player.ticksExisted % 10 < 5) + tess.setColorOpaque_F(1F, 1F, 0.5F); + else + tess.setColorOpaque_F(0.5F, 1F, 0.5F); + } else + continue; + + AxisAlignedBB bb = ent.boundingBox; + tess.addVertex(bb.minX - x, bb.maxY - y, bb.minZ - z); + tess.addVertex(bb.minX - x, bb.minY - y, bb.minZ - z); + tess.addVertex(bb.minX - x, bb.maxY - y, bb.minZ - z); + tess.addVertex(bb.maxX - x, bb.maxY - y, bb.minZ - z); + tess.addVertex(bb.maxX - x, bb.maxY - y, bb.minZ - z); + tess.addVertex(bb.maxX - x, bb.minY - y, bb.minZ - z); + tess.addVertex(bb.minX - x, bb.minY - y, bb.minZ - z); + tess.addVertex(bb.maxX - x, bb.minY - y, bb.minZ - z); + tess.addVertex(bb.maxX - x, bb.minY - y, bb.minZ - z); + tess.addVertex(bb.maxX - x, bb.minY - y, bb.maxZ - z); + tess.addVertex(bb.maxX - x, bb.maxY - y, bb.maxZ - z); + tess.addVertex(bb.maxX - x, bb.maxY - y, bb.minZ - z); + tess.addVertex(bb.maxX - x, bb.maxY - y, bb.maxZ - z); + tess.addVertex(bb.maxX - x, bb.minY - y, bb.maxZ - z); + tess.addVertex(bb.minX - x, bb.maxY - y, bb.minZ - z); + tess.addVertex(bb.minX - x, bb.maxY - y, bb.maxZ - z); + tess.addVertex(bb.minX - x, bb.maxY - y, bb.maxZ - z); + tess.addVertex(bb.minX - x, bb.minY - y, bb.maxZ - z); + tess.addVertex(bb.minX - x, bb.maxY - y, bb.maxZ - z); + tess.addVertex(bb.maxX - x, bb.maxY - y, bb.maxZ - z); + tess.addVertex(bb.minX - x, bb.minY - y, bb.maxZ - z); + tess.addVertex(bb.maxX - x, bb.minY - y, bb.maxZ - z); + tess.addVertex(bb.minX - x, bb.minY - y, bb.minZ - z); + tess.addVertex(bb.minX - x, bb.minY - y, bb.maxZ - z); + } + + tess.draw(); + + tess.setColorOpaque_F(1F, 1F, 1F); + + GL11.glEnable(GL11.GL_COLOR_MATERIAL); + GL11.glEnable(GL11.GL_TEXTURE_2D); + GL11.glDisable(GL11.GL_POINT_SMOOTH); + GL11.glDisable(GL11.GL_BLEND); + GL11.glEnable(GL11.GL_DEPTH_TEST); + GL11.glPopMatrix(); + } +}