Navigation

    • S'inscrire
    • Se connecter
    • Recherche
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes
    1. Accueil
    2. KillerMapper
    • Profil
    • Abonnements
    • Abonnés
    • Sujets
    • Messages
    • Meilleur sujets
    • Groupes

    KillerMapper

    @KillerMapper

    9
    Réputation
    61
    Messages
    651
    Vues
    0
    Abonnés
    0
    Abonnements
    Inscrit Dernière connexion
    Site web killermapper.net Situation géographique Paris

    KillerMapper S'abonner

    Messages postés par KillerMapper

    • RE: Colorer un layer d'un bloc?

      J'ai trouvé une solution, grâce à cet example sur le GitHub de Choonster (un membre habitué du forum officiel de Forge).

      Je peux maintenant définir la couleur de la ligne en fonction du bloc, du state etc c'est parfait 🙂

      Là j'applique une couleur jaune quand le bloc est tourné, et blanche quand il ne l'est pas. La classe que j'ai adapté pour cet exemple:

      :::
      package net.killermapper.testmod.util;

      import net.killermapper.testmod.Reference;
      import net.killermapper.testmod.blocks.BooleanBlock;
      import net.killermapper.testmod.init.InitBlocks;
      import net.minecraft.client.Minecraft;
      import net.minecraft.client.renderer.color.BlockColors;
      import net.minecraft.client.renderer.color.IBlockColor;

      public class ModColorHandler
      {
          private static final Minecraft minecraft = Minecraft.getMinecraft();

      public static void registerColorHandlers()
          {
              final BlockColors blockColors = minecraft.getBlockColors();
              registerBlockColorHandlers(blockColors);
          }

      private static void registerBlockColorHandlers(final BlockColors blockColors)
          {
              final IBlockColor lineColorHandler = (state, blockAccess, pos, tintIndex) ->
              {
                  if(blockAccess != null && pos != null)
                      if(state == InitBlocks.booleanBlock.getDefaultState().withProperty(BooleanBlock.IS_ROTATED, true) )
                      return Reference.YELLOWCOLOR;
                  return Reference.WHITECOLOR;
              };

      blockColors.registerBlockColorHandler(lineColorHandler, InitBlocks.booleanBlock);
          }
      }
      :::

      (à initialiser dans le Init, côté client)

      posté dans 1.9.x et 1.10.x
      KillerMapper
    • Colorer un layer d'un bloc?

      Salut,

      Dans l'optique de réduire au maximum le poids de mes textures, je cherche à savoir s'il est possible de changer la teinte d'un layer sur un bloc.

      Je m'explique. J'ai fait un bloc qui est composé de deux models de block basique (taille standard), un bloc avec la texture de base et un bloc qui n'a qu'une texture transparente sur la face du dessus. En jeu ça donne ça (le bloc avec la ligne blanche):

      http://imgur.com/BM8aNjW (si la prévisualisation ne marche pas, imgur a tendance à ne pas aimer le hotlinking maintenant..)

      La ligne blanche est une texture à part, appliquée sur un layer différent (en gros il y a 2 blocks dans le json du model).

      De la sorte, j'ai juste besoin de faire la texture du matériau de base et les lignes une fois, plutôt que de répéter à chaque type de matériau toutes les variations de lignes qu'il y aura. Ca m'économise des centaines de textures.

      Maintenant, je veux faire des lignes de différente couleurs, et plutôt que de dupliquer chaque motif de ligne pour chaque couleur, je voudrais savoir s'il y avait moyen de colorer le layer de la ligne. Je pense que ça serait un peu comme le bloc d'herbe qui est coloré en fonction du biome, mais je n'ai pas trouvé dans les sources comment Mojang fait ça (et ça utilise un système avec les biomes, là où moi je veux jute appliquer une couleur spécifique). Dans le json on peut avoir un paramètre "tintindex" mais je n'ai pas trouvé comment s'en servir malgré des heures de recherches.

      Le json du model:

      :::
      {   "parent": "block/block",
          "elements": [
              {   "from": [ 0, 0, 0 ],
                  "to": [ 16, 16, 16 ],
                  "faces": {
                      "down":  { "uv": [ 0, 0, 16, 16 ], "texture": "#base",   "cullface": "down" },
                      "up":    { "uv": [ 0, 0, 16, 16 ], "texture": "#base",   "cullface": "up" },
                      "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#base",   "cullface": "north" },
                      "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#base",   "cullface": "south" },
                      "west":  { "uv": [ 0, 0, 16, 16 ], "texture": "#base",   "cullface": "west" },
                      "east":  { "uv": [ 0, 0, 16, 16 ], "texture": "#base",   "cullface": "east" }
                  }
              },
              {   "from": [ 0, 0, 0 ],
                  "to": [ 16, 16, 16 ],
                  "faces": {
                      "up":    { "uv": [ 0, 0, 16, 16 ], "texture": "#overlay", "tintindex": 0, "cullface": "up" }
                  }
              }
          ]
      }
      :::

      En espérant que ça soit faisable, et si oui que quelqu'un aie une idée de comment ça se passe 😄

      posté dans 1.9.x et 1.10.x
      KillerMapper
    • RE: Rotation de block sur 2 axes uniquement

      (un mois plus tard)

      J'avais effectivement pas pensé au bool et ça marche bien! En fait je me demandais surtout comment récupérer la direction du joueur, je pensais que ça avait changé depuis l'introduction des states, mais au final j'ai repris le code que j'utilisait en 1.7.10 et rempalcé la gestion des metadatas par la gestion du state et ça marche nickel.

      Du coup je passe en résolu.

      posté dans 1.9.x et 1.10.x
      KillerMapper
    • Rotation de block sur 2 axes uniquement

      Salut,

      Après avoir réussi avec succès à faire un bloc ayant 4 rotations possibles (merci le gros tuto des blockstates), je voudrais maintenant faire un bloc pouvant pivoter sur 2 axes seulement (penser à une bûche mais sans la position debout). Le but étant à terme de case 8 blocs différents ayant 2 rotations possibles sur un ID (soit 2*8 metadatas) mais pour le moment je me concentre sur la rotation en elle-même.

      Seulement je ne sais pas quelle est la meilleure approche. EnumAxis a les 3 axes, EnumFacing renvoie les 4 directions, du coup il y a toujours des trucs en trop (peut-être qu'on peut arranger ça?). Devrais-je créer ma propre énumération? J'ai toujours du mal avec cette histoire de blockstate (franchement avec les metadatas en 1.7 j'y arrivais très bien, alors que là…) du coup j'y arrive pas dès que ça sort d'un chemin tout tracé par un tuto... J'ai l'impression que c'est censé être tout simple et pourtant ça ne veut pas 😛

      Merci!

      posté dans 1.9.x et 1.10.x
      KillerMapper
    • RE: Problème multi-texture et rotation d'un bloc rendu ISBRH

      Ah bah non il faut refaire le block à chaque fois, à moins qu'il y a un moyen de tourner le modèle dans le programme de modélisation utilisé. C'est juste pour ne pas à s'emmerder à modéliser en changeant des coordonnées dans le code que j'ai proposé l'astuce du programme de modélisation.

      Sinon faut passer par un TESR, normalement ça peut être tourné si je ne me trompe pas mais c'est plus gourmand en ressources qu'un ISBRH.

      posté dans Sans suite
      KillerMapper
    • RE: Problème multi-texture et rotation d'un bloc rendu ISBRH

      Les coordonnés par 4 sont pour les textures, elles ne t'intéressent pas dans ton cas. Il faut prendre les 6 coordonnées dans les lignes from et to. Par exemple le premier cube aura les coordonnés 0,0,0.5/16,1,1,1 (car 16/16 = 1).

      posté dans Sans suite
      KillerMapper
    • RE: Problème multi-texture et rotation d'un bloc rendu ISBRH

      Salut, oui tu pourras réutiliser le rendu pour tes autres blocs si tu utilises le même ID.

      Sinon je ne sais pas si c'est une bonne idée de mettre des coordonnées négatives. Je n'ai jamais essayé ceci dit mais ça me paraît bizarre de le faire. Possible que ça soit la source du problème des textures décalées? Car je ne vois pas ce qui pourrait causer le problème de la texture.

      Pour la rotation, c'est un peu le truc pas pratique des ISBRH, il faut se farcir toutes les directions à la main. Je te conseille de lancer le jeu en debug (avec le petit bouton affichant un insecte dans Eclipse) ainsi tu pourras faire les modifications en temps réel (il faut juste mettre à jour le chunk où se trouve le bloc pour voir les changements, en posant/cassant un bloc par ex, après avoir modifié et sauvegardé le code). Sinon tu as toujours la possibilité de modéliser ton objet dans un éditeur 3D genre McCrayFish model creator ou autre, et de récupérer les coordonnées dans le json pour les mettre dans le code de l'ISBRH (par contre ça donne des valeurs entre 0 et 16, donc fais une division par 16 à chaque fois).

      Le truc à retenir c'est que quelque soit la direction, les points 0,0,0 et 1,1,1 sont toujours aux mêmes coins du block.

      posté dans Sans suite
      KillerMapper
    • RE: Forge Blockstate JSON et itemBlock

      Ok il fallait juste un JSON associé dans le dossier models/item du coup. Maintenant ça marche.

      Merci.

      posté dans 1.9.x et 1.10.x
      KillerMapper
    • Forge Blockstate JSON et itemBlock

      Salut,

      Après avoir réussi à faire un bloc avec différents états, vient la question des JSON pour le rendu.
      Pour un bloc simple, j'avais utilisé le système de Forge afin de n'avoir qu'un seul JSON au lieu de 3 et ça marche bien. Le bloc est rendu en jeu et l'item associé aussi.
      Pour le bloc avec metadatas (enfin les blockstates), j'arrive à rendre le bloc posé dans le monde, en revanche l'itemBlock n'est pas rendu (il est en noir et violet).

      Voici le JSON:

      :::
      {
        "forge_marker": 1,
        "defaults": {
          "textures": {
              "all": "testmod:blocks/redblock"
        },
          "model": "cube_all"
        },
        "variants": {
              "normal": [{}],
              "inventory": [{}],
              "color": {
                  "red": {
                      "textures": {
                          "all": "testmod:blocks/redblock"
                      }
                  },
                  "blue": {
                      "textures": {
                          "all": "testmod:blocks/blueblock"
                      }
                  },
                  "green": {
                      "textures": {
                          "all": "testmod:blocks/greenblock"
                      }
                  },
                  "yellow": {
                      "textures": {
                          "all": "testmod:blocks/yellowblock"
                      }
                  }
              }
          }
      }

      :::

      Et voici le résultat en jeu:

      Comme vous pouvez le voir, pas de problème pour les blocs posés, mais dans l'inventaire ça ne marche pas.

      J'initialise le rendu des items dans le code de la même manière que pour des items avec metadata (qui eux marchent très bien), si vous voulez le code dites le moi et je vous le mettrai.

      Du coup, dois-je rajouter des JSONs dans led dossier models/block, ou dans le dossier models/item? Le système de Forge ne permet pas de gérer avec un seul JSON un bloc avec des états? J'ai essayé de mettre des trucs dans "inventory": [{}] mais sans succès. J'avoue être un peu perdu dans tout ça et j'ai surement du louper quelque chose.

      Merci!

      posté dans 1.9.x et 1.10.x
      KillerMapper
    • RE: Road Stuff

      Oui j'avais bien compris que ce n'était pas un commentaire négatif 😛

      En tout cas merci beaucoup pour vos avis, ça fait plaisir de voir que le mod plait 🙂

      posté dans Mods en developpement
      KillerMapper
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 1 / 7