13
13
import me .dreamvoid .miraimc .sponge .utils .Metrics ;
14
14
import me .dreamvoid .miraimc .sponge .utils .SpecialUtils ;
15
15
import net .kyori .adventure .text .Component ;
16
- import org .slf4j .Logger ;
17
- import org .slf4j .LoggerFactory ;
16
+ import org .apache .logging .log4j .Logger ;
18
17
import org .spongepowered .api .Server ;
19
18
import org .spongepowered .api .Sponge ;
20
19
import org .spongepowered .api .command .Command ;
32
31
33
32
import java .io .File ;
34
33
import java .io .IOException ;
34
+ import java .net .MalformedURLException ;
35
+ import java .net .URL ;
35
36
import java .net .URLClassLoader ;
37
+ import java .nio .file .Path ;
36
38
import java .util .Collections ;
37
39
import java .util .HashMap ;
38
40
import java .util .List ;
39
41
import java .util .UUID ;
40
42
41
43
@ Plugin (value = "miraimc" )
42
44
public class SpongePlugin implements Platform {
45
+ // MiraiMC 主代码
43
46
private final LifeCycle lifeCycle ;
44
47
private PluginConfig platformConfig ;
45
48
@ SuppressWarnings ("SpongeLogging" )
46
- private java .util .logging .Logger SpongeLogger ;
47
- private final LibraryLoader loader ;
48
- private final Metrics .Factory metricsFactory ;
49
-
50
- @ Inject
51
- public SpongePlugin (Metrics .Factory factory ){
52
- lifeCycle = new LifeCycle (this );
53
- lifeCycle .startUp (new SpongeLogger ("MiraiMC" , LoggerFactory .getLogger ("MiraiMC" )));
54
- loader = new LibraryLoader ((URLClassLoader ) getClass ().getClassLoader ());
55
-
56
- metricsFactory = factory ;
57
- }
49
+ private final java .util .logging .Logger SpongeLogger ;
50
+ private LibraryLoader loader ;
58
51
59
52
@ Inject
60
- private Logger logger ;
53
+ public SpongePlugin (@ ConfigDir (sharedRoot = false ) Path dataFolder , final PluginContainer container , final org .apache .logging .log4j .Logger logger , final Metrics .Factory factory , final MetricsConfigManager metricsConfigManager ){
54
+ this .pluginContainer = container ;
55
+ this .logger = logger ;
56
+ this .dataFolder = dataFolder .toFile ();
57
+ this .metricsFactory = factory ;
58
+ this .metricsConfigManager = metricsConfigManager ;
61
59
62
- @ Inject
63
- @ ConfigDir (sharedRoot = false )
64
- private File dataFolder ;
60
+ SpongeLogger = new SpongeLogger ("MiraiMC" , logger );
65
61
66
- @ Inject
67
- private PluginContainer pluginContainer ;
62
+ lifeCycle = new LifeCycle (this );
63
+ lifeCycle .startUp (SpongeLogger );
64
+
65
+ if (getClass ().getClassLoader () instanceof URLClassLoader ){
66
+ loader = new LibraryLoader ((URLClassLoader ) getClass ().getClassLoader ());
67
+ } else {
68
+ logger .warn ("Plugin's ClassLoader not an instance of URLClassLoader, some functions will broken!" );
69
+ try {
70
+ loader = new LibraryLoader (new URLClassLoader (new URL []{dataFolder .resolve ("libraries" ).toUri ().toURL (), dataFolder .resolve ("MiraiBot" ).resolve ("libs" ).toUri ().toURL ()}));
71
+ } catch (MalformedURLException e ) {
72
+ Utils .resolveException (e , SpongeLogger , "" );
73
+ }
74
+ }
75
+ }
68
76
69
- @ Inject
70
- private MetricsConfigManager metricsConfigManager ;
77
+ // Sponge 内部
78
+ private final PluginContainer pluginContainer ;
79
+ private final Logger logger ;
80
+ private final Metrics .Factory metricsFactory ;
81
+ private final File dataFolder ;
82
+ private final MetricsConfigManager metricsConfigManager ;
71
83
84
+ // Sponge 专有
72
85
private MiraiEvent MiraiEvent ;
73
86
private MiraiAutoLogin MiraiAutoLogin ;
74
87
@@ -77,8 +90,6 @@ public SpongePlugin(Metrics.Factory factory){
77
90
*/
78
91
@ Listener
79
92
public void onLoad (StartingEngineEvent <Server > e ) {
80
- SpongeLogger = new SpongeLogger ("MiraiMC" , this .getLogger ());
81
-
82
93
try {
83
94
platformConfig = new SpongeConfig (this );
84
95
lifeCycle .preLoad ();
@@ -247,7 +258,7 @@ public String getPluginName() {
247
258
248
259
@ Override
249
260
public String getPluginVersion () {
250
- return getPluginContainer ().metadata ().version ().getQualifier ();
261
+ return getPluginContainer ().metadata ().version ().toString ();
251
262
}
252
263
253
264
@ Override
0 commit comments