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

    Résolu Signal redstone

    Anciennes versions
    1.6.4
    6
    26
    5692
    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.
    • isador
      isador Moddeurs confirmés Modérateurs dernière édition par

      Salut les amis j’ai une question:

      voila je suis en train de créer un petit mod pour mon serveur mais j’ai un problème: quand on est dans le bloc (le bloc a la propriété traversable tu bloc de portail) j’aimerai que le bloc envoi un signal de redstone dans le bloc en dessous de lui (comme les plaques de pression).

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

        
        public void onEntityCollidedWithBlock(World par1World, int par2, int par3,
        int par4, Entity par5Entity) {
        //ton action
        }
        
        

        Dans le code du block en question

        "If you have a comprehensive explanation for everything then it decreases uncertainty and anxiety and reduces your cognitive load. And if you can use that simplifying algorithm to put yourself on the side of moral virtue then you’re constantly a good person with a minimum of effort."
        ― Jordan B. Peterson

        1 réponse Dernière réponse Répondre Citer 0
        • isador
          isador Moddeurs confirmés Modérateurs dernière édition par

          ok merci 🙂

          edit: mais genre pour faire en sorte que ça émette un signal de redstone dans le block en dessous comment faire?

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

            Uniquement le block du dessous ?

            Et pour émettre un signal de redstone, regarde le block de redstone, ou la torche, qui n’émet pas en dessous ( Tu inverse la fonction )

            "If you have a comprehensive explanation for everything then it decreases uncertainty and anxiety and reduces your cognitive load. And if you can use that simplifying algorithm to put yourself on the side of moral virtue then you’re constantly a good person with a minimum of effort."
            ― Jordan B. Peterson

            1 réponse Dernière réponse Répondre Citer 0
            • isador
              isador Moddeurs confirmés Modérateurs dernière édition par

              je ne trouve pas dans le code de la torche de redstone.

              1 réponse Dernière réponse Répondre Citer 0
              • isador
                isador Moddeurs confirmés Modérateurs dernière édition par

                je me permet de up le message

                1 réponse Dernière réponse Répondre Citer 0
                • Superloup10
                  Superloup10 Modérateurs dernière édition par

                  Regarde le code de la plaque de pression, c’est BlockBasePressurePlate.java

                  Si vous souhaitez me faire un don, il vous suffit de cliquer sur le bouton situé en dessous.

                  Je suis un membre apprécié et joueur, j'ai déjà obtenu 17 points de réputation.

                  1 réponse Dernière réponse Répondre Citer 0
                  • isador
                    isador Moddeurs confirmés Modérateurs dernière édition par

                    je n’arrive pas a trouver …

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

                      en effet, y a la fonction qui indique aux blocs alentours le changement de bloc mais je vois rien non plus qui gère la partie redstone, ou bien j’ai pas comrpis le fonctionnement.

                      1 réponse Dernière réponse Répondre Citer 0
                      • Superloup10
                        Superloup10 Modérateurs dernière édition par

                        A moins que je me trompe, c’est ces deux méthodes pour le courant de redstone:

                        
                        /**
                        * Returns true if the block is emitting indirect/weak redstone power on the specified side. If isBlockNormalCube
                        * returns true, standard redstone propagation rules will apply instead and this will not be called. Args: World, X,
                        * Y, Z, side. Note that the side is reversed - eg it is 1 (up) when checking the bottom of the block.
                        */
                        public int isProvidingWeakPower(IBlockAccess par1IBlockAccess, int par2, int par3, int par4, int par5)
                        {
                        return this.getPowerSupply(par1IBlockAccess.getBlockMetadata(par2, par3, par4));
                        }
                        
                        /**
                        * Returns true if the block is emitting direct/strong redstone power on the specified side. Args: World, X, Y, Z,
                        * side. Note that the side is reversed - eg it is 1 (up) when checking the bottom of the block.
                        */
                        public int isProvidingStrongPower(IBlockAccess par1IBlockAccess, int par2, int par3, int par4, int par5)
                        {
                        return par5 == 1 ? this.getPowerSupply(par1IBlockAccess.getBlockMetadata(par2, par3, par4)) : 0;
                        }
                        

                        Si vous souhaitez me faire un don, il vous suffit de cliquer sur le bouton situé en dessous.

                        Je suis un membre apprécié et joueur, j'ai déjà obtenu 17 points de réputation.

                        1 réponse Dernière réponse Répondre Citer 0
                        • isador
                          isador Moddeurs confirmés Modérateurs dernière édition par

                          cela ne marche pas…

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

                            Au vu des commentaires qui y sont liés, je pense que cela en fait partie, mais qu’il en manque un bout, peut être le bout dont je parlais plus tôt?

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

                              BlockPresurePlate.java, il y a tout ce que tu as besoin.

                              1 réponse Dernière réponse Répondre Citer 0
                              • isador
                                isador Moddeurs confirmés Modérateurs dernière édition par

                                public void onEntityCollidedWithBlock(World par1World, int par2, int par3,
                                int par4, Entity par5Entity) {
                                //ton action
                                public int isProvidingStrongPower(IBlockAccess par1IBlockAccess, int par2, int par3, int par4, int par5)
                                {
                                return par5 == 1 ? this.getPowerSupply(par1IBlockAccess.getBlockMetadata(par2, par3, par4)) : 0;
                                }
                                }
                                

                                ce serai sa?

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

                                  Et les autres fonctions qui vont avec.
                                  En fait la plaque de pression a deux metadata, un lorsqu’elle est activé, et un lorsqu’elle est désactivé. Si son metadata est 2, elle envoie un signale de redstone.

                                  1 réponse Dernière réponse Répondre Citer 0
                                  • isador
                                    isador Moddeurs confirmés Modérateurs dernière édition par

                                    J’intègre les metadata au onEntityCollidedWithBlock?

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

                                      Dans la classe de ton bloc, ajoute tout ça :

                                      public int isProvidingWeakPower(IBlockAccess par1IBlockAccess, int x, int y, int z, int par5)
                                      {
                                      return this.getPowerSupply(par1IBlockAccess.getBlockMetadata(x, y, z));
                                      }
                                      
                                      public void breakBlock(World world, int x, int y, int z, int par5, int par6)
                                      {
                                      if(this.getPowerSupply(par6) > 0)
                                      {
                                      this.notifyChange(world, x, y, z);
                                      }
                                      
                                      super.breakBlock(world, x, y, z, par5, par6);
                                      }
                                      
                                      protected void notifyChange(World world, int x, int y, int z)
                                      {
                                      world.notifyBlocksOfNeighborChange(x, y, z, this.blockID);
                                      world.notifyBlocksOfNeighborChange(x, y - 1, z, this.blockID);
                                      }
                                      
                                      public void onEntityCollidedWithBlock(World world, int x, int y, int z, Entity entity)
                                      {
                                      if(!world.isRemote)
                                      {
                                      int l = this.getPowerSupply(world.getBlockMetadata(x, y, z));
                                      
                                      if(l == 0)
                                      {
                                      this.setStateIfMobInteractsWithPlate(world, x, y, z, l);
                                      }
                                      }
                                      }
                                      
                                      protected void setStateIfMobInteractsWithPlate(World world, int x, int y, int z, int par5)
                                      {
                                      int i1 = this.getPlateState(world, x, y, z);
                                      boolean flag = par5 > 0;
                                      boolean flag1 = i1 > 0;
                                      
                                      if(par5 != i1)
                                      {
                                      world.setBlockMetadataWithNotify(x, y, z, this.getMetaFromWeight(i1), 2);
                                      this.notifyChange(world, x, y, z);
                                      world.markBlockRangeForRenderUpdate(x, y, z, x, y, z);
                                      }
                                      
                                      if(!flag1 && flag)
                                      {
                                      world.playSoundEffect((double)x + 0.5D, (double)y + 0.1D, (double)z + 0.5D, "random.click", 0.3F, 0.5F);
                                      }
                                      else if(flag1 && !flag)
                                      {
                                      world.playSoundEffect((double)x + 0.5D, (double)y + 0.1D, (double)z + 0.5D, "random.click", 0.3F, 0.6F);
                                      }
                                      
                                      if(flag1)
                                      {
                                      world.scheduleBlockUpdate(x, y, z, this.blockID, this.tickRate(world));
                                      }
                                      }
                                      
                                      public void updateTick(World world, int x, int y, int z, Random rand)
                                      {
                                      if(!world.isRemote)
                                      {
                                      int l = this.getPowerSupply(world.getBlockMetadata(x, y, z));
                                      
                                      if(l > 0)
                                      {
                                      this.setStateIfMobInteractsWithPlate(world, x, y, z, l);
                                      }
                                      }
                                      }
                                      
                                      public int tickRate(World world)
                                      {
                                      return 20;
                                      }
                                      
                                      public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z)
                                      {
                                      return null;
                                      }
                                      
                                      protected int getPowerSupply(int metadata)
                                      {
                                      return metadata == 1 ? 15 : 0;
                                      }
                                      
                                      protected int getMetaFromWeight(int metadata)
                                      {
                                      return metadata > 0 ? 1 : 0;
                                      }
                                      
                                      protected int getPlateState(World world, int x, int y, int z)
                                      {
                                      List list = world.getEntitiesWithinAABBExcludingEntity((Entity)null, this.getSensitiveAABB(x, y, z));
                                      
                                      //List list = world.getEntitiesWithinAABB(EntityLivingBase.class, this.getSensitiveAABB(x, y, z));
                                      
                                      //List list = world.getEntitiesWithinAABB(EntityPlayer.class, this.getSensitiveAABB(x, y, z));
                                      
                                      if(list != null && !list.isEmpty())
                                      {
                                      Iterator iterator = list.iterator();
                                      
                                      while(iterator.hasNext())
                                      {
                                      Entity entity = (Entity)iterator.next();
                                      
                                      if(!entity.doesEntityNotTriggerPressurePlate())
                                      {
                                      return 15;
                                      }
                                      }
                                      }
                                      
                                      return 0;
                                      }
                                      
                                      protected AxisAlignedBB getSensitiveAABB(int x, int y, int z)
                                      {
                                      float f = 0.125F;
                                      return AxisAlignedBB.getAABBPool().getAABB((double)((float)x + f), (double)y, (double)((float)z + f), (double)((float)(x + 1) - f), (double)y + 0.25D, (double)((float)(z + 1) - f));
                                      }
                                      
                                      public int isProvidingStrongPower(IBlockAccess blockAccess, int x, int y, int z, int side)
                                      {
                                      return side == 1 ? this.getPowerSupply(blockAccess.getBlockMetadata(x, y, z)) : 0;
                                      }
                                      

                                      Je viens de tester, ça fonctionne exactement comme la plaque de pression.

                                      1 réponse Dernière réponse Répondre Citer 0
                                      • isador
                                        isador Moddeurs confirmés Modérateurs dernière édition par

                                        Merci je testerai ça demain

                                        EDIT: Çà marche merci ❤

                                        1 réponse Dernière réponse Répondre Citer 0
                                        • isador
                                          isador Moddeurs confirmés Modérateurs dernière édition par

                                          Par contre pour mon autre post sur le rendu du portail (http://www.minecraftforgefrance.fr/showthread.php?tid=444&pid=4750#pid4750) on ma parlez d’un rendu TESR mais je n’ai aucune idée comment le réaliser (il peut ajuster la “taille” de la texture?)

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

                                            Il y a un tutoriel sur le site pour les rendus TESR. Dans la fonction qui rend le bloc, il suffirait de mettre un GL11.glScale(x, y, z) pour agrandir.

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

                                            MINECRAFT FORGE FRANCE © 2018

                                            Powered by NodeBB