mirror of
https://github.com/JonasunderscoreJones/nicer-skies.git
synced 2025-10-22 19:29:18 +02:00
change: only generate activated/used parts of the sky
This commit is contained in:
parent
7d45460af4
commit
ae12b15da1
4 changed files with 57 additions and 18 deletions
|
@ -0,0 +1,15 @@
|
|||
package codes.ztereohype.nicerskies.mixin;
|
||||
|
||||
import com.mojang.blaze3d.vertex.VertexBuffer;
|
||||
import net.minecraft.client.renderer.LevelRenderer;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.gen.Accessor;
|
||||
|
||||
@Mixin(LevelRenderer.class)
|
||||
public interface LevelRendererAccessor {
|
||||
@Accessor("starBuffer")
|
||||
VertexBuffer getStarBuffer();
|
||||
|
||||
@Accessor("ticks")
|
||||
int getTicks();
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
package codes.ztereohype.nicerskies.mixin;
|
||||
|
||||
import net.minecraft.client.renderer.LevelRenderer;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.gen.Invoker;
|
||||
|
||||
@Mixin(LevelRenderer.class)
|
||||
public interface LevelRendererInvoker {
|
||||
@Invoker("createStars")
|
||||
void nicerSkies_generateSky();
|
||||
}
|
|
@ -3,11 +3,13 @@ package codes.ztereohype.nicerskies.sky;
|
|||
import codes.ztereohype.nicerskies.NicerSkies;
|
||||
import codes.ztereohype.nicerskies.config.ConfigManager;
|
||||
import codes.ztereohype.nicerskies.core.Gradient;
|
||||
import codes.ztereohype.nicerskies.mixin.LevelRendererAccessor;
|
||||
import codes.ztereohype.nicerskies.mixin.LevelRendererInvoker;
|
||||
import codes.ztereohype.nicerskies.sky.nebula.NebulaSkyboxPainter;
|
||||
import codes.ztereohype.nicerskies.sky.nebula.Skybox;
|
||||
import codes.ztereohype.nicerskies.sky.star.Starbox;
|
||||
import com.mojang.blaze3d.vertex.VertexBuffer;
|
||||
import lombok.Getter;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.util.RandomSource;
|
||||
import net.minecraft.world.level.levelgen.synth.PerlinNoise;
|
||||
|
||||
|
@ -16,12 +18,11 @@ import java.util.stream.IntStream;
|
|||
public class SkyManager {
|
||||
private @Getter Starbox starbox;
|
||||
private @Getter Skybox skybox;
|
||||
private @Getter boolean isInitialized = false;
|
||||
|
||||
private final Gradient starGradient = new Gradient();
|
||||
private final Gradient nebulaGradient = new Gradient();
|
||||
|
||||
public void generateSky(long seed) {
|
||||
public void generateSky(long seed, boolean starsEnabled, boolean nebulaEnabled) {
|
||||
ConfigManager cm = NicerSkies.config;
|
||||
|
||||
nebulaGradient.clear();
|
||||
|
@ -31,16 +32,26 @@ public class SkyManager {
|
|||
|
||||
RandomSource randomSource = RandomSource.create(seed);
|
||||
|
||||
PerlinNoise perlinNoise = PerlinNoise.create(randomSource, IntStream.of(1, 2, 3, 4, 5));
|
||||
NebulaSkyboxPainter painter = new NebulaSkyboxPainter(perlinNoise, nebulaGradient, cm.getNebulaNoiseScale(), cm.getNebulaNoiseAmount(), cm.getNebulaBaseColourAmount());
|
||||
if (nebulaEnabled) {
|
||||
PerlinNoise perlinNoise = PerlinNoise.create(randomSource.fork(), IntStream.of(1, 2, 3, 4, 5, 6, 7));
|
||||
NebulaSkyboxPainter painter = new NebulaSkyboxPainter(perlinNoise, nebulaGradient, cm.getNebulaNoiseScale(), cm.getNebulaNoiseAmount(), cm.getNebulaBaseColourAmount());
|
||||
this.skybox = new Skybox(painter);
|
||||
}
|
||||
|
||||
this.starbox = new Starbox(randomSource, starGradient);
|
||||
this.skybox = new Skybox(painter);
|
||||
if (starsEnabled) {
|
||||
LevelRendererAccessor levelRenderer = (LevelRendererAccessor) Minecraft.getInstance().levelRenderer;
|
||||
starbox = new Starbox(randomSource, starGradient, levelRenderer.getStarBuffer());
|
||||
tick(levelRenderer.getTicks());
|
||||
} else {
|
||||
|
||||
((LevelRendererInvoker)Minecraft.getInstance().levelRenderer).nicerSkies_generateSky();
|
||||
}
|
||||
}
|
||||
|
||||
public void tick(int ticks, VertexBuffer starBuffer) {
|
||||
this.starbox.updateStars(ticks, starBuffer);
|
||||
this.isInitialized = true;
|
||||
public void tick(int ticks) {
|
||||
if (starbox != null) {
|
||||
this.starbox.updateStars(ticks);
|
||||
}
|
||||
}
|
||||
|
||||
public void buildGradients() {
|
||||
|
@ -48,10 +59,10 @@ public class SkyManager {
|
|||
starGradient.add(0.2f, 255, 249, 253);
|
||||
starGradient.add(1.0f, 175, 199, 255);
|
||||
|
||||
nebulaGradient.add(0.2f, 41, 98, 146);
|
||||
nebulaGradient.add(0.5f, 120, 59, 93);
|
||||
nebulaGradient.add(0.7f, 209, 72, 103);
|
||||
nebulaGradient.add(0.8f, 255, 200, 123);
|
||||
nebulaGradient.add(1.0f, 253, 243, 220);
|
||||
nebulaGradient.add(0.2f, 41, 83, 146);
|
||||
nebulaGradient.add(0.5f, 120, 47, 93);
|
||||
nebulaGradient.add(0.7f, 209, 58, 103);
|
||||
nebulaGradient.add(0.8f, 255, 160, 123);
|
||||
nebulaGradient.add(1.0f, 253, 194, 220);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5,10 +5,12 @@
|
|||
"compatibilityLevel": "JAVA_17",
|
||||
"mixins": [],
|
||||
"client": [
|
||||
"ClientLevelMixin",
|
||||
"LevelRendererAccessor",
|
||||
"LevelRendererInvoker",
|
||||
"MinecraftMixin",
|
||||
"MixinLightTexutre",
|
||||
"MixinStarRendering",
|
||||
"ClientLevelMixin"
|
||||
"LightTextureMixin",
|
||||
"LevelRendererMixin"
|
||||
],
|
||||
"server": [],
|
||||
"injectors": {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue