made turtle movement clean
This commit is contained in:
@@ -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(
|
||||
|
@@ -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() {
|
||||
|
Reference in New Issue
Block a user