Navigation

    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Popular
    • Users
    • Groups

    SOLVED Les events en 1.8

    1.8.x
    1.8
    5
    16
    3343
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • geekuko
      geekuko last edited by

      Bonjour j’ai un souci avec mon event (event pour créer un portail) , j’ai récupéré qui date de la 1.7 et quand je le met en 1.8 il y a un max d’erreur.
      pouvez-vous m’aider à la corriger please

      package EpicBoss;
      
      import net.minecraft.block.Block;
      import net.minecraft.entity.player.EntityPlayer;
      import net.minecraft.init.Blocks;
      import net.minecraft.item.Item;
      import net.minecraft.item.ItemBlock;
      import net.minecraft.item.ItemStack;
      import net.minecraft.world.World;
      import net.minecraftforge.event.entity.player.PlayerInteractEvent;
      import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
      
      public class eventmanager {
      
      @SubscribeEvent
      public void onPlayerInteract(PlayerInteractEvent event){
      System.out.print("true event");
      final World world = event.entityLiving.worldObj;
      if (world.isRemote || !event.action.equals(PlayerInteractEvent.Action.RIGHT_CLICK_BLOCK))
      return;
      
      ItemStack stack = event.entityPlayer.inventory.getCurrentItem();
      EntityPlayer player = event.entityPlayer;
      
      int x = event.x, y = event.y, z = event.z;
      if (event.face == 0)
      –y;
      else if (event.face == 1)
      ++y;
         else if (event.face == 2)
      --y;
      else if (event.face == 3)
      ++y;
      else if (event.face == 4)
      --x;
      else if (event.face == 5)
      ++x;
      if (stack != null && stack.getItem() instanceof ItemBlock){
      if (Item.getIdFromItem(stack.getItem()) == Block.getIdFromBlock(Blocks.diamond_block)){
      if (world.getBlock(x, y, z + 1) == Blocks.air &&
      world.getBlock(x, y, z - 1) == Blocks.air &&
         world.getBlock(x + 1, y, z) == Blocks.air &&
      world.getBlock(x - 1, y, z) == Blocks.air &&
      world.getBlock(x, y, z + 2) == Blocks.stone &&
      world.getBlock(x, y, z - 2) == Blocks.stone &&
      world.getBlock(x + 2, y, z) == Blocks.stone &&
      world.getBlock(x - 2, y, z) == Blocks.stone &&
      world.getBlock(x + 1, y, z + 1) == Blocks.air &&
      world.getBlock(x + 1, y, z - 1) == Blocks.air &&
         world.getBlock(x - 1, y, z + 1) == Blocks.air &&
      world.getBlock(x - 1, y, z - 1) == Blocks.air ) {
      
      world.setBlock(x, y, z, epicboss.blockteleporter, 0, 2);
      world.setBlock(x - 1, y, z, epicboss.blockteleporter, 0, 2);
      world.setBlock(x + 1, y, z, epicboss.blockteleporter, 0, 2);
      world.setBlock(x, y, z - 1, epicboss.blockteleporter, 0, 2);
      world.setBlock(x, y, z + 1, epicboss.blockteleporter, 0, 2);
      }
      
      }
      }
      }
      }
      
      

      d’avance merci

      1 Reply Last reply Reply Quote 0
      • isador
        isador Moddeurs confirmés Modérateurs last edited by

        si tu ne nous dis pas les erreur ca va être difficile de t’aider

        1 Reply Last reply Reply Quote 0
        • SCAREX
          SCAREX last edited by

          @‘geekuko’:

          Bonjour j’ai un souci avec mon event (event pour créer un portail) , j’ai récupéré qui date de la 1.7 et quand je le met en 1.8 il y a un max d’erreur.
          pouvez-vous m’aider à la corriger please

          package EpicBoss;
          
          import net.minecraft.block.Block;
          import net.minecraft.entity.player.EntityPlayer;
          import net.minecraft.init.Blocks;
          import net.minecraft.item.Item;
          import net.minecraft.item.ItemBlock;
          import net.minecraft.item.ItemStack;
          import net.minecraft.world.World;
          import net.minecraftforge.event.entity.player.PlayerInteractEvent;
          import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
          
          public class eventmanager {
          
          @SubscribeEvent
          public void onPlayerInteract(PlayerInteractEvent event){
          System.out.print("true event");
          final World world = event.entityLiving.worldObj;
          if (world.isRemote || !event.action.equals(PlayerInteractEvent.Action.RIGHT_CLICK_BLOCK))
          return;
          
          ItemStack stack = event.entityPlayer.inventory.getCurrentItem();
          EntityPlayer player = event.entityPlayer;
          
          int x = event.x, y = event.y, z = event.z;
          if (event.face == 0)
          –y;
          else if (event.face == 1)
          ++y;
             else if (event.face == 2)
          --y;
          else if (event.face == 3)
          ++y;
          else if (event.face == 4)
          --x;
          else if (event.face == 5)
          ++x;
          if (stack != null && stack.getItem() instanceof ItemBlock){
          if (Item.getIdFromItem(stack.getItem()) == Block.getIdFromBlock(Blocks.diamond_block)){
          if (world.getBlock(x, y, z + 1) == Blocks.air &&
          world.getBlock(x, y, z - 1) == Blocks.air &&
             world.getBlock(x + 1, y, z) == Blocks.air &&
          world.getBlock(x - 1, y, z) == Blocks.air &&
          world.getBlock(x, y, z + 2) == Blocks.stone &&
          world.getBlock(x, y, z - 2) == Blocks.stone &&
          world.getBlock(x + 2, y, z) == Blocks.stone &&
          world.getBlock(x - 2, y, z) == Blocks.stone &&
          world.getBlock(x + 1, y, z + 1) == Blocks.air &&
          world.getBlock(x + 1, y, z - 1) == Blocks.air &&
             world.getBlock(x - 1, y, z + 1) == Blocks.air &&
          world.getBlock(x - 1, y, z - 1) == Blocks.air ) {
          
          world.setBlock(x, y, z, epicboss.blockteleporter, 0, 2);
          world.setBlock(x - 1, y, z, epicboss.blockteleporter, 0, 2);
          world.setBlock(x + 1, y, z, epicboss.blockteleporter, 0, 2);
          world.setBlock(x, y, z - 1, epicboss.blockteleporter, 0, 2);
          world.setBlock(x, y, z + 1, epicboss.blockteleporter, 0, 2);
          }
          
          }
          }
          }
          }
          
          

          d’avance merci

          Premièrement, serait-il possible de dire où sont les erreurs.
          Deuxièmement, tu utilises un PlayerInteractEvent donc il ne devrait apparaître nulle part dans ton code event.entityLiving.
          Troisièmement, pour le position utilise la position du joueur au lieu de celle de l’event.
          Quatrièmement, je suppose que le event.face correspond à là où regarde le joueur, pour ça il faut utiliser EnumFacing directionHorizontal = event.entityPlayer.getHorizontalFacing;
          Cinquièmement, pour trouver si l’item correspond à un certain Item, il faut faire stack.getItem == TonItem (si c’est un block, il faut faire Item.getItemFromBlock(TonBlock).
          Sixièmement, pour savoir si les blocs autour sont un certain bloc, il faut utiliser world.getBlockState(BlockPos).getBlock() == Blocks.air .

          1 Reply Last reply Reply Quote 0
          • geekuko
            geekuko last edited by

            je comprend pas tt , puis ce code il fonctionnai tres bien en 1.7 !!
            il y a tellement d’erreur que pour les voir il te serai plus facile pour toi de copier le code et de le tester ('enfin si tu à l’envi et le temps)

            1 Reply Last reply Reply Quote 0
            • robin4002
              robin4002 Administrateurs Rédacteurs Moddeurs confirmés last edited by

              Pour les coordonnés, si il faut utiliser ceux de l’event puisqu’il faut les coordonnés où le joueur à fait le clic droit et non les coordonnées du joueur.
              Ce qui change c’est qu’il faut utiliser les BlockPos à la place de x y z

              Pour event.entityLiving ça ne cause aucun problème puisque de toute façon EntityPlayer est extends EntityLivingBase

              1 Reply Last reply Reply Quote 0
              • RedRelay
                RedRelay Moddeurs confirmés last edited by

                Un package avec des majuscules et une classe qui commence par une minuscule, c’est une erreur de convention.
                Utiliser event.entityLiving quand on est dans un PlayerInteractEvent, c’est une erreur de sémantique.
                Les events.face vont être remplacé par des Enum si ce n’est pas déjà fait.

                Si tu codes dans eclipse, tu as un onglet “problems”, la dedans toutes les erreurs sont décrites.

                1 Reply Last reply Reply Quote 0
                • geekuko
                  geekuko last edited by

                  je comprend pas comment on utilise le BlockPos …

                  1 Reply Last reply Reply Quote 0
                  • SCAREX
                    SCAREX last edited by

                    @‘geekuko’:

                    je comprend pas comment on utilise le BlockPos …

                    BlockPos est simplement une classe contenant les coordonnées d’un bloc exemple : new BlockPos(x,y,z).
                    il remplace la plupart des paramètres x,y,z.

                    1 Reply Last reply Reply Quote 1
                    • geekuko
                      geekuko last edited by

                      quelqu’un pourrai me le corriger directement ? car la je tourne en rond please cela serai trop simpa

                      1 Reply Last reply Reply Quote 0
                      • SCAREX
                        SCAREX last edited by

                        @‘geekuko’:

                        quelqu’un pourrai me le corriger directement ? car la je tourne en rond please cela serai trop simpa

                        Je suis en train mais j’ai un problème avec le event.face == 0, il faudrait que tu me redonnes les directions sans les numéros car pour moi 0 = south or tes nombres vont jusqu’à 5 mais il n’y a que 4 directions !

                        1 Reply Last reply Reply Quote 0
                        • geekuko
                          geekuko last edited by

                          merde ben la … au pire ta skype? ca serai plus simple non? demande moi c’est geekuko

                          1 Reply Last reply Reply Quote 0
                          • SCAREX
                            SCAREX last edited by

                            
                            @SubscribeEvent
                            public void onPlayerInteract(PlayerInteractEvent event) {
                            ItemStack stack = event.entityPlayer.getCurrentEquippedItem();
                            
                            if (!event.world.isRemote && event.action == PlayerInteractEvent.Action.RIGHT_CLICK_BLOCK && stack != null && stack.getItem() == Items.apple && event.world.getBlockState(event.pos).getBlock() == Blocks.diamond_block) {
                            BlockPos pos = event.pos;
                            Block block = Blocks.air;
                            Block block1 = Blocks.stone;
                            boolean flag = event.world.getBlockState(pos.south()).getBlock() == block && event.world.getBlockState(pos.north()).getBlock() == block && event.world.getBlockState(pos.east()).getBlock() == block && event.world.getBlockState(pos.west()).getBlock() == block;
                            boolean flag1 = event.world.getBlockState(pos.south().south()).getBlock() == block1 && event.world.getBlockState(pos.north().north()).getBlock() == block1 && event.world.getBlockState(pos.east().east()).getBlock() == block1 && event.world.getBlockState(pos.west().west()).getBlock() == block1;
                            boolean flag2 = event.world.getBlockState(pos.south().east()).getBlock() == block1 && event.world.getBlockState(pos.south().west()).getBlock() == block1 && event.world.getBlockState(pos.north().east()).getBlock() == block1 && event.world.getBlockState(pos.north().west()).getBlock() == block1;
                            
                            if (flag && flag1 && flag2) {
                            event.world.setBlockState(pos, Blocks.gold_block.getDefaultState());
                            event.world.setBlockState(pos.south(), Blocks.gold_block.getDefaultState());
                            event.world.setBlockState(pos.north(), Blocks.gold_block.getDefaultState());
                            event.world.setBlockState(pos.east(), Blocks.gold_block.getDefaultState());
                            event.world.setBlockState(pos.west(), Blocks.gold_block.getDefaultState());
                            event.entityPlayer.inventory.consumeInventoryItem(Items.apple);
                            }
                            }
                            }
                            
                            
                            1 Reply Last reply Reply Quote 1
                            • geekuko
                              geekuko last edited by

                              merciiiiiiiii SCAREX!!!

                              1 Reply Last reply Reply Quote 0
                              • robin4002
                                robin4002 Administrateurs Rédacteurs Moddeurs confirmés last edited by

                                Si c’est résolu, mets la balise résolu.

                                1 Reply Last reply Reply Quote 0
                                • geekuko
                                  geekuko last edited by

                                  c’est ou la balise?

                                  1 Reply Last reply Reply Quote 0
                                  • robin4002
                                    robin4002 Administrateurs Rédacteurs Moddeurs confirmés last edited by

                                    Il faut tu édites ton premier message puis que tu change la balise.

                                    1 Reply Last reply Reply Quote 0
                                    • 1 / 1
                                    • First post
                                      Last post
                                    Design by Woryk
                                    Contact / Mentions Légales / Faire un don

                                    MINECRAFT FORGE FRANCE © 2018

                                    Powered by NodeBB