further datapack loading tweaks

This commit is contained in:
asie 2018-11-29 10:07:10 +01:00
parent cc48548ff9
commit 73c6a2a9c2
5 changed files with 24 additions and 20 deletions

View file

@ -45,15 +45,6 @@ public class MixinMinecraftServer {
@Inject(method = "method_3800", at = @At(value = "INVOKE", target = "Lnet/minecraft/class_3283;method_14443(Lnet/minecraft/class_3285;)V", ordinal = 1))
public void method_3800(File file, LevelProperties properties, CallbackInfo info) {
// TODO: "vanilla" does not emit a message; neither should a modded datapack
List<ResourcePack> packs = new ArrayList<>();
ModResourcePackUtil.appendModResourcePacks(packs, ResourceType.DATA);
for (ResourcePack pack : packs) {
if (!(pack instanceof ModResourcePack)) {
throw new RuntimeException("Not a ModResourcePack!");
}
field_4595.method_14443(new ModDataPackSupplier((ModResourcePack) pack));
}
field_4595.method_14443(new ModDataPackSupplier());
}
}

View file

@ -18,23 +18,30 @@ package net.fabricmc.fabric.resources;
import net.minecraft.class_3285;
import net.minecraft.class_3288;
import net.minecraft.resource.ResourcePack;
import net.minecraft.resource.ResourceType;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
public class ModDataPackSupplier implements class_3285 {
private final ModResourcePack pack;
public ModDataPackSupplier(ModResourcePack pack) {
this.pack = pack;
}
@Override
public <T extends class_3288> void method_14453(Map<String, T> map, class_3288.class_3290<T> class_3290) {
T var3 = class_3288.method_14456("fabric:" + pack.getModInfo().getId(),
false, () -> this.pack, class_3290, class_3288.class_3289.BOTTOM);
// TODO: "vanilla" does not emit a message; neither should a modded datapack
List<ResourcePack> packs = new ArrayList<>();
ModResourcePackUtil.appendModResourcePacks(packs, ResourceType.DATA);
for (ResourcePack pack : packs) {
if (!(pack instanceof ModResourcePack)) {
throw new RuntimeException("Not a ModResourcePack!");
}
if (var3 != null) {
map.put(var3.method_14463(), var3);
T var3 = class_3288.method_14456("fabric/" + ((ModResourcePack) pack).getModInfo().getId(),
false, () -> pack, class_3290, class_3288.class_3289.BOTTOM);
if (var3 != null) {
map.put(var3.method_14463(), var3);
}
}
}
}

View file

@ -19,6 +19,7 @@ package net.fabricmc.fabric.resources;
import net.fabricmc.loader.ModInfo;
import net.minecraft.resource.DirectoryResourcePack;
import net.minecraft.resource.ResourceNotFoundException;
import net.minecraft.resource.ResourceType;
import java.io.*;

View file

@ -18,7 +18,11 @@ package net.fabricmc.fabric.resources;
import net.fabricmc.loader.ModInfo;
import net.minecraft.resource.ResourcePack;
import net.minecraft.resource.ResourceType;
public interface ModResourcePack extends ResourcePack {
ModInfo getModInfo();
default boolean provides(ResourceType type) {
return true;
}
}

View file

@ -19,6 +19,7 @@ package net.fabricmc.fabric.resources;
import com.google.common.io.ByteStreams;
import net.fabricmc.loader.ModInfo;
import net.minecraft.resource.ResourceNotFoundException;
import net.minecraft.resource.ResourceType;
import net.minecraft.resource.ZipResourcePack;
import java.io.File;