package mods.eln.sixnode.tutorialsign; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import mods.eln.misc.Utils; import mods.eln.node.six.SixNodeBlock; import mods.eln.node.six.SixNodeElementRender; import mods.eln.node.six.SixNodeEntity; import net.minecraft.client.Minecraft; import net.minecraft.client.entity.EntityClientPlayerMP; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.MathHelper; import net.minecraft.world.World; import net.minecraftforge.client.event.RenderGameOverlayEvent; import org.lwjgl.opengl.GL11; public class TutorialSignOverlay { TutorialSignRender oldRender = null; public TutorialSignOverlay() { int i = 0; i++; } @SubscribeEvent public void render(RenderGameOverlayEvent.Text event) { Minecraft mc = Minecraft.getMinecraft(); EntityClientPlayerMP player = mc.thePlayer; if (oldRender != null) { oldRender.lightInterpol.setTarget(0); oldRender = null; } int px = MathHelper.floor_double(player.posX), py = MathHelper.floor_double(player.posY), pz = MathHelper.floor_double(player.posZ); int r = 1; World w = player.worldObj; TutorialSignRender best = null; double bestDistance = 10000; for (int x = px - r; x <= px + r; x++) { for (int y = py - r; y <= py + r; y++) { for (int z = pz - r; z <= pz + r; z++) { if (w.getBlock(x, y, z) instanceof SixNodeBlock) { TileEntity e = w.getTileEntity(x, y, z); if (e instanceof SixNodeEntity) { SixNodeEntity sne = (SixNodeEntity) e; for (SixNodeElementRender render : sne.elementRenderList) { if (render instanceof TutorialSignRender) { double d = Utils.getLength(player.posX, player.posY, player.posZ, x + 0.5, y + 0.5, z + 0.5); if (d < bestDistance) { bestDistance = d; best = (TutorialSignRender) render; break; } } } } } } } } if (best != null) { oldRender = best; oldRender.lightInterpol.setTarget(1f); GL11.glPushMatrix(); GL11.glScalef(0.5f, 0.5f, 0.5f); int y = 0; for (String str : best.texts) { Minecraft.getMinecraft().fontRenderer.drawString(str, 10/* event.resolution.getScaledWidth() / 2 - 50*/, 10 + y, 0xFFFFFF); y += 10; } GL11.glPopMatrix(); } } }