Partially revert fapi fix and simply ignore fapi packs in ReloadableResourceManagerImplMixin (at least for now)

This commit is contained in:
JFronny 2021-09-17 15:03:13 +02:00
parent 541a552ae2
commit 16abb81b15
No known key found for this signature in database
GPG Key ID: BEC5ACBBD4EE17E5
7 changed files with 7 additions and 97 deletions

View File

@ -6,7 +6,7 @@ minecraft_version=1.17.1
yarn_mappings=build.61
loader_version=0.11.6
# Mod Properties
mod_version=1.2.1
mod_version=1.2.2
maven_group=io.gitlab.jfronny
archives_base_name=libjf

View File

@ -1,11 +0,0 @@
package io.gitlab.jfronny.libjf.data;
import net.minecraft.resource.ResourceType;
import java.nio.file.Path;
public interface IModNioResourcePack {
Path getBasePath();
ResourceType getResourceType();
AutoCloseable getCloser();
}

View File

@ -1,16 +1,14 @@
package io.gitlab.jfronny.libjf.data;
import io.gitlab.jfronny.libjf.data.wrappedPackImpl.WrappedModNioResourcePack;
import io.gitlab.jfronny.libjf.data.wrappedPackImpl.WrappedResourcePack;
import net.fabricmc.fabric.impl.resource.loader.ModNioResourcePack;
import net.minecraft.resource.ResourcePack;
public interface WrappedPack extends ResourcePack {
ResourcePack getUnderlying();
static WrappedPack create(ResourcePack underlying) {
if (underlying instanceof ModNioResourcePack mi)
return new WrappedModNioResourcePack(mi);
//if (underlying instanceof ModNioResourcePack mi)
// return new WrappedModNioResourcePack(mi);
return new WrappedResourcePack(underlying);
}
}

View File

@ -1,47 +0,0 @@
package io.gitlab.jfronny.libjf.data.wrappedPackImpl;
import io.gitlab.jfronny.libjf.data.IModNioResourcePack;
import io.gitlab.jfronny.libjf.data.WrappedPack;
import net.fabricmc.fabric.impl.resource.loader.ModNioResourcePack;
import net.minecraft.resource.ResourcePack;
import net.minecraft.resource.ResourceType;
import net.minecraft.util.Identifier;
import java.io.IOException;
import java.io.InputStream;
import java.util.Collection;
import java.util.function.Predicate;
public class WrappedModNioResourcePack extends ModNioResourcePack implements WrappedPack {
private final ModNioResourcePack underlying;
public WrappedModNioResourcePack(ModNioResourcePack underlying) {
super(underlying.getFabricModMetadata(), ((IModNioResourcePack)underlying).getBasePath(), ((IModNioResourcePack)underlying).getResourceType(), ((IModNioResourcePack)underlying).getCloser(), underlying.getActivationType());
this.underlying = underlying;
}
@Override
public ResourcePack getUnderlying() {
return underlying;
}
@Override
public Collection<Identifier> findResources(ResourceType type, String namespace, String path, int depth, Predicate<String> predicate) {
return EventCallImpl.hookFindResources(this, type, namespace, path, depth, predicate);
}
@Override
public InputStream open(ResourceType type, Identifier id) throws IOException {
return EventCallImpl.hookOpen(this, type, id);
}
@Override
public boolean contains(ResourceType type, Identifier id) {
return EventCallImpl.hookContains(this, type, id);
}
@Override
public InputStream openRoot(String fileName) throws IOException {
return EventCallImpl.hookOpenRoot(this, fileName);
}
}

View File

@ -1,32 +0,0 @@
package io.gitlab.jfronny.libjf.mixin;
import io.gitlab.jfronny.libjf.data.IModNioResourcePack;
import net.fabricmc.fabric.impl.resource.loader.ModNioResourcePack;
import net.minecraft.resource.ResourceType;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import java.nio.file.Path;
@Mixin(ModNioResourcePack.class)
public class ModNioResourcePackMixin implements IModNioResourcePack {
@Shadow @Final private ResourceType type;
@Shadow @Final private AutoCloseable closer;
@Shadow @Final private Path basePath;
@Override
public Path getBasePath() {
return basePath;
}
@Override
public ResourceType getResourceType() {
return type;
}
@Override
public AutoCloseable getCloser() {
return closer;
}
}

View File

@ -1,6 +1,8 @@
package io.gitlab.jfronny.libjf.mixin;
import io.gitlab.jfronny.libjf.data.WrappedPack;
import net.fabricmc.fabric.impl.resource.loader.FabricModResourcePack;
import net.fabricmc.fabric.impl.resource.loader.ModNioResourcePack;
import net.minecraft.resource.ReloadableResourceManagerImpl;
import net.minecraft.resource.ResourcePack;
import org.spongepowered.asm.mixin.Mixin;
@ -11,7 +13,7 @@ import org.spongepowered.asm.mixin.injection.ModifyVariable;
public class ReloadableResourceManagerImplMixin {
@ModifyVariable(method = "addPack(Lnet/minecraft/resource/ResourcePack;)V", at = @At("HEAD"), argsOnly = true, ordinal = 0)
private ResourcePack modifyPack(ResourcePack pack) {
if (pack instanceof WrappedPack) {
if (pack instanceof WrappedPack || pack instanceof ModNioResourcePack || pack instanceof FabricModResourcePack) { //TODO use ASM for this to allow mod resource packs
return pack;
}
return WrappedPack.create(pack);

View File

@ -5,8 +5,8 @@
"compatibilityLevel": "JAVA_16",
"mixins": [
"EntityMixin",
"ModNioResourcePackMixin",
"RecipeManagerMixin",
"ReloadableResourceManagerImplMixin",
"ShulkerBoxBlockEntityMixin",
"ShulkerBoxSlotMixin"
],