2022-07-08 00:34:51 +02:00
|
|
|
/*
|
|
|
|
|
* Copyright (c) Forge Development LLC and contributors
|
|
|
|
|
* SPDX-License-Identifier: LGPL-2.1-only
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
package net.minecraftforge.client;
|
|
|
|
|
|
|
|
|
|
import net.minecraft.client.renderer.DimensionSpecialEffects;
|
|
|
|
|
import net.minecraft.resources.ResourceLocation;
|
|
|
|
|
import net.minecraft.world.level.dimension.BuiltinDimensionTypes;
|
|
|
|
|
import net.minecraftforge.client.event.RegisterDimensionSpecialEffectsEvent;
|
|
|
|
|
import net.minecraftforge.fml.ModLoader;
|
|
|
|
|
import org.jetbrains.annotations.ApiStatus;
|
|
|
|
|
|
|
|
|
|
import java.util.HashMap;
|
|
|
|
|
import java.util.Map;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Manager for {@link DimensionSpecialEffects} instances.
|
|
|
|
|
* <p>
|
|
|
|
|
* Provides a lookup by dimension type.
|
|
|
|
|
*/
|
2024-10-25 17:52:16 -07:00
|
|
|
public final class DimensionSpecialEffectsManager {
|
2025-06-20 18:22:53 +01:00
|
|
|
private DimensionSpecialEffectsManager() {}
|
|
|
|
|
|
|
|
|
|
private static Map<ResourceLocation, DimensionSpecialEffects> EFFECTS;
|
2022-07-08 00:34:51 +02:00
|
|
|
private static DimensionSpecialEffects DEFAULT_EFFECTS;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Finds the {@link DimensionSpecialEffects} for a given dimension type, or the default if none is registered.
|
|
|
|
|
*/
|
2024-10-25 17:52:16 -07:00
|
|
|
public static DimensionSpecialEffects getForType(ResourceLocation type) {
|
2022-07-08 00:34:51 +02:00
|
|
|
return EFFECTS.getOrDefault(type, DEFAULT_EFFECTS);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ApiStatus.Internal
|
2024-10-25 17:52:16 -07:00
|
|
|
public static void init() {
|
2022-07-08 00:34:51 +02:00
|
|
|
var effects = new HashMap<ResourceLocation, DimensionSpecialEffects>();
|
|
|
|
|
DEFAULT_EFFECTS = preRegisterVanillaEffects(effects);
|
|
|
|
|
var event = new RegisterDimensionSpecialEffectsEvent(effects);
|
2023-05-14 16:53:34 -04:00
|
|
|
ModLoader.get().postEventWrapContainerInModOrder(event);
|
2025-06-20 18:22:53 +01:00
|
|
|
EFFECTS = Map.copyOf(effects);
|
2022-07-08 00:34:51 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Pre-registers vanilla dimension effects and returns the default fallback effects instance.
|
|
|
|
|
* <p>
|
|
|
|
|
* Borrowed from {@link DimensionSpecialEffects#EFFECTS}.
|
|
|
|
|
*/
|
2024-10-25 17:52:16 -07:00
|
|
|
private static DimensionSpecialEffects preRegisterVanillaEffects(Map<ResourceLocation, DimensionSpecialEffects> effects) {
|
2022-07-08 00:34:51 +02:00
|
|
|
var overworldEffects = new DimensionSpecialEffects.OverworldEffects();
|
|
|
|
|
effects.put(BuiltinDimensionTypes.OVERWORLD_EFFECTS, overworldEffects);
|
|
|
|
|
effects.put(BuiltinDimensionTypes.NETHER_EFFECTS, new DimensionSpecialEffects.NetherEffects());
|
|
|
|
|
effects.put(BuiltinDimensionTypes.END_EFFECTS, new DimensionSpecialEffects.EndEffects());
|
|
|
|
|
return overworldEffects;
|
|
|
|
|
}
|
|
|
|
|
}
|