finalized strikesystem
This commit is contained in:
		| @@ -127,11 +127,11 @@ public class Lobby extends InstanceContainer { | |||||||
|         if(this.isJoining) return; |         if(this.isJoining) return; | ||||||
|  |  | ||||||
|         LocalTime now = LocalTime.now(ZoneId.of("Europe/Berlin")); |         LocalTime now = LocalTime.now(ZoneId.of("Europe/Berlin")); | ||||||
|         LocalTime start = LocalTime.of(16, 0); |         LocalTime start = LocalTime.of(9, 0); // TODO 17 uhr | ||||||
|         LocalTime end = LocalTime.of(21, 0); |         LocalTime end = LocalTime.of(21, 0); // TODO 21 uhr | ||||||
|  |  | ||||||
|         if (now.isBefore(start) || now.isAfter(end)) { |         if (now.isBefore(start) || now.isAfter(end)) { | ||||||
|             event.getPlayer().sendActionBar(Component.text("Der Beitritt ist nur zwischen 16 und 21 Uhr möglich.", NamedTextColor.RED)); |             event.getPlayer().sendActionBar(Component.text("Der Beitritt ist nur zwischen 17 und 21 Uhr möglich.", NamedTextColor.RED)); | ||||||
|             event.getPlayer().playSound(Sound.sound(SoundEvent.BLOCK_NOTE_BLOCK_BASS, Sound.Source.PLAYER, 1f, 0.5f)); |             event.getPlayer().playSound(Sound.sound(SoundEvent.BLOCK_NOTE_BLOCK_BASS, Sound.Source.PLAYER, 1f, 0.5f)); | ||||||
|             return; |             return; | ||||||
|         } |         } | ||||||
|   | |||||||
| @@ -71,9 +71,10 @@ public class Main { | |||||||
|                         p.setRespawnPoint(lobby.spawnPoint); |                         p.setRespawnPoint(lobby.spawnPoint); | ||||||
|                         MinecraftServer.getSchedulerManager().scheduleTask( |                         MinecraftServer.getSchedulerManager().scheduleTask( | ||||||
|                             () -> { |                             () -> { | ||||||
|  |                                 ConnectInfo.cords(p); | ||||||
|                                 ConnectInfo.tickets(lobby.team.name(), p); |                                 ConnectInfo.tickets(lobby.team.name(), p); | ||||||
|                             }, |                             }, | ||||||
|                             TaskSchedule.seconds(3), |                             TaskSchedule.seconds(1), | ||||||
|                             TaskSchedule.stop() |                             TaskSchedule.stop() | ||||||
|                         ); |                         ); | ||||||
|                     } |                     } | ||||||
|   | |||||||
| @@ -3,12 +3,22 @@ package eu.mhsl.craftattack.teamLobby.util; | |||||||
| import eu.mhsl.craftattack.teamLobby.http.ReqResp; | import eu.mhsl.craftattack.teamLobby.http.ReqResp; | ||||||
| import eu.mhsl.craftattack.teamLobby.http.Request; | import eu.mhsl.craftattack.teamLobby.http.Request; | ||||||
| import net.kyori.adventure.text.Component; | import net.kyori.adventure.text.Component; | ||||||
|  | import net.kyori.adventure.text.ComponentBuilder; | ||||||
|  | import net.kyori.adventure.text.TextComponent; | ||||||
| import net.kyori.adventure.text.format.NamedTextColor; | import net.kyori.adventure.text.format.NamedTextColor; | ||||||
| import net.minestom.server.MinecraftServer; | import net.minestom.server.MinecraftServer; | ||||||
|  | import net.minestom.server.coordinate.Pos; | ||||||
| import net.minestom.server.entity.Player; | import net.minestom.server.entity.Player; | ||||||
|  | import net.minestom.server.network.packet.server.ServerPacket; | ||||||
| import net.minestom.server.timer.TaskSchedule; | import net.minestom.server.timer.TaskSchedule; | ||||||
|  |  | ||||||
| import java.net.http.HttpRequest; | import java.net.http.HttpRequest; | ||||||
|  | import java.time.Instant; | ||||||
|  | import java.time.ZoneId; | ||||||
|  | import java.time.format.DateTimeFormatter; | ||||||
|  | import java.util.List; | ||||||
|  | import java.util.Map; | ||||||
|  | import java.util.UUID; | ||||||
|  |  | ||||||
| public class ConnectInfo { | public class ConnectInfo { | ||||||
|     public static int availableTickets = 0; |     public static int availableTickets = 0; | ||||||
| @@ -44,4 +54,67 @@ public class ConnectInfo { | |||||||
|  |  | ||||||
|         new Thread(task).start(); |         new Thread(task).start(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     record LocationDto(String world, double x, double y, double z, float yaw, float pitch) { | ||||||
|  |         public Pos toPos() { | ||||||
|  |             return new Pos(this.x, this.y, this.z, this.yaw, this.pitch); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     record LeakInfoDto(String name, LocationDto location, long leakedAt) { | ||||||
|  |         public Instant leakedAtInstant() { | ||||||
|  |             return Instant.ofEpochMilli(this.leakedAt); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         public Pos pos() { | ||||||
|  |             return this.location.toPos(); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public static void cords(Player player) { | ||||||
|  |         var task = new Runnable() { | ||||||
|  |             @Override | ||||||
|  |             public void run() { | ||||||
|  |                 HttpRequest request = Request.builder(Request.server( | ||||||
|  |                     "strike/cords", | ||||||
|  |                     uriBuilder -> {} | ||||||
|  |                 )).GET().build(); | ||||||
|  |  | ||||||
|  |                 record Status(String status, Map<String, LeakInfoDto> response) {} | ||||||
|  |                 ReqResp<Status> ticket = Request.execute(request, Status.class); | ||||||
|  |  | ||||||
|  |                 System.out.println(ticket.data().response.toString()); | ||||||
|  |                 ComponentBuilder<TextComponent, TextComponent.Builder> text = Component.text() | ||||||
|  |                     .append(Component.text("Aktuell geleakte Koordinaten:", NamedTextColor.AQUA)); | ||||||
|  |  | ||||||
|  |                 ticket.data().response().forEach((uuidStr, leakInfo) -> { | ||||||
|  |                     appendCordLeak(text, leakInfo); | ||||||
|  |                 }); | ||||||
|  |  | ||||||
|  |                 player.sendMessage(text.build()); | ||||||
|  |             } | ||||||
|  |         }; | ||||||
|  |  | ||||||
|  |         new Thread(task).start(); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     private static void appendCordLeak(ComponentBuilder<TextComponent, TextComponent.Builder> text, LeakInfoDto info) { | ||||||
|  |         String timestamp = DateTimeFormatter.ofPattern("dd.MM HH:mm") | ||||||
|  |             .withZone(ZoneId.of("Europe/Berlin")) | ||||||
|  |             .format(Instant.ofEpochMilli(info.leakedAt)); | ||||||
|  |  | ||||||
|  |         text.appendNewline(); | ||||||
|  |         text.append(Component.text(info.name(), NamedTextColor.DARK_AQUA)); | ||||||
|  |         text.append(Component.text(": ", NamedTextColor.GRAY)); | ||||||
|  |         text.append(Component.text( | ||||||
|  |             String.format("(%s) %d, %d, %d - Uhrzeit: %s", | ||||||
|  |                 info.location().world(), | ||||||
|  |                 (int) info.pos().x(), | ||||||
|  |                 (int) info.pos().y(), | ||||||
|  |                 (int) info.pos().z(), | ||||||
|  |                 timestamp | ||||||
|  |             ), | ||||||
|  |             NamedTextColor.AQUA | ||||||
|  |         )); | ||||||
|  |     } | ||||||
| } | } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user