1 pointYou should be pretty comfortable with rendering and computer graphics before attempting this. The best way to do this is to get your input data (the mountain), render it to a BufferBuilder (how you do it is tricky and up to you) and then render that BufferBuilder every frame in the RenderWorldLastEvent or your TESR. I have an example of how to render blocks this way at https://gist.github.com/Cadiboo/753607e41ca4e2ca9e0ce3b928bab5ef. Since your not rendering blocks, you don’t need to deal with a separate BufferBuilder for each render layer, and you can also just initialise the BufferBuilder statically (if the mountain data never changes) because you’re only concerned about your input data and nothing else. You might be interested in https://github.com/Cadiboo/NoCubes/blob/751bffc602cbf18859969227218b5a0fb256e5c6/src/main/java/io/github/cadiboo/nocubes/client/ClientEventSubscriber.java#L462 where I do something very like what you’re aiming for. Looking over that code, I’m not sure why I start & draw multiple times when only once is necessary. I’ll go fix it. I also do something very similar in https://github.com/Cadiboo/NoCubes/blob/751bffc602cbf18859969227218b5a0fb256e5c6/src/main/java/io/github/cadiboo/nocubes/client/render/RenderDispatcher.java#L365 however I don’t call draw each time. In this code I need to call draw and start in reverse order because of some weird side effects caused by BufferBuilder.noColor (which is called in the method right before my method that I have no control over). You likely won’t need to deal with this problem and should call start and draw in the moral order.
1 pointShort answer: with pain Long answer: You’re going to want to draw directly with the BufferBuilder in the RenderWorldLastEvent or a TESR.
0 pointsUpdate your forge version to the current version 1.13.2-25.0.209 yours is .149 Then provide logs, as described in the EAQ, to enable us to help you. Mods will only work with the matching version of Minecraft and Forge. In the EAQ there is more information about mods.