Résolu Texte defilant dans le GuiMainMenu pour Minecraft 1.12.2
-
Bonjour j ai regarde le tuto pour le texte défilant dans le tuto pour le GuimainMenu mais sa ne marche pas voici mon code
package net.minecraft.client.gui; import com.google.common.base.Charsets; import com.google.common.collect.Lists; import com.google.common.io.CharStreams; import com.google.common.util.concurrent.Runnables; import java.io.BufferedReader; import java.io.Closeable; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.URI; import java.net.URL; import java.nio.charset.StandardCharsets; 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.renderer.BufferBuilder; import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.texture.DynamicTexture; import net.minecraft.client.renderer.vertex.DefaultVertexFormats; import net.minecraft.client.resources.I18n; import net.minecraft.client.resources.IResource; import net.minecraft.client.settings.GameSettings; import net.minecraft.realms.RealmsBridge; import net.minecraft.util.ResourceLocation; import net.minecraft.util.StringUtils; import net.minecraft.util.math.MathHelper; import net.minecraft.util.text.TextFormatting; import net.minecraft.world.WorldServerDemo; import net.minecraft.world.storage.ISaveFormat; import net.minecraft.world.storage.WorldInfo; import net.minecraftforge.fml.client.FMLClientHandler; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; import org.apache.commons.io.IOUtils; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.lwjgl.input.Mouse; import org.lwjgl.opengl.GLContext; import org.lwjgl.util.glu.Project; @SideOnly(Side.CLIENT) public class GuiMainMenu extends GuiScreen { private static final Logger LOGGER = LogManager.getLogger(); private static final Random RANDOM = new Random(); /** * A random number between 0.0 and 1.0, used to determine if the title screen says <a<br> * href="https://minecraft.gamepedia.com/Menu_screen#Minceraft">Minceraft instead of Minecraft. Set during * construction; if the value is less than .0001, then Minceraft is displayed. */ private final float minceraftRoll; private int scrollingTextPosX; /** The splash message. */ private String splashText; private GuiButton buttonResetDemo; /** Timer used to rotate the panorama, increases every tick. */ private float panoramaTimer; /** Texture allocated for the current viewport of the main menu's panorama background. */ private DynamicTexture viewportTexture; /** The Object object utilized as a thread lock when performing non thread-safe operations */ private final Object threadLock = new Object(); public static final String MORE_INFO_TEXT = "Please click " + TextFormatting.UNDERLINE + "here" + TextFormatting.RESET + " for more information."; /** Width of openGLWarning2 */ private int openGLWarning2Width; /** Width of openGLWarning1 */ private int openGLWarning1Width; /** Left x coordinate of the OpenGL warning */ private int openGLWarningX1; /** Top y coordinate of the OpenGL warning */ private int openGLWarningY1; /** Right x coordinate of the OpenGL warning */ private int openGLWarningX2; /** Bottom y coordinate of the OpenGL warning */ private int openGLWarningY2; /** OpenGL graphics card warning. */ private String openGLWarning1; /** OpenGL graphics card warning. */ private String openGLWarning2; private String scrollingText; /** Link to the Mojang Support about minimum requirements */ private String openGLWarningLink; private static final ResourceLocation SPLASH_TEXTS = new ResourceLocation("texts/splashes.txts"); private static final ResourceLocation MFF_TITLE = new ResourceLocation("textures/gui/mff_title.png"); private static final ResourceLocation field_194400_H = new ResourceLocation("textures/gui/edition.png"); /** An array of all the paths to the panorama pictures. */ private static final ResourceLocation BACKGROUND_TEXTURE = new ResourceLocation("textures/gui/background.png"); private ResourceLocation backgroundTexture; /** Minecraft Realms button. */ private GuiButton realmsButton; /** Has the check for a realms notification screen been performed? */ private boolean hasCheckedForRealmsNotification; /** * A screen generated by realms for notifications; drawn in adition to the main menu (buttons and such from both are * drawn at the same time). May be null. */ private GuiScreen realmsNotification; private int widthCopyright; private int widthCopyrightRest; private GuiButton modButton; private net.minecraftforge.client.gui.NotificationModUpdateScreen modUpdateNotification; private int widthCopyrightRest1; private double updateCounter; public GuiMainMenu() { new Thread() { @Override public void run() { try { URL url = new URL("http://dl.mcnanotech.fr/mff/tutoriels/mainmenutext.txt"); InputStream is = url.openStream(); GuiMainMenu.this.scrollingText = CharStreams.toString(new InputStreamReader(is, Charsets.UTF_8)); } catch(Exception e) { GuiMainMenu.this.scrollingText = "Impossible de lire le texte"; } } }.start(); FMLClientHandler.instance().setupServerList(); this.openGLWarning2 = MORE_INFO_TEXT; this.splashText = ""; IResource iresource = null; try { List <string>list = Lists.<string>newArrayList(); iresource = Minecraft.getMinecraft().getResourceManager().getResource(SPLASH_TEXTS); BufferedReader bufferedreader = new BufferedReader(new InputStreamReader(iresource.getInputStream(), StandardCharsets.UTF_8)); String s; while ((s = bufferedreader.readLine()) != null) { s = s.trim(); if (!s.isEmpty()) { list.add(s); } } if (!list.isEmpty()) { while (true) { this.splashText = list.get(RANDOM.nextInt(list.size())); if (this.splashText.hashCode() != 125780783) { break; } } } } catch (IOException var8) { ; } finally { IOUtils.closeQuietly((Closeable)iresource); } this.minceraftRoll = RANDOM.nextFloat(); this.openGLWarning1 = ""; if (!GLContext.getCapabilities().OpenGL20 && !OpenGlHelper.areShadersSupported()) { this.openGLWarning1 = I18n.format("title.oldgl1"); this.openGLWarning2 = I18n.format("title.oldgl2"); this.openGLWarningLink = "https://help.mojang.com/customer/portal/articles/325948?ref=game"; } } /** * Is there currently a realms notification screen, and are realms notifications enabled? */ private boolean areRealmsNotificationsEnabled() { return Minecraft.getMinecraft().gameSettings.getOptionOrdinalValue(GameSettings.Options.REALMS_NOTIFICATIONS) && this.realmsNotification != null; } /** * Called from the main game loop to update the screen. */ public void updateScreen() { if (this.areRealmsNotificationsEnabled()) { this.realmsNotification.updateScreen(); } } /** * 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 (except F11 which toggles full screen). This is the equivalent of * KeyListener.keyTyped(KeyEvent e). Args : character (character on the key), keyCode (lwjgl Keyboard key code) */ protected void keyTyped(char typedChar, int keyCode) throws IOException { } /** * Adds the buttons (and other controls) to the screen in question. Called when the GUI is displayed and when the * window resizes, the buttonList is cleared beforehand. */ public void initGui() { this.viewportTexture = new DynamicTexture(256, 256); this.backgroundTexture = this.mc.getTextureManager().getDynamicTextureLocation("background", this.viewportTexture); this.widthCopyright = this.fontRenderer.getStringWidth("§eCopyright Mojang AB."); this.widthCopyrightRest = this.width - this.widthCopyright - 2; Calendar calendar = Calendar.getInstance(); calendar.setTime(new Date()); if (calendar.get(2) + 1 == 12 && calendar.get(5) == 24) { this.splashText = ""; } else if (calendar.get(2) + 1 == 1 && calendar.get(5) == 1) { this.splashText = ""; } else if (calendar.get(2) + 1 == 10 && calendar.get(5) == 31) { this.splashText = ""; } int i = 24; int j = this.height / 4 + 48; if (this.mc.isDemo()) { this.addDemoButtons(j, 24); } else { this.addSingleplayerMultiplayerButtons(j, 24); } this.buttonList.add(new GuiButton(0, this.width / 2 - 100, j + 72 + 12, 98, 20, I18n.format("menu.options"))); this.buttonList.add(new GuiButton(4, this.width / 2 + 2, j + 72 + 12, 98, 20, I18n.format("menu.quit"))); this.buttonList.add(new GuiButtonLanguage(5, this.width / 2 - 124, j + 72 + 12)); synchronized (this.threadLock) { this.openGLWarning1Width = this.fontRenderer.getStringWidth(this.openGLWarning1); this.openGLWarning2Width = this.fontRenderer.getStringWidth(this.openGLWarning2); int k = Math.max(this.openGLWarning1Width, this.openGLWarning2Width); this.openGLWarningX1 = (this.width - k) / 2; this.openGLWarningY1 = (this.buttonList.get(0)).y - 24; this.openGLWarningX2 = this.openGLWarningX1 + k; this.openGLWarningY2 = this.openGLWarningY1 + 24; } this.mc.setConnectedToRealms(false); if (Minecraft.getMinecraft().gameSettings.getOptionOrdinalValue(GameSettings.Options.REALMS_NOTIFICATIONS) && !this.hasCheckedForRealmsNotification) { RealmsBridge realmsbridge = new RealmsBridge(); this.realmsNotification = realmsbridge.getNotificationScreen(this); this.hasCheckedForRealmsNotification = true; } if (this.areRealmsNotificationsEnabled()) { this.realmsNotification.setGuiSize(this.width, this.height); this.realmsNotification.initGui(); } modUpdateNotification = net.minecraftforge.client.gui.NotificationModUpdateScreen.init(this, modButton); } /** * 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"))); this.buttonList.add(new GuiButton(2, this.width / 2 - 100, p_73969_1_ + p_73969_2_ * 1, I18n.format("menu.multiplayer"))); this.realmsButton = this.addButton(new GuiButton(14, this.width / 2 + 2, p_73969_1_ + p_73969_2_ * 2, 98, 20, I18n.format("menu.online").replace("Minecraft", "").trim())); this.buttonList.add(modButton = new GuiButton(6, this.width / 2 - 100, p_73969_1_ + p_73969_2_ * 2, 98, 20, I18n.format("fml.menu.mods"))); } /** * 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"))); this.buttonResetDemo = this.addButton(new GuiButton(12, this.width / 2 - 100, p_73972_1_ + p_73972_2_ * 1, I18n.format("menu.resetdemo"))); ISaveFormat isaveformat = this.mc.getSaveLoader(); WorldInfo worldinfo = isaveformat.getWorldInfo("Demo_World"); if (worldinfo == null) { this.buttonResetDemo.enabled = false; } } /** * Called by the controls from the buttonList when activated. (Mouse pressed for buttons) */ protected void actionPerformed(GuiButton button) throws IOException { if (button.id == 0) { this.mc.displayGuiScreen(new GuiOptions(this, this.mc.gameSettings)); } if (button.id == 5) { this.mc.displayGuiScreen(new GuiLanguage(this, this.mc.gameSettings, this.mc.getLanguageManager())); } if (button.id == 1) { this.mc.displayGuiScreen(new GuiWorldSelection(this)); } if (button.id == 2) { this.mc.displayGuiScreen(new GuiMultiplayer(this)); } if (button.id == 14 && this.realmsButton.visible) { this.switchToRealms(); } if (button.id == 4) { this.mc.shutdown(); } if (button.id == 6) { this.mc.displayGuiScreen(new net.minecraftforge.fml.client.GuiModList(this)); } if (button.id == 11) { this.mc.launchIntegratedServer("Demo_World", "Demo_World", WorldServerDemo.DEMO_WORLD_SETTINGS); } if (button.id == 12) { ISaveFormat isaveformat = this.mc.getSaveLoader(); WorldInfo worldinfo = isaveformat.getWorldInfo("Demo_World"); if (worldinfo != null) { this.mc.displayGuiScreen(new GuiYesNo(this, I18n.format("selectWorld.deleteQuestion"), "'" + worldinfo.getWorldName() + "' " + I18n.format("selectWorld.deleteWarning"), I18n.format("selectWorld.deleteButton"), I18n.format("gui.cancel"), 12)); } } } private void switchToRealms() { RealmsBridge realmsbridge = new RealmsBridge(); realmsbridge.switchToRealms(this); } public void confirmClicked(boolean result, int id) { if (result && id == 12) { ISaveFormat isaveformat = this.mc.getSaveLoader(); isaveformat.flushCache(); isaveformat.deleteWorldDirectory("Demo_World"); this.mc.displayGuiScreen(this); } else if (id == 12) { this.mc.displayGuiScreen(this); } else if (id == 13) { if (result) { try { Class oclass = Class.forName("java.awt.Desktop"); Object object = oclass.getMethod("getDesktop").invoke((Object)null); oclass.getMethod("browse", URI.class).invoke(object, new URI(this.openGLWarningLink)); } catch (Throwable throwable) { LOGGER.error("Couldn't open link", throwable); } } this.mc.displayGuiScreen(this); } } /** * Draws the main menu panorama */ private void drawPanorama(int mouseX, int mouseY, float partialTicks) { Tessellator tessellator = Tessellator.getInstance(); BufferBuilder bufferbuilder = tessellator.getBuffer(); GlStateManager.matrixMode(5889); GlStateManager.pushMatrix(); GlStateManager.loadIdentity(); Project.gluPerspective(120.0F, 1.0F, 0.05F, 10.0F); GlStateManager.matrixMode(5888); GlStateManager.pushMatrix(); GlStateManager.loadIdentity(); GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F); GlStateManager.rotate(180.0F, 1.0F, 0.0F, 0.0F); GlStateManager.rotate(90.0F, 0.0F, 0.0F, 1.0F); GlStateManager.enableBlend(); GlStateManager.disableAlpha(); GlStateManager.disableCull(); GlStateManager.depthMask(false); GlStateManager.tryBlendFuncSeparate(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA, GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ZERO); int i = 8; for (int j = 0; j < 64; ++j) { GlStateManager.pushMatrix(); float f = ((float)(j % 8) / 8.0F - 0.5F) / 64.0F; float f1 = ((float)(j / 8) / 8.0F - 0.5F) / 64.0F; float f2 = 0.0F; GlStateManager.translate(f, f1, 0.0F); GlStateManager.rotate(MathHelper.sin(this.panoramaTimer / 400.0F) * 25.0F + 20.0F, 1.0F, 0.0F, 0.0F); GlStateManager.rotate(-this.panoramaTimer * 0.1F, 0.0F, 1.0F, 0.0F); for (int k = 0; k < 6; ++k) { GlStateManager.pushMatrix(); if (k == 1) { GlStateManager.rotate(90.0F, 0.0F, 1.0F, 0.0F); } if (k == 2) { GlStateManager.rotate(180.0F, 0.0F, 1.0F, 0.0F); } if (k == 3) { GlStateManager.rotate(-90.0F, 0.0F, 1.0F, 0.0F); } if (k == 4) { GlStateManager.rotate(90.0F, 1.0F, 0.0F, 0.0F); } if (k == 5) { GlStateManager.rotate(-90.0F, 1.0F, 0.0F, 0.0F); } bufferbuilder.begin(7, DefaultVertexFormats.POSITION_TEX_COLOR); int l = 255 / (j + 1); float f3 = 0.0F; bufferbuilder.pos(-1.0D, -1.0D, 1.0D).tex(0.0D, 0.0D).color(255, 255, 255, l).endVertex(); bufferbuilder.pos(1.0D, -1.0D, 1.0D).tex(1.0D, 0.0D).color(255, 255, 255, l).endVertex(); bufferbuilder.pos(1.0D, 1.0D, 1.0D).tex(1.0D, 1.0D).color(255, 255, 255, l).endVertex(); bufferbuilder.pos(-1.0D, 1.0D, 1.0D).tex(0.0D, 1.0D).color(255, 255, 255, l).endVertex(); tessellator.draw(); GlStateManager.popMatrix(); } GlStateManager.popMatrix(); GlStateManager.colorMask(true, true, true, false); } bufferbuilder.setTranslation(0.0D, 0.0D, 0.0D); GlStateManager.colorMask(true, true, true, true); GlStateManager.matrixMode(5889); GlStateManager.popMatrix(); GlStateManager.matrixMode(5888); GlStateManager.popMatrix(); GlStateManager.depthMask(true); GlStateManager.enableCull(); GlStateManager.enableDepth(); } /** * Rotate and blurs the skybox view in the main menu */ private void rotateAndBlurSkybox() { this.mc.getTextureManager().bindTexture(this.backgroundTexture); GlStateManager.glTexParameteri(3553, 10241, 9729); GlStateManager.glTexParameteri(3553, 10240, 9729); GlStateManager.glCopyTexSubImage2D(3553, 0, 0, 0, 0, 0, 256, 256); GlStateManager.enableBlend(); GlStateManager.tryBlendFuncSeparate(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA, GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ZERO); GlStateManager.colorMask(true, true, true, false); Tessellator tessellator = Tessellator.getInstance(); BufferBuilder bufferbuilder = tessellator.getBuffer(); bufferbuilder.begin(7, DefaultVertexFormats.POSITION_TEX_COLOR); GlStateManager.disableAlpha(); int i = 3; for (int j = 0; j < 3; ++j) { float f = 1.0F / (float)(j + 1); int k = this.width; int l = this.height; float f1 = (float)(j - 1) / 256.0F; bufferbuilder.pos((double)k, (double)l, (double)this.zLevel).tex((double)(0.0F + f1), 1.0D).color(1.0F, 1.0F, 1.0F, f).endVertex(); bufferbuilder.pos((double)k, 0.0D, (double)this.zLevel).tex((double)(1.0F + f1), 1.0D).color(1.0F, 1.0F, 1.0F, f).endVertex(); bufferbuilder.pos(0.0D, 0.0D, (double)this.zLevel).tex((double)(1.0F + f1), 0.0D).color(1.0F, 1.0F, 1.0F, f).endVertex(); bufferbuilder.pos(0.0D, (double)l, (double)this.zLevel).tex((double)(0.0F + f1), 0.0D).color(1.0F, 1.0F, 1.0F, f).endVertex(); } tessellator.draw(); GlStateManager.enableAlpha(); GlStateManager.colorMask(true, true, true, true); } /** * Renders the skybox in the main menu */ private void renderSkybox(int mouseX, int mouseY, float partialTicks) { this.mc.getFramebuffer().unbindFramebuffer(); GlStateManager.viewport(0, 0, 256, 256); this.drawPanorama(mouseX, mouseY, partialTicks); this.rotateAndBlurSkybox(); this.rotateAndBlurSkybox(); this.rotateAndBlurSkybox(); this.rotateAndBlurSkybox(); this.rotateAndBlurSkybox(); this.rotateAndBlurSkybox(); this.rotateAndBlurSkybox(); this.mc.getFramebuffer().bindFramebuffer(true); GlStateManager.viewport(0, 0, this.mc.displayWidth, this.mc.displayHeight); float f = 120.0F / (float)(this.width > this.height ? this.width : this.height); float f1 = (float)this.height * f / 256.0F; float f2 = (float)this.width * f / 256.0F; int i = this.width; int j = this.height; Tessellator tessellator = Tessellator.getInstance(); BufferBuilder bufferbuilder = tessellator.getBuffer(); bufferbuilder.begin(7, DefaultVertexFormats.POSITION_TEX_COLOR); bufferbuilder.pos(0.0D, (double)j, (double)this.zLevel).tex((double)(0.5F - f1), (double)(0.5F + f2)).color(1.0F, 1.0F, 1.0F, 1.0F).endVertex(); bufferbuilder.pos((double)i, (double)j, (double)this.zLevel).tex((double)(0.5F - f1), (double)(0.5F - f2)).color(1.0F, 1.0F, 1.0F, 1.0F).endVertex(); bufferbuilder.pos((double)i, 0.0D, (double)this.zLevel).tex((double)(0.5F + f1), (double)(0.5F - f2)).color(1.0F, 1.0F, 1.0F, 1.0F).endVertex(); bufferbuilder.pos(0.0D, 0.0D, (double)this.zLevel).tex((double)(0.5F + f1), (double)(0.5F + f2)).color(1.0F, 1.0F, 1.0F, 1.0F).endVertex(); tessellator.draw(); } /** * Draws the screen and all the components in it. */ public void drawScreen(int mouseX, int mouseY, float partialTicks) { this.panoramaTimer += partialTicks; GlStateManager.disableAlpha(); this.renderSkybox(mouseX, mouseY, partialTicks); GlStateManager.enableAlpha(); mc.getTextureManager().bindTexture(BACKGROUND_TEXTURE); GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F); Gui.drawScaledCustomSizeModalRect(0, 0, 0, 0, 1, 1, this.width, this.height, 1, 1); int i = 274; int j = this.width / 2 - 137; int k = 30; GlStateManager.enableAlpha(); this.mc.getTextureManager().bindTexture(MFF_TITLE); GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F); Gui.drawScaledCustomSizeModalRect(this.width / 2 - 100, 40, 0, 0, 1, 1, 200, 40, 1, 1); GlStateManager.enableBlend(); GlStateManager.blendFunc(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA); GlStateManager.disableBlend(); this.mc.getTextureManager().bindTexture(field_194400_H); drawModalRectWithCustomSizedTexture(j + 88, 67, 0.0F, 0.0F, 98, 14, 128.0F, 16.0F); this.splashText = net.minecraftforge.client.ForgeHooksClient.renderMainMenu(this, this.fontRenderer, this.width, this.height, this.splashText); GlStateManager.pushMatrix(); GlStateManager.translate((float)(this.width / 2 + 90), 70.0F, 0.0F); GlStateManager.rotate(-20.0F, 0.0F, 0.0F, 1.0F); float f = 1.8F - MathHelper.abs(MathHelper.sin((float)(Minecraft.getSystemTime() % 1000L) / 1000.0F * ((float)Math.PI * 2F)) * 0.1F); f = f * 100.0F / (float)(this.fontRenderer.getStringWidth(this.splashText) + 32); GlStateManager.scale(f, f, f); this.drawCenteredString(this.fontRenderer, this.splashText, 0, -8, -256); GlStateManager.popMatrix(); /* String s = "Minecraft 1.12.2"; if (this.mc.isDemo()) { s = s + " Demo"; } else { s = s + ("release".equalsIgnoreCase(this.mc.getVersionType()) ? "" : "/" + this.mc.getVersionType()); } java.util.List <string>brandings = com.google.common.collect.Lists.reverse(net.minecraftforge.fml.common.FMLCommonHandler.instance().getBrandings(true)); for (int brdline = 0; brdline < brandings.size(); brdline++) { String brd = brandings.get(brdline); if (!com.google.common.base.Strings.isNullOrEmpty(brd)) { this.drawString(this.fontRenderer, brd, 2, this.height - ( 10 + brdline * (this.fontRenderer.FONT_HEIGHT + 1)), 16777215); } }*/ this.drawString(this.fontRenderer, "§eCopyright Mojang AB.", this.widthCopyrightRest, this.height - 10, -10); this.drawString(this.fontRenderer, " §aMini§bLife §9GalaxySky.", this.widthCopyrightRest1, this.height - 10, 9); /* if (mouseX > this.widthCopyrightRest && mouseX < this.widthCopyrightRest + this.widthCopyright && mouseY > this.height - 10 && mouseY < this.height && Mouse.isInsideWindow()) { drawRect(this.widthCopyrightRest, this.height - 1, this.widthCopyrightRest + this.widthCopyright, this.height, -1); } if (this.openGLWarning1 != null && !this.openGLWarning1.isEmpty()) { drawRect(this.openGLWarningX1 - 2, this.openGLWarningY1 - 2, this.openGLWarningX2 + 2, this.openGLWarningY2 - 1, 1428160512); this.drawString(this.fontRenderer, this.openGLWarning1, this.openGLWarningX1, this.openGLWarningY1, -1); this.drawString(this.fontRenderer, this.openGLWarning2, (this.width - this.openGLWarning2Width) / 2, (this.buttonList.get(0)).y - 12, -1); }*/ super.drawScreen(mouseX, mouseY, partialTicks); if (this.areRealmsNotificationsEnabled()) { this.realmsNotification.drawScreen(mouseX, mouseY, partialTicks); } modUpdateNotification.drawScreen(mouseX, mouseY, partialTicks); } /** * Called when the mouse is clicked. Args : mouseX, mouseY, clickedButton */ protected void mouseClicked(int mouseX, int mouseY, int mouseButton) throws IOException { super.mouseClicked(mouseX, mouseY, mouseButton); synchronized (this.threadLock) { if (!this.openGLWarning1.isEmpty() && !StringUtils.isNullOrEmpty(this.openGLWarningLink) && mouseX >= this.openGLWarningX1 && mouseX <= this.openGLWarningX2 && mouseY >= this.openGLWarningY1 && mouseY <= this.openGLWarningY2) { GuiConfirmOpenLink guiconfirmopenlink = new GuiConfirmOpenLink(this, this.openGLWarningLink, 13, true); guiconfirmopenlink.disableSecurityWarning(); this.mc.displayGuiScreen(guiconfirmopenlink); } } if (this.areRealmsNotificationsEnabled()) { this.realmsNotification.mouseClicked(mouseX, mouseY, mouseButton); } if (mouseX > this.widthCopyrightRest && mouseX < this.widthCopyrightRest + this.widthCopyright && mouseY > this.height - 10 && mouseY < this.height) { this.mc.displayGuiScreen(new GuiWinGame(false, Runnables.doNothing())); } } /** * Called when the screen is unloaded. Used to disable keyboard repeat events */ public void onGuiClosed() { if (this.realmsNotification != null) { this.realmsNotification.onGuiClosed(); } } } ```</string></string></string></a<br>
-
Salut,
Tu as oublié de suivre une étape du tutoriel, actuellement tu obtiens le texte mais tu ne l’affiche jamais.
https://www.minecraftforgefrance.fr/showthread.php?tid=4480#textedefilant(note : merci d’éviter les démarches en mp, je lis déjà toutes les demandes d’aides …).
-
Si je bien compris il fout que je met ce code la ?
this.scrollingTextPosX –; if(this.scrollingTextPosX < -this.fontRenderer.getStringWidth(this.server.serverMOTD)) { this.scrollingTextPosX = this.width; } this.drawRect(0, 0, this.width, 12, 0x77FFFFFF); this.fontRenderer.drawString(this.server.serverMOTD, this.scrollingTextPosX, 2, 0x245791);
Cel me Donne une erreur sur
this.server.serverMOTD
-
@‘robin4002’:
Salut,
Tu as oublié de suivre une étape du tutoriel, actuellement tu obtiens le texte mais tu ne l’affiche jamais.
https://www.minecraftforgefrance.fr/showthread.php?tid=4480#textedefilant(note : merci d’éviter les démarches en mp, je lis déjà toutes les demandes d’aides …).
Si je bien compris il fout que je met ce code la ?
this.scrollingTextPosX –; if(this.scrollingTextPosX < -this.fontRenderer.getStringWidth(this.server.serverMOTD)) { this.scrollingTextPosX = this.width; } this.drawRect(0, 0, this.width, 12, 0x77FFFFFF); this.fontRenderer.drawString(this.server.serverMOTD, this.scrollingTextPosX, 2, 0x245791);
Cela me Donne une erreur sur
this.server.serverMOTD
-
this.scrollingText si tu veux afficher le texte obtenu.
this.server.serverMOTD c’est pour afficher les info du serveur, il faut avoir fait l’étape d’avant.
-
@‘robin4002’:
this.scrollingText si tu veux afficher le texte obtenu.
this.server.serverMOTD c’est pour afficher les info du serveur, il faut avoir fait l’étape d’avant.
cela m’affiche une erreur dans les Lignes: 533 534 536 539
package net.minecraft.client.gui; 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 cpw.mods.fml.client.GuiModList; import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; 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.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.Sys; import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GLContext; import org.lwjgl.util.glu.Project; import org.omg.CORBA.portable.InputStream; import com.google.common.base.Strings; import com.google.common.collect.Lists; import com.google.common.io.CharStreams; @SideOnly(Side.CLIENT) public class GuiMainMenu 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/splashes1"); private static final ResourceLocation minecraftTitleTextures = new ResourceLocation("textures/gui/title/minecraft.png"); /** An array of all the paths to the panorama pictures. */ private final ResourceLocation backGround = new ResourceLocation("textures/gui/background.png"); /*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 GuiButton siteButton; private FontRenderer fontRenderer; private int widthCopyrightRest1; private static final String __OBFID = "CL_00001154"; private String scrollingText; public GuiMainMenu() { new Thread() { @Override public void run() { try { URL url = new URL("http://dl.mcnanotech.fr/mff/tutoriels/mainmenutext.txt"); java.io.InputStream is = url.openStream(); GuiMainMenu.this.scrollingText = CharStreams.toString(new InputStreamReader(is, Charsets.UTF_8)); } catch(Exception e) { GuiMainMenu.this.scrollingText = "Impossible de lire le texte"; } } }.start(); this.field_146972_A = field_96138_a; this.splashText = ""; 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"; } } /** * Called from the main game loop to update the screen. */ public void updateScreen() { ++this.panoramaTimer; } /** * 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 = ""; } else if (calendar.get(2) + 1 == 6 && calendar.get(5) == 1) { this.splashText = ""; } else if (calendar.get(2) + 1 == 12 && calendar.get(5) == 24) { this.splashText = "MiniLife <3"; } else if (calendar.get(2) + 1 == 1 && calendar.get(5) == 1) { this.splashText = ""; } else if (calendar.get(2) + 1 == 10 && calendar.get(5) == 31) { this.splashText = ""; } 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("Настройки", new Object[0]))); this.buttonList.add(new GuiButton(4, this.width / 2 + 2, i + 72 + 12, 98, 20, I18n.format("Выйти", 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("Одиночная Игра", new Object[0]))); this.buttonList.add(new GuiButton(2, this.width / 2 - 100, p_73969_1_ + p_73969_2_ * 1, I18n.format("Мультиплеер", 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, "Моды"); this.siteButton = new GuiButton(101, this.width / 2 - 100, p_73969_1_ + p_73969_2_ * 2, "Наш Сайт"); this.buttonList.add(this.siteButton); siteButton.width = 98; 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 GuiMultiplayer(this)); } if (p_146284_1_.id == 14) { this.func_140005_i(); } if (p_146284_1_.id == 4) { this.mc.shutdown(); } if (p_146284_1_.id == 101) { Sys.openURL("http://mcminilife.ru/"); } 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 renderBackGround() { GL11.glViewport(0, 0, 256, 256); this.mc.getTextureManager().bindTexture(backGround); GL11.glDisable(GL11.GL_TEXTURE_2D); GL11.glEnable(GL11.GL_TEXTURE_2D); GL11.glViewport(0, 0, this.mc.displayWidth, this.mc.displayHeight); Tessellator tessellator = Tessellator.instance; tessellator.startDrawingQuads(); 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); tessellator.setColorRGBA_F(1.0F, 1.0F, 1.0F, 1.0F); int k = this.width; int l = this.height; tessellator.addVertexWithUV(0, 0, this.zLevel, 0, 0); tessellator.addVertexWithUV(0, l, this.zLevel, 0, 1); tessellator.addVertexWithUV(k, l, this.zLevel, 1, 1); tessellator.addVertexWithUV(k, 0, this.zLevel, 1, 0); tessellator.draw(); } /** * Rotate and blurs the skybox view in the main menu */ /*private void renderBackGround() { GL11.glViewport(0, 0, 256, 256); this.mc.getTextureManager().bindTexture(backGround); GL11.glDisable(GL11.GL_TEXTURE_2D); GL11.glEnable(GL11.GL_TEXTURE_2D); GL11.glViewport(0, 0, this.mc.displayWidth, this.mc.displayHeight); Tessellator tessellator = Tessellator.instance; tessellator.startDrawingQuads(); 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); tessellator.setColorRGBA_F(1.0F, 1.0F, 1.0F, 1.0F); int k = this.width; int l = this.height; tessellator.addVertexWithUV(0, 0, this.zLevel, 0, 0); tessellator.addVertexWithUV(0, l, this.zLevel, 0, 1); tessellator.addVertexWithUV(k, l, this.zLevel, 1, 1); tessellator.addVertexWithUV(k, 0, this.zLevel, 1, 0); tessellator.draw(); }*/ /** * Renders the skybox in the main menu */ /*private void renderBackGround() { GL11.glViewport(0, 0, 256, 256); this.mc.getTextureManager().bindTexture(backGround); GL11.glDisable(GL11.GL_TEXTURE_2D); GL11.glEnable(GL11.GL_TEXTURE_2D); GL11.glViewport(0, 0, this.mc.displayWidth, this.mc.displayHeight); Tessellator tessellator = Tessellator.instance; tessellator.startDrawingQuads(); 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); tessellator.setColorRGBA_F(1.0F, 1.0F, 1.0F, 1.0F); int k = this.width; int l = this.height; tessellator.addVertexWithUV(0, 0, this.zLevel, 0, 0); tessellator.addVertexWithUV(0, l, this.zLevel, 0, 1); tessellator.addVertexWithUV(k, l, this.zLevel, 1, 1); tessellator.addVertexWithUV(k, 0, this.zLevel, 1, 0); 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.renderBackGround(); 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); } }*/ ForgeHooksClient.renderMainMenu(this, fontRendererObj, width, height); String s1 = "§9Все права на игру принадлежат Mojang AB."; this.drawString(this.fontRendererObj, s1, this.width - this.fontRendererObj.getStringWidth(s1) - 2, this.height - 27, -1); ForgeHooksClient.renderMainMenu(this, fontRendererObj, width, height); String s2 = "§9Копирование информации без разрешения администрации §cзапрещено."; this.drawString(this.fontRendererObj, s2, this.width - this.fontRendererObj.getStringWidth(s2) - 2, this.height - 10, -1); String s3 = "§aMini§bLife §9- Комплекс игровых серверов Minecraft"; this.drawString(this.fontRendererObj, s3, this.width - this.fontRendererObj.getStringWidth(s3) - 2, this.height - 19, -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_); this.scrollingTextPosX –; if(this.scrollingTextPosX < -this.fontRenderer.getStringWidth(this.scrollingText)) { this.scrollingTextPosX = this.width; } this.drawRect(0, 0, this.width, 12, 0x77FFFFFF); this.fontRenderer.drawString(this.scrollingText, this.scrollingTextPosX, 2, 0x245791); } /** * 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); } } } } ```</string>
-
Et quelle sont ces erreurs ?
-
@‘robin4002’:
Et quelle sont ces erreurs ?
this.scrollingTextPosX –; if(this.fontRendererObj < -this.fontRenderer.getStringWidth(this.scrollingText)) { this.scrollingTextPosX = this.width; } this.drawRect(0, 0, this.width, 12, 0x77FFFFFF); this.fontRenderer.drawString(this.scrollingText, this.scrollingTextPosX, 2, 0x245791); }
-
En fait quand je demandais “quelle sont ces erreurs” je voulais savoir ce que eclipse indique, pas ce qui est souligné en rouge.
Mais bon j’ai deviné tout seul, tu n’as pas déclaré la variable scrollingTextPosX donc forcement ça ne fonctionne pas.
Et la condition c’est
if(this.scrollingTextPosX < -this.fontRenderer.getStringWidth(this.scrollingText))
contrairement à ce que tu as actuellement.