Skip to content

Commit 6a4734f

Browse files
authored
Fix issue #746 (#760)
2 parents 74e442e + 8d548f5 commit 6a4734f

File tree

2 files changed

+14
-33
lines changed

2 files changed

+14
-33
lines changed

src/client/java/minicraft/entity/particle/WaterParticle.java

Lines changed: 11 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -5,51 +5,32 @@
55
public class WaterParticle extends Particle {
66
private final int destX;
77
private final int destY;
8-
private int count;
98
private boolean stopped;
9+
private int stepCounter;
1010

1111
public WaterParticle(int x, int y, int lifetime, SpriteLinker.LinkedSprite sprite, int destX, int destY) {
1212
super(x, y, lifetime, sprite);
1313
this.destX = destX;
1414
this.destY = destY;
15-
count = 0;
16-
stopped = false;
15+
this.stopped = false;
16+
this.stepCounter = 0;
1717
}
1818

1919
@Override
2020
public void tick() {
21-
move:
2221
if (!stopped) {
23-
count++;
22+
stepCounter++;
23+
2424
if (x == destX && y == destY) {
2525
stopped = true;
26-
break move;
27-
}
28-
if (count == 2) {
29-
int diffX = destX - x;
30-
int diffY = destY - y;
31-
if (Math.abs(diffX) < 3 && Math.abs(diffY) < 3) {
32-
move(destX, destY);
33-
stopped = true;
34-
break move;
35-
}
26+
} else if (stepCounter % 2 == 0) {
27+
int dx = Integer.compare(destX, x);
28+
int dy = Integer.compare(destY, y);
29+
move(dx, dy);
3630

37-
double phi = Math.atan2(diffY, diffX);
38-
double moveX = Math.cos(phi);
39-
double moveY = Math.sin(phi);
40-
int moveXI = 0;
41-
int moveYI = 0;
42-
if (Math.abs(moveX / moveY) > 1.4) moveXI = (int) Math.signum(moveX); // Difference in X is greater.
43-
else if (Math.abs(moveY / moveX) > 1.4)
44-
moveYI = (int) Math.signum(moveY); // Difference in Y is greater.
45-
else { // The difference is small.
46-
moveXI = (int) Math.signum(moveX);
47-
moveYI = (int) Math.signum(moveY);
48-
}
49-
50-
if (!move(moveXI, moveYI))
31+
if (x == destX && y == destY) {
5132
stopped = true;
52-
count = 0;
33+
}
5334
}
5435
}
5536

src/client/java/minicraft/item/WateringCanItem.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77
import minicraft.gfx.Point;
88
import minicraft.gfx.SpriteLinker;
99
import minicraft.level.Level;
10-
import minicraft.level.tile.DirtTile;
1110
import minicraft.level.tile.FlowerTile;
11+
import minicraft.level.tile.DirtTile;
1212
import minicraft.level.tile.GrassTile;
1313
import minicraft.level.tile.Tile;
1414
import minicraft.level.tile.Tiles;
@@ -65,8 +65,8 @@ public boolean interactOn(Tile tile, Level level, int xt, int yt, Player player,
6565
int x = player.x - 2 + 4 * attackDir.getX() + random.nextInt(5) - 2;
6666
int y = player.y - 2 + 4 * attackDir.getY() + random.nextInt(5) - 2;
6767
level.add(new WaterParticle(x, y, 80 + random.nextInt(61) - 30, splash, destX, destY));
68-
renderingTick = 0;
6968
}
69+
renderingTick = 0;
7070
}
7171
if (tile instanceof CropTile) {
7272
int fertilization = ((CropTile) tile).getFertilization(level.getData(xt, yt));
@@ -87,7 +87,7 @@ public boolean interactOn(Tile tile, Level level, int xt, int yt, Player player,
8787
}
8888
if (random.nextInt(60) == 0) { // Small chance for growing flowers
8989
level.setTile(xt, yt, Tiles.get((short) 2),
90-
random.nextInt(FlowerTile.FlowerVariant.values().length));
90+
random.nextInt(FlowerTile.FlowerVariant.values().length));
9191
}
9292
}
9393

0 commit comments

Comments
 (0)