Bendercraft / spigot-bending

Minecraft plugin that allows players to bend elements as in the series
Other
14 stars 7 forks source link

WaterSpout #1 #52

Closed Helllios closed 8 years ago

Helllios commented 8 years ago

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.

ghost commented 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 !