package net.minecraft.client.renderer; import com.mojang.blaze3d.pipeline.RenderTarget; import com.mojang.blaze3d.resource.ResourceHandle; import java.util.Set; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.resources.ResourceLocation; import org.jetbrains.annotations.Nullable; @Environment(EnvType.CLIENT) public class LevelTargetBundle implements PostChain.TargetBundle { public static final ResourceLocation MAIN_TARGET_ID = PostChain.MAIN_TARGET_ID; public static final ResourceLocation TRANSLUCENT_TARGET_ID = ResourceLocation.withDefaultNamespace("translucent"); public static final ResourceLocation ITEM_ENTITY_TARGET_ID = ResourceLocation.withDefaultNamespace("item_entity"); public static final ResourceLocation PARTICLES_TARGET_ID = ResourceLocation.withDefaultNamespace("particles"); public static final ResourceLocation WEATHER_TARGET_ID = ResourceLocation.withDefaultNamespace("weather"); public static final ResourceLocation CLOUDS_TARGET_ID = ResourceLocation.withDefaultNamespace("clouds"); public static final ResourceLocation ENTITY_OUTLINE_TARGET_ID = ResourceLocation.withDefaultNamespace("entity_outline"); public static final Set MAIN_TARGETS = Set.of(MAIN_TARGET_ID); public static final Set OUTLINE_TARGETS = Set.of(MAIN_TARGET_ID, ENTITY_OUTLINE_TARGET_ID); public static final Set SORTING_TARGETS = Set.of( MAIN_TARGET_ID, TRANSLUCENT_TARGET_ID, ITEM_ENTITY_TARGET_ID, PARTICLES_TARGET_ID, WEATHER_TARGET_ID, CLOUDS_TARGET_ID ); public ResourceHandle main = ResourceHandle.invalid(); @Nullable public ResourceHandle translucent; @Nullable public ResourceHandle itemEntity; @Nullable public ResourceHandle particles; @Nullable public ResourceHandle weather; @Nullable public ResourceHandle clouds; @Nullable public ResourceHandle entityOutline; @Override public void replace(ResourceLocation id, ResourceHandle handle) { if (id.equals(MAIN_TARGET_ID)) { this.main = handle; } else if (id.equals(TRANSLUCENT_TARGET_ID)) { this.translucent = handle; } else if (id.equals(ITEM_ENTITY_TARGET_ID)) { this.itemEntity = handle; } else if (id.equals(PARTICLES_TARGET_ID)) { this.particles = handle; } else if (id.equals(WEATHER_TARGET_ID)) { this.weather = handle; } else if (id.equals(CLOUDS_TARGET_ID)) { this.clouds = handle; } else { if (!id.equals(ENTITY_OUTLINE_TARGET_ID)) { throw new IllegalArgumentException("No target with id " + id); } this.entityOutline = handle; } } @Nullable @Override public ResourceHandle get(ResourceLocation id) { if (id.equals(MAIN_TARGET_ID)) { return this.main; } else if (id.equals(TRANSLUCENT_TARGET_ID)) { return this.translucent; } else if (id.equals(ITEM_ENTITY_TARGET_ID)) { return this.itemEntity; } else if (id.equals(PARTICLES_TARGET_ID)) { return this.particles; } else if (id.equals(WEATHER_TARGET_ID)) { return this.weather; } else if (id.equals(CLOUDS_TARGET_ID)) { return this.clouds; } else { return id.equals(ENTITY_OUTLINE_TARGET_ID) ? this.entityOutline : null; } } public void clear() { this.main = ResourceHandle.invalid(); this.translucent = null; this.itemEntity = null; this.particles = null; this.weather = null; this.clouds = null; this.entityOutline = null; } }