Add utility method to easily run code on all SettingsManagers (#1696)
This commit is contained in:
1 parent
36908d6578
commit
ac588c3e55
3 files changed
+24
-38
No files matched your search
@@ -4,6 +4,7 @@ import java.util.ArrayList;
|
|||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
import java.util.function.Consumer;
|
||||||
|
|
||||||
import carpet.commands.CounterCommand;
|
import carpet.commands.CounterCommand;
|
||||||
import carpet.commands.DistanceCommand;
|
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.
|
// shoudl not be needed - that bit needs refactoring, but not now.
|
||||||
SpawnReporter.reset_spawn_stats(server, true);
|
SpawnReporter.reset_spawn_stats(server, true);
|
||||||
|
|
||||||
settingsManager.attachServer(server);
|
forEachManager(sm -> sm.attachServer(server));
|
||||||
extensions.forEach(e -> {
|
extensions.forEach(e -> e.onServerLoaded(server));
|
||||||
SettingsManager sm = e.extensionSettingsManager();
|
|
||||||
if (sm != null) sm.attachServer(server);
|
|
||||||
e.onServerLoaded(server);
|
|
||||||
});
|
|
||||||
scriptServer = new CarpetScriptServer(server);
|
scriptServer = new CarpetScriptServer(server);
|
||||||
Carpet.MinecraftServer_addScriptServer(server, scriptServer);
|
Carpet.MinecraftServer_addScriptServer(server, scriptServer);
|
||||||
MobAI.resetTrackers();
|
MobAI.resetTrackers();
|
||||||
@@ -106,7 +103,7 @@ public class CarpetServer // static for now - easier to handle all around the co
|
|||||||
HopperCounter.resetAll(minecraftServer, true);
|
HopperCounter.resetAll(minecraftServer, true);
|
||||||
extensions.forEach(e -> e.onServerLoadedWorlds(minecraftServer));
|
extensions.forEach(e -> e.onServerLoadedWorlds(minecraftServer));
|
||||||
// initialize scarpet rules after all extensions are loaded
|
// initialize scarpet rules after all extensions are loaded
|
||||||
settingsManager.initializeScarpetRules();
|
forEachManager(SettingsManager::initializeScarpetRules);
|
||||||
// run fillLimit rule migration now that gamerules are available
|
// run fillLimit rule migration now that gamerules are available
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
CarpetRule<Integer> fillLimit = (CarpetRule<Integer>) settingsManager.getCarpetRule("fillLimit");
|
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();
|
throw new AssertionError();
|
||||||
}
|
}
|
||||||
extensions.forEach(e -> {
|
|
||||||
if (e.extensionSettingsManager() != null)
|
|
||||||
{
|
|
||||||
e.extensionSettingsManager().initializeScarpetRules();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
scriptServer.initializeForWorld();
|
scriptServer.initializeForWorld();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -145,11 +136,8 @@ public class CarpetServer // static for now - easier to handle all around the co
|
|||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
settingsManager.registerCommand(dispatcher, commandBuildContext);
|
forEachManager(sm -> sm.registerCommand(dispatcher, commandBuildContext));
|
||||||
extensions.forEach(e -> {
|
|
||||||
SettingsManager sm = e.extensionSettingsManager();
|
|
||||||
if (sm != null) sm.registerCommand(dispatcher, commandBuildContext);
|
|
||||||
});
|
|
||||||
TickCommand.register(dispatcher, commandBuildContext);
|
TickCommand.register(dispatcher, commandBuildContext);
|
||||||
ProfileCommand.register(dispatcher, commandBuildContext);
|
ProfileCommand.register(dispatcher, commandBuildContext);
|
||||||
CounterCommand.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)
|
public static void onServerDoneClosing(MinecraftServer server)
|
||||||
{
|
{
|
||||||
settingsManager.detachServer();
|
forEachManager(SettingsManager::detachServer);
|
||||||
extensions.forEach(e -> {
|
}
|
||||||
|
|
||||||
|
// not API
|
||||||
|
// carpet's included
|
||||||
|
public static void forEachManager(Consumer<SettingsManager> consumer)
|
||||||
|
{
|
||||||
|
consumer.accept(settingsManager);
|
||||||
|
for (CarpetExtension e : extensions)
|
||||||
|
{
|
||||||
SettingsManager manager = e.extensionSettingsManager();
|
SettingsManager manager = e.extensionSettingsManager();
|
||||||
if (manager != null) manager.detachServer();
|
if (manager != null)
|
||||||
});
|
{
|
||||||
|
consumer.accept(manager);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void registerExtensionLoggers()
|
public static void registerExtensionLoggers()
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ package carpet.mixins;
|
|||||||
|
|
||||||
import carpet.CarpetServer;
|
import carpet.CarpetServer;
|
||||||
import carpet.network.CarpetClient;
|
import carpet.network.CarpetClient;
|
||||||
import carpet.api.settings.SettingsManager;
|
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
import net.minecraft.client.multiplayer.ClientPacketListener;
|
import net.minecraft.client.multiplayer.ClientPacketListener;
|
||||||
import net.minecraft.client.player.LocalPlayer;
|
import net.minecraft.client.player.LocalPlayer;
|
||||||
@@ -29,11 +28,7 @@ public class ClientPacketListener_clientCommandMixin
|
|||||||
if (CarpetServer.minecraft_server == null && !CarpetClient.isCarpet() && minecraft.player != null)
|
if (CarpetServer.minecraft_server == null && !CarpetClient.isCarpet() && minecraft.player != null)
|
||||||
{
|
{
|
||||||
LocalPlayer playerSource = minecraft.player;
|
LocalPlayer playerSource = minecraft.player;
|
||||||
CarpetServer.settingsManager.inspectClientsideCommand(playerSource.createCommandSourceStack(), "/"+string);
|
CarpetServer.forEachManager(sm -> sm.inspectClientsideCommand(playerSource.createCommandSourceStack(), "/" + string));
|
||||||
CarpetServer.extensions.forEach(e -> {
|
|
||||||
SettingsManager sm = e.extensionSettingsManager();
|
|
||||||
if (sm != null) sm.inspectClientsideCommand(playerSource.createCommandSourceStack(), "/"+string);
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -8,7 +8,6 @@ import carpet.fakes.MinecraftServerInterface;
|
|||||||
import carpet.fakes.ServerGamePacketListenerImplInterface;
|
import carpet.fakes.ServerGamePacketListenerImplInterface;
|
||||||
import carpet.helpers.ServerTickRateManager;
|
import carpet.helpers.ServerTickRateManager;
|
||||||
import carpet.script.utils.SnoopyCommandSource;
|
import carpet.script.utils.SnoopyCommandSource;
|
||||||
import carpet.api.settings.SettingsManager;
|
|
||||||
import io.netty.buffer.Unpooled;
|
import io.netty.buffer.Unpooled;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
@@ -78,16 +77,9 @@ public class ServerNetworkHandler
|
|||||||
CarpetSettings.LOG.info("Player "+playerEntity.getName().getString()+" joined with a matching carpet client");
|
CarpetSettings.LOG.info("Player "+playerEntity.getName().getString()+" joined with a matching carpet client");
|
||||||
else
|
else
|
||||||
CarpetSettings.LOG.warn("Player "+playerEntity.getName().getString()+" joined with another carpet version: "+clientVersion);
|
CarpetSettings.LOG.warn("Player "+playerEntity.getName().getString()+" joined with another carpet version: "+clientVersion);
|
||||||
|
|
||||||
DataBuilder data = DataBuilder.create(playerEntity.server); // tickrate related settings are sent on world change
|
DataBuilder data = DataBuilder.create(playerEntity.server); // tickrate related settings are sent on world change
|
||||||
CarpetServer.settingsManager.getCarpetRules().forEach(data::withRule);
|
CarpetServer.forEachManager(sm -> sm.getCarpetRules().forEach(data::withRule));
|
||||||
CarpetServer.extensions.forEach(e -> {
|
playerEntity.connection.send(new ClientboundCustomPayloadPacket(CarpetClient.CARPET_CHANNEL, data.build() ));
|
||||||
SettingsManager eManager = e.extensionSettingsManager();
|
|
||||||
if (eManager != null) {
|
|
||||||
eManager.getCarpetRules().forEach(data::withRule);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
playerEntity.connection.send(new ClientboundCustomPayloadPacket(CarpetClient.CARPET_CHANNEL, data.build()));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void sendPlayerLevelData(ServerPlayer player, ServerLevel level) {
|
public static void sendPlayerLevelData(ServerPlayer player, ServerLevel level) {
|
||||||
|
|||||||
Reference in new issue
Block a user