11package one .devos .nautical .teabridge ;
22
3- import java .net .http .HttpClient ;
4-
53import org .slf4j .Logger ;
64import org .slf4j .LoggerFactory ;
75
2321import net .minecraft .resources .ResourceLocation ;
2422import net .minecraft .server .MinecraftServer ;
2523import net .minecraft .server .level .ServerPlayer ;
26- import one .devos .nautical .teabridge .discord .ChannelListener ;
2724import one .devos .nautical .teabridge .discord .Discord ;
28- import one .devos .nautical .teabridge .discord .PlayerWebHook ;
25+ import one .devos .nautical .teabridge .discord .PlayerWebhook ;
2926import one .devos .nautical .teabridge .util .CrashHandler ;
3027
3128public class TeaBridge implements DedicatedServerModInitializer {
3229 public static final String ID = "teabridge" ;
3330 public static final Logger LOGGER = LoggerFactory .getLogger ("TeaBridge" );
3431
35- public static final HttpClient CLIENT = HttpClient . newBuilder (). build () ;
32+ public static Config config ;
3633
37- public static Config config = Config . DEFAULT ;
34+ private static Discord discord ;
3835
3936 @ Override
4037 public void onInitializeServer () {
41- ServerLifecycleEvents .SERVER_STARTING .register (this ::onServerStarting );
42- ServerLifecycleEvents .SERVER_STARTED .register (this ::onServerStart );
43- ServerLifecycleEvents .SERVER_STOPPED .register (this ::onServerStop );
38+ ServerLifecycleEvents .SERVER_STARTING .register (TeaBridge ::onServerStarting );
39+ ServerLifecycleEvents .SERVER_STARTED .register (TeaBridge ::onServerStart );
40+ ServerLifecycleEvents .SERVER_STOPPED .register (TeaBridge ::onServerStop );
4441
4542 ResourceLocation phaseId = ResourceLocation .fromNamespaceAndPath (ID , "mirror" );
4643 ServerMessageEvents .CHAT_MESSAGE .addPhaseOrdering (ResourceLocation .fromNamespaceAndPath ("switchy_proxy" , "set_args" ), phaseId );
4744 ServerMessageEvents .CHAT_MESSAGE .addPhaseOrdering (phaseId , ResourceLocation .fromNamespaceAndPath ("switchy_proxy" , "clear" ));
48- ServerMessageEvents .CHAT_MESSAGE .register (phaseId , this ::onChatMessage );
45+ ServerMessageEvents .CHAT_MESSAGE .register (phaseId , TeaBridge ::onChatMessage );
46+
47+ ServerMessageEvents .COMMAND_MESSAGE .register (TeaBridge ::onCommandMessage );
48+
49+ CommandRegistrationCallback .EVENT .register (TeaBridge ::registerCommands );
50+ }
4951
50- ServerMessageEvents .COMMAND_MESSAGE .register (this ::onCommandMessage );
52+ private static void onConfigLoad (Config config , MinecraftServer server ) {
53+ TeaBridge .config = config ;
5154
52- CommandRegistrationCallback .EVENT .register (this ::registerCommands );
55+ if (TeaBridge .discord != null )
56+ TeaBridge .discord .shutdown ();
57+ TeaBridge .discord = Discord .initialize (config .discord (), server );
58+ }
5359
60+ private static void onServerStarting (MinecraftServer server ) {
5461 Config .load ()
5562 .ifError (e -> LOGGER .error ("Failed to load config using defaults : {}" , e ))
56- .ifSuccess (loaded -> {
57- config = loaded ;
58- if (config .debug ())
59- LOGGER .warn ("!!Debug mode enabled in config!!" );
60- this .onConfigLoad ();
61- });
62- }
63+ .ifSuccess (config -> onConfigLoad (config , server ));
6364
64- private void onConfigLoad () {
65- Discord .onConfigLoad ( config .discord ());
65+ if ( Discord . instance () != null )
66+ Discord .instance (). sendSystemMessage ( config .game (). serverStartingMessage ());
6667 }
6768
68- private void onServerStarting (MinecraftServer server ) {
69- Discord .send (config .game ().serverStartingMessage ());
69+ private static void onServerStart (MinecraftServer server ) {
70+ if (Discord .instance () != null )
71+ Discord .instance ().sendSystemMessage (config .game ().serverStartMessage ());
7072 }
7173
72- private void onServerStart (MinecraftServer server ) {
73- ChannelListener . INSTANCE . setServer ( server );
74- Discord . send ( config . game (). serverStartMessage ());
75- }
74+ private static void onServerStop (MinecraftServer server ) {
75+ Discord discord = Discord . instance ( );
76+ if ( discord == null )
77+ return ;
7678
77- private void onServerStop ( MinecraftServer server ) {
78- if (! CrashHandler . didCrash ) Discord . send (config .game ().serverStopMessage ());
79- Discord . stop ();
79+ if (! CrashHandler . didCrash )
80+ discord . sendSystemMessage (config .game ().serverStopMessage ());
81+ discord . shutdown ();
8082 }
8183
82- private void onChatMessage (PlayerChatMessage message , ServerPlayer sender , ChatType .Bound params ) {
83- ((PlayerWebHook ) sender .connection ).teabridge$send (message );
84+ private static void onChatMessage (PlayerChatMessage message , ServerPlayer sender , ChatType .Bound params ) {
85+ ((PlayerWebhook ) sender .connection ).teabridge$send (message );
8486 }
8587
86- private void onCommandMessage (PlayerChatMessage message , CommandSourceStack source , ChatType .Bound params ) {
87- if (!config .game ().mirrorCommandMessages ()) return ;
88- if (!source .isPlayer ()) Discord .send (message .signedContent ());
88+ private static void onCommandMessage (PlayerChatMessage message , CommandSourceStack source , ChatType .Bound params ) {
89+ if (!config .game ().mirrorCommandMessages ())
90+ return ;
91+
92+ if (Discord .instance () != null && !source .isPlayer ())
93+ Discord .instance ().sendSystemMessage (message .signedContent ());
8994 }
9095
91- private void registerCommands (CommandDispatcher <CommandSourceStack > dispatcher , CommandBuildContext registryAccess , Commands .CommandSelection environment ) {
96+ private static void registerCommands (CommandDispatcher <CommandSourceStack > dispatcher , CommandBuildContext registryAccess , Commands .CommandSelection environment ) {
9297 dispatcher .register (Commands .literal (ID )
9398 .requires (source -> source .hasPermission (2 ))
9499 .then (
@@ -104,9 +109,8 @@ private void registerCommands(CommandDispatcher<CommandSourceStack> dispatcher,
104109 );
105110 LOGGER .warn ("Failed to reload config : {}" , e );
106111 })
107- .ifSuccess (loaded -> {
108- config = loaded ;
109- this .onConfigLoad ();
112+ .ifSuccess (config -> {
113+ onConfigLoad (config , source .getServer ());
110114 source .sendSuccess (
111115 () -> Component .literal ("Config reloaded!" )
112116 .withStyle (ChatFormatting .GREEN ),
0 commit comments