-
-
Notifications
You must be signed in to change notification settings - Fork 7
Expand file tree
/
Copy pathOpenSignalsMain.java
More file actions
150 lines (131 loc) · 5.36 KB
/
Copy pathOpenSignalsMain.java
File metadata and controls
150 lines (131 loc) · 5.36 KB
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
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
package com.troblecodings.signals;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
import java.nio.file.FileSystem;
import java.nio.file.FileSystems;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Collections;
import java.util.Optional;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.core.LoggerContext;
import com.troblecodings.contentpacklib.ContentPackHandler;
import com.troblecodings.core.net.NetworkHandler;
import com.troblecodings.guilib.ecs.GuiHandler;
import com.troblecodings.signals.handler.MonitorNetworkHandler;
import com.troblecodings.signals.handler.NameHandler;
import com.troblecodings.signals.handler.SignalBoxHandler;
import com.troblecodings.signals.handler.SignalStateHandler;
import com.troblecodings.signals.init.OSBlocks;
import com.troblecodings.signals.init.OSItems;
import com.troblecodings.signals.init.OSSounds;
import com.troblecodings.signals.proxy.CommonProxy;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.fml.common.FMLCommonHandler;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.Mod.EventHandler;
import net.minecraftforge.fml.common.Mod.Instance;
import net.minecraftforge.fml.common.SidedProxy;
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
import net.minecraftforge.fml.common.event.FMLServerStoppingEvent;
@Mod(modid = OpenSignalsMain.MODID, acceptedMinecraftVersions = "[1.12.2]")
public class OpenSignalsMain {
@Instance
private static OpenSignalsMain instance;
public static final String MODID = "opensignals";
public static OpenSignalsMain getInstance() {
return instance;
}
public OpenSignalsMain() {
instance = this;
MinecraftForge.EVENT_BUS.register(this);
MinecraftForge.EVENT_BUS.register(OSBlocks.class);
MinecraftForge.EVENT_BUS.register(OSItems.class);
MinecraftForge.EVENT_BUS.register(OSSounds.class);
MinecraftForge.EVENT_BUS.register(NameHandler.class);
MinecraftForge.EVENT_BUS.register(SignalStateHandler.class);
MinecraftForge.EVENT_BUS.register(SignalBoxHandler.class);
MinecraftForge.EVENT_BUS.register(MonitorNetworkHandler.class);
debug = true;
log = LoggerContext.getContext().getLogger(MODID);
contentPacks = new ContentPackHandler(MODID, "assets/" + MODID, log, name -> {
final Optional<Path> path = getRessourceLocation(name);
if (path.isPresent())
return path.get().toAbsolutePath();
return Paths.get("");
});
}
@SidedProxy(serverSide = "com.troblecodings.signals.proxy.CommonProxy", //
clientSide = "com.troblecodings.signals.proxy.ClientProxy")
public static CommonProxy proxy;
private static Logger log = null;
public static GuiHandler handler = null;
public static NetworkHandler network = null;
public static ContentPackHandler contentPacks = null;
private static boolean debug;
/**
* @return the debug
*/
public static boolean isDebug() {
return debug;
}
@EventHandler
public void onServerStop(final FMLServerStoppingEvent event) {
SignalStateHandler.onServerStop(event);
SignalBoxHandler.onServerStop(event);
NameHandler.onServerStop(event);
}
@EventHandler
public void preinit(final FMLPreInitializationEvent event) {
debug = Files.isDirectory(event.getSourceFile().toPath());
log = event.getModLog();
proxy.initModEvent(event);
}
@EventHandler
public void init(final FMLInitializationEvent event) {
proxy.init(event);
}
public static Logger getLogger() {
if (log == null) {
log = LogManager.getLogger(MODID);
}
return log;
}
public static void exitMinecraftWithMessage(final String message) {
getLogger().error(message);
FMLCommonHandler.instance().exitJava(0, true);
}
private static FileSystem fileSystemCache;
private static Optional<Path> getRessourceLocation(final String location) {
String filelocation = location;
final URL url = OSBlocks.class.getResource("/assets/" + MODID);
try {
if (url != null) {
final URI uri = url.toURI();
if ("file".equals(uri.getScheme())) {
if (!location.startsWith("/")) {
filelocation = "/" + filelocation;
}
final URL resource = OSBlocks.class.getResource(filelocation);
if (resource == null)
return Optional.empty();
return Optional.of(Paths.get(resource.toURI()));
}
if (!"jar".equals(uri.getScheme()))
return Optional.empty();
if (fileSystemCache == null) {
fileSystemCache = FileSystems.newFileSystem(uri, Collections.emptyMap());
}
return Optional.of(fileSystemCache.getPath(filelocation));
}
} catch (final IOException | URISyntaxException e) {
e.printStackTrace();
}
return Optional.empty();
}
}