Non résolu Problème (FORGE) en 1.15.2 création d'un GUI
-
Bonjour,
J’essaye de créer un GUI depuis plusieurs jours qui s’ouvrira lors de l’execution d’une commande, hors lorsque je fais la commande une erreur s’affiche “une erreur inattendue sest produite lors de lexecution de cette commande”, et quand je met mon curseur dessus ça met “java.lang.NullPointerException”, j’aimerai vraiment savoir d’où ça vient, je vous met mes codes (pour le GUI et pour la commande)
Bonne journée
GUI : https://code.alwyn974.re/oyatiberoc.java
Command: https://code.alwyn974.re/kofanumade.cpp -
Bonsoir,
Les commandes sont exécutées sur le serveur, il n’est pas possible d’utiliser Minecraft (qui est une classe client) dedans. De plus ta variable n’est jamais initialisé il est donc normal d’avoir un NPE.Il faut enregistrer ta commande en client pour qu’elle soit utilisé sur le client au lieu du serveur, et donner une valeur à ta variable client (
private static Minecraft client = Minecraft.getInstance();
). -
package fr.ethizy.molium.commands; import com.mojang.brigadier.CommandDispatcher; import com.mojang.brigadier.builder.LiteralArgumentBuilder; import com.mojang.brigadier.context.CommandContext; import fr.ethizy.molium.client.gui.TestGUI; import net.minecraft.client.Minecraft; import net.minecraft.command.CommandSource; import static net.minecraft.command.Commands.literal; public class OpenGuiCommand { private static Minecraft client = Minecraft.getInstance(); public static void register(CommandDispatcher<CommandSource> dispatcher) { dispatcher.register(literal("test").executes((commandContext) -> {return commandOpenGui(commandContext.getSource());})); } private static int commandOpenGui(CommandSource source) { client.displayGuiScreen(new TestGUI(client)); System.out.println("test"); return 1; } }
Comme ça ?
-
Oui
-
YES! Mon erreur a changé!! Je suis tellement content, merci!
Maintenant j’ai une autre erreur:
-
@robin4002 j’ai réglé, mais autre soucis, y’a rien qui s’affiche, des gens disent que ça vient du drawScreen puisque quand je met un sysout il s’affiche pas
le drawScreen:
public void drawScreen(int mouseX, int mouseY, float partialTicks) { System.out.println("testttt"); drawBackgroundImage(); }
-
Je crois que cette fonction n’a plus le même nom en 1.15.2.
Ajoutes un @Override au dessus, si cela fait une erreur tu n’as pas le bon nom. -
@robin4002 J’ai touuut réglé à l’aide de quelques personne, j’ai juste un petit soucis :
ça prend tout mon écran, voici mon code:
package fr.ethizy.molium.client.gui; import com.mojang.blaze3d.platform.GlStateManager; import com.mojang.blaze3d.systems.RenderSystem; import fr.ethizy.molium.Molium; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.renderer.RenderHelper; import net.minecraft.util.ResourceLocation; import net.minecraft.util.text.ITextComponent; import net.minecraft.util.text.StringTextComponent; public class TestGUI extends Screen { private final ResourceLocation background = new ResourceLocation(Molium.MOD_ID, "textures/gui/gui_base.png"); public static Minecraft mc; public final int xSize = 256; public final int ySize = 202; public TestGUI(Minecraft mc) { super(new StringTextComponent("Mon Joli GUI")); minecraft = mc; } public void render(int mouseX, int mouseY, float partialTicks) { drawBackgroundImage(); super.render(mouseX, mouseY, partialTicks); } public void drawBackgroundImage() { RenderSystem.pushMatrix(); RenderSystem.blendColor(1.0F, 1.0F, 1.0F, 1.0F); minecraft.getTextureManager().bindTexture(background); int x = (this.width = this.xSize) /3; int y = (this.height = this.ySize) /3; this.blit(x, y, 0, 0, this.xSize, this.ySize); RenderSystem.popMatrix(); } }
-
Ce message a été supprimé ! -
int x = (this.width = this.xSize) /3; int y = (this.height = this.ySize) /3;
Peut être ici non avec les = entre width et xSize ?
-
@Mysterious-Dev yep cimer!
-
J’ai 2 petites dernières questions avant de passer ce sujet en résolu:
J’aimerai savoir ce que c’est drawRect() en 1.15.2 , car ça a changeait, (c’est pour mettre un fond grisé sur les GUI)
Et aussi, j’ai crée un système pour lorsque le joueur appuie sur une touche pré-configuré et que le GUI n’est pas encore ouvert, ça ouvre le GUI, et que si il appuie alors que le GUI est ouvert, ça le ferme, voici mon code:https://code.alwyn974.re/xisivedufi.java
J’ai aucune erreur, le GUI s’ouvre bien, mais il se ferme pas, quelqu’un sait pourquoi ?