Closed Helllios closed 8 years ago
Hello ! Alors j'ai cherché un petit peu la cause de ce bug, et j'ai remarqué que dans la fonction spout de WaterSpout.java on passe à spoutableWaterHeight la position des pieds du joueur :
Location location = this.player.getLocation().clone().add(0, 0.2, 0);
int result = spoutableWaterHeight(location);
et du coup, dans spoutableWaterHeight, la première position que l'on teste
Location locToTest = loc.add(0, -1, 0);
est celle d'en dessous des pieds du joueur. C'est surement pour ça que le test
BlockTools.isWaterBased(block)
échoue lorsqu'on a les pieds sur le sol tout en étant dans l'eau. Il ne faudrait donc pas partir de loc-1 mais bien de loc pour tester. J'ai "bricolé" quelque chose comme cela :
Location locToTest = loc.clone().add(0, 1, 0);
for (int i = 0; i <= height ; i++) {
locToTest = locToTest.add(0, -1, 0);
[...]
J'espère que ça pourra vous aider !
On ne peut pas lancer son WaterSpout quand on a uniquement ses pieds dans l'eau, ou plus (tout le corps immergé, il faut être au dessus de l'eau pour le lancer.