Hammer



  • Bonjour,

    J'aimerais savoir comment on peut créer un hammer qui mine du 3x3x1

    Merci d'avance



  • Tu vois tape sur la barre de recherche MFF Hammer3x3x1 et t'auras plein de soluces(HINT:les boucles for)



  • Ouai mais il y a plein de truc qui change comme le setBlockToAir ou rayTrace etc



  • Alors la...



  • Alors là quoi ?



  • J'ai pas de workspace en 1.14 en ce moment et la je dev Daich_'s Mod(qui est en 1.8.9).Moi la j'peux pas t'aider,il faudrait une personne en 1.14 la mais moi...



  • Pareil que en 1.13 tu avez dis mais en rename



  • Pas aussi de workspace en 1.13



  • Beuh



  • Déjà tu peux tenter de reprendre quelque chose qui marche en 1.12 et tu nous dit ce qui ne pose problème



  • Après avoir repris un code en 1.12, voila les erreurs : EntityLivingBase, getPositionEyes (ligne 3), getLook (ligne 4), addVector (ligne 5), typeOfHit (ligne 16), EnumFacing, sideHit (ligne 21) et setBlockToAir (ligne 73)

    Et voila le code ou il y a les erreurs pour que vous sachiez ou elle se trouve :

        public RayTraceResult rayTrace(double blockReachDistance, float partialTicks, World w, EntityLivingBase e)
        {
            Vec3d vec3d = e.getPositionEyes(partialTicks);
            Vec3d vec3d1 = e.getLook(partialTicks);
            Vec3d vec3d2 = vec3d.addVector(vec3d1.x * blockReachDistance, vec3d1.y * blockReachDistance, vec3d1.z * blockReachDistance);
            return w.rayTraceBlocks(vec3d, vec3d2, false, false, true);
        }
    
        @Override
        public boolean onBlockDestroyed(ItemStack breaker, World w, BlockState state, BlockPos pos, EntityLivingBase e)
        {
            if (e instanceof PlayerEntity && !w.isRemote)
            {
                PlayerEntity p = (PlayerEntity) e;
                RayTraceResult r = this.rayTrace(5.0D, 0.0F, w, e);
                if (r.typeOfHit == RayTraceResult.Type.BLOCK)
                {
                    int x = pos.getX();
                    int y = pos.getY();
                    int z = pos.getZ();
                    EnumFacing side = r.sideHit;
                    // Y
                    // UP - DOWN
                    if (side == EnumFacing.DOWN || side == EnumFacing.UP)
                    {
                        this.destroyAndDropBlock(w, p, breaker, x + 1, y, z - 1);
                        this.destroyAndDropBlock(w, p, breaker, x + 1, y, z);
                        this.destroyAndDropBlock(w, p, breaker, x + 1, y, z + 1);
                        this.destroyAndDropBlock(w, p, breaker, x, y, z - 1);
                        // Middle block
                        this.destroyAndDropBlock(w, p, breaker, x, y, z + 1);
                        this.destroyAndDropBlock(w, p, breaker, x - 1, y, z - 1);
                        this.destroyAndDropBlock(w, p, breaker, x - 1, y, z);
                        this.destroyAndDropBlock(w, p, breaker, x - 1, y, z + 1);
                    }
                    // Z
                    // NORTH - SOUTH
                    else if (side == EnumFacing.NORTH || side == EnumFacing.SOUTH)
                    {
                        this.destroyAndDropBlock(w, p, breaker, x + 1, y + 1, z);
                        this.destroyAndDropBlock(w, p, breaker, x, y + 1, z);
                        this.destroyAndDropBlock(w, p, breaker, x - 1, y + 1, z);
                        this.destroyAndDropBlock(w, p, breaker, x + 1, y, z);
                        // Middle block
                        this.destroyAndDropBlock(w, p, breaker, x - 1, y, z);
                        this.destroyAndDropBlock(w, p, breaker, x + 1, y - 1, z);
                        this.destroyAndDropBlock(w, p, breaker, x, y - 1, z);
                        this.destroyAndDropBlock(w, p, breaker, x - 1, y - 1, z);
                    }
                    // X
                    // EAST - WEST
                    else if (side == EnumFacing.EAST || side == EnumFacing.WEST)
                    {
                        this.destroyAndDropBlock(w, p, breaker, x, y + 1, z + 1);
                        this.destroyAndDropBlock(w, p, breaker, x, y + 1, z);
                        this.destroyAndDropBlock(w, p, breaker, x, y + 1, z - 1);
                        this.destroyAndDropBlock(w, p, breaker, x, y, z + 1);
                        // Middle block
                        this.destroyAndDropBlock(w, p, breaker, x, y, z - 1);
                        this.destroyAndDropBlock(w, p, breaker, x, y - 1, z + 1);
                        this.destroyAndDropBlock(w, p, breaker, x, y - 1, z);
                        this.destroyAndDropBlock(w, p, breaker, x, y - 1, z - 1);
                    }
                    return true;
                }
            }
            return super.onBlockDestroyed(breaker, w, state, pos, e);
        }
        private void destroyAndDropBlock(World w, PlayerEntity p, ItemStack breaker, int x, int y, int z)
        {
            BlockPos pos = new BlockPos(x, y, z);
            w.getBlockState(pos).getBlock().harvestBlock(w, p, pos, w.getBlockState(pos), w.getTileEntity(pos), breaker);
            w.setBlockToAir(pos);
        }
    


  • Je viens de resoudre EntityLivingBase en LivingEntity, EnumFacing en Direction, getPositionEyes en getEyePosition, setBlockToAir en isAirBlock, addVector en add, typeOfHit en getType(), getLook n'est plus détecté en tant qu'erreur

    Pouvez-vous dire si j'ai fais de bonne traduction

    J'avais oublié mais w.rayTraceBlocks ne demande que un argument pas cinq



  • Alors quelqu'un peut m'aider ?



  • isAirBlock est pas bon (cette fonction permet de savoir si le block c'est de l'aire alors que toi tu veux remplacer le block par de l'aire) (C'est peut-être setAir la méthode que tu veux). Sur rayTraceBlocks c'est quoi l'erreur exacte que tu as ?



  • oui mais quand je marque air ça me propose que ça, donc pas de setAir et pour RayTraceBlocks, il nous demande un RayTraceContext donc j'ai fais new RayTraceContext() et là il me demande un Vec3d, Vec3d, BlockMode, FluidMode, Entity donc j'ai mis :

    return w.rayTraceBlocks(new RayTraceContext(vec3d, vec3d2, RayTraceContext.BlockMode.COLLIDER, RayTraceContext.FluidMode.NONE, e));
    

    PS : il reste encore sideHit comme erreur



  • sideHit a peut-être été remplacé par un getter ou par autre nom. Pour setBlockToAir, c'est paut-être quelque chose comme removeBlock


  • Moddeurs confirmés Rédacteurs Administrateurs

    Faut simplement faire un setBlockState avec Blocks.AIR.getDefaultState()



  • Ah ok merci de ses réponses mais c'est quoi un guetter (oui je vais paraitre con)



  • up ?


  • Moddeurs confirmés Rédacteurs Administrateurs

    Un getter c'est une fonction qui renvoies la valeur d'une variable.


Log in to reply