/
Depenizen2Sponge.java
121 lines (102 loc) · 3.99 KB
/
Depenizen2Sponge.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
package com.denizenscript.depenizen.sponge;
import com.denizenscript.denizen2core.Denizen2Core;
import com.denizenscript.denizen2core.utilities.CoreUtilities;
import com.denizenscript.denizen2core.utilities.yaml.YAMLConfiguration;
import com.denizenscript.denizen2sponge.Denizen2Sponge;
import com.denizenscript.denizen2sponge.spongeevents.Denizen2SpongeLoadingEvent;
import com.denizenscript.depenizen.common.Depenizen;
import com.denizenscript.depenizen.common.DepenizenImplementation;
import com.denizenscript.depenizen.sponge.commands.bungee.BungeeRunCommand;
import com.denizenscript.depenizen.sponge.support.bungee.BungeeSupport;
import com.denizenscript.depenizen.sponge.tags.bungee.handlers.BungeeServerTagBase;
import com.google.inject.Inject;
import ninja.leaping.configurate.yaml.YAMLConfigurationLoader;
import org.spongepowered.api.Sponge;
import org.spongepowered.api.config.ConfigDir;
import org.spongepowered.api.event.Listener;
import org.spongepowered.api.event.game.state.GameStoppingEvent;
import org.spongepowered.api.plugin.Dependency;
import org.spongepowered.api.plugin.Plugin;
import org.spongepowered.api.plugin.PluginContainer;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.nio.file.Path;
@Plugin(
id = Depenizen2Sponge.PLUGIN_ID,
name = Depenizen2Sponge.PLUGIN_NAME,
version = Depenizen2Sponge.PLUGIN_VERSION,
dependencies = @Dependency(id = Denizen2Sponge.PLUGIN_ID)
)
public class Depenizen2Sponge implements DepenizenImplementation {
public final static String PLUGIN_ID = "depenizen2sponge";
public final static String PLUGIN_NAME = "Depenizen2Sponge";
public final static String PLUGIN_VERSION = PomData.VERSION + " (build " + PomData.BUILD_NUMBER + ")";
public static PluginContainer plugin;
public static Depenizen2Sponge instance;
@Inject
@ConfigDir(sharedRoot = false)
private Path configDir;
private File configFile;
private YAMLConfigurationLoader configLoader;
public YAMLConfiguration config;
@Listener
public void onDenizenLoaded(Denizen2SpongeLoadingEvent event) {
// Setup
instance = this;
plugin = Sponge.getPluginManager().getPlugin(PLUGIN_ID).orElse(null);
configFile = configDir.resolve("config.yml").toFile();
saveDefaultConfig();
loadConfig();
// Depenizen
Depenizen.init(this);
if (Settings.socketEnabled()) {
// Bungee Commands
Denizen2Core.register(new BungeeRunCommand());
// Bungee Tag Handlers
Denizen2Core.register(new BungeeServerTagBase());
// Start BungeeCord socket
BungeeSupport.startSocket();
}
}
@Listener
public void onServerStop(GameStoppingEvent event) {
BungeeSupport.closeSocket();
instance = null;
plugin = null;
}
private void saveDefaultConfig() {
if (!configFile.exists()) {
configFile.getParentFile().mkdirs();
try (InputStream is = getClass().getResourceAsStream("defaultConfig.yml");
PrintWriter writer = new PrintWriter(configFile)) {
writer.write(CoreUtilities.streamToString(is));
}
catch (IOException e) {
debugException(e);
}
}
}
private void loadConfig() {
try {
config = YAMLConfiguration.load(CoreUtilities.streamToString(new FileInputStream(configFile)));
}
catch (IOException e) {
debugException(e);
}
}
@Override
public void debugMessage(String message) {
Denizen2Core.getImplementation().outputInfo(message);
}
@Override
public void debugException(Exception exception) {
Denizen2Core.getImplementation().outputException(exception);
}
@Override
public void debugError(String error) {
Denizen2Core.getImplementation().outputError(error);
}
}