• S'inscrire
    • Se connecter
    • Recherche
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes

    Résolu Notification basée sur les achievements

    1.8.x
    1.8
    5
    9
    1348
    Charger plus de messages
    • Du plus ancien au plus récent
    • Du plus récent au plus ancien
    • Les plus votés
    Répondre
    • Répondre à l'aide d'un nouveau sujet
    Se connecter pour répondre
    Ce sujet a été supprimé. Seuls les utilisateurs avec les droits d'administration peuvent le voir.
    • Ama
      Ama dernière édition par

      Hello à tous !

      Je viens vous demande un brin d’herbe car j’aimerais un système de notifications comme celle des achiements, seulement, j’ai beau chercher, je ne sais pas où s’affiche le petit rectangle à l’écran, quel gui gère ça, rien dans le GuiIngame qui gère barre de faim et de vie, ainsi que rien de parlant dans GuiAchievement, donc si jamais quelqu’un à réussi un système de notification tel que celui des achievement, je suis prenneur ! Car je creuse mais je trouve rien 😕

      Merci de votre aide !
                                                 ZeAmateis

      Si je t'ai filé un coup de main n'oublie pas le + / -
      Par contre évite les demandes d'aides en MP, tu sera sympa'

      La JavaDoc c'est comme le PQ, ça sert à ce démerder tous seul. -Victor Hugo- 2017

      Une superbe API pour animer vos super modèles CraftStudio dans Minecraft !

      1 réponse Dernière réponse Répondre Citer 0
      • robin4002
        robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par

        Salut,
        Il faut tout faire via l’event RenderOverLayerEvent. C’est juste une petite image à draw, pas grand chose de compliqué.

        1 réponse Dernière réponse Répondre Citer 0
        • MajorSquirrel
          MajorSquirrel dernière édition par

          Bonjour bonjour,

          Je te conseille de jeter un coup d’oeil à la classe GuiAchievement ! Celle-ci te montre comment construire la petite fenêtre en haut à gauche ainsi que l’update de sa position (le fait qu’elle rentre et ressorte)

          Pour l’afficher après je crois que c’est player.triggerAchievement(ton_achievement_instance);

          Je viens de faire des tests de mon côté et je n’ai pas réussi à refaire ce que j’avais fait la dernière fois, à savoir bien maîtriser tous les éléments de la notification, je reviendrai vers toi si j’y arrive. 🙂

          1 réponse Dernière réponse Répondre Citer 0
          • Ama
            Ama dernière édition par

            Merci des infos, je cherche à faire un système bien à part de celui des achievement donc par de trigger pour ma part 😉

            Si je t'ai filé un coup de main n'oublie pas le + / -
            Par contre évite les demandes d'aides en MP, tu sera sympa'

            La JavaDoc c'est comme le PQ, ça sert à ce démerder tous seul. -Victor Hugo- 2017

            Une superbe API pour animer vos super modèles CraftStudio dans Minecraft !

            1 réponse Dernière réponse Répondre Citer 0
            • Ama
              Ama dernière édition par

              Voilà j’ai maintenant une classe potable pour mes notifications, seulement je ne vois pas comment l’afficher à l’écran 😕

              :::

              
              import org.lwjgl.opengl.GL11;
              
              import cpw.mods.fml.client.FMLClientHandler;
              import cpw.mods.fml.relauncher.Side;
              import cpw.mods.fml.relauncher.SideOnly;
              import net.minecraft.client.Minecraft;
              import net.minecraft.client.gui.Gui;
              import net.minecraft.client.gui.ScaledResolution;
              import net.minecraft.client.resources.I18n;
              import net.minecraft.stats.Achievement;
              import net.minecraft.util.ResourceLocation;
              
              @SideOnly(Side.CLIENT)
              public class GuiLinkNotifications extends Gui {
              private static final ResourceLocation widget = new ResourceLocation("textures/gui/achievement/achievement_background.png");
              private Minecraft mc;
              private int width;
              private int height;
              private String notificationTitle;
              private String notificationDescription;
              private long notificationTime;
              private boolean permanentNotification;
              
              public GuiLinkNotifications() {
              this.mc = FMLClientHandler.instance().getClient();
              }
              
              public void displayAchievement(String title, String description) {
              this.notificationTitle = I18n.format(title, new Object[0]);
              this.notificationDescription = description;
              this.notificationTime = Minecraft.getSystemTime();
              this.permanentNotification = false;
              }
              
              public void displayUnformattedAchievement(Achievement achievement) {
              this.notificationTitle = achievement.func_150951_e().getUnformattedText();
              this.notificationDescription = achievement.getDescription();
              this.notificationTime = Minecraft.getSystemTime() + 2500L;
              this.permanentNotification = true;
              }
              
              private void updateAchievementWindowScale() {
              GL11.glViewport(0, 0, this.mc.displayWidth, this.mc.displayHeight);
              GL11.glMatrixMode(GL11.GL_PROJECTION);
              GL11.glLoadIdentity();
              GL11.glMatrixMode(GL11.GL_MODELVIEW);
              GL11.glLoadIdentity();
              this.width = this.mc.displayWidth;
              this.height = this.mc.displayHeight;
              ScaledResolution scaledresolution = new ScaledResolution(this.mc, this.mc.displayWidth, this.mc.displayHeight);
              this.width = scaledresolution.getScaledWidth();
              this.height = scaledresolution.getScaledHeight();
              GL11.glClear(GL11.GL_DEPTH_BUFFER_BIT);
              GL11.glMatrixMode(GL11.GL_PROJECTION);
              GL11.glLoadIdentity();
              GL11.glOrtho(0.0D, (double) this.width, (double) this.height, 0.0D, 1000.0D, 3000.0D);
              GL11.glMatrixMode(GL11.GL_MODELVIEW);
              GL11.glLoadIdentity();
              GL11.glTranslatef(0.0F, 0.0F, -2000.0F);
              }
              
              public void updateAchievementWindow() {
              if (this.notificationTime != 0L && Minecraft.getMinecraft().thePlayer != null) {
              double d0 = (double) (Minecraft.getSystemTime() - this.notificationTime) / 3000.0D;
              
              if (!this.permanentNotification) {
              if (d0 < 0.0D || d0 > 1.0D) {
              this.notificationTime = 0L;
              return;
              }
              } else if (d0 > 0.5D) {
              d0 = 0.5D;
              }
              
              this.updateAchievementWindowScale();
              GL11.glDisable(GL11.GL_DEPTH_TEST);
              GL11.glDepthMask(false);
              double d1 = d0 * 2.0D;
              
              if (d1 > 1.0D) {
              d1 = 2.0D - d1;
              }
              
              d1 *= 4.0D;
              d1 = 1.0D - d1;
              
              if (d1 < 0.0D) {
              d1 = 0.0D;
              }
              
              d1 *= d1;
              d1 *= d1;
              int i = this.width - 160;
              int j = 0 - (int) (d1 * 36.0D);
              GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
              GL11.glEnable(GL11.GL_TEXTURE_2D);
              this.mc.getTextureManager().bindTexture(widget);
              GL11.glDisable(GL11.GL_LIGHTING);
              this.drawTexturedModalRect(i, j, 96, 202, 160, 32);
              
              if (this.permanentNotification) {
              this.mc.fontRenderer.drawSplitString(this.notificationDescription, i + 30, j + 7, 120, -1);
              } else {
              this.mc.fontRenderer.drawString(this.notificationTitle, i + 30, j + 7, -256);
              this.mc.fontRenderer.drawString(this.notificationDescription, i + 30, j + 18, -1);
              }
              
              // RenderHelper.enableGUIStandardItemLighting();
              // GL11.glDisable(GL11.GL_LIGHTING);
              // GL11.glEnable(GL12.GL_RESCALE_NORMAL);
              // GL11.glEnable(GL11.GL_COLOR_MATERIAL);
              // GL11.glEnable(GL11.GL_LIGHTING);
              // this.renderItem.renderItemAndEffectIntoGUI(this.mc.fontRenderer,
              // this.mc.getTextureManager(), this.theAchievement.theItemStack, i
              // + 8, j + 8);
              // GL11.glDisable(GL11.GL_LIGHTING);
              // GL11.glDepthMask(true);
              // GL11.glEnable(GL11.GL_DEPTH_TEST);
              }
              }
              
              public void clearAchievements() {
              this.notificationTime = 0L;
              }
              }
              

              :::

              Edit: voici mon event qui ne fonctionne pas, normal, mais je vois pas comment faire 😢

              @SubscribeEvent
              public void onDisplayNotification(RenderGameOverlayEvent.Pre event) {

              GuiLinkNotifications guiNotification = new GuiLinkNotifications();
              guiNotification.displayAchievement(“test”, “description”);
              guiNotification.updateAchievementWindow();
              }

              Si je t'ai filé un coup de main n'oublie pas le + / -
              Par contre évite les demandes d'aides en MP, tu sera sympa'

              La JavaDoc c'est comme le PQ, ça sert à ce démerder tous seul. -Victor Hugo- 2017

              Une superbe API pour animer vos super modèles CraftStudio dans Minecraft !

              1 réponse Dernière réponse Répondre Citer 0
              • AymericRed
                AymericRed dernière édition par

                Utile un RenderOverLayerEvent comme l’a dit robin.

                Si je vous ai aidé, n'oubliez pas d’être heureux, j'aiderai encore +

                AymericRed, moddeur expérimenté qui aide sur ce forum et qui peut accepter de faire un mod Forge rémunéré de temps en temps.

                Mes tutos : Table de craft, plugin NEI, plugin JEI, modifier l'overlay
                Je suis un membre apprécié et joueur, j'ai déjà obtenu 6 points de réputation.

                1 réponse Dernière réponse Répondre Citer 0
                • Ama
                  Ama dernière édition par

                  Oui j’ai édit mon message mais même comme ça ça ne m’aide pas

                  Si je t'ai filé un coup de main n'oublie pas le + / -
                  Par contre évite les demandes d'aides en MP, tu sera sympa'

                  La JavaDoc c'est comme le PQ, ça sert à ce démerder tous seul. -Victor Hugo- 2017

                  Une superbe API pour animer vos super modèles CraftStudio dans Minecraft !

                  1 réponse Dernière réponse Répondre Citer 0
                  • SCAREX
                    SCAREX dernière édition par

                    Il faut crée une instance du Gui quelque part et dans le RenderGameOverlayEvent appelé la fonction draw du Gui

                    Site web contenant mes scripts : http://SCAREXgaming.github.io

                    Pas de demandes de support par MP ni par skype SVP.
                    Je n'accepte sur skype que l…

                    1 réponse Dernière réponse Répondre Citer 0
                    • Ama
                      Ama dernière édition par

                      Ouaip problème résolu, merci all

                      Si je t'ai filé un coup de main n'oublie pas le + / -
                      Par contre évite les demandes d'aides en MP, tu sera sympa'

                      La JavaDoc c'est comme le PQ, ça sert à ce démerder tous seul. -Victor Hugo- 2017

                      Une superbe API pour animer vos super modèles CraftStudio dans Minecraft !

                      1 réponse Dernière réponse Répondre Citer 0
                      • 1 / 1
                      • Premier message
                        Dernier message
                      Design by Woryk
                      Contact / Mentions Légales

                      MINECRAFT FORGE FRANCE © 2018

                      Powered by NodeBB