1 package com.irtimaled.bbor.mixin.resource;
3 import com.google.common.collect.ImmutableMap;
4 import net.minecraft.resource.*;
5 import org.spongepowered.asm.mixin.Final;
6 import org.spongepowered.asm.mixin.Mixin;
7 import org.spongepowered.asm.mixin.Shadow;
8 import org.spongepowered.asm.mixin.injection.At;
9 import org.spongepowered.asm.mixin.injection.Inject;
10 import org.spongepowered.asm.mixin.injection.Redirect;
11 import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
15 @Mixin(ResourcePackManager.class)
16 public class MixinResourcePackManager {
17 private static final String BBOR = "bbor";
20 private ResourcePackProfile.Factory profileFactory;
21 private ResourcePackProfile resourcePackProfile;
23 @Inject(method = "<init>(Lnet/minecraft/resource/ResourcePackProfile$Factory;[Lnet/minecraft/resource/ResourcePackProvider;)V",
25 private void afterConstructor(CallbackInfo ci) {
26 resourcePackProfile = ResourcePackProfile.of(BBOR,
28 () -> new DefaultResourcePack(VanillaDataPackProvider.DEFAULT_PACK_METADATA, BBOR),
30 ResourcePackProfile.InsertionPosition.BOTTOM,
31 ResourcePackSource.PACK_SOURCE_BUILTIN);
34 @Redirect(method = "providePackProfiles", at = @At(value = "INVOKE", target = "Lcom/google/common/collect/ImmutableMap;copyOf(Ljava/util/Map;)Lcom/google/common/collect/ImmutableMap;"))
35 private ImmutableMap<String, ResourcePackProfile> beforeReturn(Map<String, ResourcePackProfile> map) {
36 map.put(BBOR, resourcePackProfile);
37 return ImmutableMap.copyOf(map);