Skip to content

Commit 6500e9d

Browse files
committed
[resource loader] detect pack formats earlier
fixes #59
1 parent 1b652c9 commit 6500e9d

15 files changed

Lines changed: 166 additions & 204 deletions

File tree

libraries/resource-loader/gradle.properties

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,4 @@ library_name = Resource Loader
33
library_description = Resource loading API and events.
44
library_version = 0.6.0
55

6-
entrypoint_init = net.ornithemc.osl.resource.loader.impl.ResourceLoader
7-
entrypoint_client_init = net.ornithemc.osl.resource.loader.impl.ResourceLoader
86
osl_dependencies = core:>=0.7.0,entrypoints:>=0.5.0,lifecycle-events:>=0.6.0

libraries/resource-loader/resource-loader-mc11w49a-mc1.2.5/src/main/java/net/ornithemc/osl/resource/loader/impl/ResourceLoader.java

Lines changed: 1 addition & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -10,30 +10,15 @@
1010
import net.fabricmc.loader.api.FabricLoader;
1111
import net.fabricmc.loader.api.ModContainer;
1212

13-
import net.ornithemc.osl.entrypoints.api.ModInitializer;
14-
import net.ornithemc.osl.entrypoints.api.client.ClientModInitializer;
1513
import net.ornithemc.osl.resource.loader.api.ModTexturePack;
1614
import net.ornithemc.osl.resource.loader.api.ResourceLoaderEvents;
1715

