Non résolu 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
ourayTrace
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) etsetBlockToAir
(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
enLivingEntity
,EnumFacing
enDirection
,getPositionEyes
engetEyePosition
,setBlockToAir
enisAirBlock
,addVector
enadd
,typeOfHit
engetType()
,getLook
n’est plus détecté en tant qu’erreurPouvez-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 pourRayTraceBlocks
, il nous demande unRayTraceContext
donc j’ai faisnew RayTraceContext()
et là il me demande unVec3d, 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
-
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 ?
-
Un getter c’est une fonction qui renvoies la valeur d’une variable.