fabric-renderer-api-v1-7.2.3+9be2a36e6f.jar

Download file
    package net.fabricmc.fabric.mixin.renderer.client.sprite;

import java.util.Map;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.fabricmc.fabric.api.renderer.v1.model.SpriteFinder;
import net.fabricmc.fabric.api.renderer.v1.sprite.FabricSpriteAtlasTexture;
import net.fabricmc.fabric.impl.renderer.SpriteFinderImpl;
import net.fabricmc.fabric.impl.renderer.StitchResultExtension;
import net.minecraft.class_1058;
import net.minecraft.class_1059;
import net.minecraft.class_2960;
import net.minecraft.class_7766;
import org.jetbrains.annotations.Nullable;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.Unique;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;

@Environment(EnvType.CLIENT)
@Mixin({class_1059.class})
abstract class SpriteAtlasTextureMixin implements FabricSpriteAtlasTexture {
   @Shadow
   @Final
   private Map<class_2960, class_1058> field_5280;
   @Shadow
   @Final
   private @Nullable class_1058 field_46207;
   @Unique
   private volatile @Nullable SpriteFinder spriteFinder;

   @Inject(
      at = {@At("RETURN")},
      method = {"method_45848(Lnet/minecraft/class_7766$class_7767;)V"}
   )
   private void uploadHook(class_7766.class_7767 stitchResult, CallbackInfo ci) {
      this.spriteFinder = ((StitchResultExtension)stitchResult).fabric_spriteFinderNullable();
   }

   public SpriteFinder spriteFinder() {
      SpriteFinder result = this.spriteFinder;
      if (result == null) {
         synchronized(this) {
            result = this.spriteFinder;
            if (result == null) {
               if (this.field_46207 == null) {
                  throw new IllegalStateException("Tried to create sprite finder, but atlas is not initialized");
               }

               this.spriteFinder = result = new SpriteFinderImpl(this.field_5280, this.field_46207);
            }
         }
      }

      return result;
   }
}
    
Download file