Compare commits

..

1 Commits

Author SHA1 Message Date
5c1ec41ac7 chore: I hate my life 2025-09-25 09:58:22 +02:00
3 changed files with 38 additions and 11 deletions

View File

@ -117,7 +117,7 @@ public class Game {
* @param screenRenderer the renderer used to refresh the screen.
* @param terminal the terminal instance used for layout.
*/
public void movePlayerRight(ScreenRenderer screenRenderer, Terminal terminal) {
public synchronized void movePlayerRight(ScreenRenderer screenRenderer, Terminal terminal) {
if (window != Window.WORLD) {
return;
}
@ -137,9 +137,9 @@ public class Game {
new Thread(() -> entitySpawnProvider.update(this, terminal)).start();
playMovePlayerSound(cords[0] + 1, cords[1]);
new Thread(() -> playMovePlayerSound(cords[0] + 1, cords[1])).start();
update(screenRenderer);
new Thread(() -> update(screenRenderer)).start();
}
/**
@ -148,7 +148,7 @@ public class Game {
* @param screenRenderer the renderer used to refresh the screen.
* @param terminal the terminal instance used for layout.
*/
public void movePlayerLeft(ScreenRenderer screenRenderer, Terminal terminal) {
public synchronized void movePlayerLeft(ScreenRenderer screenRenderer, Terminal terminal) {
if (window != Window.WORLD) {
return;
}
@ -168,19 +168,19 @@ public class Game {
new Thread(() -> entitySpawnProvider.update(this, terminal)).start();
playMovePlayerSound(cords[0] - 1, cords[1]);
new Thread(() -> playMovePlayerSound(cords[0] - 1, cords[1])).start();
update(screenRenderer);
new Thread(() -> update(screenRenderer)).start();
}
private boolean playerMovingUp = false;
private transient boolean playerMovingUp = false;
/**
* Moves the player upward by one block, if jumping is valid.
*
* @param screenRenderer the renderer used to refresh the screen.
*/
public void movePlayerUp(ScreenRenderer screenRenderer) {
public synchronized void movePlayerUp(ScreenRenderer screenRenderer) {
if (playerMovingUp) {
return;
}
@ -192,6 +192,7 @@ public class Game {
int[] cords = getPlayerCords();
if (isSolid(world[cords[1] - 2][cords[0]]) || !isSolid(world[cords[1] + 1][cords[0]])) {
playerMovingUp = false;
return;
}
@ -211,8 +212,9 @@ public class Game {
throw new RuntimeException(e);
}
update(screenRenderer);
playerMovingUp = false;
update(screenRenderer);
}).start();
}
@ -235,7 +237,9 @@ public class Game {
int dealDamage = inventory.getItemInHand().map(Item::getDealDamage).orElse(1);
if (mob.getHp() - dealDamage <= 0) {
// Mob is killed
gameStates.dependencies.entityKill.get(mob.getBlockId()).killed(this, mob, x, y);
try {
gameStates.dependencies.entityKill.get(mob.getBlockId()).killed(this, mob, x, y);
} catch (Exception _) {}
world[y][x].remove(mob);
} else {
mob.decreaseHp(dealDamage);

View File

@ -27,7 +27,7 @@ public class Generation {
int[] terrainHeight = PopulateWorld.generateTerrain();
game.getInventory().addItem(ItemBlockSupplier.getItem("lava_bucket"));
game.getInventory().addItem(ItemBlockSupplier.getItem("coal"));
game.getPlayer().setPlayerBlock1(steveBlock);
game.getPlayer().setPlayerBlock2(steveBlock2);

View File

@ -0,0 +1,23 @@
package cz.jzitnik.game.threads.list;
import cz.jzitnik.game.Game;
import cz.jzitnik.game.annotations.ThreadRegistry;
import lombok.RequiredArgsConstructor;
@RequiredArgsConstructor
@ThreadRegistry
public class BackgroundSaveTask extends Thread {
private final Game game;
@Override
public void run() {
while (true) {
try {
Thread.sleep(10000);
game.getGameStates().dependencies.gameSaver.save(game);
} catch (InterruptedException e) {
break;
}
}
}
}