18-
public class ResourceLoader implements ModInitializer, ClientModInitializer {
16+
public class ResourceLoader {
1917

2018
public static final Logger LOGGER = LogManager.getLogger("OSL|Resource Loader");
2119

2220
private static List<ModTexturePack> DEFAULT_MOD_TEXTURE_PACKS;
2321

24-
// empty impls needed because the mod.json is shared across all modules
25-
// and the 1.6+ versions register listeners to lifecycle events here
26-
27-
@Override
28-
public void initClient() {
29-
// empty impl
30-
}
31-
32-
@Override
33-
public void init() {
34-
// empty impl
35-
}
36-
3722
public static void resetDefaultTexturePacks() {
3823
DEFAULT_MOD_TEXTURE_PACKS = null;
3924
}

libraries/resource-loader/resource-loader-mc12w15a-mc13w07a/src/main/java/net/ornithemc/osl/resource/loader/impl/ResourceLoader.java

Lines changed: 1 addition & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -10,30 +10,15 @@
1010
import net.fabricmc.loader.api.FabricLoader;
1111
import net.fabricmc.loader.api.ModContainer;
1212

13-
import net.ornithemc.osl.entrypoints.api.ModInitializer;
14-
import net.ornithemc.osl.entrypoints.api.client.ClientModInitializer;
1513
import net.ornithemc.osl.resource.loader.api.ModTexturePack;
1614
import net.ornithemc.osl.resource.loader.api.ResourceLoaderEvents;
1715

18-
public class ResourceLoader implements ModInitializer, ClientModInitializer {
16+
public class ResourceLoader {
1917

2018
public static final Logger LOGGER = LogManager.getLogger("OSL|Resource Loader");
2119

2220
private static List<ModTexturePack> DEFAULT_MOD_TEXTURE_PACKS;
2321

24-
// empty impls needed because the mod.json is shared across all modules
25-
// and the 1.6+ versions register listeners to lifecycle events here
26-
27-
@Override
28-
public void initClient() {
29-
// empty impl
30-
}
31-
32-
@Override
33-
public void init() {
34-
// empty impl
35-
}
36-
3722
public static void resetDefaultTexturePacks() {
3823
DEFAULT_MOD_TEXTURE_PACKS = null;
3924
}

libraries/resource-loader/resource-loader-mc13w09a-mc1.5.2/src/main/java/net/ornithemc/osl/resource/loader/impl/ResourceLoader.java

Lines changed: 1 addition & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -10,30 +10,15 @@
1010
import net.fabricmc.loader.api.FabricLoader;
1111
import net.fabricmc.loader.api.ModContainer;
1212

13-
import net.ornithemc.osl.entrypoints.api.ModInitializer;
14-
import net.ornithemc.osl.entrypoints.api.client.ClientModInitializer;
1513
import net.ornithemc.osl.resource.loader.api.ModTexturePack;
1614
import net.ornithemc.osl.resource.loader.api.ResourceLoaderEvents;
1715

18-
public class ResourceLoader implements ModInitializer, ClientModInitializer {
16+
public class ResourceLoader {
1917

2018
public static final Logger LOGGER = LogManager.getLogger("OSL|Resource Loader");
2119

2220
private static List<ModTexturePack> DEFAULT_MOD_TEXTURE_PACKS;
2321

24-
// empty impls needed because the mod.json is shared across all modules
25-
// and the 1.6+ versions register listeners to lifecycle events here
26-
27-
@Override
28-
public void initClient() {
29-
// empty impl
30-
}
31-
32-
@Override
33-
public void init() {
34-
// empty impl
35-
}
36-
3722
public static void resetDefaultTexturePacks() {
3823
DEFAULT_MOD_TEXTURE_PACKS = null;
3924
}

libraries/resource-loader/resource-loader-mc13w26a-mc1.10.2/src/main/java/net/ornithemc/osl/resource/loader/impl/ResourceLoader.java

Lines changed: 5 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,52 +1,26 @@
11
package net.ornithemc.osl.resource.loader.impl;
22

3-
import java.io.IOException;
43
import java.util.ArrayList;
54
import java.util.Collections;
65
import java.util.List;
76

87
import org.apache.logging.log4j.LogManager;
98
import org.apache.logging.log4j.Logger;
109

11-
import net.minecraft.client.resource.metadata.ResourceMetadataSerializerRegistry;
12-
import net.minecraft.client.resource.metadata.ResourcePackMetadata;
13-
import net.minecraft.client.resource.pack.ResourcePack;
14-
import net.minecraft.client.resource.pack.ResourcePacks;
15-
16-
import net.ornithemc.osl.entrypoints.api.ModInitializer;
17-
import net.ornithemc.osl.entrypoints.api.client.ClientModInitializer;
18-
import net.ornithemc.osl.lifecycle.api.client.MinecraftClientEvents;
1910
import net.ornithemc.osl.resource.loader.api.ModResourcePack;
2011

21-
public class ResourceLoader implements ModInitializer, ClientModInitializer {
12+
public class ResourceLoader {
2213

2314
public static final Logger LOGGER = LogManager.getLogger("OSL|Resource Loader");
2415

2516
private static final List<ModResourcePack> DEFAULT_MOD_RESOURCE_PACKS = new ArrayList<>();
2617

2718
private static int packFormat = -1;
2819

29-
@Override
30-
public void initClient() {
31-
MinecraftClientEvents.READY.register(minecraft -> {
32-
try {
33-
ResourcePacks resourcePacks = minecraft.getResourcePacks();
34-
ResourceMetadataSerializerRegistry metadataSerializers = resourcePacks.metadataSerializers;
35-
36-
ResourcePack defaultPack = resourcePacks.defaultPack;
37-
ResourcePackMetadata metadata = defaultPack.getMetadataSection(metadataSerializers, "pack");
38-
39-
packFormat = metadata.getFormat();
40-
} catch (IOException e) {
41-
packFormat = 0;
42-
LOGGER.info("unable to parse resource pack format from default resource pack; using default value of " + packFormat);
43-
}
44-
});
45-
}
46-
47-
@Override
48-
public void init() {
49-
// empty impl
20+
public static void setPackFormat(int format) {
21+
if (packFormat < 0) {
22+
packFormat = format;
23+
}
5024
}
5125

5226
public static boolean addDefaultModResourcePack(ModResourcePack pack) {

libraries/resource-loader/resource-loader-mc13w26a-mc1.10.2/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/MinecraftMixin.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package net.ornithemc.osl.resource.loader.impl.mixin.client;
22

3+
import java.io.IOException;
34
import java.util.List;
45

56
import org.spongepowered.asm.mixin.Final;
@@ -13,6 +14,9 @@
1314
import net.fabricmc.loader.api.ModContainer;
1415

1516
import net.minecraft.client.Minecraft;
17+
import net.minecraft.client.resource.metadata.ResourceMetadataSerializerRegistry;
18+
import net.minecraft.client.resource.metadata.ResourcePackMetadata;
19+
import net.minecraft.client.resource.pack.BuiltInResourcePack;
1620
import net.minecraft.client.resource.pack.ResourcePack;
1721

1822
import net.ornithemc.osl.resource.loader.api.ModResourcePack;
@@ -23,8 +27,13 @@
2327
@Mixin(Minecraft.class)
2428
public class MinecraftMixin {
2529

30+
@Shadow @Final
31+
private ResourceMetadataSerializerRegistry resourceMetadataSerializerRegistry;
2632
@Shadow @Final
2733
private List<ResourcePack> defaultResourcePacks;
34+
@Shadow @Final
35+
private BuiltInResourcePack defaultResourcePack;
36+
2837

2938
@Inject(
3039
method = "init",
@@ -34,6 +43,15 @@ public class MinecraftMixin {
3443
)
3544
)
3645
private void osl$resource_loader$addDefaultResourcePacks(CallbackInfo ci) {
46+
try {
47+
ResourcePackMetadata metadata = defaultResourcePack.getMetadataSection(resourceMetadataSerializerRegistry, "pack");
48+
int format = metadata.getFormat();
49+
50+
ResourceLoader.setPackFormat(format);
51+
} catch (IOException e) {
52+
ResourceLoader.LOGGER.info("unable to parse resource pack format from default resource pack", e);
53+
}
54+
3755
for (ModContainer mod : FabricLoader.getInstance().getAllMods()) {
3856
if ("builtin".equals(mod.getMetadata().getType())) {
3957
continue;

libraries/resource-loader/resource-loader-mc16w32a-mc1.12.2/src/main/java/net/ornithemc/osl/resource/loader/impl/ResourceLoader.java

Lines changed: 5 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,52 +1,26 @@
11
package net.ornithemc.osl.resource.loader.impl;
22

3-
import java.io.IOException;
43
import java.util.ArrayList;
54
import java.util.Collections;
65
import java.util.List;
76

87
import org.apache.logging.log4j.LogManager;
98
import org.apache.logging.log4j.Logger;
109

11-
import net.minecraft.client.resource.metadata.ResourceMetadataSerializerRegistry;
12-
import net.minecraft.client.resource.metadata.ResourcePackMetadata;
13-
import net.minecraft.client.resource.pack.ResourcePack;
14-
import net.minecraft.client.resource.pack.ResourcePacks;
15-
16-
import net.ornithemc.osl.entrypoints.api.ModInitializer;
17-
import net.ornithemc.osl.entrypoints.api.client.ClientModInitializer;
18-
import net.ornithemc.osl.lifecycle.api.client.MinecraftClientEvents;
1910
import net.ornithemc.osl.resource.loader.api.ModResourcePack;
2011

21-
public class ResourceLoader implements ModInitializer, ClientModInitializer {
12+
public class ResourceLoader {
2213

2314
public static final Logger LOGGER = LogManager.getLogger("OSL|Resource Loader");
2415

2516
private static final List<ModResourcePack> DEFAULT_MOD_RESOURCE_PACKS = new ArrayList<>();
2617

2718
private static int packFormat = -1;
2819

29-
@Override
30-
public void initClient() {
31-
MinecraftClientEvents.READY.register(minecraft -> {
32-
try {
33-
ResourcePacks resourcePacks = minecraft.getResourcePacks();
34-
ResourceMetadataSerializerRegistry metadataSerializers = resourcePacks.metadataSerializers;
35-
36-
ResourcePack defaultPack = resourcePacks.defaultPack;
37-
ResourcePackMetadata metadata = defaultPack.getMetadataSection(metadataSerializers, "pack");
38-
39-
packFormat = metadata.getFormat();
40-
} catch (IOException e) {
41-
packFormat = 0;
42-
LOGGER.info("unable to parse resource pack format from default resource pack; using default value of " + packFormat);
43-
}
44-
});
45-
}
46-
47-
@Override
48-
public void init() {
49-
// empty impl
20+
public static void setPackFormat(int format) {
21+
if (packFormat < 0) {
22+
packFormat = format;
23+
}
5024
}
5125

5226
public static boolean addDefaultModResourcePack(ModResourcePack pack) {

libraries/resource-loader/resource-loader-mc16w32a-mc1.12.2/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/MinecraftMixin.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package net.ornithemc.osl.resource.loader.impl.mixin.client;
22

3+
import java.io.IOException;
34
import java.util.List;
45

56
import org.spongepowered.asm.mixin.Final;
@@ -13,6 +14,9 @@
1314
import net.fabricmc.loader.api.ModContainer;
1415

1516
import net.minecraft.client.Minecraft;
17+
import net.minecraft.client.resource.metadata.ResourceMetadataSerializerRegistry;
18+
import net.minecraft.client.resource.metadata.ResourcePackMetadata;
19+
import net.minecraft.client.resource.pack.BuiltInResourcePack;
1620
import net.minecraft.client.resource.pack.ResourcePack;
1721

1822
import net.ornithemc.osl.resource.loader.api.ModResourcePack;
@@ -23,8 +27,13 @@
2327
@Mixin(Minecraft.class)
2428
public class MinecraftMixin {
2529

30+
@Shadow @Final
31+
private ResourceMetadataSerializerRegistry resourceMetadataSerializerRegistry;
2632
@Shadow @Final
2733
private List<ResourcePack> defaultResourcePacks;
34+
@Shadow @Final
35+
private BuiltInResourcePack defaultResourcePack;
36+
2837

2938
@Inject(
3039
method = "init",
@@ -34,6 +43,15 @@ public class MinecraftMixin {
3443
)
3544
)
3645
private void osl$resource_loader$addDefaultResourcePacks(CallbackInfo ci) {
46+
try {
47+
ResourcePackMetadata metadata = defaultResourcePack.getMetadataSection(resourceMetadataSerializerRegistry, "pack");
48+
int format = metadata.getFormat();
49+
50+
ResourceLoader.setPackFormat(format);
51+
} catch (IOException e) {
52+
ResourceLoader.LOGGER.info("unable to parse resource pack format from default resource pack", e);
53+
}
54+
3755
for (ModContainer mod : FabricLoader.getInstance().getAllMods()) {
3856
if ("builtin".equals(mod.getMetadata().getType())) {
3957
continue;

libraries/resource-loader/resource-loader-mc17w43a-mc19w07a/src/main/java/net/ornithemc/osl/resource/loader/impl/ResourceLoader.java

Lines changed: 9 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,17 @@
11
package net.ornithemc.osl.resource.loader.impl;
22

3-
import java.io.IOException;
43
import java.util.ArrayList;
54
import java.util.Collections;
65
import java.util.List;
76

87
import org.apache.logging.log4j.LogManager;
98
import org.apache.logging.log4j.Logger;
109

11-
import net.minecraft.client.resource.pack.ResourcePacks;
12-
import net.minecraft.resource.pack.BuiltInPack;
1310
import net.minecraft.resource.pack.PackType;
14-
import net.minecraft.resource.pack.metadata.PackMetadataSection;
1511

16-
import net.ornithemc.osl.entrypoints.api.ModInitializer;
17-
import net.ornithemc.osl.entrypoints.api.client.ClientModInitializer;
18-
import net.ornithemc.osl.lifecycle.api.client.MinecraftClientEvents;
19-
import net.ornithemc.osl.lifecycle.api.server.MinecraftServerEvents;
2012
import net.ornithemc.osl.resource.loader.api.ModPack;
2113

22-
public class ResourceLoader implements ModInitializer, ClientModInitializer {
14+
public class ResourceLoader {
2315

2416
public static final Logger LOGGER = LogManager.getLogger("OSL|Resource Loader");
2517

@@ -28,37 +20,16 @@ public class ResourceLoader implements ModInitializer, ClientModInitializer {
2820
private static int resourcePackFormat = -1;
2921
private static int dataPackFormat = -1;
3022

31-
@Override
32-
public void initClient() {
33-
MinecraftClientEvents.READY.register(minecraft -> {
34-
try {
35-
ResourcePacks resourcePacks = minecraft.getResourcePacks();
36-
37-
BuiltInPack defaultPack = resourcePacks.getDefaultPack();
38-
PackMetadataSection metadata = defaultPack.getMetadataSection(PackMetadataSection.SERIALIZER);
39-
40-
resourcePackFormat = metadata.getFormat();
41-
} catch (IOException e) {
42-
resourcePackFormat = 0;
43-
LOGGER.info("unable to parse resource pack format from default resource pack; using default value of " + resourcePackFormat, e);
44-
}
45-
});
23+
public static void setResourcePackFormat(int format) {
24+
if (resourcePackFormat < 0) {
25+
resourcePackFormat = format;
26+
}
4627
}
4728

48-
@Override
49-
public void init() {
50-
MinecraftServerEvents.READY.register(server -> {
51-
try {
52-
@SuppressWarnings("resource")
53-
BuiltInPack defaultPack = new BuiltInPack("minecraft");
54-
PackMetadataSection metadata = defaultPack.getMetadataSection(PackMetadataSection.SERIALIZER);
55-
56-
dataPackFormat = metadata.getFormat();
57-
} catch (IOException e) {
58-
dataPackFormat = 0;
59-
LOGGER.info("unable to parse data pack format from default data pack; using default value of " + dataPackFormat, e);
60-
}
61-
});
29+
public static void setDataPackFormat(int format) {
30+
if (dataPackFormat < 0) {
31+
dataPackFormat = format;
32+
}
6233
}
6334

6435
public static boolean addDefaultModPack(ModPack pack) {

0 commit comments

Comments
 (0)