diff --git a/pom.xml b/pom.xml index 329356f..da6c51e 100644 --- a/pom.xml +++ b/pom.xml @@ -45,7 +45,7 @@ de.fanta.challenges Challenges - 1.18-DEV + 1.18.1-DEV provided diff --git a/src/main/java/de/fanta/challengesjoinentities/ChallengesGlobalDataHelper.java b/src/main/java/de/fanta/challengesjoinentities/ChallengesGlobalDataHelper.java index 19f7a9f..296530e 100644 --- a/src/main/java/de/fanta/challengesjoinentities/ChallengesGlobalDataHelper.java +++ b/src/main/java/de/fanta/challengesjoinentities/ChallengesGlobalDataHelper.java @@ -35,6 +35,10 @@ boolean running = data.readBoolean(); plugin.updateTimerStatus(serverName, running); } + case EVENT -> { + boolean event = data.readBoolean(); + plugin.updateEventStatus(serverName, event); + } case SERVER_STATUS -> { boolean online = data.readBoolean(); plugin.updateServerStatus(serverName, online); @@ -69,6 +73,10 @@ sendData(ChallengeMessageType.TIMER, getThisServerName(), running); } + public void sendEventUpdate(boolean event) { + sendData(ChallengeMessageType.EVENT, getThisServerName(), event); + } + public void sendServerStatusUpdate(boolean online) { sendData(ChallengeMessageType.SERVER_STATUS, getThisServerName(), online); } @@ -86,7 +94,7 @@ } public enum ChallengeMessageType { - TIMER, SERVER_STATUS, PLAYER_COUNT, INITIAL_DATA_REQUEST, INITIAL_DATA + TIMER, SERVER_STATUS, PLAYER_COUNT, INITIAL_DATA_REQUEST, INITIAL_DATA, EVENT } @EventHandler diff --git a/src/main/java/de/fanta/challengesjoinentities/ChallengesJoinEntities.java b/src/main/java/de/fanta/challengesjoinentities/ChallengesJoinEntities.java index c00e45c..1a1d701 100644 --- a/src/main/java/de/fanta/challengesjoinentities/ChallengesJoinEntities.java +++ b/src/main/java/de/fanta/challengesjoinentities/ChallengesJoinEntities.java @@ -185,7 +185,7 @@ } public void addPiglin(UUID piglinUUID, String serverName, String gpLocationName, String serverDisplayName, boolean saveToConfig) { - JoinEntityData entityData = new JoinEntityData(serverName, piglinUUID, gpLocationName, serverDisplayName, JoinEntityData.ServerStatus.OFFLINE, 0, 0); + JoinEntityData entityData = new JoinEntityData(serverName, piglinUUID, gpLocationName, serverDisplayName, JoinEntityData.ServerStatus.OFFLINE, JoinEntityData.EventStatus.NORMAL, 0, 0); this.entityData.put(serverName, entityData); this.entityServerMapping.put(piglinUUID, serverName); @@ -212,6 +212,15 @@ } } + public void updateEventStatus(String serverName, boolean event) { + JoinEntityData data = entityData.get(serverName); + if (data != null) { + data.setEventStatus(event ? JoinEntityData.EventStatus.EVENT : JoinEntityData.EventStatus.NORMAL); + updatePiglinCustomName(serverName); + updatePiglinBehaviour(serverName); + } + } + public void updateServerStatus(String serverName, boolean online) { JoinEntityData data = entityData.get(serverName); diff --git a/src/main/java/de/fanta/challengesjoinentities/JoinEntityData.java b/src/main/java/de/fanta/challengesjoinentities/JoinEntityData.java index 3d78c16..38d7576 100644 --- a/src/main/java/de/fanta/challengesjoinentities/JoinEntityData.java +++ b/src/main/java/de/fanta/challengesjoinentities/JoinEntityData.java @@ -11,15 +11,17 @@ private final String globalPortLocationName; private final String serverDisplayName; private ServerStatus serverStatus; + private EventStatus eventStatus; private int playerCount; private int maxPlayers; - public JoinEntityData(String serverName, UUID entityUUID, String globalPortLocationName, String serverDisplayName, ServerStatus serverStatus, int playerCount, int maxPlayers) { + public JoinEntityData(String serverName, UUID entityUUID, String globalPortLocationName, String serverDisplayName, ServerStatus serverStatus, EventStatus eventStatus, int playerCount, int maxPlayers) { this.serverName = serverName; this.entityUUID = entityUUID; this.globalPortLocationName = globalPortLocationName; this.serverDisplayName = serverDisplayName; this.serverStatus = serverStatus; + this.eventStatus = eventStatus; this.playerCount = playerCount; this.maxPlayers = maxPlayers; } @@ -48,6 +50,14 @@ this.serverStatus = serverStatus; } + public void setEventStatus(EventStatus eventStatus) { + this.eventStatus = eventStatus; + } + + public EventStatus getEventStatus() { + return eventStatus; + } + public int getPlayerCount() { return playerCount; } @@ -67,11 +77,17 @@ public String createCustomEntityName() { String statusString = serverStatus == ServerStatus.ONLINE ? ChatUtil.GREEN + "ONLINE" : serverStatus == ServerStatus.OFFLINE ? ChatUtil.RED + "OFFLINE" : serverStatus == ServerStatus.RUNNING ? ChatUtil.ORANGE + "RUNNING" : ""; String playerCountString = ChatUtil.BLUE + "(" + playerCount + "/" + maxPlayers + ")"; - + if (eventStatus == EventStatus.EVENT) { + return ChatUtil.RED + "" + ChatColor.BOLD + "Event" + " " + statusString + (serverStatus != ServerStatus.OFFLINE ? (" " + playerCountString) : " "); + } return ChatUtil.BLUE + serverDisplayName + " " + statusString + (serverStatus != ServerStatus.OFFLINE ? (" " + playerCountString) : ""); } public enum ServerStatus { ONLINE, RUNNING, OFFLINE } + + public enum EventStatus { + EVENT, NORMAL + } } diff --git a/src/main/java/de/fanta/challengesjoinentities/listeners/ChallengesEventListener.java b/src/main/java/de/fanta/challengesjoinentities/listeners/ChallengesEventListener.java index a573276..3d10087 100644 --- a/src/main/java/de/fanta/challengesjoinentities/listeners/ChallengesEventListener.java +++ b/src/main/java/de/fanta/challengesjoinentities/listeners/ChallengesEventListener.java @@ -1,5 +1,6 @@ package de.fanta.challengesjoinentities.listeners; +import de.fanta.challenges.events.EventStatusChangedEvent; import de.fanta.challenges.events.PlayerCountChangedEvent; import de.fanta.challenges.events.ServerStatusChangedEvent; import de.fanta.challenges.events.TimerChangedEvent; @@ -21,6 +22,11 @@ } @EventHandler + public void onEventStatusChanged(EventStatusChangedEvent e) { + plugin.getGlobalDataHelper().sendEventUpdate(e.isEvent()); + } + + @EventHandler public void onServerStatusChanged(ServerStatusChangedEvent event) { plugin.getGlobalDataHelper().sendServerStatusUpdate(event.isOnline()); } diff --git a/src/main/java/de/fanta/challengesjoinentities/listeners/EntityListener.java b/src/main/java/de/fanta/challengesjoinentities/listeners/EntityListener.java index 8282e8c..0129438 100644 --- a/src/main/java/de/fanta/challengesjoinentities/listeners/EntityListener.java +++ b/src/main/java/de/fanta/challengesjoinentities/listeners/EntityListener.java @@ -109,7 +109,11 @@ ChatUtil.sendErrorMessage(player, "Der Server wird gerade resettet."); break; case RUNNING: - ChatUtil.sendWarningMessage(player, "Hier läuft bereits eine Challenge!"); + if (data.getEventStatus() == JoinEntityData.EventStatus.EVENT) { + GlobalApi.portOnlinePlayerToLocation(player.getName(), data.getGlobalPortLocationName()); + } else { + ChatUtil.sendWarningMessage(player, "Hier läuft bereits eine Challenge!"); + } break; } }