|
4 | 4 | import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; |
5 | 5 | import jp.s12kuma01.celeritasextra.client.CeleritasExtraClientMod; |
6 | 6 | import jp.s12kuma01.celeritasextra.client.RenderStars; |
| 7 | +import net.minecraft.client.renderer.BufferBuilder; |
7 | 8 | import net.minecraft.client.renderer.RenderGlobal; |
| 9 | +import net.minecraft.client.renderer.Tessellator; |
| 10 | +import net.minecraft.client.renderer.vertex.DefaultVertexFormats; |
| 11 | +import net.minecraft.client.renderer.vertex.VertexBuffer; |
| 12 | +import net.minecraft.client.renderer.vertex.VertexFormat; |
8 | 13 | import net.minecraft.world.World; |
9 | 14 | import org.spongepowered.asm.mixin.Mixin; |
10 | 15 | import org.spongepowered.asm.mixin.Overwrite; |
11 | | -import org.spongepowered.asm.mixin.Unique; |
| 16 | +import org.spongepowered.asm.mixin.Shadow; |
12 | 17 | import org.spongepowered.asm.mixin.injection.At; |
13 | 18 |
|
14 | 19 | /** |
|
19 | 24 | @Mixin(RenderGlobal.class) |
20 | 25 | public class MixinRenderGlobalStars { |
21 | 26 |
|
22 | | - @Unique |
23 | | - private int celeritasExtra$prevTotalStars = -1; |
| 27 | + @Shadow |
| 28 | + private VertexBuffer starVBO; |
| 29 | + |
| 30 | + @Shadow |
| 31 | + private VertexFormat vertexBufferFormat; |
24 | 32 |
|
25 | 33 | /** |
26 | 34 | * Control star rendering by wrapping the star brightness calculation. |
@@ -49,7 +57,22 @@ private float wrapGetStarBrightness(World world, float partialTicks, Operation<F |
49 | 57 | */ |
50 | 58 | @Overwrite |
51 | 59 | private void generateStars() { |
| 60 | + Tessellator tessellator = Tessellator.getInstance(); |
| 61 | + BufferBuilder buffer = tessellator.getBuffer(); |
| 62 | + |
| 63 | + if (this.starVBO != null) { |
| 64 | + this.starVBO.deleteGlBuffers(); |
| 65 | + } |
| 66 | + |
| 67 | + this.starVBO = new VertexBuffer(this.vertexBufferFormat); |
| 68 | + |
| 69 | + buffer.begin(7, DefaultVertexFormats.POSITION); |
| 70 | + |
52 | 71 | int totalStars = CeleritasExtraClientMod.options().detailSettings.totalStars; |
53 | | - RenderStars.generateStars(totalStars); |
| 72 | + RenderStars.generateStars(buffer, totalStars); |
| 73 | + |
| 74 | + buffer.finishDrawing(); |
| 75 | + buffer.reset(); |
| 76 | + this.starVBO.bufferData(buffer.getByteBuffer()); |
54 | 77 | } |
55 | 78 | } |
0 commit comments