Compare commits

...

5 Commits

Author SHA1 Message Date
Thom van den Akker a4bf141ad9
Merge 78fcf355c6 into ea24554033 2024-01-24 22:27:11 +01:00
mikeprimm ea24554033
Merge pull request #4056 from JurgenKuyper/patch-2
Update DynmapBlockState.java
2024-01-23 09:26:06 -06:00
JurgenKuyper b9144e3609
Update DynmapBlockState.java
also hide nether_quartz_ore if hideores is true
2024-01-22 21:11:43 +01:00
Thom van den Akker 78fcf355c6 Fix casing inconsistency 2023-08-29 22:20:49 +02:00
Thom van den Akker 980acd0f24 Allow tracking uptime of the internal web server similar to tracking API availability 2023-08-29 22:07:41 +02:00
3 changed files with 91 additions and 1 deletions

View File

@ -688,6 +688,7 @@ public class DynmapCore implements DynmapCommonAPI {
Log.warning("Using external server, but " + JsonFileClientUpdateComponent.class.toString() + " is DISABLED!");
webserverCompConfigWarn = true;
}
DynmapWebserverStateListener.stateWebserverDisabled();
}
if (webserverCompConfigWarn) {
Log.warning("If the website is missing files or not loading/updating, this might be why.");
@ -1084,6 +1085,7 @@ public class DynmapCore implements DynmapCommonAPI {
try {
if(webServer != null) {
webServer.start();
DynmapWebserverStateListener.stateWebserverStarted();
Log.info("Web server started on address " + webhostname + ":" + webport);
}
} catch (Exception e) {
@ -1109,6 +1111,7 @@ public class DynmapCore implements DynmapCommonAPI {
Log.severe("Failed to stop WebServer!", e);
}
webServer = null;
DynmapWebserverStateListener.stateWebserverStopped();
}
if (componentManager != null) {

View File

@ -0,0 +1,87 @@
package org.dynmap;
import java.util.concurrent.CopyOnWriteArrayList;
/**
* Listener class for the Dynmap integrated web server lifecycle, will only work if the internal webserver is actually being used.
*/
public abstract class DynmapWebserverStateListener
{
/**
* Status flag indicating if the web server is online or offline.
*/
private static boolean webserverStarted = false;
private static final CopyOnWriteArrayList<DynmapWebserverStateListener> listeners = new CopyOnWriteArrayList<>();
/**
* Called when API becomes enabled, or during call to register listener if API is already enabled
*/
public abstract void webserverStarted();
/**
* Called when API becomes enabled, or during call to register listener if API is already enabled
*/
public abstract void webserverStopped();
/**
* This method is fired to indicate the listener that the internal web server is not enabled, thus indicating that {@link DynmapWebserverStateListener#webserverStarted()} and {@link DynmapWebserverStateListener#webserverStopped()} will not fire.
*/
public void webserverDisabled() {}
/**
* Register listener instance
*
* @param listener - listener to register
*/
public static void register(DynmapWebserverStateListener listener)
{
listeners.add(listener);
if (webserverStarted)
{
listener.webserverStarted();
}
}
/**
* Unregister listener instance
*
* @param listener - listener to unregister
*/
public static void unregister(DynmapWebserverStateListener listener) {
listeners.remove(listener);
}
// Internal call - MODS/PLUGINS MUST NOT USE
public static void stateWebserverStarted()
{
if (webserverStarted)
{
stateWebserverStopped();
}
webserverStarted = true;
for (DynmapWebserverStateListener l : listeners)
{
l.webserverStarted();
}
}
// Internal call - MODS/PLUGINS MUST NOT USE
public static void stateWebserverStopped()
{
for (DynmapWebserverStateListener l : listeners)
{
l.webserverStopped();
}
webserverStarted = false;
}
// Internal call - MODS/PLUGINS MUST NOT USE
public static void stateWebserverDisabled()
{
for (DynmapWebserverStateListener l : listeners)
{
l.webserverDisabled();
}
}
}

View File

@ -70,7 +70,7 @@ public class DynmapBlockState {
public static String REDSTONE_ORE_BLOCK = "minecraft:redstone_ore";
public static String LIT_REDSTONE_ORE_BLOCK = "minecraft:lit_redstone_ore";
public static String EMERALD_ORE_BLOCK = "minecraft:emerald_ore";
public static String QUARTZ_ORE_BLOCK = "minecraft:quartz_ore";
public static String QUARTZ_ORE_BLOCK = "minecraft:nether_quartz_ore";
public static String NETHER_GOLD_ORE_BLOCK = "minecraft:nether_gold_ore";
public static String DEEPSLATE_GOLD_ORE_BLOCK = "minecraft:deepslate_gold_ore";
public static String DEEPSLATE_IRON_ORE_BLOCK = "minecraft:deepslate_iron_ore";