Skip to content

Commit 7a2698c

Browse files
committed
Hyxin battle tested!
1 parent 6e45ff5 commit 7a2698c

1 file changed

Lines changed: 26 additions & 3 deletions

File tree

launcher/src/main/java/com/fox2code/hypertale/loader/HypertaleModGatherer.java

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,8 @@ public static HypertaleModGatherer gatherMods(String[] args) {
109109
ArrayList<File> libraries = new ArrayList<>();
110110
File modSyncBootstrap = null;
111111
if (HypertalePaths.hytaleEarlyPlugins.isDirectory()) {
112-
modSyncBootstrap = appendEarlyLoaderMods(mods, useMixins);
112+
modSyncBootstrap = appendEarlyLoaderMods(
113+
hypertaleMods, mods, useMixins);
113114
}
114115
if (HypertalePaths.hytaleMods.isDirectory()) {
115116
appendMods(hypertaleMods, mods, libraries, useMixins);
@@ -164,16 +165,36 @@ private static List<ClassPathModCandidate> gatherClassPathMods(boolean[] useMixi
164165
}
165166
}
166167

167-
private static File appendEarlyLoaderMods(ArrayList<File> mods, boolean[] useMixins) {
168+
private static File appendEarlyLoaderMods(
169+
ArrayList<File> hypertaleMods, ArrayList<File> mods, boolean[] useMixins) {
168170
File modSyncBootstrap = null;
169171
for (File file : Objects.requireNonNull(HypertalePaths.hytaleEarlyPlugins.listFiles())) {
170172
if (file.isFile() && file.getName().endsWith(".jar")) {
171173
try(ZipFile zipFile = new ZipFile(file)) {
174+
if (zipFile.getEntry(
175+
"com/fox2code/hypertale/init/Main.class") != null) {
176+
continue; // <- Do not consider HypertaleInit as a mod!
177+
}
172178
if (zipFile.getEntry(HypertaleCompatibility.entryHyxinMixinService) != null ||
173179
zipFile.getEntry(HypertaleCompatibility.entryHyxinTransformer) != null) {
174180
useMixins[1] = true;
175181
continue; // <- We already implement Hyxin APIs
176182
}
183+
ZipEntry manifestEntry;
184+
if ((manifestEntry = zipFile.getEntry("manifest.json")) != null) {
185+
String modInfo;
186+
try (InputStream inputStream = zipFile.getInputStream(manifestEntry)) {
187+
modInfo = new String(IOUtils.readAllBytes(inputStream), StandardCharsets.UTF_8);
188+
} catch (RuntimeException _) {
189+
modInfo = "";
190+
}
191+
if (modInfo.contains("\"Hyxin\"")) {
192+
useMixins[0] = true;
193+
hypertaleMods.add(file);
194+
mods.add(file);
195+
continue;
196+
}
197+
}
177198
if (zipFile.getEntry(HypertaleCompatibility.entryModSyncBootstrap) != null) {
178199
modSyncBootstrap = file; // Mod sync bootstrap need special handling
179200
} else {
@@ -208,10 +229,12 @@ private static void appendMods(ArrayList<File> hypertaleMods, ArrayList<File> mo
208229
} catch (RuntimeException _) {
209230
modInfo = "";
210231
}
232+
boolean modUseMixins = false;
211233
if (modInfo.contains("\"HypertaleMixinConfig\"") || modInfo.contains("\"Hyxin\"")) {
212234
useMixins[0] = true;
235+
modUseMixins = true;
213236
}
214-
if (modInfo.contains("\"Hypertale")) {
237+
if (modInfo.contains("\"Hypertale") || modUseMixins) {
215238
hypertaleMods.add(file);
216239
mods.add(file);
217240
continue;

0 commit comments

Comments
 (0)