package net.fabricmc.fabric.impl.client.rendering.world;

import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.fabricmc.fabric.api.client.rendering.v1.world.AbstractWorldRenderContext;
import net.fabricmc.fabric.api.client.rendering.v1.world.WorldRenderContext;
import net.fabricmc.fabric.api.client.rendering.v1.world.WorldTerrainRenderContext;
import net.minecraft.class_11532;
import net.minecraft.class_11658;
import net.minecraft.class_11659;
import net.minecraft.class_4587;
import net.minecraft.class_4597;
import net.minecraft.class_757;
import net.minecraft.class_761;
import org.jetbrains.annotations.Nullable;

@Environment(EnvType.CLIENT)
public final class WorldRenderContextImpl implements AbstractWorldRenderContext, WorldTerrainRenderContext, WorldRenderContext {
   private class_757 gameRenderer;
   private class_761 worldRenderer;
   private class_11658 worldRenderState;
   private class_11532 sectionRenderState;
   private class_11659 commandQueue;
   private @Nullable class_4587 matrixStack;
   private class_4597 consumers;

   public void prepare(class_757 gameRenderer, class_761 worldRenderer, class_11658 worldRenderState, class_11532 sectionRenderState, class_11659 commandQueue, class_4597 consumers) {
      this.gameRenderer = gameRenderer;
      this.worldRenderer = worldRenderer;
      this.worldRenderState = worldRenderState;
      this.sectionRenderState = sectionRenderState;
      this.commandQueue = commandQueue;
      this.consumers = consumers;
      this.matrixStack = null;
   }

   public void setMatrixStack(@Nullable class_4587 matrixStack) {
      this.matrixStack = matrixStack;
   }

   public class_757 gameRenderer() {
      return this.gameRenderer;
   }

   public class_761 worldRenderer() {
      return this.worldRenderer;
   }

   public class_11658 worldState() {
      return this.worldRenderState;
   }

   public class_11532 sectionState() {
      return this.sectionRenderState;
   }

   public class_11659 commandQueue() {
      return this.commandQueue;
   }

   public @Nullable class_4587 matrices() {
      return this.matrixStack;
   }

   public class_4597 consumers() {
      return this.consumers;
   }
}
