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;
}
}