Skip to content

Commit

Permalink
[1.6.4] Fix vanilla pack.mcmeta getting overwritten by mods', often c…
Browse files Browse the repository at this point in the history
…ausing the game to crash
  • Loading branch information
thecatcore committed Jul 2, 2024
1 parent fc2b509 commit 6f68152
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 4 deletions.
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -20,4 +20,4 @@ legacy-fabric-networking-api-v1.version = 2.0.2
legacy-fabric-permissions-api-v1.version = 1.1.0
legacy-fabric-registry-sync-api-v1.version = 2.2.0
legacy-fabric-rendering-api-v1.version = 1.0.0
legacy-fabric-resource-loader-v1.version = 2.2.0
legacy-fabric-resource-loader-v1.version = 2.2.1
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,12 @@
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.Enumeration;

import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
Expand All @@ -32,6 +36,7 @@

import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.fabricmc.loader.api.FabricLoader;

@Environment(EnvType.CLIENT)
@Mixin(DefaultResourcePack.class)
Expand Down Expand Up @@ -72,4 +77,13 @@ protected void onFindInputStream(Identifier identifier, CallbackInfoReturnable<I
// Default path
}
}

@WrapOperation(method = "parseMetadata", at = @At(value = "INVOKE", target = "Ljava/lang/Class;getResourceAsStream(Ljava/lang/String;)Ljava/io/InputStream;"))
private InputStream fixPackMetaPath(Class instance, String e, Operation<InputStream> original) throws IOException {
Path path = FabricLoader.getInstance().getModContainer("minecraft").get().findPath(e).orElse(null);

if (path == null) return null;

return Files.newInputStream(path);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,11 @@
import java.util.List;

import com.google.common.collect.Lists;
import com.llamalad7.mixinextras.sugar.Local;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import org.spongepowered.asm.mixin.injection.callback.LocalCapture;

import net.minecraft.client.MinecraftClient;
import net.minecraft.resource.DefaultResourcePack;
Expand Down Expand Up @@ -63,8 +63,8 @@ private void fabric_modifyResourcePackList(List<ResourcePack> list) {
}
}

@Inject(method = "reloadResources", at = @At(value = "INVOKE", target = "Lnet/minecraft/resource/ReloadableResourceManager;reload(Ljava/util/List;)V", ordinal = 0), locals = LocalCapture.CAPTURE_FAILHARD)
public void reloadResources(CallbackInfo ci, ArrayList list) {
@Inject(method = "reloadResources", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/resource/language/LanguageManager;reloadResourceLanguages(Ljava/util/List;)V"))
public void reloadResources(CallbackInfo ci, @Local(ordinal = 0) ArrayList list) {
fabric_modifyResourcePackList(list);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"pack": {
"pack_format": 1,
"description": "Test pack.mcmeta"
}
}

0 comments on commit 6f68152

Please sign in to comment.