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

Non résolu Dessin dans le monde

Sans suite
1.15.2
2
14
503
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.
  • U
    UtopiePhysique dernière édition par UtopiePhysique 18 oct. 2020, 21:30 18 oct. 2020, 17:50

    Bonjour,

    Le titre est un peu bizarre mais vous allez j’espère vite comprendre.
    J’aimerais faire des dessins dans le monde, comme la barrière qui limite une zone (enfin c’est peut être un bloc ?), ou encore le câble de la canne à pêche, ou encore les lignes au coin de 4 chunks, ou encore le maillage définissant les chunks (jaune & rouge).

    Je ne sais pas si vous avez bien compris ce que je recherche, j’ai essayer de voir du côté de la canne à pêche mais j’ai rien trouver.

    Cela fait un bon moment que j’avais commencer à me pencher dessus et aujourd’hui ayant beaucoup moins de temps pour les recherches j’essaye un peu la faciliter en venant demander de l’aide et en m’étant mon égo de côté.

    Si quelqu’un à une piste, un bout de code, un exemple ou autre n’hésitez pas à mettre ici ^^
    Ou des mots clés également j’ai essayer des trucs comme “draw line in world” etc

    Merci ! 🙂

    Edit: J’ai quelques problèmes à refaire fonctionner mes projets, j’essaye demain de faire des tests je suis tomber sur un sujet parlant de “GL11” (l’api de LWJGL qui est présente dans minecraft), j’ai pu voir des traçages sur des screens malheureusement suite aux soucis avec Java, Gradle et tout le reste j’ai pas pu tester, je verrais cela demain, mais j’ai déjà une piste ^^

    1 réponse Dernière réponse Répondre Citer 0
    • baztoul76
      baztoul76 dernière édition par 19 oct. 2020, 14:00

      Elles serviront à faire quoi des lignes (parce que ça peut aider de le savoir) ?

      je ne suis pas le plus compétent en développement de mod, mais je fais de mon mieux pour aider quand même

      1 réponse Dernière réponse Répondre Citer 0
      • U
        UtopiePhysique dernière édition par UtopiePhysique 24 oct. 2020, 15:24 24 oct. 2020, 06:44

        Cela n’aidera à rien de le savoir, mais cela servira à faire un visuel (contour des chunks etc) pour un mod PVP Faction que je dois sortir et que je n’ai plus toucher, j’ai perdu mon PC il y à peu ce qui n’a pas aider mais j’ai quelque chose bien mieux donc je vais m’y remettre dans mon temps libre 🙂

        1 réponse Dernière réponse Répondre Citer 0
        • baztoul76
          baztoul76 dernière édition par 24 oct. 2020, 18:31

          au pire tu peux “tricher” un peu et créer un bloc traversable qui possède la texture d’une ligne, ou de modifier la texture des blocs existants (air compris)

          je ne suis pas le plus compétent en développement de mod, mais je fais de mon mieux pour aider quand même

          1 réponse Dernière réponse Répondre Citer 0
          • U
            UtopiePhysique dernière édition par 24 oct. 2020, 18:44

            Sauf qu’un bloc cela prend la place d’un bloc, donc si il y à un bloc transparent, cela le remplace.
            Donc non aucune triche en plus d’être lourd 🙂

            Je vais effectuer des tests j’ai reçu mon nouveau ordinateur et je vais pouvoir tester bien plus facilement avec une tel puissance 🙂

            Je suis en train de finir d’installer unity etc.

            Je dois voir l’utiliser du module GL11 de l’api LWJGL qui serait assez évident.

            1 réponse Dernière réponse Répondre Citer 0
            • baztoul76
              baztoul76 dernière édition par 24 oct. 2020, 18:49

              oui je pense que la solution se trouve dans LWJGL étant donné que on peut faire des blocs avec, on doit pouvoir faire des lignes
              parce que je pense que créer un classe Ligne à partir de rien c’est un peu dur (mais bon ça doit être possible malgré la difficulté)
              après je ne m’y connais pas trop en terme de LWGJL donc je ne vais pas beaucoup aider…

              je ne suis pas le plus compétent en développement de mod, mais je fais de mon mieux pour aider quand même

              1 réponse Dernière réponse Répondre Citer 0
              • U
                UtopiePhysique dernière édition par 25 oct. 2020, 15:46

                J’ai toujours besoin d’aide j’ai essayé divers choses mais rien du tout … Côté serveur sa crash, du coup c’est un bordel donc pour simplifié à l’init j’ai mis une class avec un render pour essayer en attendant de voir ce que je vais faire …

                Voici tout les liens que j’ai étudier et toujours rien:

                https://forums.minecraftforge.net/topic/60740-1121-solved-help-to-draw-line/

                https://forums.minecraftforge.net/topic/87148-1152-drawing-a-line/

                https://www.minecraftforum.net/forums/mapping-and-modding-java-edition/minecraft-mods/modification-development/1428481-questions-drawing-a-line-through-3d-space-and
                https://forums.minecraftforge.net/topic/68680-line-drawing-function/

                https://forums.minecraftforge.net/topic/81895-problems-with-rendering-a-line-1152/

                https://github.com/Draco18s/HarderStuff/blob/master/src/main/java/com/draco18s/hazards/client/HazardsClientEventHandler.java#L188

                Et j’ai même pas réussi à affiché une ligne avec tout cela …

                1 réponse Dernière réponse Répondre Citer 0
                • U
                  UtopiePhysique dernière édition par 29 oct. 2020, 22:08

                  Bon ! J’ai réussi à avoir un résultat ! 😄
                  Malheureusement je maîtrise pas encore les calculs mathématique permettant de placer l’objet dans le monde et non pas sur la caméra joueur … Encore un peu de boulot à faire.

                  Dès que je maîtriserais je ferais un tuto 🙂 (cela risque d’être long !)

                  1 réponse Dernière réponse Répondre Citer 0
                  • baztoul76
                    baztoul76 dernière édition par 30 oct. 2020, 09:06

                    J’imagine que tu pourrais regarder le code source de schematica, je pense qu’il y a quelque chose à trouver dessus, vu que les lignes sont à peu près pareilles que les chunks, elles ont juste des limites différentes.
                    Après je ne connais pas le résultat que tu as obtenu alors si ça se trouve ça ne va servir à rien ce que je te dis 😜.

                    je ne suis pas le plus compétent en développement de mod, mais je fais de mon mieux pour aider quand même

                    U 1 réponse Dernière réponse 30 oct. 2020, 14:35 Répondre Citer 0
                    • U
                      UtopiePhysique @baztoul76 dernière édition par UtopiePhysique 30 oct. 2020, 15:54 30 oct. 2020, 14:35

                      @baztoul76 C’est une bonne idée mais j’ai vraiment pas envie de mettre mon nez dans leurs code qui doit pas être facile ^^

                      Mais j’ai commencer à trouver un début de réponse, je vais programmer des fonctions simplifier de dessin de formes pré-définie et une fonction simple pour gérer le positionnement.

                      Avec 3 jours de repos sur 14 jours j’ai pas énormément de temps avec 45 à 50h/ semaines de travail xD

                      Voilà ce que j’arrive à faire, par contre si je bouge cela à une réaction assez bizarre j’ai encore du mal à bien comprendre vu le nombre de positions et les calculs à renseigner ^^

                      ligne
                      (La ligne blanche c’est ce que j’ai “créer” c’est pas un bug :P)

                      1 réponse Dernière réponse Répondre Citer 0
                      • baztoul76
                        baztoul76 dernière édition par 30 oct. 2020, 17:35

                        donc si je comprends bien la ligne se place au bon endroit, mais elle reste figée sur l’écran et ne reste pas là où elle devrait être dans le monde MC
                        Et ça donne ce qu’il y a au-dessus…

                        je ne suis pas le plus compétent en développement de mod, mais je fais de mon mieux pour aider quand même

                        1 réponse Dernière réponse Répondre Citer 0
                        • U
                          UtopiePhysique dernière édition par 30 oct. 2020, 18:43

                          Pire que cela, si je bouges la souris elle est figée, si je bouges dans le jeu elle ce comportement bizarrement selon la direction elle change de sens, va faire l’écran ou devient plus petite.

                          J’ai testé le code suivant en changeant le MODID et cela fonctionne parfaitement:

                          @SubscribeEvent
                          public static void renderWorldLastEvent(RenderWorldLastEvent event) {
                          MatrixStack ms = event.getMatrixStack();
                          IRenderTypeBuffer.Impl buffers = IRenderTypeBuffer.getImpl(Tessellator.getInstance().getBuffer());
                          RenderSystem.disableCull();
                          ms.push();
                          for (Entity e : Minecraft.getInstance().world.getAllEntities()) {
                          if (!Minecraft.getInstance().player.equals(e) && !(e instanceof ItemEntity) && !(e instanceof ExperienceOrbEntity)) {
                          drawCube(ms, buffers, new AxisAlignedBB(e.getPosition()).expand(0, 1, 0), new Color(0, 255, 0, 127));
                          draw3dOutline(ms, buffers, new AxisAlignedBB(e.getPosition()).expand(0, 1, 0), new Color(255, 255, 255, 255));
                          }
                          }
                          draw3dOutline(ms, buffers, new AxisAlignedBB(new BlockPos(0, 10, 0)), new Color(255, 255, 255, 255));
                          ms.pop();
                          buffers.finish();
                          }
                          public static void drawCube(MatrixStack ms, IRenderTypeBuffer buffers, AxisAlignedBB aabb, Color color) {
                          draw3dRectangle(ms, buffers, aabb, color, "TOP");
                          draw3dRectangle(ms, buffers, aabb, color, "BOTTOM");
                          draw3dRectangle(ms, buffers, aabb, color, "NORTH");
                          draw3dRectangle(ms, buffers, aabb, color, "EAST");
                          draw3dRectangle(ms, buffers, aabb, color, "SOUTH");
                          draw3dRectangle(ms, buffers, aabb, color, "WEST");
                          }
                          public static void draw3dRectangle(MatrixStack ms, IRenderTypeBuffer buffers, AxisAlignedBB aabb, Color color, String side) {
                          int r = color.getRed();
                          int g = color.getGreen();
                          int b = color.getBlue();
                          int a = color.getAlpha();
                          double renderPosX = Minecraft.getInstance().getRenderManager().info.getProjectedView().getX();
                          double renderPosY = Minecraft.getInstance().getRenderManager().info.getProjectedView().getY();
                          double renderPosZ = Minecraft.getInstance().getRenderManager().info.getProjectedView().getZ();
                          ms.push();
                          ms.translate(aabb.minX - renderPosX, aabb.minY - renderPosY, aabb.minZ - renderPosZ);
                          IVertexBuilder buffer = buffers.getBuffer(RenderType.makeType(HypixelClient.MODID + ":rectangle_highlight", DefaultVertexFormats.POSITION_COLOR, GL11.GL_QUADS, 256, false, true, RenderType.State.getBuilder().transparency(ObfuscationReflectionHelper.getPrivateValue(RenderState.class, null, "field_228515_g_")).cull(new RenderState.CullState(false)).build(false)));
                          Matrix4f mat = ms.getLast().getMatrix();
                          float x = (float) (aabb.maxX - aabb.minX);
                          float y = (float) (aabb.maxY - aabb.minY);
                          float z = (float) (aabb.maxZ - aabb.minZ);
                          switch (side) {
                          case "TOP":
                          buffer.pos(mat, x, y, 0).color(r, g, b, a).endVertex();
                          buffer.pos(mat, 0, y, 0).color(r, g, b, a).endVertex();
                          buffer.pos(mat, 0, y, z).color(r, g, b, a).endVertex();
                          buffer.pos(mat, x, y, z).color(r, g, b, a).endVertex();
                          break;
                          case "BOTTOM":
                          buffer.pos(mat, x, 0, 0).color(r, g, b, a).endVertex();
                          buffer.pos(mat, 0, 0, 0).color(r, g, b, a).endVertex();
                          buffer.pos(mat, 0, 0, z).color(r, g, b, a).endVertex();
                          buffer.pos(mat, x, 0, z).color(r, g, b, a).endVertex();
                          break;
                          case "NORTH":
                          buffer.pos(mat, 0, y, 0).color(r, g, b, a).endVertex();
                          buffer.pos(mat, 0, 0, 0).color(r, g, b, a).endVertex();
                          buffer.pos(mat, x, 0, 0).color(r, g, b, a).endVertex();
                          buffer.pos(mat, x, y, 0).color(r, g, b, a).endVertex();
                          break;
                          case "EAST":
                          buffer.pos(mat, x, y, 0).color(r, g, b, a).endVertex();
                          buffer.pos(mat, x, 0, 0).color(r, g, b, a).endVertex();
                          buffer.pos(mat, x, 0, z).color(r, g, b, a).endVertex();
                          buffer.pos(mat, x, y, z).color(r, g, b, a).endVertex();
                          break;
                          case "SOUTH":
                          buffer.pos(mat, 0, y, z).color(r, g, b, a).endVertex();
                          buffer.pos(mat, 0, 0, z).color(r, g, b, a).endVertex();
                          buffer.pos(mat, x, 0, z).color(r, g, b, a).endVertex();
                          buffer.pos(mat, x, y, z).color(r, g, b, a).endVertex();
                          break;
                          case "WEST":
                          buffer.pos(mat, 0, y, 0).color(r, g, b, a).endVertex();
                          buffer.pos(mat, 0, 0, 0).color(r, g, b, a).endVertex();
                          buffer.pos(mat, 0, 0, z).color(r, g, b, a).endVertex();
                          buffer.pos(mat, 0, y, z).color(r, g, b, a).endVertex();
                          break;
                          }
                          ms.pop();
                          }
                          public static void draw3dOutline(MatrixStack ms, IRenderTypeBuffer buffers, AxisAlignedBB aabb, Color color) {
                          int r = color.getRed();
                          int g = color.getGreen();
                          int b = color.getBlue();
                          int a = color.getAlpha();
                          double renderPosX = Minecraft.getInstance().getRenderManager().info.getProjectedView().getX();
                          double renderPosY = Minecraft.getInstance().getRenderManager().info.getProjectedView().getY();
                          double renderPosZ = Minecraft.getInstance().getRenderManager().info.getProjectedView().getZ();
                          ms.push();
                          ms.translate(aabb.minX - renderPosX, aabb.minY - renderPosY, aabb.minZ - renderPosZ);
                          RenderType.State glState = RenderType.State.getBuilder().line(new RenderState.LineState(OptionalDouble.of(1))).layer(ObfuscationReflectionHelper.getPrivateValue(RenderState.class, null, "field_228500_J_")).transparency(ObfuscationReflectionHelper.getPrivateValue(RenderState.class, null, "field_228515_g_")).writeMask(new RenderState.WriteMaskState(true, false)).depthTest(new RenderState.DepthTestState(GL11.GL_ALWAYS)).build(false);
                          IVertexBuilder buffer = buffers.getBuffer(RenderType.makeType(HypixelClient.MODID + ":line_1_no_depth", DefaultVertexFormats.POSITION_COLOR, GL11.GL_LINES, 128, glState));
                          Matrix4f mat = ms.getLast().getMatrix();
                          float x = (float) (aabb.maxX - aabb.minX);
                          float y = (float) (aabb.maxY - aabb.minY);
                          float z = (float) (aabb.maxZ - aabb.minZ);
                          // Top edges
                          buffer.pos(mat, x, y, 0).color(r, g, b, a).endVertex();
                          buffer.pos(mat, 0, y, 0).color(r, g, b, a).endVertex();
                          buffer.pos(mat, 0, y, 0).color(r, g, b, a).endVertex();
                          buffer.pos(mat, 0, y, z).color(r, g, b, a).endVertex();
                          buffer.pos(mat, 0, y, z).color(r, g, b, a).endVertex();
                          buffer.pos(mat, x, y, z).color(r, g, b, a).endVertex();
                          buffer.pos(mat, x, y, z).color(r, g, b, a).endVertex();
                          buffer.pos(mat, x, y, 0).color(r, g, b, a).endVertex();
                          // Bottom edges
                          buffer.pos(mat, x, 0, 0).color(r, g, b, a).endVertex();
                          buffer.pos(mat, 0, 0, 0).color(r, g, b, a).endVertex();
                          buffer.pos(mat, 0, 0, 0).color(r, g, b, a).endVertex();
                          buffer.pos(mat, 0, 0, z).color(r, g, b, a).endVertex();
                          buffer.pos(mat, 0, 0, z).color(r, g, b, a).endVertex();
                          buffer.pos(mat, x, 0, z).color(r, g, b, a).endVertex();
                          buffer.pos(mat, x, 0, z).color(r, g, b, a).endVertex();
                          buffer.pos(mat, x, 0, 0).color(r, g, b, a).endVertex();
                          // Side edges
                          buffer.pos(mat, x, 0, 0).color(r, g, b, a).endVertex();
                          buffer.pos(mat, x, y, 0).color(r, g, b, a).endVertex();
                          buffer.pos(mat, 0, y, 0).color(r, g, b, a).endVertex();
                          buffer.pos(mat, 0, 0, 0).color(r, g, b, a).endVertex();
                          buffer.pos(mat, 0, y, z).color(r, g, b, a).endVertex();
                          buffer.pos(mat, 0, 0, z).color(r, g, b, a).endVertex();
                          buffer.pos(mat, x, 0, z).color(r, g, b, a).endVertex();
                          buffer.pos(mat, x, y, z).color(r, g, b, a).endVertex();
                          ms.pop();
                          }

                          Je vais essayer de l’étudier et de faire quelque chose de propre.
                          De créer des fonctions qui mâche le travail et un tuto cela donne ça:

                          contours

                          Je vais travailler sur cela même si j’ai peu de temps 🙂

                          1 réponse Dernière réponse Répondre Citer 0
                          • baztoul76
                            baztoul76 dernière édition par 30 oct. 2020, 20:44

                            j’ai vu ton tuto, et je vois que tu as trouvé la solution
                            C’était plutôt simple quand on regarde bien

                            je ne suis pas le plus compétent en développement de mod, mais je fais de mon mieux pour aider quand même

                            U 1 réponse Dernière réponse 31 oct. 2020, 20:08 Répondre Citer 0
                            • U
                              UtopiePhysique @baztoul76 dernière édition par 31 oct. 2020, 20:08

                              @baztoul76 “Simple”, quand on copie colle oui, mais en sois j’ai toujours exactement du mal à comprendre, j’ai bêtement globalement compris la logique du fonctionnement, mais en lui même le fonctionnement j’ai pas encore tout compris 😛 et je sais pas si j’aurais la foi d’aller chercher plus que cela.

                              1 réponse Dernière réponse Répondre Citer 0
                              • Déplacé de Support pour les moddeurs par  robin4002 robin4002 8 mars 2022, 00:32
                              • 1 / 1
                              5 sur 14
                              • Premier message
                                5/14
                                Dernier message
                              Design by Woryk
                              Contact / Mentions Légales

                              MINECRAFT FORGE FRANCE © 2018

                              Powered by NodeBB