Bandaid fix resources not being loade for june
[no changelog]
This commit is contained in:
1
.minecraft
Symbolic link
1
.minecraft
Symbolic link
@@ -0,0 +1 @@
|
||||
/home/nea/.local/share/PrismLauncher/instances/livid fucking dies/.minecraft/
|
||||
@@ -0,0 +1,30 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2024 Linnea Gräf <nea@nea.moe>
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
*/
|
||||
|
||||
package moe.nea.firmament.mixins;
|
||||
|
||||
import com.llamalad7.mixinextras.injector.ModifyReturnValue;
|
||||
import com.llamalad7.mixinextras.sugar.Local;
|
||||
import moe.nea.firmament.repo.RepoModResourcePack;
|
||||
import net.minecraft.resource.ReloadableResourceManagerImpl;
|
||||
import net.minecraft.resource.Resource;
|
||||
import net.minecraft.util.Identifier;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
@Mixin(ReloadableResourceManagerImpl.class)
|
||||
public class BandAidResourcePackPatch {
|
||||
|
||||
@ModifyReturnValue(
|
||||
method = "getResource",
|
||||
at = @At("RETURN")
|
||||
)
|
||||
private Optional<Resource> injectOurCustomResourcesInCaseExistingMethodsFailed(Optional<Resource> original, @Local Identifier identifier) {
|
||||
return original.or(() -> RepoModResourcePack.Companion.createResourceDirectly(identifier));
|
||||
}
|
||||
}
|
||||
@@ -9,6 +9,7 @@ package moe.nea.firmament.repo
|
||||
import java.io.InputStream
|
||||
import java.nio.file.Files
|
||||
import java.nio.file.Path
|
||||
import java.util.*
|
||||
import net.fabricmc.fabric.api.resource.ModResourcePack
|
||||
import net.fabricmc.loader.api.FabricLoader
|
||||
import net.fabricmc.loader.api.metadata.ModMetadata
|
||||
@@ -18,17 +19,39 @@ import kotlin.io.path.relativeTo
|
||||
import kotlin.streams.asSequence
|
||||
import net.minecraft.resource.AbstractFileResourcePack
|
||||
import net.minecraft.resource.InputSupplier
|
||||
import net.minecraft.resource.NamespaceResourceManager
|
||||
import net.minecraft.resource.Resource
|
||||
import net.minecraft.resource.ResourcePack
|
||||
import net.minecraft.resource.ResourceType
|
||||
import net.minecraft.resource.metadata.ResourceMetadata
|
||||
import net.minecraft.resource.metadata.ResourceMetadataReader
|
||||
import net.minecraft.util.Identifier
|
||||
import net.minecraft.util.PathUtil
|
||||
import moe.nea.firmament.Firmament
|
||||
|
||||
class RepoModResourcePack(val basePath: Path) : ModResourcePack {
|
||||
companion object {
|
||||
fun append(packs: MutableList<in ModResourcePack>) {
|
||||
Firmament.logger.info("Registering mod resource pack")
|
||||
packs.add(RepoModResourcePack(RepoDownloadManager.repoSavedLocation))
|
||||
}
|
||||
|
||||
fun createResourceDirectly(identifier: Identifier): Optional<Resource> {
|
||||
val pack = RepoModResourcePack(RepoDownloadManager.repoSavedLocation)
|
||||
return Optional.of(
|
||||
Resource(
|
||||
pack,
|
||||
pack.open(ResourceType.CLIENT_RESOURCES, identifier) ?: return Optional.empty()
|
||||
) {
|
||||
val base =
|
||||
pack.open(ResourceType.CLIENT_RESOURCES, identifier.withPath(identifier.path + ".mcmeta"))
|
||||
if (base == null)
|
||||
ResourceMetadata.NONE
|
||||
else
|
||||
NamespaceResourceManager.loadMetadata(base)
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
override fun close() {
|
||||
|
||||
@@ -14,3 +14,4 @@ accessible method net/minecraft/entity/decoration/ArmorStandEntity setSmall (Z)V
|
||||
accessible field net/minecraft/entity/passive/AbstractHorseEntity items Lnet/minecraft/inventory/SimpleInventory;
|
||||
accessible field net/minecraft/entity/passive/AbstractHorseEntity SADDLED_FLAG I
|
||||
accessible field net/minecraft/entity/passive/AbstractHorseEntity HORSE_FLAGS Lnet/minecraft/entity/data/TrackedData;
|
||||
accessible method net/minecraft/resource/NamespaceResourceManager loadMetadata (Lnet/minecraft/resource/InputSupplier;)Lnet/minecraft/resource/metadata/ResourceMetadata;
|
||||
|
||||
Reference in New Issue
Block a user