2626
2727import com .cyr1en .commandprompter .command .CommodoreRegistry ;
2828import com .cyr1en .commandprompter .commands .Cancel ;
29+ import com .cyr1en .commandprompter .commands .ConsoleDelegate ;
2930import com .cyr1en .commandprompter .commands .Reload ;
3031import com .cyr1en .commandprompter .config .CommandPrompterConfig ;
3132import com .cyr1en .commandprompter .config .ConfigurationManager ;
4344import com .cyr1en .commandprompter .unsafe .ModifiedCommandMap ;
4445import com .cyr1en .commandprompter .unsafe .PvtFieldMutator ;
4546import com .cyr1en .commandprompter .util .Util ;
47+ import com .cyr1en .commandprompter .util .Util .ServerType ;
4648import com .cyr1en .kiso .mc .I18N ;
4749import com .cyr1en .kiso .mc .UpdateChecker ;
4850import com .cyr1en .kiso .mc .command .CommandManager ;
@@ -79,12 +81,20 @@ public void onEnable() {
7981 new Metrics (this , 5359 );
8082 setupConfig ();
8183 logger = new PluginLogger (this , "CommandPrompter" );
82- loadDeps ();
84+ var serverType = ServerType .resolve ();
85+ logger .debug ("Server Name: " + serverType .name ());
86+ logger .debug ("Server Version: " + serverType .version ());
87+ var result = loadDeps ();
88+ if (!result )
89+ return ;
90+
8391 i18n = new I18N (this , "CommandPrompter" );
92+ messenger = new PluginMessenger (config .promptPrefix ());
93+
8494 setupUpdater ();
85- setupCommands ();
8695 initPromptSystem ();
87- messenger = new PluginMessenger (config .promptPrefix ());
96+ setupCommands ();
97+
8898 instance = this ;
8999 Bukkit .getPluginManager ().registerEvents (new CommandSendListener (this ), this );
90100
@@ -97,8 +107,13 @@ public void onEnable() {
97107
98108 @ Override
99109 public void onDisable () {
100- promptManager .clearPromptRegistry ();
101- getPluginLogger ().ansiUninstall ();
110+ if (promptManager != null )
111+ promptManager .clearPromptRegistry ();
112+
113+ PluginLogger logger ;
114+ if ((logger = getPluginLogger ()) != null )
115+ logger .ansiUninstall ();
116+
102117 if (Objects .nonNull (updateChecker ) && !updateChecker .isDisabled ())
103118 HandlerList .unregisterAll (updateChecker );
104119 }
@@ -109,21 +124,34 @@ private void initPromptSystem() {
109124 Bukkit .getPluginManager ().registerEvents (headCache = new HeadCache (this ), this );
110125 }
111126
112- private void loadDeps () {
127+ private boolean loadDeps () {
113128 if (Util .isBundledVersion (this )) {
114129 getPluginLogger ().info ("This is a bundled version! Skipping dependency loading" );
115- return ;
130+ return true ;
116131 }
117132
133+ getPluginLogger ().info ("Loading dependencies..." );
134+
118135 var depLoader = new DependencyLoader (this );
119- if (depLoader .isRelocatorAvailable ()) {
136+ if (!depLoader .isClassLoaderAccessSupported ())
137+ return depErrAndDisable ("No access to URLClassloader, cannot load depedencies!" , depLoader );
138+
139+ if (!depLoader .loadCoreDeps ())
140+ return depErrAndDisable ("Unable to load dependencies!" , depLoader );
141+
142+ if (depLoader .relocatorAvailable ()) {
120143 depLoader .loadDependency ();
121- return ;
144+ return true ;
122145 }
123146
124- getPluginLogger ().err ("Unable to load dependencies!" );
147+ return depErrAndDisable ("Unable to load dependencies!" , depLoader );
148+ }
149+
150+ private boolean depErrAndDisable (String message , DependencyLoader depLoader ) {
151+ getPluginLogger ().err (message );
125152 depLoader .sendBundledMessage ();
126153 Bukkit .getPluginManager ().disablePlugin (this );
154+ return false ;
127155 }
128156
129157 /**
@@ -174,6 +202,8 @@ private void setupCommands() {
174202 commandManager .registerCommand (Reload .class );
175203 commandManager .registerCommand (Cancel .class );
176204 PluginCommand command = getCommand ("commandprompter" );
205+ PluginCommand delegate = getCommand ("consoledelegate" );
206+ delegate .setExecutor (new ConsoleDelegate (this ));
177207 Objects .requireNonNull (command ).setExecutor (commandManager );
178208 CommodoreRegistry .register (this , command );
179209 }
@@ -198,7 +228,8 @@ private void setupCommandManager() {
198228
199229 private void setupUpdater () {
200230 updateChecker = new UpdateChecker (this , 47772 );
201- if (updateChecker .isDisabled ()) return ;
231+ if (updateChecker .isDisabled ())
232+ return ;
202233 Bukkit .getServer ().getScheduler ().runTaskAsynchronously (this , () -> {
203234 if (updateChecker .newVersionAvailable ())
204235 logger .info (SRegex .ANSI_GREEN + "A new update is available! (" +
@@ -270,4 +301,3 @@ public UpdateChecker getUpdateChecker() {
270301 return updateChecker ;
271302 }
272303}
273-
0 commit comments