Skip to content
This repository was archived by the owner on Aug 31, 2019. It is now read-only.

Commit 811d5b1

Browse files
committed
Implement config.yml loading
1 parent dacb7a8 commit 811d5b1

2 files changed

Lines changed: 58 additions & 0 deletions

File tree

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
package net.md_5.bungee.api.plugin;
2+
3+
import java.io.File;
4+
import java.io.IOException;
5+
import java.io.InputStream;
6+
import java.io.OutputStream;
7+
import java.util.logging.Level;
8+
import javax.inject.Inject;
9+
10+
import com.google.common.io.ByteStreams;
11+
import com.google.common.io.Files;
12+
import net.md_5.bungee.config.Configuration;
13+
import net.md_5.bungee.config.ConfigurationProvider;
14+
import net.md_5.bungee.config.YamlConfiguration;
15+
16+
public class PluginConfigurationLoader {
17+
private static final String CONFIG_FILENAME = "config.yml";
18+
19+
private final Plugin plugin;
20+
21+
@Inject PluginConfigurationLoader(Plugin plugin) {
22+
this.plugin = plugin;
23+
}
24+
25+
public Configuration loadConfig() {
26+
final String pluginName = plugin.getDescription().getName();
27+
try {
28+
File configFile = new File(plugin.getDataFolder(), CONFIG_FILENAME);
29+
30+
if(!configFile.exists()) {
31+
InputStream resourceStream = plugin.getResourceAsStream(CONFIG_FILENAME);
32+
if(resourceStream != null) {
33+
plugin.getLogger().info(String.format("[{0}] No config file detected. Copying default config from jar", pluginName));
34+
35+
if(!plugin.getDataFolder().mkdirs()) {
36+
throw new IOException("Failed to create plugin data folder");
37+
}
38+
39+
try(OutputStream os = Files.asByteSink(configFile).openStream()) {
40+
ByteStreams.copy(resourceStream, os);
41+
}
42+
}
43+
}
44+
45+
return ConfigurationProvider.getProvider(YamlConfiguration.class).load(configFile);
46+
} catch (IOException e) {
47+
plugin.getLogger().log(Level.SEVERE, String.format("[{0}] Failed to read configuration file: {1}", pluginName, e.getMessage()), e);
48+
return new Configuration();
49+
}
50+
}
51+
}

api/src/main/java/net/md_5/bungee/api/plugin/PluginModule.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ protected void configure() {
2424
bind(ExceptionHandler.class).to(PluginExceptionHandler.class).in(Singleton.class);
2525
bind(EventRegistry.class).to(PluginEventRegistry.class).in(Singleton.class);
2626
bind(Scheduler.class).to(PluginScheduler.class).in(Singleton.class);
27+
28+
bind(PluginConfigurationLoader.class).in(Singleton.class);
2729
}
2830

2931
@Provides
@@ -35,4 +37,9 @@ PluginDescription description(Plugin plugin) {
3537
PluginLogger logger(Plugin plugin) {
3638
return (PluginLogger) plugin.getLogger();
3739
}
40+
41+
@Provides @Singleton
42+
Configuration configuration(PluginConfigurationLoader loader) {
43+
return loader.loadConfig();
44+
}
3845
}

0 commit comments

Comments
 (0)