Add utility method to easily run code on all SettingsManagers (#1696)
This commit is contained in:
1 parent
36908d6578
commit
ac588c3e55
3 files changed
+25
-39
No files matched your search
@@ -4,6 +4,7 @@ import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
import carpet.commands.CounterCommand;
|
||||
import carpet.commands.DistanceCommand;
|
||||
@@ -88,12 +89,8 @@ public class CarpetServer // static for now - easier to handle all around the co
|
||||
// shoudl not be needed - that bit needs refactoring, but not now.
|
||||
SpawnReporter.reset_spawn_stats(server, true);
|
||||
|
||||
settingsManager.attachServer(server);
|
||||
extensions.forEach(e -> {
|
||||
SettingsManager sm = e.extensionSettingsManager();
|
||||
if (sm != null) sm.attachServer(server);
|
||||
e.onServerLoaded(server);
|
||||
});
|
||||
forEachManager(sm -> sm.attachServer(server));
|
||||
extensions.forEach(e -> e.onServerLoaded(server));
|
||||
scriptServer = new CarpetScriptServer(server);
|
||||
Carpet.MinecraftServer_addScriptServer(server, scriptServer);
|
||||
MobAI.resetTrackers();
|
||||
@@ -106,7 +103,7 @@ public class CarpetServer // static for now - easier to handle all around the co
|
||||
HopperCounter.resetAll(minecraftServer, true);
|
||||
extensions.forEach(e -> e.onServerLoadedWorlds(minecraftServer));
|
||||
// initialize scarpet rules after all extensions are loaded
|
||||
settingsManager.initializeScarpetRules();
|
||||
forEachManager(SettingsManager::initializeScarpetRules);
|
||||
// run fillLimit rule migration now that gamerules are available
|
||||
@SuppressWarnings("unchecked")
|
||||
CarpetRule<Integer> fillLimit = (CarpetRule<Integer>) settingsManager.getCarpetRule("fillLimit");
|
||||
@@ -117,12 +114,6 @@ public class CarpetServer // static for now - easier to handle all around the co
|
||||
{
|
||||
throw new AssertionError();
|
||||
}
|
||||
extensions.forEach(e -> {
|
||||
if (e.extensionSettingsManager() != null)
|
||||
{
|
||||
e.extensionSettingsManager().initializeScarpetRules();
|
||||
}
|
||||
});
|
||||
scriptServer.initializeForWorld();
|
||||
}
|
||||
|
||||
@@ -145,11 +136,8 @@ public class CarpetServer // static for now - easier to handle all around the co
|
||||
{
|
||||
return;
|
||||
}
|
||||
settingsManager.registerCommand(dispatcher, commandBuildContext);
|
||||
extensions.forEach(e -> {
|
||||
SettingsManager sm = e.extensionSettingsManager();
|
||||
if (sm != null) sm.registerCommand(dispatcher, commandBuildContext);
|
||||
});
|
||||
forEachManager(sm -> sm.registerCommand(dispatcher, commandBuildContext));
|
||||
|
||||
TickCommand.register(dispatcher, commandBuildContext);
|
||||
ProfileCommand.register(dispatcher, commandBuildContext);
|
||||
CounterCommand.register(dispatcher, commandBuildContext);
|
||||
@@ -231,11 +219,22 @@ public class CarpetServer // static for now - easier to handle all around the co
|
||||
}
|
||||
public static void onServerDoneClosing(MinecraftServer server)
|
||||
{
|
||||
settingsManager.detachServer();
|
||||
extensions.forEach(e -> {
|
||||
SettingsManager manager = e.extensionSettingsManager();
|
||||
if (manager != null) manager.detachServer();
|
||||
});
|
||||
forEachManager(SettingsManager::detachServer);
|
||||
}
|
||||
|
||||
// not API
|
||||
// carpet's included
|
||||
public static void forEachManager(Consumer<SettingsManager> consumer)
|
||||
{
|
||||
consumer.accept(settingsManager);
|
||||
for (CarpetExtension e : extensions)
|
||||
{
|
||||
SettingsManager manager = e.extensionSettingsManager();
|
||||
if (manager != null)
|
||||
{
|
||||
consumer.accept(manager);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void registerExtensionLoggers()
|
||||
|
||||
Reference in new issue
Block a user