This commit is contained in:
2025-12-13 15:15:23 +01:00
parent b1b1e24104
commit 31385fbd7f

View File

@@ -3,64 +3,28 @@ package eu.mhsl.minenet.minigames.instance.game.stateless.types.boatRace;
import eu.mhsl.minenet.minigames.instance.Dimension;
import eu.mhsl.minenet.minigames.instance.game.stateless.StatelessGame;
import eu.mhsl.minenet.minigames.score.FirstWinsScore;
import eu.mhsl.minenet.minigames.score.Score;
import net.minestom.server.MinecraftServer;
import net.minestom.server.coordinate.Pos;
import net.minestom.server.coordinate.Vec;
import net.minestom.server.entity.Entity;
import net.minestom.server.entity.EntityType;
import net.minestom.server.entity.Player;
import net.minestom.server.entity.metadata.monster.BlazeMeta;
import net.minestom.server.entity.metadata.other.BoatMeta;
import net.minestom.server.event.entity.EntityTickEvent;
import net.minestom.server.event.entity.EntityVelocityEvent;
import net.minestom.server.instance.block.Block;
import net.minestom.server.instance.generator.GenerationUnit;
import net.minestom.server.instance.generator.Generator;
import net.minestom.server.registry.DynamicRegistry;
import net.minestom.server.world.DimensionType;
import org.jetbrains.annotations.NotNull;
import java.util.Map;
import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap;
public class BoatRace extends StatelessGame {
public BoatRace() {
super(Dimension.OVERWORLD.key, "boatRace", new FirstWinsScore());
setGenerator(new Generator() {
@Override
public void generate(@NotNull GenerationUnit generationUnit) {
generationUnit.modifier().fill(
generationUnit.absoluteStart(),
generationUnit.absoluteEnd().withY(0),
Block.BLUE_ICE
);
}
});
Map<UUID, Vec> desiredBoatVelocity = new ConcurrentHashMap<>();
eventNode().addListener(EntityTickEvent.class, event -> {
Entity entity = event.getEntity();
if (entity.getEntityType() == EntityType.OAK_BOAT) {
Vec desired = desiredBoatVelocity.get(entity.getUuid());
if (desired != null) {
entity.setVelocity(desired);
}
}
});
this.setGenerator(generationUnit -> generationUnit.modifier().fill(
generationUnit.absoluteStart(),
generationUnit.absoluteEnd().withY(0),
Block.BLUE_ICE
));
}
@Override
protected boolean onPlayerJoin(Player p) {
Entity boat = new Entity(EntityType.OAK_BOAT);
boat.setInstance(this, this.getSpawn());
boat.setNoGravity(true);
MinecraftServer.getSchedulerManager().scheduleNextTick(() -> boat.addPassenger(p));
return super.onPlayerJoin(p);
}