Ce tutoriel est également disponible en vidéo.
Vous voulez modifier le menu principal de Minecraft et vous n’arrivez pas à le faire correctement ? Voici un tutoriel qui vous montrera comment le faire proprement.
ClientProxy :
| package fr.scarex.tutorialmod.client; |
| |
| import java.awt.Desktop; |
| import java.net.URI; |
| |
| import net.minecraft.client.gui.GuiButton; |
| import net.minecraft.client.gui.GuiMainMenu; |
| import net.minecraft.client.gui.GuiOptions; |
| import net.minecraft.client.gui.GuiScreenResourcePacks; |
| import net.minecraftforge.client.event.GuiOpenEvent; |
| import net.minecraftforge.client.event.GuiScreenEvent.ActionPerformedEvent; |
| import net.minecraftforge.client.event.GuiScreenEvent.InitGuiEvent; |
| import net.minecraftforge.common.MinecraftForge; |
| import cpw.mods.fml.common.ObfuscationReflectionHelper; |
| import cpw.mods.fml.common.eventhandler.SubscribeEvent; |
| import fr.scarex.tutorialmod.CommonProxy; |
| import fr.scarex.tutorialmod.TutorialMod; |
| |
| |
| |
| |
| |
| public class ClientProxy extends CommonProxy |
| { |
| public ClientProxy() { |
| |
| MinecraftForge.EVENT_BUS.register(this); |
| } |
| |
| |
| |
| |
| |
| @SubscribeEvent |
| public void onInitGuiEvent(InitGuiEvent.Post event) { |
| if (event.gui instanceof GuiMainMenu) { |
| for (Object b : event.buttonList) { |
| if (((GuiButton) b).id == 14) { |
| ((GuiButton) b).visible = false; |
| } |
| } |
| int i = event.gui.height / 4 + 48; |
| event.buttonList.add(new GuiButton(30, event.gui.width / 2 - 100, i + 24 * 2, 100, 20, "Teamspeak") { |
| @Override |
| public void mouseReleased(int x, int y) { |
| if (Desktop.isDesktopSupported()) { |
| try { |
| Desktop.getDesktop().browse(new URI("ts3server://ts.minecraftforgefrance.fr?port=9987")); |
| } catch (Exception e) { |
| TutorialMod.LOGGER.warn("Douldn't open teamspeak", e); |
| } |
| } |
| } |
| }); |
| |
| ObfuscationReflectionHelper.setPrivateValue(GuiMainMenu.class, (GuiMainMenu) event.gui, "Bienvenue dans ce tutoriel", "splashText", "field_73975_c"); |
| } |
| } |
| |
| |
| |
| |
| |
| |
| @SubscribeEvent |
| public void onActionPerformed(ActionPerformedEvent.Pre event) { |
| if (event.gui instanceof GuiOptions && event.button.id == 105) event.setCanceled(true); |
| } |
| |
| |
| |
| |
| |
| |
| @SubscribeEvent |
| public void onGuiOpen(GuiOpenEvent event) { |
| if (event.gui instanceof GuiScreenResourcePacks) event.setCanceled(true); |
| } |
| } |
Si vous toutes ces fonctionnalités ne suffisent pas, vous pouvez rediriger vers un autre GUI en utilisant le GuiOpenEvent et changer la variable event.gui en lui associant un GUI comme ceci :
| @SubscribeEvent |
| public void onGuiOpen(GuiOpenEvent event) { |
| if (event.gui instanceof LeGuiVoulut) event.gui = new VotreGui(); |
| } |
NOTE : j’ai enlevé des boutons de Minecraft et bloqué certaines fonctionnalités, il est déconseillé de faire çà pour votre mod, je l’ai fait uniquement pour vous montrer comment faire.
ATTENTION : il ne faut pas oublier de rajouter “field_73975_c” dans la liste de reflection (se reporter au code modifié) pour faire fonctionner le mod dans un environnement obfusqué (une fois le mod exporté)
Liste des commits GitHub :
Commit initial
Correction d’un bug lors de l’exportation du mod
Les commits sur github montrent clairement où ont été placés les fichiers, ainsi que ce qui a été ajouté et retiré dans le fichier.
https://www.youtube.com/watch?v=hv0HJDuzu9k
Rédaction :
Correction :

Ce tutoriel de SCAREX publié sur Minecraft Forge France est mis à disposition selon les termes de la licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 4.0 International
Sommaire des tutoriels