package net.fabricmc.fabric.api.client.rendering.v1;

import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.annotations.ApiStatus.NonExtendable;

@Environment(EnvType.CLIENT)
@NonExtendable
public interface FabricRenderState {
   default <T> @Nullable T getData(RenderStateDataKey<T> key) {
      throw new UnsupportedOperationException("Implemented via mixin");
   }

   default <T> T getDataOrDefault(RenderStateDataKey<T> key, T defaultValue) {
      throw new UnsupportedOperationException("Implemented via mixin");
   }

   default <T> void setData(RenderStateDataKey<T> key, @Nullable T value) {
      throw new UnsupportedOperationException("Implemented via mixin");
   }

   default void clearExtraData() {
      throw new UnsupportedOperationException("Implemented via mixin");
   }
}
