diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/boatRace/BoatRace.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/boatRace/BoatRace.java index 5d5ff7f..f6b81cb 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/boatRace/BoatRace.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/boatRace/BoatRace.java @@ -1,24 +1,29 @@ package eu.mhsl.minenet.minigames.instance.game.stateless.types.boatRace; +import eu.mhsl.minenet.minigames.Resource; +import eu.mhsl.minenet.minigames.handler.global.PlayerLoginHandler; 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.util.CommonProperties; import net.minestom.server.MinecraftServer; import net.minestom.server.coordinate.Pos; import net.minestom.server.entity.Entity; import net.minestom.server.entity.EntityType; +import net.minestom.server.entity.GameMode; import net.minestom.server.entity.Player; +import net.minestom.server.event.player.PlayerMoveEvent; +import net.minestom.server.instance.anvil.AnvilLoader; import net.minestom.server.instance.block.Block; +import org.jetbrains.annotations.NotNull; + +import java.util.concurrent.CompletableFuture; + public class BoatRace extends StatelessGame { public BoatRace() { super(Dimension.OVERWORLD.key, "boatRace", new FirstWinsScore()); - - this.setGenerator(generationUnit -> generationUnit.modifier().fill( - generationUnit.absoluteStart(), - generationUnit.absoluteEnd().withY(0), - Block.BLUE_ICE - )); + this.setChunkLoader(new AnvilLoader(Resource.GAME_MAP.getPath().resolve("boatRace/woodlandMansion"))); } @Override @@ -26,12 +31,45 @@ public class BoatRace extends StatelessGame { Entity boat = new Entity(EntityType.OAK_BOAT); boat.setInstance(this, this.getSpawn()); boat.setSynchronizationTicks(100000); + PlayerLoginHandler.globalTeam.addMember(boat.getUuid().toString()); MinecraftServer.getSchedulerManager().scheduleNextTick(() -> boat.addPassenger(p)); return super.onPlayerJoin(p); } + @Override + protected void onLoad(@NotNull CompletableFuture callback) { + for(int z = 9; z <= 32; z++) { + this.setBlock(31, 235, z, Block.CHERRY_FENCE.withProperties(CommonProperties.fenceNorthSouth)); + } + } + + @Override + protected void onStart() { + for(int z = 9; z <= 32; z++) { + this.setBlock(31, 235, z, Block.AIR); + } + } + + @Override + protected void onPlayerMove(@NotNull PlayerMoveEvent event) { + if (this.isBeforeBeginning) return; + + if(event.getNewPosition().z() > 469) { + Player player = event.getPlayer(); + this.getScore().insertResult(player); + + Entity vehicle = player.getVehicle(); + if(vehicle != null) { + vehicle.removePassenger(player); + player.teleport(player.getPosition().withY(y -> y + 3)); + player.setGameMode(GameMode.SPECTATOR); + vehicle.remove(); + } + } + } + @Override public Pos getSpawn() { - return new Pos(0, 1, 0); + return new Pos(20, 236, 20, -90, 0); } } diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/boatRace/BoatRaceFactory.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/boatRace/BoatRaceFactory.java index cdedcaa..5a126fa 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/boatRace/BoatRaceFactory.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/boatRace/BoatRaceFactory.java @@ -5,6 +5,7 @@ import eu.mhsl.minenet.minigames.instance.game.stateless.config.GameFactory; import eu.mhsl.minenet.minigames.instance.game.stateless.config.Option; import eu.mhsl.minenet.minigames.instance.room.Room; import eu.mhsl.minenet.minigames.message.component.TranslatedComponent; +import net.minestom.server.item.Material; import java.util.Map; @@ -14,6 +15,11 @@ public class BoatRaceFactory implements GameFactory { return TranslatedComponent.byId("game_BoatRace#name"); } + @Override + public Material symbol() { + return Material.OAK_BOAT; + } + @Override public Game manufacture(Room parent, Map> configuration) throws Exception { return new BoatRace().setParent(parent); diff --git a/src/main/java/eu/mhsl/minenet/minigames/util/CommonProperties.java b/src/main/java/eu/mhsl/minenet/minigames/util/CommonProperties.java index dfd93f1..357f4d6 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/util/CommonProperties.java +++ b/src/main/java/eu/mhsl/minenet/minigames/util/CommonProperties.java @@ -10,4 +10,11 @@ public class CommonProperties { this.put("east", "true"); } }; + + public static Map fenceNorthSouth = new HashMap<>() { + { + this.put("north", "true"); + this.put("south", "true"); + } + }; } diff --git a/src/main/resources/maps/game/boatRace/woodlandMansion/region/r.-1.-1.mca b/src/main/resources/maps/game/boatRace/woodlandMansion/region/r.-1.-1.mca new file mode 100644 index 0000000..2b2fad4 Binary files /dev/null and b/src/main/resources/maps/game/boatRace/woodlandMansion/region/r.-1.-1.mca differ diff --git a/src/main/resources/maps/game/boatRace/woodlandMansion/region/r.-1.-2.mca b/src/main/resources/maps/game/boatRace/woodlandMansion/region/r.-1.-2.mca new file mode 100644 index 0000000..eb31c6d Binary files /dev/null and b/src/main/resources/maps/game/boatRace/woodlandMansion/region/r.-1.-2.mca differ diff --git a/src/main/resources/maps/game/boatRace/woodlandMansion/region/r.-1.0.mca b/src/main/resources/maps/game/boatRace/woodlandMansion/region/r.-1.0.mca new file mode 100644 index 0000000..1adccba Binary files /dev/null and b/src/main/resources/maps/game/boatRace/woodlandMansion/region/r.-1.0.mca differ diff --git a/src/main/resources/maps/game/boatRace/woodlandMansion/region/r.-1.1.mca b/src/main/resources/maps/game/boatRace/woodlandMansion/region/r.-1.1.mca new file mode 100644 index 0000000..af8b339 Binary files /dev/null and b/src/main/resources/maps/game/boatRace/woodlandMansion/region/r.-1.1.mca differ diff --git a/src/main/resources/maps/game/boatRace/woodlandMansion/region/r.-1.2.mca b/src/main/resources/maps/game/boatRace/woodlandMansion/region/r.-1.2.mca new file mode 100644 index 0000000..1177b79 Binary files /dev/null and b/src/main/resources/maps/game/boatRace/woodlandMansion/region/r.-1.2.mca differ diff --git a/src/main/resources/maps/game/boatRace/woodlandMansion/region/r.-2.-1.mca b/src/main/resources/maps/game/boatRace/woodlandMansion/region/r.-2.-1.mca new file mode 100644 index 0000000..201ea03 Binary files /dev/null and b/src/main/resources/maps/game/boatRace/woodlandMansion/region/r.-2.-1.mca differ diff --git a/src/main/resources/maps/game/boatRace/woodlandMansion/region/r.-2.-2.mca b/src/main/resources/maps/game/boatRace/woodlandMansion/region/r.-2.-2.mca new file mode 100644 index 0000000..9a006fa Binary files /dev/null and b/src/main/resources/maps/game/boatRace/woodlandMansion/region/r.-2.-2.mca differ diff --git a/src/main/resources/maps/game/boatRace/woodlandMansion/region/r.-2.0.mca b/src/main/resources/maps/game/boatRace/woodlandMansion/region/r.-2.0.mca new file mode 100644 index 0000000..ec2e80e Binary files /dev/null and b/src/main/resources/maps/game/boatRace/woodlandMansion/region/r.-2.0.mca differ diff --git a/src/main/resources/maps/game/boatRace/woodlandMansion/region/r.-2.1.mca b/src/main/resources/maps/game/boatRace/woodlandMansion/region/r.-2.1.mca new file mode 100644 index 0000000..7abeebe Binary files /dev/null and b/src/main/resources/maps/game/boatRace/woodlandMansion/region/r.-2.1.mca differ diff --git a/src/main/resources/maps/game/boatRace/woodlandMansion/region/r.-2.2.mca b/src/main/resources/maps/game/boatRace/woodlandMansion/region/r.-2.2.mca new file mode 100644 index 0000000..c549eeb Binary files /dev/null and b/src/main/resources/maps/game/boatRace/woodlandMansion/region/r.-2.2.mca differ diff --git a/src/main/resources/maps/game/boatRace/woodlandMansion/region/r.0.-1.mca b/src/main/resources/maps/game/boatRace/woodlandMansion/region/r.0.-1.mca new file mode 100644 index 0000000..945c89d Binary files /dev/null and b/src/main/resources/maps/game/boatRace/woodlandMansion/region/r.0.-1.mca differ diff --git a/src/main/resources/maps/game/boatRace/woodlandMansion/region/r.0.-2.mca b/src/main/resources/maps/game/boatRace/woodlandMansion/region/r.0.-2.mca new file mode 100644 index 0000000..2a2c179 Binary files /dev/null and b/src/main/resources/maps/game/boatRace/woodlandMansion/region/r.0.-2.mca differ diff --git a/src/main/resources/maps/game/boatRace/woodlandMansion/region/r.0.0.mca b/src/main/resources/maps/game/boatRace/woodlandMansion/region/r.0.0.mca new file mode 100644 index 0000000..07e3e6a Binary files /dev/null and b/src/main/resources/maps/game/boatRace/woodlandMansion/region/r.0.0.mca differ diff --git a/src/main/resources/maps/game/boatRace/woodlandMansion/region/r.0.1.mca b/src/main/resources/maps/game/boatRace/woodlandMansion/region/r.0.1.mca new file mode 100644 index 0000000..75994be Binary files /dev/null and b/src/main/resources/maps/game/boatRace/woodlandMansion/region/r.0.1.mca differ diff --git a/src/main/resources/maps/game/boatRace/woodlandMansion/region/r.0.2.mca b/src/main/resources/maps/game/boatRace/woodlandMansion/region/r.0.2.mca new file mode 100644 index 0000000..0d42ff5 Binary files /dev/null and b/src/main/resources/maps/game/boatRace/woodlandMansion/region/r.0.2.mca differ diff --git a/src/main/resources/maps/game/boatRace/woodlandMansion/region/r.1.-1.mca b/src/main/resources/maps/game/boatRace/woodlandMansion/region/r.1.-1.mca new file mode 100644 index 0000000..125dece Binary files /dev/null and b/src/main/resources/maps/game/boatRace/woodlandMansion/region/r.1.-1.mca differ diff --git a/src/main/resources/maps/game/boatRace/woodlandMansion/region/r.1.-2.mca b/src/main/resources/maps/game/boatRace/woodlandMansion/region/r.1.-2.mca new file mode 100644 index 0000000..e610f32 Binary files /dev/null and b/src/main/resources/maps/game/boatRace/woodlandMansion/region/r.1.-2.mca differ diff --git a/src/main/resources/maps/game/boatRace/woodlandMansion/region/r.1.0.mca b/src/main/resources/maps/game/boatRace/woodlandMansion/region/r.1.0.mca new file mode 100644 index 0000000..7c94872 Binary files /dev/null and b/src/main/resources/maps/game/boatRace/woodlandMansion/region/r.1.0.mca differ diff --git a/src/main/resources/maps/game/boatRace/woodlandMansion/region/r.1.1.mca b/src/main/resources/maps/game/boatRace/woodlandMansion/region/r.1.1.mca new file mode 100644 index 0000000..e3d84f8 Binary files /dev/null and b/src/main/resources/maps/game/boatRace/woodlandMansion/region/r.1.1.mca differ diff --git a/src/main/resources/maps/game/boatRace/woodlandMansion/region/r.1.2.mca b/src/main/resources/maps/game/boatRace/woodlandMansion/region/r.1.2.mca new file mode 100644 index 0000000..6b32012 Binary files /dev/null and b/src/main/resources/maps/game/boatRace/woodlandMansion/region/r.1.2.mca differ