MFF

    Minecraft Forge France
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes
    • Forge Events
      • Automatique
      • Foncé
      • Clair
    • S'inscrire
    • Se connecter

    Frost Walker

    Planifier Épinglé Verrouillé Déplacé Sans suite
    1.7.10
    12 Messages 4 Publieurs 3.2k Vues 1 Watching
    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.
    • Mehd95M Hors-ligne
      Mehd95
      dernière édition par

      @‘BrokenSwing’:

      PlayerEvent.TickEvent, et tu dois créer l’enchantement frost walker

      Ok mais comment faire pour dire que ça remplace une zone d’eau de 5*5  autour de joueurs et que ça dispawn au bout de 5s

      1 réponse Dernière réponse Répondre Citer 0
      • EikinsE Hors-ligne
        Eikins
        dernière édition par

        Utilises les ChunkCoordinates pour stocker les positions des 5 blocks sous le joueur.
        Pour récupérer la position du block sous le joueur, suffit de faire une troncature sur ses positions. (Math.floor(pos))
        Ensuite tu récupères les autres blocks à partir des coordonnées de celui ci.
        Tu créer une liste (ou tableau) nommée lastFrostChunkCoordinates, et si les positions d’un block est différent sur le remplace par de l’eau.

        Fracture

        1 réponse Dernière réponse Répondre Citer 0
        • J Hors-ligne
          Jodge
          dernière édition par

          L’avantage d’éclipe c’est de pouvoir installer plusieurs version de Forge.
          Ducoup, on peu voir le code sources des versions ultérieur.
          Ici, la fonction qui permet de Freeze l’eau en 1.10 (EnchantementFrostWalker.class)

          public static void freezeNearby(EntityLivingBase living, World worldIn, BlockPos pos, int level)
          {
          if (living.onGround)
          {
          float f = (float)Math.min(16, 2 + level);
          BlockPos.MutableBlockPos blockpos$mutableblockpos = new BlockPos.MutableBlockPos(0, 0, 0);
          
          for (BlockPos.MutableBlockPos blockpos$mutableblockpos1 : BlockPos.getAllInBoxMutable(pos.add((double)(-f), -1.0D, (double)(-f)), pos.add((double)f, -1.0D, (double)f)))
          {
          if (blockpos$mutableblockpos1.distanceSqToCenter(living.posX, living.posY, living.posZ) <= (double)(f * f))
          {
          blockpos$mutableblockpos.setPos(blockpos$mutableblockpos1.getX(), blockpos$mutableblockpos1.getY() + 1, blockpos$mutableblockpos1.getZ());
          IBlockState iblockstate = worldIn.getBlockState(blockpos$mutableblockpos);
          
          if (iblockstate.getMaterial() == Material.AIR)
          {
          IBlockState iblockstate1 = worldIn.getBlockState(blockpos$mutableblockpos1);
          
          if (iblockstate1.getMaterial() == Material.WATER && ((Integer)iblockstate1.getValue(BlockLiquid.LEVEL)).intValue() == 0 && worldIn.canBlockBePlaced(Blocks.FROSTED_ICE, blockpos$mutableblockpos1, false, EnumFacing.DOWN, (Entity)null, (ItemStack)null))
          {
          worldIn.setBlockState(blockpos$mutableblockpos1, Blocks.FROSTED_ICE.getDefaultState());
          worldIn.scheduleUpdate(blockpos$mutableblockpos1.toImmutable(), Blocks.FROSTED_ICE, MathHelper.getRandomIntegerInRange(living.getRNG(), 60, 120));
          }
          }
          }
          }
          }
          

          De la tu peu observer tous les code sources. Les class qui n’existe pas, tu dois te débrouillé à les changer (ex : cette fonction est appeler par l’update de l’entité, tu dois donc l’ajouté dans l’event d’update d’entité).
          Cela nécessiste un peu de recherche, mais tu as tout disponible sur le code sources de Minecraft.

          1 réponse Dernière réponse Répondre Citer 0
          • Mehd95M Hors-ligne
            Mehd95
            dernière édition par

            @‘Jodge’:

            L’avantage d’éclipe c’est de pouvoir installer plusieurs version de Forge.
            Ducoup, on peu voir le code sources des versions ultérieur.
            Ici, la fonction qui permet de Freeze l’eau en 1.10 (EnchantementFrostWalker.class)

            public static void freezeNearby(EntityLivingBase living, World worldIn, BlockPos pos, int level)
               {
                   if (living.onGround)
                   {
                       float f = (float)Math.min(16, 2 + level);
                       BlockPos.MutableBlockPos blockpos$mutableblockpos = new BlockPos.MutableBlockPos(0, 0, 0);
            
                       for (BlockPos.MutableBlockPos blockpos$mutableblockpos1 : BlockPos.getAllInBoxMutable(pos.add((double)(-f), -1.0D, (double)(-f)), pos.add((double)f, -1.0D, (double)f)))
                       {
                           if (blockpos$mutableblockpos1.distanceSqToCenter(living.posX, living.posY, living.posZ) <= (double)(f * f))
                           {
                               blockpos$mutableblockpos.setPos(blockpos$mutableblockpos1.getX(), blockpos$mutableblockpos1.getY() + 1, blockpos$mutableblockpos1.getZ());
                               IBlockState iblockstate = worldIn.getBlockState(blockpos$mutableblockpos);
            
                               if (iblockstate.getMaterial() == Material.AIR)
                               {
                                   IBlockState iblockstate1 = worldIn.getBlockState(blockpos$mutableblockpos1);
            
                                   if (iblockstate1.getMaterial() == Material.WATER && ((Integer)iblockstate1.getValue(BlockLiquid.LEVEL)).intValue() == 0 && worldIn.canBlockBePlaced(Blocks.FROSTED_ICE, blockpos$mutableblockpos1, false, EnumFacing.DOWN, (Entity)null, (ItemStack)null))
                                   {
                                       worldIn.setBlockState(blockpos$mutableblockpos1, Blocks.FROSTED_ICE.getDefaultState());
                                       worldIn.scheduleUpdate(blockpos$mutableblockpos1.toImmutable(), Blocks.FROSTED_ICE, MathHelper.getRandomIntegerInRange(living.getRNG(), 60, 120));
                                   }
                               }
                           }
                       }
                   }
            

            De la tu peu observer tous les code sources. Les class qui n’existe pas, tu dois te débrouillé à les changer (ex : cette fonction est appeler par l’update de l’entité, tu dois donc l’ajouté dans l’event d’update d’entité).
            Cela nécessiste un peu de recherche, mais tu as tout disponible sur le code sources de Minecraft.

            ok daccord je comprends pourquoi j’avais pas trouvé je croyais que c’etait en 1.9 x)

            1 réponse Dernière réponse Répondre Citer 0
            • Mehd95M Hors-ligne
              Mehd95
              dernière édition par

              package fr.yahoo.mehdiboussalem.mehdmod.common;
              
              import net.minecraft.block.BlockLiquid;
              import net.minecraft.block.material.Material;
              import net.minecraft.entity.Entity;
              import net.minecraft.entity.EntityLivingBase;
              import net.minecraft.init.Blocks;
              import net.minecraft.item.ItemStack;
              import net.minecraft.util.EnumFacing;
              import net.minecraft.util.MathHelper;
              import net.minecraft.world.World;
              
              public class EnchantementMod {
              
                  public static void freezeNearby(EntityLivingBase living, World worldIn, BlockPos pos, int level)
                  {
                      if (living.onGround)
                      {
                          float f = (float)Math.min(16, 2 + level);
                          BlockPos.MutableBlockPos blockpos$mutableblockpos = new BlockPos.MutableBlockPos(0, 0, 0);
              
                          for (BlockPos.MutableBlockPos blockpos$mutableblockpos1 : BlockPos.getAllInBoxMutable(pos.add((double)(-f), -1.0D, (double)(-f)), pos.add((double)f, -1.0D, (double)f)))
                          {
                              if (blockpos$mutableblockpos1.distanceSqToCenter(living.posX, living.posY, living.posZ) <= (double)(f * f))
                              {
                                  blockpos$mutableblockpos.setPos(blockpos$mutableblockpos1.getX(), blockpos$mutableblockpos1.getY() + 1, blockpos$mutableblockpos1.getZ());
                                  IBlockState iblockstate = worldIn.getBlockState(blockpos$mutableblockpos);
              
                                  if (iblockstate.getMaterial() == Material.air)
                                  {
                                      IBlockState iblockstate1 = worldIn.getBlockState(blockpos$mutableblockpos1);
              
                                      if (iblockstate1.getMaterial() == Material.water && ((Integer)iblockstate1.getValue(BlockLiquid.LEVEL)).intValue() == 0 && worldIn.canBlockBePlaced(Blocks.FROSTED_ICE, blockpos$mutableblockpos1, false, EnumFacing.DOWN, (Entity)null, (ItemStack)null))
                                      {
                                          worldIn.setBlockState(blockpos$mutableblockpos1, Blocks.FROSTED_ICE.getDefaultState());
                                          worldIn.scheduleUpdate(blockpos$mutableblockpos1.toImmutable(), Blocks.FROSTED_ICE, MathHelper.getRandomIntegerInRange(living.getRNG(), 60, 120));
                                      }
                                  }
                              }
                          }
                      }
                  }
              }
              

              j’ai des erreus sur les  BlockPos, IBlockState, LEVEL, FROSTED_ICE

              1 réponse Dernière réponse Répondre Citer 0
              • BrokenSwingB Hors-ligne
                BrokenSwing Moddeurs confirmés Rédacteurs
                dernière édition par

                BlockPos -> remplace par des x, y z (tous des int)
                IBlockState -> remplace par un Block
                LEBEL c’est le niveau de l’enchantement
                FROSTED_ICE -> va falloir impro par que c’est un block de la 1.10 (de la glace qui fond en peu de temps et n’importe où), c’est la glace qui est sous les pieds du joueur

                1 réponse Dernière réponse Répondre Citer 0
                • Mehd95M Hors-ligne
                  Mehd95
                  dernière édition par

                  ok juste comment on telecharge les sources de mc 1.10 pour que je recree le frosted ice

                  1 réponse Dernière réponse Répondre Citer 0
                  • BrokenSwingB Hors-ligne
                    BrokenSwing Moddeurs confirmés Rédacteurs
                    dernière édition par

                    Tu peux faire un setup 1.10 ou alors avec MCP

                    1 réponse Dernière réponse Répondre Citer 0
                    • Mehd95M Hors-ligne
                      Mehd95
                      dernière édition par

                      Euh j’arrive pas a faire le setup on peut juste me passer la class du frosted Ice ?

                      1 réponse Dernière réponse Répondre Citer 0
                      • J Hors-ligne
                        Jodge
                        dernière édition par

                        https://www.minecraftforgefrance.fr/showthread.php?tid=2805

                        Te filer la source sert à rien : c’est en 1.10. Il y aura des class qui n’existe plus, qui ont été renommé, ou qui on été adapté. Il faut faire un petit travail d’analyse pour modifier certaine chose.
                        Tu suis le Tuto, tu installe les sources, et tu regarde par toi même. C’est un support, on vas pas te mâché le travail en te donnant toute les réponse de simple claquement de doigt.

                        C’est pas pour être méchant ou quoi que se soit hein, mais si on te donne toute les réponses servis sur un plateau d’argent, tu n’apprendras rien 😉

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

                        MINECRAFT FORGE FRANCE © 2024

                        Powered by NodeBB