Spaces:
Build error
Build error
File size: 5,243 Bytes
d46f4a3 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 |
package net.minecraft.client.renderer;
import it.unimi.dsi.fastutil.objects.Object2ObjectArrayMap;
import it.unimi.dsi.fastutil.objects.Object2ObjectMap;
import net.minecraft.Util;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.util.ARGB;
import net.minecraft.util.Mth;
import net.minecraft.world.level.dimension.BuiltinDimensionTypes;
import net.minecraft.world.level.dimension.DimensionType;
import net.minecraft.world.phys.Vec3;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
@OnlyIn(Dist.CLIENT)
public abstract class DimensionSpecialEffects {
private static final Object2ObjectMap<ResourceLocation, DimensionSpecialEffects> EFFECTS = Util.make(new Object2ObjectArrayMap<>(), p_108881_ -> {
DimensionSpecialEffects.OverworldEffects dimensionspecialeffects$overworldeffects = new DimensionSpecialEffects.OverworldEffects();
p_108881_.defaultReturnValue(dimensionspecialeffects$overworldeffects);
p_108881_.put(BuiltinDimensionTypes.OVERWORLD_EFFECTS, dimensionspecialeffects$overworldeffects);
p_108881_.put(BuiltinDimensionTypes.NETHER_EFFECTS, new DimensionSpecialEffects.NetherEffects());
p_108881_.put(BuiltinDimensionTypes.END_EFFECTS, new DimensionSpecialEffects.EndEffects());
});
private final float cloudLevel;
private final boolean hasGround;
private final DimensionSpecialEffects.SkyType skyType;
private final boolean forceBrightLightmap;
private final boolean constantAmbientLight;
public DimensionSpecialEffects(float p_108866_, boolean p_108867_, DimensionSpecialEffects.SkyType p_108868_, boolean p_108869_, boolean p_108870_) {
this.cloudLevel = p_108866_;
this.hasGround = p_108867_;
this.skyType = p_108868_;
this.forceBrightLightmap = p_108869_;
this.constantAmbientLight = p_108870_;
}
public static DimensionSpecialEffects forType(DimensionType p_108877_) {
return EFFECTS.get(p_108877_.effectsLocation());
}
public boolean isSunriseOrSunset(float p_361903_) {
return false;
}
public int getSunriseOrSunsetColor(float p_367777_) {
return 0;
}
public float getCloudHeight() {
return this.cloudLevel;
}
public boolean hasGround() {
return this.hasGround;
}
public abstract Vec3 getBrightnessDependentFogColor(Vec3 p_108878_, float p_108879_);
public abstract boolean isFoggyAt(int p_108874_, int p_108875_);
public DimensionSpecialEffects.SkyType skyType() {
return this.skyType;
}
public boolean forceBrightLightmap() {
return this.forceBrightLightmap;
}
public boolean constantAmbientLight() {
return this.constantAmbientLight;
}
@OnlyIn(Dist.CLIENT)
public static class EndEffects extends DimensionSpecialEffects {
public EndEffects() {
super(Float.NaN, false, DimensionSpecialEffects.SkyType.END, true, false);
}
@Override
public Vec3 getBrightnessDependentFogColor(Vec3 p_108894_, float p_108895_) {
return p_108894_.scale(0.15F);
}
@Override
public boolean isFoggyAt(int p_108891_, int p_108892_) {
return false;
}
}
@OnlyIn(Dist.CLIENT)
public static class NetherEffects extends DimensionSpecialEffects {
public NetherEffects() {
super(Float.NaN, true, DimensionSpecialEffects.SkyType.NONE, false, true);
}
@Override
public Vec3 getBrightnessDependentFogColor(Vec3 p_108901_, float p_108902_) {
return p_108901_;
}
@Override
public boolean isFoggyAt(int p_108898_, int p_108899_) {
return true;
}
}
@OnlyIn(Dist.CLIENT)
public static class OverworldEffects extends DimensionSpecialEffects {
public static final int CLOUD_LEVEL = 192;
private static final float SUNRISE_AND_SUNSET_TIMESPAN = 0.4F;
public OverworldEffects() {
super(192.0F, true, DimensionSpecialEffects.SkyType.OVERWORLD, false, false);
}
@Override
public boolean isSunriseOrSunset(float p_364112_) {
float f = Mth.cos(p_364112_ * (float) (Math.PI * 2));
return f >= -0.4F && f <= 0.4F;
}
@Override
public int getSunriseOrSunsetColor(float p_362545_) {
float f = Mth.cos(p_362545_ * (float) (Math.PI * 2));
float f1 = f / 0.4F * 0.5F + 0.5F;
float f2 = Mth.square(1.0F - (1.0F - Mth.sin(f1 * (float) Math.PI)) * 0.99F);
return ARGB.colorFromFloat(f2, f1 * 0.3F + 0.7F, f1 * f1 * 0.7F + 0.2F, 0.2F);
}
@Override
public Vec3 getBrightnessDependentFogColor(Vec3 p_108908_, float p_108909_) {
return p_108908_.multiply((double)(p_108909_ * 0.94F + 0.06F), (double)(p_108909_ * 0.94F + 0.06F), (double)(p_108909_ * 0.91F + 0.09F));
}
@Override
public boolean isFoggyAt(int p_108905_, int p_108906_) {
return false;
}
}
@OnlyIn(Dist.CLIENT)
public static enum SkyType {
NONE,
OVERWORLD,
END;
}
} |