]> git.lizzy.rs Git - BoundingBoxOutlineReloaded.git/blob - src/main/java/com/irtimaled/bbor/mixin/resource/MixinResourcePackManager.java
1.18.2-rc1
[BoundingBoxOutlineReloaded.git] / src / main / java / com / irtimaled / bbor / mixin / resource / MixinResourcePackManager.java
1 package com.irtimaled.bbor.mixin.resource;
2
3 import com.google.common.collect.ImmutableMap;
4 import net.minecraft.resource.DefaultResourcePack;
5 import net.minecraft.resource.ResourcePackManager;
6 import net.minecraft.resource.ResourcePackProfile;
7 import net.minecraft.resource.ResourcePackSource;
8 import net.minecraft.resource.VanillaDataPackProvider;
9 import org.spongepowered.asm.mixin.Final;
10 import org.spongepowered.asm.mixin.Mixin;
11 import org.spongepowered.asm.mixin.Shadow;
12 import org.spongepowered.asm.mixin.injection.At;
13 import org.spongepowered.asm.mixin.injection.Inject;
14 import org.spongepowered.asm.mixin.injection.Redirect;
15 import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
16
17 import java.util.Map;
18
19 @Mixin(ResourcePackManager.class)
20 public class MixinResourcePackManager {
21     private static final String BBOR = "bbor";
22     @Shadow
23     @Final
24     private ResourcePackProfile.Factory profileFactory;
25     private ResourcePackProfile resourcePackProfile;
26
27     @Inject(method = "<init>(Lnet/minecraft/resource/ResourcePackProfile$Factory;[Lnet/minecraft/resource/ResourcePackProvider;)V",
28             at = @At("RETURN"))
29     private void afterConstructor(CallbackInfo ci) {
30         resourcePackProfile = ResourcePackProfile.of(BBOR,
31                 true,
32                 () -> new DefaultResourcePack(VanillaDataPackProvider.DEFAULT_PACK_METADATA, BBOR),
33                 this.profileFactory,
34                 ResourcePackProfile.InsertionPosition.BOTTOM,
35                 ResourcePackSource.PACK_SOURCE_BUILTIN);
36     }
37
38     @Redirect(method = "providePackProfiles", at = @At(value = "INVOKE", target = "Lcom/google/common/collect/ImmutableMap;copyOf(Ljava/util/Map;)Lcom/google/common/collect/ImmutableMap;", remap = false))
39     private ImmutableMap<String, ResourcePackProfile> beforeReturn(Map<String, ResourcePackProfile> map) {
40         map.put(BBOR, resourcePackProfile);
41         return ImmutableMap.copyOf(map);
42     }
43 }