Skip to content

Commit 43766a9

Browse files
committed
更新Sponge
1 parent b181002 commit 43766a9

File tree

5 files changed

+48
-28
lines changed

5 files changed

+48
-28
lines changed

MiraiMC-Base/src/main/java/me/dreamvoid/miraimc/internal/Utils.java

+5
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import java.io.*;
99
import java.net.HttpURLConnection;
1010
import java.net.URL;
11+
import java.net.URLClassLoader;
1112
import java.nio.charset.StandardCharsets;
1213
import java.nio.file.Files;
1314
import java.nio.file.StandardCopyOption;
@@ -86,6 +87,10 @@ public static Logger getLogger(){
8687

8788
public static void setClassLoader(ClassLoader classLoader) {
8889
Utils.classLoader = classLoader;
90+
for(URL u : ((URLClassLoader) classLoader).getURLs()){
91+
logger.info(u.getPath());
92+
}
93+
logger.info(classLoader.getParent().getClass().getPackage().getName());
8994
}
9095

9196
public static ClassLoader getClassLoader(){

MiraiMC-Sponge/src/main/java/me/dreamvoid/miraimc/sponge/SpongeConfig.java

+5-1
Original file line numberDiff line numberDiff line change
@@ -91,8 +91,12 @@ private static long getLong(String path, long defaults){
9191
}
9292
} else {
9393
Object o = maps.get(args[i]);
94-
if(o instanceof Long){
94+
if(o instanceof Long) {
9595
return (long) o;
96+
} else if(o instanceof Integer) {
97+
return Long.parseLong(String.valueOf(o));
98+
} else if(o instanceof String){
99+
return Long.parseLong((String) o);
96100
} else {
97101
throw new IllegalStateException(path + " is not a long value");
98102
}

MiraiMC-Sponge/src/main/java/me/dreamvoid/miraimc/sponge/SpongeLogger.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
@SuppressWarnings("deprecation")
99
public class SpongeLogger extends Logger {
10-
private final org.slf4j.Logger logger;
10+
private final org.apache.logging.log4j.Logger logger;
1111
/**
1212
* Protected method to construct a logger for a named subsystem.
1313
* <p>
@@ -22,7 +22,7 @@ public class SpongeLogger extends Logger {
2222
* @throws MissingResourceException if the resourceBundleName is non-null and
2323
* no corresponding resource can be found.
2424
*/
25-
protected SpongeLogger(String name, org.slf4j.Logger logger) {
25+
protected SpongeLogger(String name, org.apache.logging.log4j.Logger logger) {
2626
super(name, null);
2727
this.logger = logger;
2828
}

MiraiMC-Sponge/src/main/java/me/dreamvoid/miraimc/sponge/SpongePlugin.java

+36-25
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,7 @@
1313
import me.dreamvoid.miraimc.sponge.utils.Metrics;
1414
import me.dreamvoid.miraimc.sponge.utils.SpecialUtils;
1515
import net.kyori.adventure.text.Component;
16-
import org.slf4j.Logger;
17-
import org.slf4j.LoggerFactory;
16+
import org.apache.logging.log4j.Logger;
1817
import org.spongepowered.api.Server;
1918
import org.spongepowered.api.Sponge;
2019
import org.spongepowered.api.command.Command;
@@ -32,43 +31,57 @@
3231

3332
import java.io.File;
3433
import java.io.IOException;
34+
import java.net.MalformedURLException;
35+
import java.net.URL;
3536
import java.net.URLClassLoader;
37+
import java.nio.file.Path;
3638
import java.util.Collections;
3739
import java.util.HashMap;
3840
import java.util.List;
3941
import java.util.UUID;
4042

4143
@Plugin(value = "miraimc")
4244
public class SpongePlugin implements Platform {
45+
// MiraiMC 主代码
4346
private final LifeCycle lifeCycle;
4447
private PluginConfig platformConfig;
4548
@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;
5851

5952
@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;
6159

62-
@Inject
63-
@ConfigDir(sharedRoot = false)
64-
private File dataFolder;
60+
SpongeLogger = new SpongeLogger("MiraiMC", logger);
6561

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+
}
6876

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;
7183

84+
// Sponge 专有
7285
private MiraiEvent MiraiEvent;
7386
private MiraiAutoLogin MiraiAutoLogin;
7487

@@ -77,8 +90,6 @@ public SpongePlugin(Metrics.Factory factory){
7790
*/
7891
@Listener
7992
public void onLoad(StartingEngineEvent<Server> e) {
80-
SpongeLogger = new SpongeLogger("MiraiMC", this.getLogger());
81-
8293
try {
8394
platformConfig = new SpongeConfig(this);
8495
lifeCycle.preLoad();
@@ -247,7 +258,7 @@ public String getPluginName() {
247258

248259
@Override
249260
public String getPluginVersion() {
250-
return getPluginContainer().metadata().version().getQualifier();
261+
return getPluginContainer().metadata().version().toString();
251262
}
252263

253264
@Override

0 commit comments

Comments
 (0)