aboutsummaryrefslogtreecommitdiff
path: root/src/main/kotlin/events/RegisterCustomShadersEvent.kt
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/kotlin/events/RegisterCustomShadersEvent.kt')
-rw-r--r--src/main/kotlin/events/RegisterCustomShadersEvent.kt24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/main/kotlin/events/RegisterCustomShadersEvent.kt b/src/main/kotlin/events/RegisterCustomShadersEvent.kt
new file mode 100644
index 0000000..2f6d1f8
--- /dev/null
+++ b/src/main/kotlin/events/RegisterCustomShadersEvent.kt
@@ -0,0 +1,24 @@
+package moe.nea.firmament.events
+
+import com.mojang.datafixers.util.Pair
+import java.util.function.Consumer
+import net.minecraft.client.gl.ShaderProgram
+import net.minecraft.client.render.VertexFormat
+import net.minecraft.resource.ResourceFactory
+import moe.nea.firmament.Firmament
+
+data class RegisterCustomShadersEvent(
+ val list: MutableList<Pair<ShaderProgram, Consumer<ShaderProgram>>>,
+ val resourceFactory: ResourceFactory,
+) : FirmamentEvent() {
+ companion object : FirmamentEventBus<RegisterCustomShadersEvent>()
+
+ fun register(name: String, vertexFormat: VertexFormat, saver: Consumer<ShaderProgram>) {
+ require(name.startsWith("firmament_"))
+ try {
+ list.add(Pair.of(ShaderProgram(resourceFactory, name, vertexFormat), saver))
+ } catch (ex: Exception) {
+ Firmament.logger.fatal("Could not load firmament shader $name", ex)
+ }
+ }
+}