Non résolu getBlockHardness qui retourne toujours 0
-
Bonjour !
Je fais mon retour dans le modding car j’avais une idée de mod fun dans lequel je voulais me lancer !
Mais j’ai un petit problème :
J’aimerais créer un fluide qui casse les blocks qui sont en dessous des blocks de ce fluide.
Le problème c’est que j’aimerais qu’il casse tout… sauf la Bedrock ! J’ai essayé avec plusieurs techniques différentes et en suis arrivé à essayer de checker si le block a une dureté inférieure à 0 comme la bedrock en a une négative. Le problème c’est que tous les blocks renvoient 0 donc mon fluide ne casse rien.
Voici le code de ma méthode:@Override public void onBlockAdded(World world, BlockPos pos, IBlockState state) { super.onBlockAdded(world, pos, state); BlockPos blockUnderPos = new BlockPos(pos.getX(), (pos.getY() -1), pos.getZ()); IBlockState blockUnderState = world.getBlockState(pos); Block blockUnder = blockUnderState.getBlock(); System.out.println(blockUnderState.getBlockHardness(world, blockUnderPos)); if(blockUnderState.getBlockHardness(world, blockUnderPos) > 0) { world.setBlockToAir(blockUnderPos); } }
Merci d’avance :beaming_face_with_smiling_eyes: !
-
Bonjour,
Il faudrait plutôt vérifier >= 0
Au passage, tu peux utiliser pos.down() pour avoir le bloc en dessous.
-
Bonjour !
J’avais pas vu qu’il existait un pos.down()
J’ai essayé de vérifier que la dureté du block soit >= 0 mais ça ne change pas.
En fait, tous les blocks me retournent 0.0 de “hardness” dans la console (je le sais grace au sysout juste au dessus de ma condition) donc je pense qu’il doit y avoir un problème avec ma version de Forge ou que je m’y suis très mal pris mais je ne sais pas ce que j’ai fait de mal -
Effectivement ce n’est pas vraiment normal que tous renvoies 0.
Il n’y a pas une fonction pour obtenir l’hardness directement depuis le blockstate ? -
Waou, il est violent le son de notification :face_screaming_in_fear:
Du coup, oui, c’est déja ce que j’utilise parce que le Block#getBlockHardness est “deprecated” et ne fonctionne également pas.