Skip to content

Commit 58e4e72

Browse files
authored
Merge pull request #150 from Andre601/feature/improve-versions-file-handling
Improve versions.json file handling
2 parents 5aeae10 + 2aabaa4 commit 58e4e72

14 files changed

Lines changed: 302 additions & 119 deletions

File tree

bungeecord/pom.xml

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -75,11 +75,6 @@
7575
<artifactId>configurate-yaml</artifactId>
7676
<version>4.1.2</version>
7777
</dependency>
78-
<dependency>
79-
<groupId>org.spongepowered</groupId>
80-
<artifactId>configurate-gson</artifactId>
81-
<version>4.1.2</version>
82-
</dependency>
8378
<dependency>
8479
<groupId>org.bstats</groupId>
8580
<artifactId>bstats-bungeecord</artifactId>

bungeecord/src/main/java/com/andre601/oneversionremake/bungeecord/listener/BungeeLoginListener.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ public void onLogin(PreLoginEvent event){
6060
plugin.getProxyLogger().infoFormat(
6161
"Denied login for Player %s with MC version %s (Protocol version: %d)",
6262
event.getConnection().getName(),
63-
plugin.getProtocolVersionResolver().getFriendlyName(userProtocol),
63+
plugin.getProtocolVersionResolver().getVersions().getFriendlyName(userProtocol),
6464
userProtocol
6565
);
6666
}

core/pom.xml

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,13 +41,14 @@
4141

4242
<dependencies>
4343
<dependency>
44-
<groupId>org.spongepowered</groupId>
45-
<artifactId>configurate-yaml</artifactId>
46-
<version>4.1.2</version>
44+
<groupId>com.google.code.gson</groupId>
45+
<artifactId>gson</artifactId>
46+
<version>2.9.0</version>
47+
<scope>compile</scope>
4748
</dependency>
4849
<dependency>
4950
<groupId>org.spongepowered</groupId>
50-
<artifactId>configurate-gson</artifactId>
51+
<artifactId>configurate-yaml</artifactId>
5152
<version>4.1.2</version>
5253
</dependency>
5354
<dependency>

core/src/main/java/com/andre601/oneversionremake/core/CommandPermissions.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,4 +30,6 @@ public class CommandPermissions{
3030
public static final String COMMAND_HELP = COMMAND_BASE + "help";
3131
// oneversionremake.command.reload
3232
public static final String COMMAND_RELOAD = COMMAND_BASE + "reload";
33+
// oneversionremake.command.refresh
34+
public static final String COMMAND_REFRESH = COMMAND_BASE + "refresh";
3335
}

core/src/main/java/com/andre601/oneversionremake/core/OneVersionRemake.java

Lines changed: 48 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import com.andre601.oneversionremake.core.interfaces.PluginCore;
2424
import com.andre601.oneversionremake.core.interfaces.ProxyLogger;
2525
import com.andre601.oneversionremake.core.proxy.ProtocolVersionResolver;
26+
import com.andre601.oneversionremake.core.proxy.VersionsFile;
2627

2728
import java.io.IOException;
2829
import java.io.InputStream;
@@ -32,7 +33,7 @@
3233

