feat: the start of the aurora!!!
it was pain send help
This commit is contained in:
parent
16b3eed261
commit
4ff7ee3f72
|
@ -0,0 +1,15 @@
|
|||
package me.theclashfruit.arctic.mixin;
|
||||
|
||||
import net.minecraft.client.render.WorldRenderer;
|
||||
import net.minecraft.client.world.ClientWorld;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.gen.Accessor;
|
||||
|
||||
@Mixin(WorldRenderer.class)
|
||||
public interface WorldRendererAccessor {
|
||||
@Accessor("world")
|
||||
ClientWorld getWorld();
|
||||
|
||||
@Accessor("world")
|
||||
void setWorld(ClientWorld world);
|
||||
}
|
|
@ -0,0 +1,87 @@
|
|||
package me.theclashfruit.arctic.mixin;
|
||||
|
||||
import com.mojang.blaze3d.systems.RenderSystem;
|
||||
import net.minecraft.client.gl.Framebuffer;
|
||||
import net.minecraft.client.gl.VertexBuffer;
|
||||
import net.minecraft.client.render.*;
|
||||
import net.minecraft.client.util.math.MatrixStack;
|
||||
import net.minecraft.client.world.ClientWorld;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.joml.Matrix4f;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.Unique;
|
||||
import org.spongepowered.asm.mixin.gen.Accessor;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Inject;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||
|
||||
@Mixin(WorldRenderer.class)
|
||||
public class WorldRendererMixin {
|
||||
@Nullable
|
||||
private VertexBuffer auroraBuffer;
|
||||
|
||||
@Inject(method = "<init>*", at = @At("TAIL"))
|
||||
public void WorldRenderer(CallbackInfo ci) {
|
||||
this.renderAurora();
|
||||
}
|
||||
|
||||
@Unique
|
||||
private void renderAurora() {
|
||||
Tessellator tessellator = Tessellator.getInstance();
|
||||
BufferBuilder bufferBuilder = tessellator.getBuffer();
|
||||
|
||||
RenderSystem.setShader(GameRenderer::getPositionProgram);
|
||||
|
||||
if (auroraBuffer != null) {
|
||||
auroraBuffer.close();
|
||||
}
|
||||
|
||||
auroraBuffer = new VertexBuffer(VertexBuffer.Usage.STATIC);
|
||||
|
||||
BufferBuilder.BuiltBuffer builtBuffer = renderAurora(bufferBuilder);
|
||||
|
||||
auroraBuffer.bind();
|
||||
auroraBuffer.upload(builtBuffer);
|
||||
|
||||
VertexBuffer.unbind();
|
||||
}
|
||||
|
||||
@Unique
|
||||
private BufferBuilder.BuiltBuffer renderAurora(BufferBuilder buffer) {
|
||||
buffer.begin(VertexFormat.DrawMode.DEBUG_LINES, VertexFormats.POSITION_COLOR);
|
||||
|
||||
// TODO: Make an actual thing
|
||||
float amplitude = 0.5f;
|
||||
float frequency = 1.5f;
|
||||
|
||||
for (int i = 0; i <= 100; i++) {
|
||||
float x = i * 0.1f;
|
||||
float y = amplitude * (float) Math.sin(frequency * x);
|
||||
float z = 5f;
|
||||
|
||||
buffer.vertex(x, y, z).color(0, 255, 0, 255).next();
|
||||
|
||||
x += 0.1f;
|
||||
|
||||
y = amplitude * (float) Math.sin(frequency * x);
|
||||
|
||||
buffer.vertex(x, y, z).color(0, 255, 0, 255).next();
|
||||
}
|
||||
|
||||
return buffer.end();
|
||||
}
|
||||
|
||||
@Inject(method = "renderSky(Lnet/minecraft/client/util/math/MatrixStack;Lorg/joml/Matrix4f;FLnet/minecraft/client/render/Camera;ZLjava/lang/Runnable;)V", at = @At("TAIL"))
|
||||
public void renderSky(MatrixStack matrices, Matrix4f projectionMatrix, float tickDelta, Camera camera, boolean thickFog, Runnable fogCallback, CallbackInfo ci) {
|
||||
float u = ((WorldRendererAccessor) this).getWorld().method_23787(tickDelta) * (1.0f - ((WorldRendererAccessor) this).getWorld().getRainGradient(tickDelta));
|
||||
|
||||
if (u > 0.0f) {
|
||||
RenderSystem.setShaderColor(u, u, u, u);
|
||||
BackgroundRenderer.clearFog();
|
||||
auroraBuffer.bind();
|
||||
auroraBuffer.draw(matrices.peek().getPositionMatrix(), projectionMatrix, GameRenderer.getPositionProgram());
|
||||
VertexBuffer.unbind();
|
||||
fogCallback.run();
|
||||
}
|
||||
}
|
||||
}
|
15
src/main/resources/arctic.mixins.json
Normal file
15
src/main/resources/arctic.mixins.json
Normal file
|
@ -0,0 +1,15 @@
|
|||
{
|
||||
"required": true,
|
||||
"minVersion": "0.8",
|
||||
"package": "me.theclashfruit.arctic.mixin",
|
||||
"compatibilityLevel": "JAVA_17",
|
||||
"mixins": [
|
||||
],
|
||||
"client": [
|
||||
"WorldRendererAccessor",
|
||||
"WorldRendererMixin"
|
||||
],
|
||||
"injectors": {
|
||||
"defaultRequire": 1
|
||||
}
|
||||
}
|
5
src/main/resources/assets/arctic/particles/aurora.json
Normal file
5
src/main/resources/assets/arctic/particles/aurora.json
Normal file
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
"textures": [
|
||||
"minecraft:dirt"
|
||||
]
|
||||
}
|
|
@ -24,6 +24,15 @@
|
|||
"me.theclashfruit.arctic.Arctic"
|
||||
]
|
||||
},
|
||||
"mixins": [
|
||||
"arctic.mixins.json"
|
||||
],
|
||||
"depends": {
|
||||
"fabricloader": ">=${loader_version}",
|
||||
"fabric": ">=${fabric_version}",
|
||||
"geckolib": ">=${geckolib_version}",
|
||||
"minecraft": "${minecraft_version}"
|
||||
},
|
||||
"custom": {
|
||||
"modmenu": {
|
||||
"links": {
|
||||
|
@ -31,11 +40,5 @@
|
|||
},
|
||||
"update_checker": true
|
||||
}
|
||||
},
|
||||
"depends": {
|
||||
"fabricloader": ">=${loader_version}",
|
||||
"fabric": ">=${fabric_version}",
|
||||
"geckolib": ">=${geckolib_version}",
|
||||
"minecraft": "${minecraft_version}"
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue