Résolu Problème affichage
-
Bonjour,
Aujourd’hui j’ai crée mon menu custom et j’ai voulu créer un message texte défilant. Hors celui-ci n’apparaît pas (il y a toujours celui par défaut lorsque le message ne peut pas être lu depuis le fichier hébergé).Voici ma classe :
package com.example.examplemod; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.URI; import java.net.URL; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.List; import java.util.Random; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiButtonLanguage; import net.minecraft.client.gui.GuiConfirmOpenLink; import net.minecraft.client.gui.GuiLanguage; import net.minecraft.client.gui.GuiMultiplayer; import net.minecraft.client.gui.GuiOptions; import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.gui.GuiSelectWorld; import net.minecraft.client.gui.GuiYesNo; import net.minecraft.client.gui.GuiYesNoCallback; import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.texture.DynamicTexture; import net.minecraft.client.resources.I18n; import net.minecraft.realms.RealmsBridge; import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.MathHelper; import net.minecraft.util.ResourceLocation; import net.minecraft.world.demo.DemoWorldServer; import net.minecraft.world.storage.ISaveFormat; import net.minecraft.world.storage.WorldInfo; import net.minecraftforge.client.ForgeHooksClient; import org.apache.commons.io.Charsets; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GLContext; import org.lwjgl.util.glu.Project; import com.google.common.base.Strings; import com.google.common.collect.Lists; import cpw.mods.fml.client.GuiModList; import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @SideOnly(Side.CLIENT) public class GuiCustomMainMenu extends GuiScreen implements GuiYesNoCallback { private static final Logger logger = LogManager.getLogger(); /** The RNG used by the Main Menu Screen. */ private static final Random rand = new Random(); /** Counts the number of screen updates. */ private float updateCounter; /** The splash message. */ private String splashText; private GuiButton buttonResetDemo; /** Timer used to rotate the panorama, increases every tick. */ private int panoramaTimer; /** Texture allocated for the current viewport of the main menu's panorama background. */ private DynamicTexture viewportTexture; private final Object field_104025_t = new Object(); private String field_92025_p; private String field_146972_A; private String field_104024_v; private static final ResourceLocation splashTexts = new ResourceLocation("texts/splashes.txt"); private static final ResourceLocation minecraftTitleTextures = new ResourceLocation("textures/gui/title/minecraft.png"); /** An array of all the paths to the panorama pictures. */ private static final ResourceLocation[] titlePanoramaPaths = new ResourceLocation[] {new ResourceLocation("textures/gui/title/background/panorama_0.png"), new ResourceLocation("textures/gui/title/background/panorama_1.png"), new ResourceLocation("textures/gui/title/background/panorama_2.png"), new ResourceLocation("textures/gui/title/background/panorama_3.png"), new ResourceLocation("textures/gui/title/background/panorama_4.png"), new ResourceLocation("textures/gui/title/background/panorama_5.png")}; public static final String field_96138_a = "Please click " + EnumChatFormatting.UNDERLINE + "here" + EnumChatFormatting.RESET + " for more information."; private int field_92024_r; private int field_92023_s; private int field_92022_t; private int field_92021_u; private int field_92020_v; private int field_92019_w; private ResourceLocation field_110351_G; private static final String __OBFID = "CL_00001154"; private static final Runnable Runnable = null; public GuiCustomMainMenu() { this.field_146972_A = field_96138_a; this.splashText = "missingno"; BufferedReader bufferedreader = null; try { ArrayList arraylist = new ArrayList(); bufferedreader = new BufferedReader(new InputStreamReader(Minecraft.getMinecraft().getResourceManager().getResource(splashTexts).getInputStream(), Charsets.UTF_8)); String s; while ((s = bufferedreader.readLine()) != null) { s = s.trim(); if (!s.isEmpty()) { arraylist.add(s); } } if (!arraylist.isEmpty()) { do { this.splashText = (String)arraylist.get(rand.nextInt(arraylist.size())); } while (this.splashText.hashCode() == 125780783); } } catch (IOException ioexception1) { ; } finally { if (bufferedreader != null) { try { bufferedreader.close(); } catch (IOException ioexception) { ; } } } this.updateCounter = rand.nextFloat(); this.field_92025_p = ""; if (!GLContext.getCapabilities().OpenGL20 && !OpenGlHelper.func_153193_b()) { this.field_92025_p = I18n.format("title.oldgl1", new Object[0]); this.field_146972_A = I18n.format("title.oldgl2", new Object[0]); this.field_104024_v = "https://help.mojang.com/customer/portal/articles/325948?ref=game"; } %(#cc66cc)[this.text = defaultText; // on set le text par defaut. (new Thread(Runnable)).start(); this.time = System.currentTimeMillis(); // on récupère l'heure actuelle] } /** * Called from the main game loop to update the screen. */ public void updateScreen() { ++this.panoramaTimer; %(#cc66cc)[long now = System.currentTimeMillis(); // on récupère l'heure actuelle. if ((now - this.time) / 1000 >= 10) // rafraichissement toutes les 10 secondes. { (new Thread(Runnable)).start(); this.time = now; //on enregistre l'heure du dernier rafraichissement. } if (textPosition < 0 - mc.fontRenderer.getStringWidth(text)) // position du texte inférieure a 0 - longueur du texte pour qu'il défile entièrement avant d'appeler la fonction suivante. { textPosition = width / 2 + 220; //cette fonction redonne au texte sa position de départ pour produire l'effet "tourner en boucle". } textPosition -= 2; //soustrait 2 à la valeur de la position en X du texte à chaque appelle de la fonction updateScreen(). Si vous mettez un nombre plus grand, il défilera plus vite, mais l'annimation sera moins fluide. }] /** * Returns true if this GUI should pause the game when it is displayed in single-player */ public boolean doesGuiPauseGame() { return false; } /** * Fired when a key is typed. This is the equivalent of KeyListener.keyTyped(KeyEvent e). */ protected void keyTyped(char p_73869_1_, int p_73869_2_) {} /** * Adds the buttons (and other controls) to the screen in question. */ public void initGui() { this.viewportTexture = new DynamicTexture(256, 256); this.field_110351_G = this.mc.getTextureManager().getDynamicTextureLocation("background", this.viewportTexture); Calendar calendar = Calendar.getInstance(); calendar.setTime(new Date()); if (calendar.get(2) + 1 == 11 && calendar.get(5) == 9) { this.splashText = "Happy birthday, ez!"; } else if (calendar.get(2) + 1 == 6 && calendar.get(5) == 1) { this.splashText = "Happy birthday, Notch!"; } else if (calendar.get(2) + 1 == 12 && calendar.get(5) == 24) { this.splashText = "Merry X-mas!"; } else if (calendar.get(2) + 1 == 1 && calendar.get(5) == 1) { this.splashText = "Happy new year!"; } else if (calendar.get(2) + 1 == 10 && calendar.get(5) == 31) { this.splashText = "OOoooOOOoooo! Spooky!"; } boolean flag = true; int i = this.height / 4 + 48; if (this.mc.isDemo()) { this.addDemoButtons(i, 24); } else { this.addSingleplayerMultiplayerButtons(i, 24); } this.buttonList.add(new GuiButton(0, this.width / 2 - 100, i + 72 + 12, 98, 20, I18n.format("menu.options", new Object[0]))); this.buttonList.add(new GuiButton(4, this.width / 2 + 2, i + 72 + 12, 98, 20, I18n.format("menu.quit", new Object[0]))); this.buttonList.add(new GuiButtonLanguage(5, this.width / 2 - 124, i + 72 + 12)); Object object = this.field_104025_t; synchronized (this.field_104025_t) { this.field_92023_s = this.fontRendererObj.getStringWidth(this.field_92025_p); this.field_92024_r = this.fontRendererObj.getStringWidth(this.field_146972_A); int j = Math.max(this.field_92023_s, this.field_92024_r); this.field_92022_t = (this.width - j) / 2; this.field_92021_u = ((GuiButton)this.buttonList.get(0)).yPosition - 24; this.field_92020_v = this.field_92022_t + j; this.field_92019_w = this.field_92021_u + 24; } } /** * Adds Singleplayer and Multiplayer buttons on Main Menu for players who have bought the game. */ private void addSingleplayerMultiplayerButtons(int p_73969_1_, int p_73969_2_) { this.buttonList.add(new GuiButton(1, this.width / 2 - 100, p_73969_1_, I18n.format("menu.singleplayer", new Object[0]))); this.buttonList.add(new GuiButton(2, this.width / 2 - 100, p_73969_1_ + p_73969_2_ * 1, I18n.format("menu.multiplayer", new Object[0]))); GuiButton realmsButton = new GuiButton(14, this.width / 2 - 100, p_73969_1_ + p_73969_2_ * 2, I18n.format("menu.online", new Object[0])); GuiButton fmlModButton = new GuiButton(6, this.width / 2 - 100, p_73969_1_ + p_73969_2_ * 2, "Mods"); fmlModButton.xPosition = this.width / 2 + 2; realmsButton.width = 98; fmlModButton.width = 98; this.buttonList.add(realmsButton); this.buttonList.add(fmlModButton); } /** * Adds Demo buttons on Main Menu for players who are playing Demo. */ private void addDemoButtons(int p_73972_1_, int p_73972_2_) { this.buttonList.add(new GuiButton(11, this.width / 2 - 100, p_73972_1_, I18n.format("menu.playdemo", new Object[0]))); this.buttonList.add(this.buttonResetDemo = new GuiButton(12, this.width / 2 - 100, p_73972_1_ + p_73972_2_ * 1, I18n.format("menu.resetdemo", new Object[0]))); ISaveFormat isaveformat = this.mc.getSaveLoader(); WorldInfo worldinfo = isaveformat.getWorldInfo("Demo_World"); if (worldinfo == null) { this.buttonResetDemo.enabled = false; } } protected void actionPerformed(GuiButton p_146284_1_) { if (p_146284_1_.id == 0) { this.mc.displayGuiScreen(new GuiOptions(this, this.mc.gameSettings)); } if (p_146284_1_.id == 5) { this.mc.displayGuiScreen(new GuiLanguage(this, this.mc.gameSettings, this.mc.getLanguageManager())); } if (p_146284_1_.id == 1) { this.mc.displayGuiScreen(new GuiSelectWorld(this)); } if (p_146284_1_.id == 2) { this.mc.displayGuiScreen(new GuiLoadingScreen()); } if (p_146284_1_.id == 14) { this.func_140005_i(); } if (p_146284_1_.id == 4) { this.mc.shutdown(); } if (p_146284_1_.id == 6) { this.mc.displayGuiScreen(new GuiModList(this)); } if (p_146284_1_.id == 11) { this.mc.launchIntegratedServer("Demo_World", "Demo_World", DemoWorldServer.demoWorldSettings); } if (p_146284_1_.id == 12) { ISaveFormat isaveformat = this.mc.getSaveLoader(); WorldInfo worldinfo = isaveformat.getWorldInfo("Demo_World"); if (worldinfo != null) { GuiYesNo guiyesno = GuiSelectWorld.func_152129_a(this, worldinfo.getWorldName(), 12); this.mc.displayGuiScreen(guiyesno); } } } private void func_140005_i() { RealmsBridge realmsbridge = new RealmsBridge(); realmsbridge.switchToRealms(this); } public void confirmClicked(boolean p_73878_1_, int p_73878_2_) { if (p_73878_1_ && p_73878_2_ == 12) { ISaveFormat isaveformat = this.mc.getSaveLoader(); isaveformat.flushCache(); isaveformat.deleteWorldDirectory("Demo_World"); this.mc.displayGuiScreen(this); } else if (p_73878_2_ == 13) { if (p_73878_1_) { try { Class oclass = Class.forName("java.awt.Desktop"); Object object = oclass.getMethod("getDesktop", new Class[0]).invoke((Object)null, new Object[0]); oclass.getMethod("browse", new Class[] {URI.class}).invoke(object, new Object[] {new URI(this.field_104024_v)}); } catch (Throwable throwable) { logger.error("Couldn\'t open link", throwable); } } this.mc.displayGuiScreen(this); } } /** * Draws the main menu panorama */ private void drawPanorama(int p_73970_1_, int p_73970_2_, float p_73970_3_) { Tessellator tessellator = Tessellator.instance; GL11.glMatrixMode(GL11.GL_PROJECTION); GL11.glPushMatrix(); GL11.glLoadIdentity(); Project.gluPerspective(120.0F, 1.0F, 0.05F, 10.0F); GL11.glMatrixMode(GL11.GL_MODELVIEW); GL11.glPushMatrix(); GL11.glLoadIdentity(); GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); GL11.glRotatef(180.0F, 1.0F, 0.0F, 0.0F); GL11.glRotatef(90.0F, 0.0F, 0.0F, 1.0F); GL11.glEnable(GL11.GL_BLEND); GL11.glDisable(GL11.GL_ALPHA_TEST); GL11.glDisable(GL11.GL_CULL_FACE); GL11.glDepthMask(false); OpenGlHelper.glBlendFunc(770, 771, 1, 0); byte b0 = 8; for (int k = 0; k < b0 * b0; ++k) { GL11.glPushMatrix(); float f1 = ((float)(k % b0) / (float)b0 - 0.5F) / 64.0F; float f2 = ((float)(k / b0) / (float)b0 - 0.5F) / 64.0F; float f3 = 0.0F; GL11.glTranslatef(f1, f2, f3); GL11.glRotatef(MathHelper.sin(((float)this.panoramaTimer + p_73970_3_) / 400.0F) * 25.0F + 20.0F, 1.0F, 0.0F, 0.0F); GL11.glRotatef(-((float)this.panoramaTimer + p_73970_3_) * 0.1F, 0.0F, 1.0F, 0.0F); for (int l = 0; l < 6; ++l) { GL11.glPushMatrix(); if (l == 1) { GL11.glRotatef(90.0F, 0.0F, 1.0F, 0.0F); } if (l == 2) { GL11.glRotatef(180.0F, 0.0F, 1.0F, 0.0F); } if (l == 3) { GL11.glRotatef(-90.0F, 0.0F, 1.0F, 0.0F); } if (l == 4) { GL11.glRotatef(90.0F, 1.0F, 0.0F, 0.0F); } if (l == 5) { GL11.glRotatef(-90.0F, 1.0F, 0.0F, 0.0F); } this.mc.getTextureManager().bindTexture(titlePanoramaPaths[l]); tessellator.startDrawingQuads(); tessellator.setColorRGBA_I(16777215, 255 / (k + 1)); float f4 = 0.0F; tessellator.addVertexWithUV(-1.0D, -1.0D, 1.0D, (double)(0.0F + f4), (double)(0.0F + f4)); tessellator.addVertexWithUV(1.0D, -1.0D, 1.0D, (double)(1.0F - f4), (double)(0.0F + f4)); tessellator.addVertexWithUV(1.0D, 1.0D, 1.0D, (double)(1.0F - f4), (double)(1.0F - f4)); tessellator.addVertexWithUV(-1.0D, 1.0D, 1.0D, (double)(0.0F + f4), (double)(1.0F - f4)); tessellator.draw(); GL11.glPopMatrix(); } GL11.glPopMatrix(); GL11.glColorMask(true, true, true, false); } tessellator.setTranslation(0.0D, 0.0D, 0.0D); GL11.glColorMask(true, true, true, true); GL11.glMatrixMode(GL11.GL_PROJECTION); GL11.glPopMatrix(); GL11.glMatrixMode(GL11.GL_MODELVIEW); GL11.glPopMatrix(); GL11.glDepthMask(true); GL11.glEnable(GL11.GL_CULL_FACE); GL11.glEnable(GL11.GL_DEPTH_TEST); } /** * Rotate and blurs the skybox view in the main menu */ private void rotateAndBlurSkybox(float p_73968_1_) { this.mc.getTextureManager().bindTexture(this.field_110351_G); GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MIN_FILTER, GL11.GL_LINEAR); GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_LINEAR); GL11.glCopyTexSubImage2D(GL11.GL_TEXTURE_2D, 0, 0, 0, 0, 0, 256, 256); GL11.glEnable(GL11.GL_BLEND); OpenGlHelper.glBlendFunc(770, 771, 1, 0); GL11.glColorMask(true, true, true, false); Tessellator tessellator = Tessellator.instance; tessellator.startDrawingQuads(); GL11.glDisable(GL11.GL_ALPHA_TEST); byte b0 = 3; for (int i = 0; i < b0; ++i) { tessellator.setColorRGBA_F(1.0F, 1.0F, 1.0F, 1.0F / (float)(i + 1)); int j = this.width; int k = this.height; float f1 = (float)(i - b0 / 2) / 256.0F; tessellator.addVertexWithUV((double)j, (double)k, (double)this.zLevel, (double)(0.0F + f1), 1.0D); tessellator.addVertexWithUV((double)j, 0.0D, (double)this.zLevel, (double)(1.0F + f1), 1.0D); tessellator.addVertexWithUV(0.0D, 0.0D, (double)this.zLevel, (double)(1.0F + f1), 0.0D); tessellator.addVertexWithUV(0.0D, (double)k, (double)this.zLevel, (double)(0.0F + f1), 0.0D); } tessellator.draw(); GL11.glEnable(GL11.GL_ALPHA_TEST); GL11.glColorMask(true, true, true, true); } /** * Renders the skybox in the main menu */ private void renderSkybox(int p_73971_1_, int p_73971_2_, float p_73971_3_) { this.mc.getFramebuffer().unbindFramebuffer(); GL11.glViewport(0, 0, 256, 256); this.drawPanorama(p_73971_1_, p_73971_2_, p_73971_3_); this.rotateAndBlurSkybox(p_73971_3_); this.rotateAndBlurSkybox(p_73971_3_); this.rotateAndBlurSkybox(p_73971_3_); this.rotateAndBlurSkybox(p_73971_3_); this.rotateAndBlurSkybox(p_73971_3_); this.rotateAndBlurSkybox(p_73971_3_); this.rotateAndBlurSkybox(p_73971_3_); this.mc.getFramebuffer().bindFramebuffer(true); GL11.glViewport(0, 0, this.mc.displayWidth, this.mc.displayHeight); Tessellator tessellator = Tessellator.instance; tessellator.startDrawingQuads(); float f1 = this.width > this.height ? 120.0F / (float)this.width : 120.0F / (float)this.height; float f2 = (float)this.height * f1 / 256.0F; float f3 = (float)this.width * f1 / 256.0F; tessellator.setColorRGBA_F(1.0F, 1.0F, 1.0F, 1.0F); int k = this.width; int l = this.height; tessellator.addVertexWithUV(0.0D, (double)l, (double)this.zLevel, (double)(0.5F - f2), (double)(0.5F + f3)); tessellator.addVertexWithUV((double)k, (double)l, (double)this.zLevel, (double)(0.5F - f2), (double)(0.5F - f3)); tessellator.addVertexWithUV((double)k, 0.0D, (double)this.zLevel, (double)(0.5F + f2), (double)(0.5F - f3)); tessellator.addVertexWithUV(0.0D, 0.0D, (double)this.zLevel, (double)(0.5F + f2), (double)(0.5F + f3)); tessellator.draw(); } /** * Draws the screen and all the components in it. */ public void drawScreen(int p_73863_1_, int p_73863_2_, float p_73863_3_) { GL11.glDisable(GL11.GL_ALPHA_TEST); this.renderSkybox(p_73863_1_, p_73863_2_, p_73863_3_); GL11.glEnable(GL11.GL_ALPHA_TEST); Tessellator tessellator = Tessellator.instance; short short1 = 274; int k = this.width / 2 - short1 / 2; byte b0 = 30; this.drawGradientRect(0, 0, this.width, this.height, -2130706433, 16777215); this.drawGradientRect(0, 0, this.width, this.height, 0, Integer.MIN_VALUE); this.mc.getTextureManager().bindTexture(minecraftTitleTextures); GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); if ((double)this.updateCounter < 1.0E-4D) { this.drawTexturedModalRect(k + 0, b0 + 0, 0, 0, 99, 44); this.drawTexturedModalRect(k + 99, b0 + 0, 129, 0, 27, 44); this.drawTexturedModalRect(k + 99 + 26, b0 + 0, 126, 0, 3, 44); this.drawTexturedModalRect(k + 99 + 26 + 3, b0 + 0, 99, 0, 26, 44); this.drawTexturedModalRect(k + 155, b0 + 0, 0, 45, 155, 44); } else { this.drawTexturedModalRect(k + 0, b0 + 0, 0, 0, 155, 44); this.drawTexturedModalRect(k + 155, b0 + 0, 0, 45, 155, 44); } tessellator.setColorOpaque_I(-1); GL11.glPushMatrix(); GL11.glTranslatef((float)(this.width / 2 + 90), 70.0F, 0.0F); GL11.glRotatef(-20.0F, 0.0F, 0.0F, 1.0F); float f1 = 1.8F - MathHelper.abs(MathHelper.sin((float)(Minecraft.getSystemTime() % 1000L) / 1000.0F * (float)Math.PI * 2.0F) * 0.1F); f1 = f1 * 100.0F / (float)(this.fontRendererObj.getStringWidth(this.splashText) + 32); GL11.glScalef(f1, f1, f1); this.drawCenteredString(this.fontRendererObj, this.splashText, 0, -8, -256); GL11.glPopMatrix(); String s = "Minecraft 1.7.10"; if (this.mc.isDemo()) { s = s + " Demo"; } List <string>brandings = Lists.reverse(FMLCommonHandler.instance().getBrandings(true)); for (int i = 0; i < brandings.size(); i++) { String brd = brandings.get(i); if (!Strings.isNullOrEmpty(brd)) { this.drawString(this.fontRendererObj, brd, 2, this.height - ( 10 + i * (this.fontRendererObj.FONT_HEIGHT + 1)), 16777215); } } String s1 = "Copyright Mojang AB. Do not distribute!"; this.drawString(this.fontRendererObj, s1, this.width - this.fontRendererObj.getStringWidth(s1) - 2, this.height - 10, -1); if (this.field_92025_p != null && this.field_92025_p.length() > 0) { drawRect(this.field_92022_t - 2, this.field_92021_u - 2, this.field_92020_v + 2, this.field_92019_w - 1, 1428160512); this.drawString(this.fontRendererObj, this.field_92025_p, this.field_92022_t, this.field_92021_u, -1); this.drawString(this.fontRendererObj, this.field_146972_A, (this.width - this.field_92024_r) / 2, ((GuiButton)this.buttonList.get(0)).yPosition - 12, -1); } super.drawScreen(p_73863_1_, p_73863_2_, p_73863_3_); %(#cc33ff)[ drawRect(0, 0, width, 12, 0x66000000); this.drawString(this.fontRendererObj, text, this.textPosition, 2, 0xFFFFFFFF);] } /** * Called when the mouse is clicked. */ protected void mouseClicked(int p_73864_1_, int p_73864_2_, int p_73864_3_) { super.mouseClicked(p_73864_1_, p_73864_2_, p_73864_3_); Object object = this.field_104025_t; synchronized (this.field_104025_t) { if (this.field_92025_p.length() > 0 && p_73864_1_ >= this.field_92022_t && p_73864_1_ <= this.field_92020_v && p_73864_2_ >= this.field_92021_u && p_73864_2_ <= this.field_92019_w) { GuiConfirmOpenLink guiconfirmopenlink = new GuiConfirmOpenLink(this, this.field_104024_v, 13, true); guiconfirmopenlink.func_146358_g(); this.mc.displayGuiScreen(guiconfirmopenlink); } } } public class GetAnnonce implements Runnable { private GuiCustomMainMenu main; private String adress; public GetAnnonce(GuiCustomMainMenu par0, String par1) { this.main = par0; this.adress = par1; } %(#cc33ff)[@Override public void run() { String text = null; //Création de notre variable qui contiendra le texte du fichier String tmp; try // On essaie le code suivant : { URL location = new URL(this.adress); //n'oublier pas d'importer java.net.URL; BufferedReader in = new BufferedReader(new InputStreamReader(location.openStream())); //Cette fonction ouvre une connexion avec le fichier .txt text = in.readLine(); text += " " + tmp;//fonction qui remplit la variable text par le fichier .txt sur le web (ligne par ligne ;)) if (text != null) this.main.text = text; //quand cette fonction sera appelée, cela va nous renvoyer la variable text et son contenu } catch (Exception e) // Si le code ne marche pas une erreur est affichée dans la console { e.printStackTrace(); //Si vous savez pas c'est quoi Knux Vous expliquera :D } } } }]
Code ajouté : - Ligne 87 à 92
- Ligne 155 à 157
- Ligne 166 à 176
- Ligne 598 et 599
- Ligne 621 à la fin</string> -
Pourquoi rafraichir le texte toutes les 10 secondes ? C’est inutile .
-
@‘robin4002’:
Pourquoi rafraichir le texte toutes les 10 secondes ? C’est inutile .
C’est au cas où le texte est modifié. Je peux peut être augmenter le délai ?
-
Qui reste sur le menu de Minecraft pendant plus de 30 secondes ?
S’il quitte le menu et qu’il y retourne ça va déjà mettre à jour le texte. -
@‘robin4002’:
Qui reste sur le menu de Minecraft pendant plus de 30 secondes ?
S’il quitte le menu et qu’il y retourne ça va déjà mettre à jour le texte.C’est vrai, j’ai modifié ma classe par contre je ne trouve pas de solution pour la lecture de mon message de mon fichier txt. Seul le message par défaut est affiché.
Voici ma nouvelle classe :
package com.example.examplemod; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.URI; import java.net.URL; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.List; import java.util.Random; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiButtonLanguage; import net.minecraft.client.gui.GuiConfirmOpenLink; import net.minecraft.client.gui.GuiLanguage; import net.minecraft.client.gui.GuiMultiplayer; import net.minecraft.client.gui.GuiOptions; import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.gui.GuiSelectWorld; import net.minecraft.client.gui.GuiYesNo; import net.minecraft.client.gui.GuiYesNoCallback; import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.texture.DynamicTexture; import net.minecraft.client.resources.I18n; import net.minecraft.realms.RealmsBridge; import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.MathHelper; import net.minecraft.util.ResourceLocation; import net.minecraft.world.demo.DemoWorldServer; import net.minecraft.world.storage.ISaveFormat; import net.minecraft.world.storage.WorldInfo; import net.minecraftforge.client.ForgeHooksClient; import org.apache.commons.io.Charsets; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GLContext; import org.lwjgl.util.glu.Project; import com.google.common.base.Strings; import com.google.common.collect.Lists; import cpw.mods.fml.client.GuiModList; import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @SideOnly(Side.CLIENT) public class GuiCustomMainMenu extends GuiScreen implements GuiYesNoCallback { private static final Logger logger = LogManager.getLogger(); /** The RNG used by the Main Menu Screen. */ private static final Random rand = new Random(); /** Counts the number of screen updates. */ private float updateCounter; /** The splash message. */ private String splashText; private GuiButton buttonResetDemo; /** Timer used to rotate the panorama, increases every tick. */ private int panoramaTimer; /** Texture allocated for the current viewport of the main menu's panorama background. */ private DynamicTexture viewportTexture; private final Object field_104025_t = new Object(); private String field_92025_p; private String field_146972_A; private String field_104024_v; private static final ResourceLocation splashTexts = new ResourceLocation("texts/splashes.txt"); private static final ResourceLocation minecraftTitleTextures = new ResourceLocation("textures/gui/title/minecraft.png"); /** An array of all the paths to the panorama pictures. */ private static final ResourceLocation[] titlePanoramaPaths = new ResourceLocation[] {new ResourceLocation("textures/gui/title/background/panorama_0.png"), new ResourceLocation("textures/gui/title/background/panorama_1.png"), new ResourceLocation("textures/gui/title/background/panorama_2.png"), new ResourceLocation("textures/gui/title/background/panorama_3.png"), new ResourceLocation("textures/gui/title/background/panorama_4.png"), new ResourceLocation("textures/gui/title/background/panorama_5.png")}; public static final String field_96138_a = "Please click " + EnumChatFormatting.UNDERLINE + "here" + EnumChatFormatting.RESET + " for more information."; private int field_92024_r; private int field_92023_s; private int field_92022_t; private int field_92021_u; private int field_92020_v; private int field_92019_w; private ResourceLocation field_110351_G; private static final String __OBFID = "CL_00001154"; private static final Runnable Runnable = null; private int textPosition; public String text; // sera notre texte defillant. private long time; // sera notre temps de référence pour le rafraichissement. private static String defaultText = "Bienvenue sur mon Minecraft moddé"; // texte par default si jamais il y a un problème lors de la récupération des infos. private static String adress = "http://jesuismoi.livehost.fr/annonces.txt"; public GuiCustomMainMenu() { this.field_146972_A = field_96138_a; this.splashText = "missingno"; BufferedReader bufferedreader = null; try { ArrayList arraylist = new ArrayList(); bufferedreader = new BufferedReader(new InputStreamReader(Minecraft.getMinecraft().getResourceManager().getResource(splashTexts).getInputStream(), Charsets.UTF_8)); String s; while ((s = bufferedreader.readLine()) != null) { s = s.trim(); if (!s.isEmpty()) { arraylist.add(s); } } if (!arraylist.isEmpty()) { do { this.splashText = (String)arraylist.get(rand.nextInt(arraylist.size())); } while (this.splashText.hashCode() == 125780783); } } catch (IOException ioexception1) { ; } finally { if (bufferedreader != null) { try { bufferedreader.close(); } catch (IOException ioexception) { ; } } } this.updateCounter = rand.nextFloat(); this.field_92025_p = ""; if (!GLContext.getCapabilities().OpenGL20 && !OpenGlHelper.func_153193_b()) { this.field_92025_p = I18n.format("title.oldgl1", new Object[0]); this.field_146972_A = I18n.format("title.oldgl2", new Object[0]); this.field_104024_v = "https://help.mojang.com/customer/portal/articles/325948?ref=game"; } this.text = defaultText; // on set le text par defaut. (new Thread(Runnable)).start(); } /** * Called from the main game loop to update the screen. */ public void updateScreen() { ++this.panoramaTimer; if (textPosition < 0 - mc.fontRenderer.getStringWidth(text)) // position du texte inférieure a 0 - longueur du texte pour qu'il défile entièrement avant d'appeler la fonction suivante. { textPosition = width / 2 + 220; //cette fonction redonne au texte sa position de départ pour produire l'effet "tourner en boucle". } textPosition -= 2; //soustrait 2 à la valeur de la position en X du texte à chaque appelle de la fonction updateScreen(). Si vous mettez un nombre plus grand, il défilera plus vite, mais l'annimation sera moins fluide. } /** * Returns true if this GUI should pause the game when it is displayed in single-player */ public boolean doesGuiPauseGame() { return false; } /** * Fired when a key is typed. This is the equivalent of KeyListener.keyTyped(KeyEvent e). */ protected void keyTyped(char p_73869_1_, int p_73869_2_) {} /** * Adds the buttons (and other controls) to the screen in question. */ public void initGui() { this.viewportTexture = new DynamicTexture(256, 256); this.field_110351_G = this.mc.getTextureManager().getDynamicTextureLocation("background", this.viewportTexture); Calendar calendar = Calendar.getInstance(); calendar.setTime(new Date()); if (calendar.get(2) + 1 == 11 && calendar.get(5) == 9) { this.splashText = "Happy birthday, ez!"; } else if (calendar.get(2) + 1 == 6 && calendar.get(5) == 1) { this.splashText = "Happy birthday, Notch!"; } else if (calendar.get(2) + 1 == 12 && calendar.get(5) == 24) { this.splashText = "Merry X-mas!"; } else if (calendar.get(2) + 1 == 1 && calendar.get(5) == 1) { this.splashText = "Happy new year!"; } else if (calendar.get(2) + 1 == 10 && calendar.get(5) == 31) { this.splashText = "OOoooOOOoooo! Spooky!"; } boolean flag = true; int i = this.height / 4 + 48; if (this.mc.isDemo()) { this.addDemoButtons(i, 24); } else { this.addSingleplayerMultiplayerButtons(i, 24); } this.buttonList.add(new GuiButton(0, this.width / 2 - 100, i + 72 + 12, 98, 20, I18n.format("menu.options", new Object[0]))); this.buttonList.add(new GuiButton(4, this.width / 2 + 2, i + 72 + 12, 98, 20, I18n.format("menu.quit", new Object[0]))); this.buttonList.add(new GuiButtonLanguage(5, this.width / 2 - 124, i + 72 + 12)); Object object = this.field_104025_t; synchronized (this.field_104025_t) { this.field_92023_s = this.fontRendererObj.getStringWidth(this.field_92025_p); this.field_92024_r = this.fontRendererObj.getStringWidth(this.field_146972_A); int j = Math.max(this.field_92023_s, this.field_92024_r); this.field_92022_t = (this.width - j) / 2; this.field_92021_u = ((GuiButton)this.buttonList.get(0)).yPosition - 24; this.field_92020_v = this.field_92022_t + j; this.field_92019_w = this.field_92021_u + 24; } } /** * Adds Singleplayer and Multiplayer buttons on Main Menu for players who have bought the game. */ private void addSingleplayerMultiplayerButtons(int p_73969_1_, int p_73969_2_) { this.buttonList.add(new GuiButton(1, this.width / 2 - 100, p_73969_1_, I18n.format("menu.singleplayer", new Object[0]))); this.buttonList.add(new GuiButton(2, this.width / 2 - 100, p_73969_1_ + p_73969_2_ * 1, I18n.format("menu.multiplayer", new Object[0]))); GuiButton realmsButton = new GuiButton(14, this.width / 2 - 100, p_73969_1_ + p_73969_2_ * 2, I18n.format("menu.online", new Object[0])); GuiButton fmlModButton = new GuiButton(6, this.width / 2 - 100, p_73969_1_ + p_73969_2_ * 2, "Mods"); fmlModButton.xPosition = this.width / 2 + 2; realmsButton.width = 98; fmlModButton.width = 98; this.buttonList.add(realmsButton); this.buttonList.add(fmlModButton); } /** * Adds Demo buttons on Main Menu for players who are playing Demo. */ private void addDemoButtons(int p_73972_1_, int p_73972_2_) { this.buttonList.add(new GuiButton(11, this.width / 2 - 100, p_73972_1_, I18n.format("menu.playdemo", new Object[0]))); this.buttonList.add(this.buttonResetDemo = new GuiButton(12, this.width / 2 - 100, p_73972_1_ + p_73972_2_ * 1, I18n.format("menu.resetdemo", new Object[0]))); ISaveFormat isaveformat = this.mc.getSaveLoader(); WorldInfo worldinfo = isaveformat.getWorldInfo("Demo_World"); if (worldinfo == null) { this.buttonResetDemo.enabled = false; } } protected void actionPerformed(GuiButton p_146284_1_) { if (p_146284_1_.id == 0) { this.mc.displayGuiScreen(new GuiOptions(this, this.mc.gameSettings)); } if (p_146284_1_.id == 5) { this.mc.displayGuiScreen(new GuiLanguage(this, this.mc.gameSettings, this.mc.getLanguageManager())); } if (p_146284_1_.id == 1) { this.mc.displayGuiScreen(new GuiSelectWorld(this)); } if (p_146284_1_.id == 2) { this.mc.displayGuiScreen(new GuiLoadingScreen()); } if (p_146284_1_.id == 14) { this.func_140005_i(); } if (p_146284_1_.id == 4) { this.mc.shutdown(); } if (p_146284_1_.id == 6) { this.mc.displayGuiScreen(new GuiModList(this)); } if (p_146284_1_.id == 11) { this.mc.launchIntegratedServer("Demo_World", "Demo_World", DemoWorldServer.demoWorldSettings); } if (p_146284_1_.id == 12) { ISaveFormat isaveformat = this.mc.getSaveLoader(); WorldInfo worldinfo = isaveformat.getWorldInfo("Demo_World"); if (worldinfo != null) { GuiYesNo guiyesno = GuiSelectWorld.func_152129_a(this, worldinfo.getWorldName(), 12); this.mc.displayGuiScreen(guiyesno); } } } private void func_140005_i() { RealmsBridge realmsbridge = new RealmsBridge(); realmsbridge.switchToRealms(this); } public void confirmClicked(boolean p_73878_1_, int p_73878_2_) { if (p_73878_1_ && p_73878_2_ == 12) { ISaveFormat isaveformat = this.mc.getSaveLoader(); isaveformat.flushCache(); isaveformat.deleteWorldDirectory("Demo_World"); this.mc.displayGuiScreen(this); } else if (p_73878_2_ == 13) { if (p_73878_1_) { try { Class oclass = Class.forName("java.awt.Desktop"); Object object = oclass.getMethod("getDesktop", new Class[0]).invoke((Object)null, new Object[0]); oclass.getMethod("browse", new Class[] {URI.class}).invoke(object, new Object[] {new URI(this.field_104024_v)}); } catch (Throwable throwable) { logger.error("Couldn\'t open link", throwable); } } this.mc.displayGuiScreen(this); } } /** * Draws the main menu panorama */ private void drawPanorama(int p_73970_1_, int p_73970_2_, float p_73970_3_) { Tessellator tessellator = Tessellator.instance; GL11.glMatrixMode(GL11.GL_PROJECTION); GL11.glPushMatrix(); GL11.glLoadIdentity(); Project.gluPerspective(120.0F, 1.0F, 0.05F, 10.0F); GL11.glMatrixMode(GL11.GL_MODELVIEW); GL11.glPushMatrix(); GL11.glLoadIdentity(); GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); GL11.glRotatef(180.0F, 1.0F, 0.0F, 0.0F); GL11.glRotatef(90.0F, 0.0F, 0.0F, 1.0F); GL11.glEnable(GL11.GL_BLEND); GL11.glDisable(GL11.GL_ALPHA_TEST); GL11.glDisable(GL11.GL_CULL_FACE); GL11.glDepthMask(false); OpenGlHelper.glBlendFunc(770, 771, 1, 0); byte b0 = 8; for (int k = 0; k < b0 * b0; ++k) { GL11.glPushMatrix(); float f1 = ((float)(k % b0) / (float)b0 - 0.5F) / 64.0F; float f2 = ((float)(k / b0) / (float)b0 - 0.5F) / 64.0F; float f3 = 0.0F; GL11.glTranslatef(f1, f2, f3); GL11.glRotatef(MathHelper.sin(((float)this.panoramaTimer + p_73970_3_) / 400.0F) * 25.0F + 20.0F, 1.0F, 0.0F, 0.0F); GL11.glRotatef(-((float)this.panoramaTimer + p_73970_3_) * 0.1F, 0.0F, 1.0F, 0.0F); for (int l = 0; l < 6; ++l) { GL11.glPushMatrix(); if (l == 1) { GL11.glRotatef(90.0F, 0.0F, 1.0F, 0.0F); } if (l == 2) { GL11.glRotatef(180.0F, 0.0F, 1.0F, 0.0F); } if (l == 3) { GL11.glRotatef(-90.0F, 0.0F, 1.0F, 0.0F); } if (l == 4) { GL11.glRotatef(90.0F, 1.0F, 0.0F, 0.0F); } if (l == 5) { GL11.glRotatef(-90.0F, 1.0F, 0.0F, 0.0F); } this.mc.getTextureManager().bindTexture(titlePanoramaPaths[l]); tessellator.startDrawingQuads(); tessellator.setColorRGBA_I(16777215, 255 / (k + 1)); float f4 = 0.0F; tessellator.addVertexWithUV(-1.0D, -1.0D, 1.0D, (double)(0.0F + f4), (double)(0.0F + f4)); tessellator.addVertexWithUV(1.0D, -1.0D, 1.0D, (double)(1.0F - f4), (double)(0.0F + f4)); tessellator.addVertexWithUV(1.0D, 1.0D, 1.0D, (double)(1.0F - f4), (double)(1.0F - f4)); tessellator.addVertexWithUV(-1.0D, 1.0D, 1.0D, (double)(0.0F + f4), (double)(1.0F - f4)); tessellator.draw(); GL11.glPopMatrix(); } GL11.glPopMatrix(); GL11.glColorMask(true, true, true, false); } tessellator.setTranslation(0.0D, 0.0D, 0.0D); GL11.glColorMask(true, true, true, true); GL11.glMatrixMode(GL11.GL_PROJECTION); GL11.glPopMatrix(); GL11.glMatrixMode(GL11.GL_MODELVIEW); GL11.glPopMatrix(); GL11.glDepthMask(true); GL11.glEnable(GL11.GL_CULL_FACE); GL11.glEnable(GL11.GL_DEPTH_TEST); } /** * Rotate and blurs the skybox view in the main menu */ private void rotateAndBlurSkybox(float p_73968_1_) { this.mc.getTextureManager().bindTexture(this.field_110351_G); GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MIN_FILTER, GL11.GL_LINEAR); GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_LINEAR); GL11.glCopyTexSubImage2D(GL11.GL_TEXTURE_2D, 0, 0, 0, 0, 0, 256, 256); GL11.glEnable(GL11.GL_BLEND); OpenGlHelper.glBlendFunc(770, 771, 1, 0); GL11.glColorMask(true, true, true, false); Tessellator tessellator = Tessellator.instance; tessellator.startDrawingQuads(); GL11.glDisable(GL11.GL_ALPHA_TEST); byte b0 = 3; for (int i = 0; i < b0; ++i) { tessellator.setColorRGBA_F(1.0F, 1.0F, 1.0F, 1.0F / (float)(i + 1)); int j = this.width; int k = this.height; float f1 = (float)(i - b0 / 2) / 256.0F; tessellator.addVertexWithUV((double)j, (double)k, (double)this.zLevel, (double)(0.0F + f1), 1.0D); tessellator.addVertexWithUV((double)j, 0.0D, (double)this.zLevel, (double)(1.0F + f1), 1.0D); tessellator.addVertexWithUV(0.0D, 0.0D, (double)this.zLevel, (double)(1.0F + f1), 0.0D); tessellator.addVertexWithUV(0.0D, (double)k, (double)this.zLevel, (double)(0.0F + f1), 0.0D); } tessellator.draw(); GL11.glEnable(GL11.GL_ALPHA_TEST); GL11.glColorMask(true, true, true, true); } /** * Renders the skybox in the main menu */ private void renderSkybox(int p_73971_1_, int p_73971_2_, float p_73971_3_) { this.mc.getFramebuffer().unbindFramebuffer(); GL11.glViewport(0, 0, 256, 256); this.drawPanorama(p_73971_1_, p_73971_2_, p_73971_3_); this.rotateAndBlurSkybox(p_73971_3_); this.rotateAndBlurSkybox(p_73971_3_); this.rotateAndBlurSkybox(p_73971_3_); this.rotateAndBlurSkybox(p_73971_3_); this.rotateAndBlurSkybox(p_73971_3_); this.rotateAndBlurSkybox(p_73971_3_); this.rotateAndBlurSkybox(p_73971_3_); this.mc.getFramebuffer().bindFramebuffer(true); GL11.glViewport(0, 0, this.mc.displayWidth, this.mc.displayHeight); Tessellator tessellator = Tessellator.instance; tessellator.startDrawingQuads(); float f1 = this.width > this.height ? 120.0F / (float)this.width : 120.0F / (float)this.height; float f2 = (float)this.height * f1 / 256.0F; float f3 = (float)this.width * f1 / 256.0F; tessellator.setColorRGBA_F(1.0F, 1.0F, 1.0F, 1.0F); int k = this.width; int l = this.height; tessellator.addVertexWithUV(0.0D, (double)l, (double)this.zLevel, (double)(0.5F - f2), (double)(0.5F + f3)); tessellator.addVertexWithUV((double)k, (double)l, (double)this.zLevel, (double)(0.5F - f2), (double)(0.5F - f3)); tessellator.addVertexWithUV((double)k, 0.0D, (double)this.zLevel, (double)(0.5F + f2), (double)(0.5F - f3)); tessellator.addVertexWithUV(0.0D, 0.0D, (double)this.zLevel, (double)(0.5F + f2), (double)(0.5F + f3)); tessellator.draw(); } /** * Draws the screen and all the components in it. */ public void drawScreen(int p_73863_1_, int p_73863_2_, float p_73863_3_) { GL11.glDisable(GL11.GL_ALPHA_TEST); this.renderSkybox(p_73863_1_, p_73863_2_, p_73863_3_); GL11.glEnable(GL11.GL_ALPHA_TEST); Tessellator tessellator = Tessellator.instance; short short1 = 274; int k = this.width / 2 - short1 / 2; byte b0 = 30; this.drawGradientRect(0, 0, this.width, this.height, -2130706433, 16777215); this.drawGradientRect(0, 0, this.width, this.height, 0, Integer.MIN_VALUE); this.mc.getTextureManager().bindTexture(minecraftTitleTextures); GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); if ((double)this.updateCounter < 1.0E-4D) { this.drawTexturedModalRect(k + 0, b0 + 0, 0, 0, 99, 44); this.drawTexturedModalRect(k + 99, b0 + 0, 129, 0, 27, 44); this.drawTexturedModalRect(k + 99 + 26, b0 + 0, 126, 0, 3, 44); this.drawTexturedModalRect(k + 99 + 26 + 3, b0 + 0, 99, 0, 26, 44); this.drawTexturedModalRect(k + 155, b0 + 0, 0, 45, 155, 44); } else { this.drawTexturedModalRect(k + 0, b0 + 0, 0, 0, 155, 44); this.drawTexturedModalRect(k + 155, b0 + 0, 0, 45, 155, 44); } tessellator.setColorOpaque_I(-1); GL11.glPushMatrix(); GL11.glTranslatef((float)(this.width / 2 + 90), 70.0F, 0.0F); GL11.glRotatef(-20.0F, 0.0F, 0.0F, 1.0F); float f1 = 1.8F - MathHelper.abs(MathHelper.sin((float)(Minecraft.getSystemTime() % 1000L) / 1000.0F * (float)Math.PI * 2.0F) * 0.1F); f1 = f1 * 100.0F / (float)(this.fontRendererObj.getStringWidth(this.splashText) + 32); GL11.glScalef(f1, f1, f1); this.drawCenteredString(this.fontRendererObj, this.splashText, 0, -8, -256); GL11.glPopMatrix(); String s = "Minecraft 1.7.10"; if (this.mc.isDemo()) { s = s + " Demo"; } List <string>brandings = Lists.reverse(FMLCommonHandler.instance().getBrandings(true)); for (int i = 0; i < brandings.size(); i++) { String brd = brandings.get(i); if (!Strings.isNullOrEmpty(brd)) { this.drawString(this.fontRendererObj, brd, 2, this.height - ( 10 + i * (this.fontRendererObj.FONT_HEIGHT + 1)), 16777215); } } String s1 = "Copyright Mojang AB. Do not distribute!"; this.drawString(this.fontRendererObj, s1, this.width - this.fontRendererObj.getStringWidth(s1) - 2, this.height - 10, -1); if (this.field_92025_p != null && this.field_92025_p.length() > 0) { drawRect(this.field_92022_t - 2, this.field_92021_u - 2, this.field_92020_v + 2, this.field_92019_w - 1, 1428160512); this.drawString(this.fontRendererObj, this.field_92025_p, this.field_92022_t, this.field_92021_u, -1); this.drawString(this.fontRendererObj, this.field_146972_A, (this.width - this.field_92024_r) / 2, ((GuiButton)this.buttonList.get(0)).yPosition - 12, -1); } super.drawScreen(p_73863_1_, p_73863_2_, p_73863_3_); drawRect(0, 0, width, 12, 0x66000000); this.drawString(this.fontRendererObj, text, this.textPosition, 2, 0xFFFFFFFF); } /** * Called when the mouse is clicked. */ protected void mouseClicked(int p_73864_1_, int p_73864_2_, int p_73864_3_) { super.mouseClicked(p_73864_1_, p_73864_2_, p_73864_3_); Object object = this.field_104025_t; synchronized (this.field_104025_t) { if (this.field_92025_p.length() > 0 && p_73864_1_ >= this.field_92022_t && p_73864_1_ <= this.field_92020_v && p_73864_2_ >= this.field_92021_u && p_73864_2_ <= this.field_92019_w) { GuiConfirmOpenLink guiconfirmopenlink = new GuiConfirmOpenLink(this, this.field_104024_v, 13, true); guiconfirmopenlink.func_146358_g(); this.mc.displayGuiScreen(guiconfirmopenlink); } } } public class GetAnnonce implements Runnable { private GuiCustomMainMenu main; private String adress; public GetAnnonce(GuiCustomMainMenu par0, String par1) { this.main = par0; this.adress = par1; } @Override public void run() { String text = null; //Création de notre variable qui contiendra le texte du fichier String tmp; try // On essaie le code suivant : { URL location = new URL(this.adress); //n'oublier pas d'importer java.net.URL; BufferedReader in = new BufferedReader(new InputStreamReader(location.openStream())); //Cette fonction ouvre une connexion avec le fichier .txt text = in.readLine(); text += " " + tmp;//fonction qui remplit la variable text par le fichier .txt sur le web (ligne par ligne ;)) if (text != null) this.main.text = text; //quand cette fonction sera appelée, cela va nous renvoyer la variable text et son contenu } { e.printStackTrace(); //Si vous savez pas c'est quoi Knux Vous expliquera :D } } } } ```</string>
-
Dans la fonction run de ta classe GetAnnonce ajoute du debug (donc des System.out.println(“quelque chose”); à différent endroit pour vérifier que le code s’exécute, tu peux aussi afficher la valeur de text pour regarde ce qu’il vaut).
-
Alors j’ai essayé de mettre des println mais aucun n’est affiché. On dirait que la classe GetAnnonce n’est pas prise en compte.
-
En effet, tu ne l’appelle jamais …
(new Thread(Runnable)).start();
n’est pas bon du tout.
Mets plutôt :
(new GetAnnonce(this, adress)).start();Et ici :
public class GetAnnonce implements Runnable
Remplace par :
public static class GetAnnonce extends Thread -
ça marche parfaitement merci beaucoup !