Plusieurs Questions….



  • Hello 🙂

    Je reviens avec quelques questions comme vu dans le titre.

    Bref,je fais un mod Tech et du coup je veux créer mon propre système d’énergie,j'ai un peu fouillé sur le net,certains disent qu'il faut un bonne maitrise du java d'autres que c'est non plus très dur, du coup c'est Dur ou ça ne l'est pas??? (Sachant que je me situerai entre novices et moyen)

    Par la suite quand je regarde IC2 ou même plusieurs mods Tech, ils ont des core mods, A quoi ça sert et est-ce utile et obligatoire?


  • Administrateurs

    Salut,
    à ma connaissance ic2 n'est pas un core mod. Un core mod (ou plugin FML) peut patcher les classes de Minecraft lors de leur chargement (manipulation directe du byte code).

    Créer un système d'énergie est assez complexe, je dirai qu'il faut un nouveau entre moyen et avancé.



  • Personnellement, j'ai réussi à créer un système d'énergie pour mon mod, en m'inspirant des sources d'un mod (je sais plus lequel…). C'est plus ou moins fonctionnel (pas terminé) mais je veux bien t'aider

    EDIT : et oui, c'est assez complexe mais une fois qu'on a un fonctionnement en téte c'est bon



  • Ok Merci Robin!

    @AymericRed oui je veux bien que tu m'aides!
    Je sais que pour l’énergie il faut quelque(beacoup) fonction.
    Mais je sais pas par où commencer 😄



  • Je vais t'expliquer un peu comment ça fonctionne (en tout cas dans mon mod), si tu veux je peux t'envoyer mes sources.

    Donc déjà dans chaque TE qui utilise l'énergie, il y a une barre d'énergie (classe qui contient tout ce qui est nécessaire) et les méthodes pour la distribuer (le plus compliqué). Au début (en1.7.10), j'avais fait une méthode où chaque TE s'entre distribuait l'énergie, mais comme chaque cable avait sa barre d'énergie, quand le système n'était plus alimenté, il restait de l'énergie pendant un bon bout de temps. Au passage en 1.8 (que j'ai codé il y a 2 semaines), j'ai fait un système où chaque producteur cherche les lampes, fours… connectés et leur distribue une part égale d'énergie, sans s'occuper de remplir les barres d'énergie des cables.

    Je sais pas si j'ai été assez clair mais je peux pas faire mieux 😄



  • ça je le savais deja 🙂 mais le probleme c'est par où je commence, et oui je veux bien tes sources pour voir comment tu fais 😉



  • En codant tout ça, je me disais que ça serait utile de le faire sous forme d'Api, eh ben j'avais raison, je t'envoie ça d'ici 30mn

    EDIT: C'est ici Les barres sont faites pour également recevoir de l'eau/lave/vapeur mais ce n'est pas terminé (et excuse moi si mon anglais n'est pas correct)



  • ok,je regarderai ça, je met pas encore en résolu au cas ou si j'ai encore des question sur le système d’énergie.

    EDIT:Seule chose dommage c'est que ton code est en 1.8, mais pas grave ^^ J'ai compris comment faire 😛



  • Ah OK, si jamais y a quelque chose que tu comprendras pas hésite pas à demander 🙂



  • Parce que quand je check tes class, il y a des class manquantes xD apres les ErrorManger je les ai remplacer par des system.out.println x)
    J'ai pris ton code de base et j'ai enlever un peu tout ce qui en rapport avec les fluides xD.
    Mais le gros probleme que j'ai c'est le BlockPos, je sais pas avec quelle class faut la remplacer avec 3 int 😞



  • Les BlockPos sont à remplacer par int x, int y, int z mais pourquoi ne pas garder le code en 1.8 ?



  • Euh parce que je code en 1.7.10 et je trouve la 1.8 chiant, et puis je suis le "mouvement des mod tech" qui vont update en 1.9 directement xD


  • Administrateurs

    Heu … Faire 1.7 -> 1.9 c'est suicidaire.



  • Ok mais personnellement j'en referai un tout nouveau pour la 1.9 😄

    sinon ```java
    /**

    • Gets the neighbors pipes
    • @param receivers The pipes to give power
    • @param visiteds The visited pipes
    • @param lastDirection The last direction, for infinite boucles
      */
      public void getNeighboors(Set <blockpos>receivers, Set <integer>visiteds, EnumFacing lastDirection);
      };
    Pour block Pos en 1.7 je le remplace par quoi? vu que je peux que mettre des class… et vu qu'il faut 3 int
    une idée? parce que je suis bloquée x(</integer></blockpos>


  • array de int ?



  • Si array marche, fais ça sinon, créé une classe blockpos



  • ouaip je vais creer une new class blockpos


  • Administrateurs

    ou alors juste un tableau de 3 int.



  • @Override
    public void getNeighboors(Set <blockpos>receivers, Set <integer>visiteds, EnumFacing lastDirection)
    {
        if(worldObj == null) //The world can be null in case of first entity interaction, before any Vanilla interaction
        {
        Energy.log.writeSecret("[WORLD_LOADING] Skipped signal emiting, worldObj is null");
        return;
        }
        BlockPos n = pos.north();
        if(worldObj.getTileEntity(n) instanceof IPipes && !EnumFacing.NORTH.getOpposite().equals(lastDirection))
        {
        this.getPipeConnections((IPipes) worldObj.getTileEntity(n), receivers, visiteds, EnumFacing.NORTH);
        }
        n = pos.south();
        if(worldObj.getTileEntity(n) instanceof IPipes && !EnumFacing.SOUTH.getOpposite().equals(lastDirection))
        {
        this.getPipeConnections((IPipes) worldObj.getTileEntity(n), receivers, visiteds, EnumFacing.SOUTH);
        }
        n = pos.west();
        if(worldObj.getTileEntity(n) instanceof IPipes && !EnumFacing.WEST.getOpposite().equals(lastDirection))
        {
        this.getPipeConnections((IPipes) worldObj.getTileEntity(n), receivers, visiteds, EnumFacing.WEST);
        }
        n = pos.east();
        if(worldObj.getTileEntity(n) instanceof IPipes && !EnumFacing.EAST.getOpposite().equals(lastDirection))
        {
        this.getPipeConnections((IPipes) worldObj.getTileEntity(n), receivers, visiteds, EnumFacing.EAST);
        }
        n = pos.up();
        if(worldObj.getTileEntity(n) instanceof IPipes && !EnumFacing.UP.getOpposite().equals(lastDirection))
        {
        this.getPipeConnections((IPipes) worldObj.getTileEntity(n), receivers, visiteds, EnumFacing.UP);
        }
        n = pos.down();
        if(worldObj.getTileEntity(n) instanceof IPipes && !EnumFacing.DOWN.getOpposite().equals(lastDirection))
        {
        this.getPipeConnections((IPipes) worldObj.getTileEntity(n), receivers, visiteds, EnumFacing.DOWN);
        }
    }
    

    Surtout ça le probleme apres…. j'ai limiter les erreurs mais ```java
    worldObj.addTileEntity(n)

    Meme erreur avec getTileEntity(n)... au moin,je sais d'ou viens l'erreur mais si je remplacer BlockPos par ma class Pos avec 3 int, il me manquera le .north etc... du coup je suis bloquée :(</integer></blockpos>


  • Je ne vois pas de méthode addTileEntity() ?!?

    Et pour le BlockPos, dans ta classe t'a qu'à mettre : ```java
    public BlockPos north() 
    {
    return new BlockPos(x, y, z + 1); //je sais plus si c'est +ou -
    }

    Pour chaque direction
    
    Envoyé depuis un smartphone