diff --git a/.run/CoreMaster.run.xml b/.run/CoreMaster.run.xml
new file mode 100644
index 00000000..d9b6b1c4
--- /dev/null
+++ b/.run/CoreMaster.run.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/API/src/main/java/net/juligames/core/api/data/HazelDataApi.java b/API/src/main/java/net/juligames/core/api/data/HazelDataApi.java
index a75ff20f..130b5d1a 100644
--- a/API/src/main/java/net/juligames/core/api/data/HazelDataApi.java
+++ b/API/src/main/java/net/juligames/core/api/data/HazelDataApi.java
@@ -1,6 +1,7 @@
package net.juligames.core.api.data;
import de.bentzin.tools.Hardcode;
+import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.NotNull;
import java.util.List;
@@ -55,5 +56,12 @@ default Map getMasterInformation() {
return getMap("master_information");
}
+ /**
+ * This method trys to guess if {@link #getMasterInformation()} will provide a populated map.
+ * It provides no information about the last update
+ */
+ @ApiStatus.AvailableSince("1.6")
+ boolean isMasterInformationAvailable();
+
}
diff --git a/API/src/main/java/net/juligames/core/api/misc/APIUtils.java b/API/src/main/java/net/juligames/core/api/misc/APIUtils.java
index 06bcc2ad..7ce385b1 100644
--- a/API/src/main/java/net/juligames/core/api/misc/APIUtils.java
+++ b/API/src/main/java/net/juligames/core/api/misc/APIUtils.java
@@ -6,11 +6,9 @@
import org.jetbrains.annotations.Contract;
import org.jetbrains.annotations.NotNull;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
+import java.util.*;
import java.util.function.Function;
+import java.util.function.Supplier;
import java.util.logging.Logger;
import java.util.stream.Stream;
@@ -132,6 +130,24 @@ public static boolean executedWithoutExceptionL(@NotNull Runnable runnable) {
return list.stream();
}
+ @ApiStatus.Experimental
+ public static void executeAndSwallow(ThrowingRunnable throwingRunnable) {
+ try {
+ throwingRunnable.run();
+ } catch (Exception ignored) {
+ }
+ }
+
+ @SafeVarargs
+ public static Optional executeAndReturnFirstSuccess(Supplier @NotNull ... suppliers) {
+ for (Supplier supplier : suppliers) {
+ try {
+ return Optional.of(supplier.get());
+ }catch (Exception ignore) {}
+ }
+ return Optional.empty();
+ }
+
/**
* Creates a JavaLogger instance from a {@link Logger}.
*
diff --git a/Core/src/main/java/net/juligames/core/Core.java b/Core/src/main/java/net/juligames/core/Core.java
index b3915633..2cf0d0fc 100644
--- a/Core/src/main/java/net/juligames/core/Core.java
+++ b/Core/src/main/java/net/juligames/core/Core.java
@@ -173,6 +173,7 @@ public void start(String core_name, @NotNull Logger logger, boolean member) {
.addMessageListener(coreNotificationApi);
+ if(getHazelDataApi().isMasterInformationAvailable())
{
if (!Boolean.getBoolean("acknowledgeUnsafeMasterCheck")) {
coreLogger.info("checking compatibility with master..");
@@ -196,6 +197,7 @@ public void start(String core_name, @NotNull Logger logger, boolean member) {
}
}
}
+ else logger.debug("master information is not available! If you see this on the Master it is expected behavior");
logger.info("hooking to shutdown...");
getJavaRuntime().addShutdownHook(new Thread(() -> {
diff --git a/Core/src/main/java/net/juligames/core/config/CoreConfiguration.java b/Core/src/main/java/net/juligames/core/config/CoreConfiguration.java
index 7c3a032c..69f3649b 100644
--- a/Core/src/main/java/net/juligames/core/config/CoreConfiguration.java
+++ b/Core/src/main/java/net/juligames/core/config/CoreConfiguration.java
@@ -60,7 +60,7 @@ public CoreConfiguration(String name) {
for (Map.Entry