made turtle movement clean

This commit is contained in:
2025-10-03 18:47:11 +02:00
parent eabbb312b9
commit abcb23d96a
2 changed files with 9 additions and 9 deletions

View File

@@ -9,7 +9,7 @@ import net.minestom.server.MinecraftServer;
import net.minestom.server.entity.EntityCreature;
import net.minestom.server.entity.Player;
import net.minestom.server.entity.attribute.Attribute;
import net.minestom.server.event.player.PlayerMoveEvent;
import net.minestom.server.event.player.PlayerTickEvent;
import net.minestom.server.item.ItemStack;
import net.minestom.server.item.Material;
import org.jetbrains.annotations.NotNull;
@@ -22,22 +22,22 @@ class TurtleGame extends StatelessGame {
private final Map<Player, TurtleGameInstance> gameInstances = new WeakHashMap<>();
public TurtleGame(boolean firstPerson) {
super(Dimension.OVERWORLD.key, "Tetris", new PointsWinScore());
super(Dimension.OVERWORLD.key, "Turtle Game", new PointsWinScore());
this.firstPerson = firstPerson;
this.eventNode()
.addListener(PlayerMoveEvent.class, this::onPlayerMove);
.addListener(PlayerTickEvent.class, this::onPlayerTick);
}
protected void onPlayerMove(@NotNull PlayerMoveEvent event) {
protected void onPlayerTick(@NotNull PlayerTickEvent event) {
TurtleGameInstance gameInstance = this.gameInstances.get(event.getPlayer());
gameInstance.getTurtle().setView(event.getPlayer().getPosition().yaw(), gameInstance.getTurtle().getPosition().pitch());
gameInstance.getTurtle().teleport(gameInstance.getTurtle().getPosition().withView(event.getPlayer().getPosition()));
if(this.isRunning()) gameInstance.moveTurtle(event.getPlayer().getPosition().direction());
}
@Override
protected boolean onPlayerJoin(Player p) {
p.getInventory().setItemStack(0, ItemStack.builder(Material.BARRIER).customName(Component.text("Reset")).build());
p.getInventory().setItemStack(0, ItemStack.builder(Material.BARRIER).customName(Component.text("Reset Snack")).build());
if(this.gameInstances.get(p) == null) {
this.gameInstances.put(p, new TurtleGameInstance(

View File

@@ -15,6 +15,7 @@ public class TurtleGameInstance {
private final StatelessGame instance;
private final Pos startPosition;
private final EntityCreature turtle = new EntityCreature(EntityType.TURTLE);
private double speed = 2;
public TurtleGameInstance(StatelessGame instance, Pos startPosition) {
this.instance = instance;
@@ -22,9 +23,8 @@ public class TurtleGameInstance {
}
public void moveTurtle(Vec direction) {
Vec targetDirection = direction.withY(0).normalize().mul(100);
Pos targetPosition = this.turtle.getPosition().add(targetDirection);
this.turtle.getNavigator().setPathTo(targetPosition);
Vec targetDirection = direction.withY(0).normalize().mul(speed);
this.turtle.setVelocity(targetDirection);
}
public void generate() {