3334
public class OneVersionRemake{
3435

35-
private static final String DEF_VERSIONS_URL = "https://www.andre601.ch/oneversionremake/versions.json";
36+
public static final String DEF_VERSIONS_URL = "https://www.andre601.ch/oneversionremake/protocol_versions.json";
3637

3738
private final PluginCore pluginCore;
3839
private final ConfigHandler configHandler;
@@ -85,7 +86,7 @@ public Map<String, Map<String, Integer>> getPieMap(){
8586

8687
List<Integer> versions = getConfigHandler().getIntList("Protocol", "Versions");
8788
if(versions.isEmpty()){
88-
String unknown = getProtocolVersionResolver().getFriendlyName(0);
89+
String unknown = getProtocolVersionResolver().getVersions().getFriendlyName(0);
8990

9091
Map<String, Integer> entry = new HashMap<>();
9192

@@ -96,8 +97,8 @@ public Map<String, Map<String, Integer>> getPieMap(){
9697
}
9798

9899
for(int version : versions){
99-
String major = getProtocolVersionResolver().getMajor(version);
100-
String name = getProtocolVersionResolver().getFriendlyName(version);
100+
String major = getProtocolVersionResolver().getVersions().getMajor(version);
101+
String name = getProtocolVersionResolver().getVersions().getFriendlyName(version);
101102

102103
Map<String, Integer> entry = new HashMap<>();
103104
entry.put(name, 1);
@@ -141,22 +142,36 @@ private void load(){
141142
return;
142143
}
143144

144-
if(!getProtocolVersionResolver().hasFile() || getConfigHandler().getBoolean(true, "Settings", "UpdateVersions")){
145-
String url = getConfigHandler().getString(DEF_VERSIONS_URL, "Settings", "VersionsUrl");
146-
147-
if(getProtocolVersionResolver().loadFile(url)){
148-
getProxyLogger().info("Updated versions.json!");
145+
String url = getConfigHandler().getString(DEF_VERSIONS_URL, "Settings", "VersionsUrl");
146+
147+
if(getProtocolVersionResolver().isFileMissing()){
148+
getProxyLogger().info("Creating versions.json...");
149+
getProtocolVersionResolver().createFile(url).whenComplete((versions, throwable) -> {
150+
if(handleErrors(versions, throwable))
151+
return;
152+
153+
getProxyLogger().info("Successfully created versions.json!");
149154
enable();
150-
}else{
151-
getProxyLogger().warn("Unable to update versions.json! Check previous lines for warnings and errors.");
152-
}
155+
});
156+
}else
157+
if(getConfigHandler().getBoolean(true, "Settings", "UpdateVersions")){
158+
getProxyLogger().info("Checking for updated versions.json...");
159+
getProtocolVersionResolver().updateFile(url).whenComplete((versions, throwable) -> {
160+
if(handleErrors(versions, throwable))
161+
return;
162+
163+
getProxyLogger().info("Update-check complete!");
164+
enable();
165+
});
153166
}else{
154-
if(getProtocolVersionResolver().setupConfigurate()){
167+
getProxyLogger().info("Loading versions.json...");
168+
getProtocolVersionResolver().loadFile().whenComplete(((versions, throwable) -> {
169+
if(handleErrors(versions, throwable))
170+
return;
171+
155172
getProxyLogger().info("Loaded versions.json!");
156173
enable();
157-
}else{
158-
getProxyLogger().warn("Unable to load versions.json! Check previous lines for errors and warnings.");
159-
}
174+
}));
160175
}
161176
}
162177

@@ -169,7 +184,7 @@ private void enable(){
169184
versionsSet = false;
170185
}else{
171186
getProxyLogger().info("Loaded the following Protocol Version(s):");
172-
getProxyLogger().info(getProtocolVersionResolver().getFriendlyNames(protocols, false));
187+
getProxyLogger().info(getProtocolVersionResolver().getVersions().getFriendlyNames(protocols, false));
173188

174189
versionsSet = true;
175190
}
@@ -190,7 +205,7 @@ private void enable(){
190205
getProxyLogger().info("No Protocol Versions set. Skipping Metrics initialization...");
191206
}
192207

193-
getProxyLogger().info("OneVersionRemake is ready!");
208+
getProxyLogger().info("OneVersionRemake ready!");
194209
}
195210

196211
private void printBanner(){
@@ -231,4 +246,19 @@ private void loadVersion(){
231246
version = "UNKNOWN";
232247
}
233248
}
249+
250+
private boolean handleErrors(VersionsFile versionsFile, Throwable throwable){
251+
if(throwable != null || versionsFile == null){
252+
if(throwable != null){
253+
getProxyLogger().warn("Encountered an Exception while handling versions.json");
254+
getProxyLogger().warnFormat("Error Message: %s", throwable.getMessage());
255+
}else{
256+
getProxyLogger().warn("Handling of versions.json was non-successful!");
257+
getProxyLogger().warn("Please check previous entries for any errors.");
258+
}
259+
return true;
260+
}
261+
262+
return false;
263+
}
234264
}

core/src/main/java/com/andre601/oneversionremake/core/Parser.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,8 @@ public String toString(String text, List<Integer> serverProtocols, int userProto
4747
}
4848

4949
private String parse(String text, List<Integer> serverProtocols, int userProtocol, boolean majorOnly){
50-
return text.replace("{version}", core.getProtocolVersionResolver().getFriendlyNames(serverProtocols, majorOnly))
51-
.replace("{userVersion}", core.getProtocolVersionResolver().getFriendlyName(userProtocol));
50+
return text.replace("{version}", core.getProtocolVersionResolver().getVersions().getFriendlyNames(serverProtocols, majorOnly))
51+
.replace("{userVersion}", core.getProtocolVersionResolver().getVersions().getFriendlyName(userProtocol));
5252
}
5353

5454
}

core/src/main/java/com/andre601/oneversionremake/core/commands/CommandHandler.java

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,21 +47,26 @@ public void handle(CmdSender sender, String[] args){
4747
sender.sendMsg();
4848
sender.sendMsg(NamedTextColor.AQUA, "/ovr reload");
4949
sender.sendMsg(NamedTextColor.GRAY, "Reloads the configuration file.");
50+
sender.sendMsg();
51+
sender.sendMsg(NamedTextColor.AQUA, "/ovr refresh");
52+
sender.sendMsg(NamedTextColor.GRAY, "Updates the versions.json file.");
5053
}else
5154
if(args[0].equalsIgnoreCase("reload")){
5255
if(!sender.hasPermission(CommandPermissions.COMMAND_RELOAD)){
5356
sender.sendMsg(NamedTextColor.RED, "Insufficient permissions!");
5457
return;
5558
}
5659

60+
sender.sendMsg(NamedTextColor.GRAY, "Reloading config.yml...");
61+
5762
if(core.reloadConfig()){
5863
List<Integer> protocols = core.getConfigHandler().getIntList("Protocol", "Versions");
5964

6065
sender.sendMsg(NamedTextColor.AQUA, "Loaded following Minecraft version(s):");
6166
if(protocols.isEmpty()){
6267
sender.sendMsg(NamedTextColor.RED, "None");
6368
}else{
64-
sender.sendMsg(NamedTextColor.GRAY, core.getProtocolVersionResolver().getFriendlyNames(protocols, false));
69+
sender.sendMsg(NamedTextColor.GRAY, core.getProtocolVersionResolver().getVersions().getFriendlyNames(protocols, false));
6570
}
6671

6772
sender.sendMsg();
@@ -70,6 +75,30 @@ public void handle(CmdSender sender, String[] args){
7075
sender.sendMsg(NamedTextColor.RED, "There was an issue while reloading the configuration file!");
7176
sender.sendMsg(NamedTextColor.RED, "Please check the Console of the Proxy for any errors and warnings.");
7277
}
78+
}else
79+
if(args[0].equalsIgnoreCase("refresh")){
80+
if(!sender.hasPermission(CommandPermissions.COMMAND_REFRESH)){
81+
sender.sendMsg(NamedTextColor.RED, "Insufficient permissions!");
82+
return;
83+
}
84+
85+
sender.sendMsg(NamedTextColor.GRAY, "Updating versions.json...");
86+
87+
core.getProtocolVersionResolver()
88+
.updateFile(core.getConfigHandler().getString(OneVersionRemake.DEF_VERSIONS_URL, "Settings", "VersionsUrl"))
89+
.whenComplete((versions, throwable) -> {
90+
if(versions == null || throwable != null){
91+
if(throwable != null){
92+
sender.sendMsg(NamedTextColor.RED, "Encountered an Exception while performing the update.");
93+
}else{
94+
sender.sendMsg(NamedTextColor.RED, "Update was not successful! Check console for any errors!");
95+
}
96+
97+
return;
98+
}
99+
100+
sender.sendMsg(NamedTextColor.GREEN, "Successfully updated versions.json!");
101+
});
73102
}else{
74103
sender.sendMsg(NamedTextColor.RED, "Unknown argument \"%s\".", args[0]);
75104
sender.sendMsg(NamedTextColor.RED, "Run \"/ovr help\" for all commands.");

0 commit comments

Comments
 (0)