Résolu Mod menu personnalisé
-
Bonsoir tous le monde, j’aurais voulu savoir si on pouvait m’aider ou me faire un mod pour un menu personnalisé, j’ai fait de nombreuse tentative tout seul mais rien ça ne fonctionne pas ou alors ça fonctionne quand je le lance avec eclipse et quand je le met dans mon launcher ça le fait crash
Merci d’avance
-
Salut,
Il nous faudrait ton code et le rapport de crash. -
D’accord : Voici le code du mod :
package fr.minecraftforgefrance.client.custommenu; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.lang.reflect.InvocationTargetException; import java.net.URI; import java.net.URISyntaxException; 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.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.FMLClientHandler; 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"; 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"; } } /** * 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 = "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!"; } else if(calendar.get(2) + 1 == 7 && calendar.get(5) == 6) { this.splashText = "Joyeux anniversaire Zedokf_DrM !"; } 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 x, int y) { this.buttonList.add(new GuiButton(1, this.width / 2 - 100, x, 98, 20, I18n.format("Site"))); this.buttonList.add(new GuiButton(2, this.width / 2 + 2, x + 0, 98, 20, I18n.format("Forum"))); this.buttonList.add(new GuiButton(20, this.width / 2 - 100, x + y * 1, "§3§lS§flide§3§lF§fight")); GuiButton webSiteButton = new GuiButton(21, this.width / 2 - 100, x + y * 2, "Vote"); GuiButton fmlModButton = new GuiButton(6, this.width / 2 - 100, x + y * 2, "TS3"); fmlModButton.xPosition = this.width / 2 + 2; webSiteButton.width = 98; fmlModButton.width = 98; this.buttonList.add(webSiteButton); this.buttonList.add(fmlModButton); } /** * Adds Demo buttons on Main Menu for players who are playing Demo. */ private void addDemoButtons(int x, int y) { this.buttonList.add(new GuiButton(11, this.width / 2 - 100, x, I18n.format("menu.playdemo", new Object[0]))); this.buttonList.add(this.buttonResetDemo = new GuiButton(12, this.width / 2 - 100, x + y * 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 button) { 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) { 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("http://www.slidefight.fr/")}); } catch(Throwable throwable) { logger.error("Couldn\'t open link", throwable); } } if(button.id == 2) { 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("http://www.slidefight.fr/forum.php")}); } catch(Throwable throwable) { logger.error("Couldn\'t open link", throwable); } } if(button.id == 4) { this.mc.shutdown(); } if(button.id == 6) { 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("ts3server://91.121.253.196?port=")}); } catch(Throwable throwable) { logger.error("Couldn\'t open link", throwable); } } if(button.id == 11) { this.mc.launchIntegratedServer("Demo_World", "Demo_World", DemoWorldServer.demoWorldSettings); } if(button.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); } } if(button.id == 20) { // TODO pour la connexion au serveur FMLClientHandler.instance().connectToServerAtStartup("62.210.45.98", 10184); // ip, port } if(button.id == 21) { 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("http://www.slidefight.fr/vote.php")}); } catch(Throwable throwable) { logger.error("Couldn\'t open link", throwable); } } } public void confirmClicked(boolean p_73878_1_, int id) { if(p_73878_1_ && id == 12) { ISaveFormat isaveformat = this.mc.getSaveLoader(); isaveformat.flushCache(); isaveformat.deleteWorldDirectory("Demo_World"); this.mc.displayGuiScreen(this); } else if(id == 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 x, int y, float partialTick) { 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 + partialTick) / 400.0F) * 25.0F + 20.0F, 1.0F, 0.0F, 0.0F); GL11.glRotatef(-((float)this.panoramaTimer + partialTick) * 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 partialTick) { 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 x, int y, float partialTick) { this.mc.getFramebuffer().unbindFramebuffer(); GL11.glViewport(0, 0, 256, 256); this.drawPanorama(x, y, partialTick); this.rotateAndBlurSkybox(partialTick); this.rotateAndBlurSkybox(partialTick); this.rotateAndBlurSkybox(partialTick); this.rotateAndBlurSkybox(partialTick); this.rotateAndBlurSkybox(partialTick); this.rotateAndBlurSkybox(partialTick); this.rotateAndBlurSkybox(partialTick); 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 x, int y, float partialTick) { GL11.glDisable(GL11.GL_ALPHA_TEST); this.renderSkybox(x, y, partialTick); 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 = "Menu by Zedokf_DrM"; 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(x, y, partialTick); } /** * 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); } } } }
et les logs du crash :
[07:40:06] [main/INFO]: Setting user: Zedokf_DrM [07:40:31] [Client thread/INFO]: LWJGL Version: 2.9.1 [07:42:17] [Client thread/INFO]: Reloading ResourceManager: Default, FMLFileResourcePack:Forge Mod Loader, FMLFileResourcePack:Minecraft Forge, FMLFileResourcePack:SimpleOres 2, FMLFileResourcePack:CraftGuide, FMLFileResourcePack:CustomNpcs, FMLFileResourcePack:Custom Menu, FMLFileResourcePack:VanillaPlus [07:42:17] [Client thread/WARN]: ResourcePack: ignored non-lowercase namespace: %s in %s [07:42:53] [Sound Library Loader/INFO]: Sound engine started [07:43:28] [Client thread/WARN]: File customnpcs:sounds/human/girl/villager/What do you need.ogg does not exist, cannot add it to event customnpcs:human.girl.villager.what_do_you_need [07:43:28] [Client thread/WARN]: File customnpcs:sounds/human/girl/villager/Would you like to trade.ogg does not exist, cannot add it to event customnpcs:human.girl.villager.trade [07:44:01] [Client thread/INFO]: Created: 1024x512 textures/blocks-atlas [07:44:39] [Client thread/INFO]: Created: 512x512 textures/items-atlas [07:44:47] [Client thread/INFO]: Reloading ResourceManager: Default, FMLFileResourcePack:Forge Mod Loader, FMLFileResourcePack:Minecraft Forge, FMLFileResourcePack:SimpleOres 2, FMLFileResourcePack:CraftGuide, FMLFileResourcePack:CustomNpcs, FMLFileResourcePack:Custom Menu, FMLFileResourcePack:VanillaPlus [07:44:47] [Client thread/WARN]: ResourcePack: ignored non-lowercase namespace: %s in %s [07:46:30] [Client thread/INFO]: Created: 1024x512 textures/blocks-atlas [07:46:54] [Client thread/INFO]: Created: 512x512 textures/items-atlas [07:46:59] [Sound Library Loader/INFO]: Sound engine started [07:47:24] [Client thread/WARN]: File customnpcs:sounds/human/girl/villager/What do you need.ogg does not exist, cannot add it to event customnpcs:human.girl.villager.what_do_you_need [07:47:24] [Client thread/WARN]: File customnpcs:sounds/human/girl/villager/Would you like to trade.ogg does not exist, cannot add it to event customnpcs:human.girl.villager.trade [07:48:12] [Client thread/FATAL]: Unreported exception thrown! java.lang.NoSuchFieldError: currentScreen at fr.minecraftforgefrance.client.custommenu.ModCustomMenu.onTick(ModCustomMenu.java:32) ~[ModCustomMenu.class:?] at cpw.mods.fml.common.eventhandler.ASMEventHandler_22_ModCustomMenu_onTick_ClientTickEvent.invoke(.dynamic) ~[?:?] at cpw.mods.fml.common.eventhandler.ASMEventHandler.invoke(ASMEventHandler.java:54) ~[ASMEventHandler.class:?] at cpw.mods.fml.common.eventhandler.EventBus.post(EventBus.java:138) ~[EventBus.class:?] at cpw.mods.fml.common.FMLCommonHandler.onPreClientTick(FMLCommonHandler.java:325) ~[FMLCommonHandler.class:?] at net.minecraft.client.Minecraft.func_71407_l(Minecraft.java:1575) ~[bao.class:?] at net.minecraft.client.Minecraft.func_71411_J(Minecraft.java:961) ~[bao.class:?] at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:887) [bao.class:?] at net.minecraft.client.main.Main.main(SourceFile:148) [Main.class:?] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_40] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_40] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_40] at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_40] at net.minecraft.launchwrapper.Launch.launch(Launch.java:134) [launchwrapper-1.9.jar:?] at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.9.jar:?] ```</string>
-
Tu as mal exporté le mod.
Il faut faire comme pour le setup de forge (clic droit dans le dossier Forge -> ouvrir une fenêtre de commande ici) puis taper gradlew build
Ensuite le .jar du mod sera dans forge/build/libs et aura le nom modid-1.0.jar -
ah d’accord et il ne faudra pas faire des autres commandes après pour tout refaire l’installation ?gradlew n’est pas reconnu en tant que commande interne ‘-’ Comment faire ça fonctionner avant
gradlew n’est pas reconnu en tant que commande interne ‘-’ Comment faire ça fonctionner avantgradlew n’est pas reconnu en tant que commande interne ‘-’ Comment faire ça fonctionner avant
Non désolé je me suis trompé de dossier en faite___```
C:\Users\Braddy_2\Desktop\Braddy\forge-1.7.10>gradlew build
FAILURE: Build failed with an exception.
- What went wrong:
A problem occurred configuring root project ‘forge-1.7.10’.
Could not resolve all dependencies for configuration ‘:classpath’.
Could not resolve org.eclipse.equinox:registry:[3.2.0,4.0.0).
Required by:
:forge-1.7.10:unspecified > net.minecraftforge.gradle:ForgeGradle:1.2-S
NAPSHOT > net.minecraftforge.srg2source:Srg2Source:3.2-SNAPSHOT > org.eclipse.co
re:contenttype:3.4.200-v20140207-1251
Failed to list versions for org.eclipse.equinox:registry.
Unable to load Maven meta-data from http://repo1.maven.org/maven2/org
/eclipse/equinox/registry/maven-metadata.xml.
Could not GET ‘http://repo1.maven.org/maven2/org/eclipse/equinox/r
egistry/maven-metadata.xml’.
The target server failed to respond- Try:
Run with –stacktrace option to get the stack trace. Run with --info or --debug
option to get more log output.
BUILD FAILED
Total time: 4 mins 59.49 secs
C:\Users\Braddy_2\Desktop\Braddy\forge-1.7.10>
Voilà ce qui se passe comment faire ? :/ Merci d'avance
- What went wrong:
-
Éviter de poster plusieurs messages à la suite si personne n’a répondu, utilise plutôt l’option éditer. Je fusionne tes 4 messages en un.
Visiblement il y a un problème avec ton setup de forge ou avec les serveurs de maven, tu utilises quelle version de forge ? Je peux avoir le contenu de ton fichier build.gradle ? -
Désolé
J’utilise forge-1.7.10-10.13.2.1291 et voici mon fichier build.gradle : ```
buildscript {
repositories {
mavenCentral()
maven {
name = “forge”
url = “http://files.minecraftforge.net/maven”
}
maven {
name = “sonatype”
url = “https://oss.sonatype.org/content/repositories/snapshots/”
}
}
dependencies {
classpath ‘net.minecraftforge.gradle:ForgeGradle:1.2-SNAPSHOT’
}
}apply plugin: ‘forge’
version = “1.0”
group= “com.yourname.modid” // http://maven.apache.org/guides/mini/guide-naming-conventions.html
archivesBaseName = “modid”minecraft {
version = “1.7.10-10.13.2.1291”
runDir = “eclipse”
}dependencies {
// you may put jars on which you depend on in ./libs
// or you may define them like so…
//compile “some.group:artifact:version:classifier”
//compile “some.group:artifact:version”// real examples
//compile ‘com.mod-buildcraft:buildcraft:6.0.8:dev’ // adds buildcraft to the dev env
//compile ‘com.googlecode.efficient-java-matrix-library:ejml:0.24’ // adds ejml to the dev env// for more info…
// http://www.gradle.org/docs/current/userguide/artifact_dependencies_tutorial.html
// http://www.gradle.org/docs/current/userguide/dependency_management.html}
processResources
{
// this will ensure that this task is redone when the versions change.
inputs.property “version”, project.version
inputs.property “mcversion”, project.minecraft.version// replace stuff in mcmod.info, nothing else
from(sourceSets.main.resources.srcDirs) {
include ‘mcmod.info’// replace version and mcversion
expand ‘version’:project.version, ‘mcversion’:project.minecraft.version
}// copy everything else, thats not the mcmod.info
from(sourceSets.main.resources.srcDirs) {
exclude ‘mcmod.info’
}
} -
Remplace la ligne :
version = "1.7.10-10.13.2.1291"
par :
version = "1.7.10-10.13.2.1343-1.7.10"
et essaye de refaire un setup.
-
Toujours pas
C:\Users\Braddy_2\Desktop\Braddy\forge-1.7.10>gradlew setup Download http://files.minecraftforge.net/maven/net/minecraftforge/gradle/ForgeGr adle/1.2-SNAPSHOT/ForgeGradle-1.2-20150327.225155-282.jar **************************** Powered By MCP: http://mcp.ocean-labs.de/ Searge, ProfMobius, Fesh0r, R4wk, ZeuX, IngisKahn, bspkrs MCP Data version : unknown **************************** FAILURE: Build failed with an exception. * What went wrong: Task 'setup' is ambiguous in root project 'forge-1.7.10'. Candidates are: 'setup CIWorkspace', 'setupDecompWorkspace', 'setupDevWorkspace'. * Try: Run gradlew tasks to get a list of available tasks. Run with –stacktrace option to get the stack trace. Run with - -info or - -debug option to get more log output. BUILD FAILED Total time: 2 mins 38.562 secs C:\Users\Braddy_2\Desktop\Braddy\forge-1.7.10>
-
Quand je disais setup c’est refaire les étapes suivantes :
gradlew setupDecompWorkspace
puis :
gradlew eclipse
et enfin :
gradlew build -
ça fonctionne ! Merci beaucoup de la rapidité à répondre
J’aurais voulu savoir si vous pouvez faire un tuto comment faire un launcher personnalisé avec une maquette photoshop s’il vous plait ?
-
De rien, pense à mettre la balise résolu.
Pour ta deuxième question, on ne traite pas les launchers sur ce forum. -
D’accord et serais tu changer le gros logo minecraft dans le menu personnalisé ?
-
private static final ResourceLocation minecraftTitleTextures = new ResourceLocation(“textures/gui/title/minecraft.png”);
Suffit de mettre un autre chemin dans le ResourceLocation
-
Dans le resourceLocation on peut pas mettre de lien http ? Sinon comment faire ? Merci d’avance
-
Non, pas possible. La structure est :
new ResourceLocation(“modid”,“path”);
donc par exemple avec :
new ResourceLocation(“modid”,“textures/gui/menu.png”);
la texture devra être dans :
forge/src/main/resources/assets/modid/textures/gui/ et s’appellera menu.png -
Ah… je comprends plus grand chose la… D’où vient le “modid” ? Et ou je met l’image alors ?
-
@‘Zedokf_DrM’:
Ah… je comprends plus grand chose la… D’où vient le “modid” ? Et ou je met l’image alors ?
new RessourceLocation(“modid”, “cequetuveux.png”) -> assets/lIDDeTonMod/cequetuveux.png
-
Le modid c’est ce que tu as dans ta classe principale, au niveau du @Mod(
Et pour l’emplacement de l’image j’ai donné un exemple … -
Oui mais l’image doit bien être quelque par nan ? XD si je l’ai faite je la met où ?