Skip to content

Commit 99b7fe6

Browse files
committed
多项更改
加入自动检查更新 [Sponge] 修正Logger类的笔误
1 parent 923410a commit 99b7fe6

File tree

15 files changed

+149
-21
lines changed

15 files changed

+149
-21
lines changed

MiraiMC-Base/pom.xml

+5
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,11 @@
3434
<version>1.6</version>
3535
<scope>compile</scope>
3636
</dependency>
37+
<dependency>
38+
<groupId>com.google.code.gson</groupId>
39+
<artifactId>gson</artifactId>
40+
<version>2.8.8</version>
41+
</dependency>
3742
</dependencies>
3843

3944
<build>

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

+1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ public class Config {
66
public static File PluginDir;
77

88
public static boolean Gen_AllowBStats;
9+
public static boolean Gen_CheckUpdate;
910
public static boolean Gen_DisableSafeWarningMessage;
1011
public static String Gen_MiraiWorkingDir;
1112
public static boolean Gen_AddProperties_MiraiNoDesktop;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package me.dreamvoid.miraimc.internal;
2+
3+
import com.google.gson.Gson;
4+
5+
import java.io.BufferedReader;
6+
import java.io.IOException;
7+
import java.io.InputStream;
8+
import java.io.InputStreamReader;
9+
import java.net.HttpURLConnection;
10+
import java.net.URL;
11+
import java.nio.charset.StandardCharsets;
12+
import java.util.HashMap;
13+
14+
public class PluginUpdate {
15+
public static String getVersion() throws IOException {
16+
URL url = new URL("https://api.github.com/repos/DreamVoid/MiraiMC/releases/latest");
17+
StringBuilder sb = new StringBuilder();
18+
HttpURLConnection httpUrlConn = (HttpURLConnection) url.openConnection();
19+
20+
httpUrlConn.setDoInput(true);
21+
httpUrlConn.setRequestMethod("GET");
22+
httpUrlConn.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko");
23+
24+
InputStream input = httpUrlConn.getInputStream();
25+
InputStreamReader read = new InputStreamReader(input, StandardCharsets.UTF_8);
26+
BufferedReader br = new BufferedReader(read);
27+
String data = br.readLine();
28+
while (data != null) {
29+
sb.append(data);
30+
data = br.readLine();
31+
}
32+
br.close();
33+
read.close();
34+
input.close();
35+
httpUrlConn.disconnect();
36+
37+
HashMap datax = new Gson().fromJson(sb.toString(),HashMap.class);
38+
return (String) datax.get("name");
39+
}
40+
}

MiraiMC-Base/src/main/resources/config.yml

+1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
general:
88
allow-bStats: true
9+
check-update: true
910
disable-safe-warning-message: false
1011
mirai-working-dir: default
1112
add-properties:
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package test;
2+
3+
import java.io.IOException;
4+
5+
import static me.dreamvoid.miraimc.internal.PluginUpdate.getVersion;
6+
7+
public class JavaMain {
8+
public static void main(String[] args){
9+
try {
10+
System.out.println(getVersion());
11+
} catch (IOException e) {
12+
e.printStackTrace();
13+
}
14+
}
15+
}

MiraiMC-Bukkit/src/main/java/me/dreamvoid/miraimc/bukkit/BukkitConfig.java

+1
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ public void loadConfig() {
1616
plugin.saveDefaultConfig();
1717

1818
Gen_AllowBStats = plugin.getConfig().getBoolean("general.allow-bStats",true);
19+
Gen_CheckUpdate = plugin.getConfig().getBoolean("general.check-update",true);
1920
Gen_DisableSafeWarningMessage = plugin.getConfig().getBoolean("general.disable-safe-warning-message",false);
2021
Gen_MiraiWorkingDir = plugin.getConfig().getString("general.mirai-working-dir","default");
2122
Gen_AddProperties_MiraiNoDesktop = plugin.getConfig().getBoolean("general.add-properties.mirai.no-desktop",true);

MiraiMC-Bukkit/src/main/java/me/dreamvoid/miraimc/bukkit/BukkitPlugin.java

+21-4
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,13 @@
22

33
import me.dreamvoid.miraimc.api.MiraiBot;
44
import me.dreamvoid.miraimc.bukkit.utils.Metrics;
5-
import me.dreamvoid.miraimc.internal.Config;
6-
import me.dreamvoid.miraimc.internal.MiraiLoader;
7-
import me.dreamvoid.miraimc.internal.MiraiLoginSolver;
8-
import me.dreamvoid.miraimc.internal.Utils;
5+
import me.dreamvoid.miraimc.internal.*;
96
import org.bukkit.Bukkit;
107
import org.bukkit.plugin.java.JavaPlugin;
8+
import org.bukkit.scheduler.BukkitRunnable;
119

1210
import java.io.File;
11+
import java.io.IOException;
1312
import java.sql.SQLException;
1413
import java.util.Arrays;
1514
import java.util.Objects;
@@ -93,6 +92,24 @@ public void onEnable() {
9392
new Metrics(this, pluginId);
9493
}
9594

95+
if(Config.Gen_CheckUpdate && !getDescription().getVersion().contains("dev")){
96+
new BukkitRunnable() {
97+
@Override
98+
public void run() {
99+
getLogger().info("正在检查更新...");
100+
try {
101+
String version = PluginUpdate.getVersion();
102+
if(getDescription().getVersion()!=version){
103+
getLogger().info("已找到新的插件更新,最新版本: " + version);
104+
getLogger().info("从Github下载更新: https://github.com/DreamVoid/MiraiMC/releases/latest");
105+
} else getLogger().info("你使用的是最新版本");
106+
} catch (IOException e) {
107+
getLogger().warning("An error occurred while fetching the latest version, reason: " + e);
108+
}
109+
}
110+
}.runTaskAsynchronously(this);
111+
}
112+
96113
// 安全警告
97114
if(!(Config.Gen_DisableSafeWarningMessage)){
98115
getLogger().warning("确保您正在使用开源的MiraiMC插件,未知来源的插件可能会盗取您的账号!");

MiraiMC-Bungee/src/main/java/me/dreamvoid/miraimc/bungee/BungeeConfig.java

+1
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ public void loadConfig() {
3636
}
3737

3838
Gen_AllowBStats = bungeeConfig.getBoolean("general.allow-bStats",true);
39+
Gen_CheckUpdate = bungeeConfig.getBoolean("general.check-update",true);
3940
Gen_DisableSafeWarningMessage = bungeeConfig.getBoolean("general.disable-safe-warning-message",false);
4041
Gen_MiraiWorkingDir = bungeeConfig.getString("general.mirai-working-dir","default");
4142
Gen_AddProperties_MiraiNoDesktop = bungeeConfig.getBoolean("general.add-properties.mirai.no-desktop",true);

MiraiMC-Bungee/src/main/java/me/dreamvoid/miraimc/bungee/BungeePlugin.java

+17-4
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,11 @@
55
import me.dreamvoid.miraimc.bungee.commands.MiraiMcCommand;
66
import me.dreamvoid.miraimc.bungee.commands.MiraiVerifyCommand;
77
import me.dreamvoid.miraimc.bungee.utils.Metrics;
8-
import me.dreamvoid.miraimc.internal.Config;
9-
import me.dreamvoid.miraimc.internal.MiraiLoader;
10-
import me.dreamvoid.miraimc.internal.MiraiLoginSolver;
11-
import me.dreamvoid.miraimc.internal.Utils;
8+
import me.dreamvoid.miraimc.internal.*;
129
import net.md_5.bungee.api.ProxyServer;
1310
import net.md_5.bungee.api.plugin.Plugin;
1411

12+
import java.io.IOException;
1513
import java.sql.SQLException;
1614

1715
public class BungeePlugin extends Plugin {
@@ -94,6 +92,21 @@ public void onEnable() {
9492
getLogger().warning("请始终从Github或作者指定的其他途径下载插件: https://github.com/DreamVoid/MiraiMC");
9593
}
9694

95+
if(Config.Gen_CheckUpdate && !getDescription().getVersion().contains("dev")){
96+
getProxy().getScheduler().runAsync(this, () -> {
97+
getLogger().info("正在检查更新...");
98+
try {
99+
String version = PluginUpdate.getVersion();
100+
if(getDescription().getVersion()!=version){
101+
getLogger().info("已找到新的插件更新,最新版本: " + version);
102+
getLogger().info("从Github下载更新: https://github.com/DreamVoid/MiraiMC/releases/latest");
103+
} else getLogger().info("你使用的是最新版本");
104+
} catch (IOException e) {
105+
getLogger().warning("An error occurred while fetching the latest version, reason: " + e);
106+
}
107+
});
108+
}
109+
97110
getLogger().info("All tasks done. Welcome to use MiraiMC!");
98111
}
99112

MiraiMC-Nukkit/src/main/java/me/dreamvoid/miraimc/nukkit/NukkitConfig.java

+1
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ public void loadConfig() {
1616
plugin.saveDefaultConfig();
1717

1818
Gen_AllowBStats = plugin.getConfig().getBoolean("general.allow-bStats",true);
19+
Gen_CheckUpdate = plugin.getConfig().getBoolean("general.check-update",true);
1920
Gen_DisableSafeWarningMessage = plugin.getConfig().getBoolean("general.disable-safe-warning-message",false);
2021
Gen_MiraiWorkingDir = plugin.getConfig().getString("general.mirai-working-dir","default");
2122
Gen_AddProperties_MiraiNoDesktop = plugin.getConfig().getBoolean("general.add-properties.mirai.no-desktop",true);

MiraiMC-Nukkit/src/main/java/me/dreamvoid/miraimc/nukkit/NukkitPlugin.java

+18-4
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,12 @@
88
import cn.nukkit.utils.TextFormat;
99
import me.dreamvoid.miraimc.api.MiraiBot;
1010
import me.dreamvoid.miraimc.api.MiraiMC;
11-
import me.dreamvoid.miraimc.internal.Config;
12-
import me.dreamvoid.miraimc.internal.MiraiLoader;
13-
import me.dreamvoid.miraimc.internal.MiraiLoginSolver;
14-
import me.dreamvoid.miraimc.internal.Utils;
11+
import me.dreamvoid.miraimc.internal.*;
1512
import me.dreamvoid.miraimc.nukkit.utils.MetricsLite;
1613
import net.mamoe.mirai.Bot;
1714
import net.mamoe.mirai.utils.BotConfiguration;
1815

16+
import java.io.IOException;
1917
import java.sql.SQLException;
2018
import java.util.List;
2119
import java.util.Map;
@@ -98,6 +96,22 @@ public void onEnable() {
9896
getLogger().warning("请始终从Github或作者指定的其他途径下载插件: https://github.com/DreamVoid/MiraiMC");
9997
}
10098

99+
getServer().getScheduler().scheduleAsyncTask(this, new AsyncTask() {
100+
@Override
101+
public void onRun() {
102+
getLogger().info("正在检查更新...");
103+
try {
104+
String version = PluginUpdate.getVersion();
105+
if(getDescription().getVersion()!=version){
106+
getLogger().info("已找到新的插件更新,最新版本: " + version);
107+
getLogger().info("从Github下载更新: https://github.com/DreamVoid/MiraiMC/releases/latest");
108+
} else getLogger().info("你使用的是最新版本");
109+
} catch (IOException e) {
110+
getLogger().warning("An error occurred while fetching the latest version, reason: " + e);
111+
}
112+
}
113+
});
114+
101115
getLogger().info("All tasks done. Welcome to use MiraiMC!");
102116
}
103117

MiraiMC-Sponge/pom.xml

+6
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,12 @@
4444
<version>4.0.3</version>
4545
<scope>provided</scope>
4646
</dependency>
47+
<dependency>
48+
<groupId>com.google.code.gson</groupId>
49+
<artifactId>gson</artifactId>
50+
<version>2.8.8</version>
51+
<scope>provided</scope>
52+
</dependency>
4753
</dependencies>
4854

4955
<build>

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

+3-6
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
package me.dreamvoid.miraimc.sponge;
22

3-
import ninja.leaping.configurate.commented.CommentedConfigurationNode;
4-
import ninja.leaping.configurate.loader.ConfigurationLoader;
53
import org.yaml.snakeyaml.Yaml;
64

75
import java.io.File;
@@ -10,15 +8,14 @@
108
import java.io.InputStream;
119
import java.nio.file.Files;
1210
import java.util.Map;
11+
import java.util.Objects;
1312

1413
import static me.dreamvoid.miraimc.internal.Config.*;
1514

1615
public class SpongeConfig {
1716
private final SpongePlugin plugin;
1817
private static SpongeConfig Instance;
1918

20-
public static ConfigurationLoader<CommentedConfigurationNode> loader;
21-
2219
public SpongeConfig(SpongePlugin plugin){
2320
Instance = this;
2421
this.plugin = plugin;
@@ -42,11 +39,11 @@ public void loadConfig() throws IOException {
4239
Gen_AllowBStats = (Boolean) general.get("allow-bStats");
4340
Gen_DisableSafeWarningMessage = (Boolean) general.get("disable-safe-warning-message");
4441
Gen_MiraiWorkingDir = String.valueOf(general.get("mirai-working-dir"));
45-
42+
4643
Map<String, Object> addProperties = (Map<String, Object>) general.get("add-properties");
4744
Gen_AddProperties_MiraiNoDesktop = (Boolean) addProperties.get("mirai.no-desktop");
4845
Gen_AddProperties_MiraiSliderCaptchaSupported = (Boolean) addProperties.get("mirai.slider.captcha.supported");
49-
46+
5047
Gen_MiraiCoreVersion = String.valueOf(general.get("mirai-core-version"));
5148
Gen_MavenRepoUrl = String.valueOf(general.get("maven-repo-url"));
5249
Gen_FriendlyException = (Boolean) general.get("friendly-exception");

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

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import java.util.function.Supplier;
66
import java.util.logging.*;
77

8-
public class NukkitLogger extends Logger {
8+
public class SpongeLogger extends Logger {
99
private final org.slf4j.Logger logger;
1010
/**
1111
* Protected method to construct a logger for a named subsystem.
@@ -24,7 +24,7 @@ public class NukkitLogger extends Logger {
2424
* @throws MissingResourceException if the resourceBundleName is non-null and
2525
* no corresponding resource can be found.
2626
*/
27-
protected NukkitLogger(String name, String resourceBundleName, SpongePlugin plugin) {
27+
protected SpongeLogger(String name, String resourceBundleName, SpongePlugin plugin) {
2828
super(name, resourceBundleName);
2929
this.logger = plugin.getLogger();
3030
}

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

+17-1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import com.google.inject.Inject;
44
import me.dreamvoid.miraimc.internal.Config;
55
import me.dreamvoid.miraimc.internal.MiraiLoader;
6+
import me.dreamvoid.miraimc.internal.PluginUpdate;
67
import me.dreamvoid.miraimc.internal.Utils;
78
import me.dreamvoid.miraimc.sponge.commands.MiraiCommand;
89
import me.dreamvoid.miraimc.sponge.commands.MiraiMcCommand;
@@ -19,10 +20,12 @@
1920
import org.spongepowered.api.event.game.state.GameStartingServerEvent;
2021
import org.spongepowered.api.plugin.Plugin;
2122
import org.spongepowered.api.plugin.PluginContainer;
23+
import org.spongepowered.api.scheduler.Task;
2224
import org.spongepowered.api.text.Text;
2325
import org.spongepowered.api.util.metric.MetricsConfigManager;
2426

2527
import java.io.File;
28+
import java.io.IOException;
2629
import java.sql.SQLException;
2730

2831
@Plugin(id = "miraimc", name = "MiraiMC", description = "MiraiBot for Minecraft server",version = "1.5-pre2", url = "https://github.com/DreamVoid/MiraiMC", authors = {"DreamVoid"})
@@ -49,7 +52,7 @@ public class SpongePlugin {
4952
@Listener
5053
public void onLoad(GamePreInitializationEvent e) {
5154
try {
52-
java.util.logging.Logger log4j = new NukkitLogger("MiraiMC", null, this);
55+
java.util.logging.Logger log4j = new SpongeLogger("MiraiMC", null, this);
5356
Utils.setLogger(log4j);
5457
Utils.setClassLoader(this.getClass().getClassLoader());
5558
new SpongeConfig(this).loadConfig();
@@ -130,6 +133,19 @@ public void onEnable(GameInitializationEvent e) {
130133
getLogger().warn("请始终从Github或作者指定的其他途径下载插件: https://github.com/DreamVoid/MiraiMC");
131134
}
132135

136+
Task.builder().async().execute(() -> {
137+
getLogger().info("正在检查更新...");
138+
try {
139+
String version = PluginUpdate.getVersion();
140+
if(!pluginContainer.getVersion().get().equals(version)){
141+
getLogger().info("已找到新的插件更新,最新版本: " + version);
142+
getLogger().info("从Github下载更新: https://github.com/DreamVoid/MiraiMC/releases/latest");
143+
} else getLogger().info("你使用的是最新版本");
144+
} catch (IOException e1) {
145+
getLogger().warn("An error occurred while fetching the latest version, reason: " + e1);
146+
}
147+
}).submit(this);
148+
133149
getLogger().info("Some initialization tasks will continue to run afterwards.");
134150
getLogger().info("All tasks done. Welcome to use MiraiMC!");
135151

0 commit comments

Comments
 (0)