Skip to content

Commit 57986de

Browse files
Merge pull request #2 from Liams-Services/feat/1-events-for-shader-accept-deny
feat(#1): ShaderStatusChangedEvent
2 parents 3004bd9 + 8f866ae commit 57986de

File tree

6 files changed

+68
-9
lines changed

6 files changed

+68
-9
lines changed

build.gradle.kts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ val ktorVersion: String by project
2222
val mcCoroutineVersion: String by project
2323

2424
repositories {
25+
mavenLocal()
26+
maven("https://repo.papermc.io/repository/maven-public/")
2527
maven("https://nexus.flawcra.cc/repository/maven-mirrors/")
2628
}
2729

src/main/kotlin/com/liamxsage/shaderapi/ShaderAPI.kt

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.liamxsage.shaderapi
22

33
import com.liamxsage.shaderapi.listeners.ShaderAPIListener
4+
import com.liamxsage.shaderapi.listeners.ShaderStatusChangeListener
45
import org.bukkit.Bukkit
56
import org.bukkit.plugin.java.JavaPlugin
67
import org.bukkit.plugin.messaging.Messenger
@@ -33,8 +34,12 @@ class ShaderAPI : JavaPlugin() {
3334
// Plugin startup logic
3435
val time = measureTimeMillis {
3536
val messenger: Messenger = Bukkit.getMessenger()
36-
messenger.registerIncomingPluginChannel(this, SHADERAPI_INCOMING_CHANNEL, ShaderAPIListener())
37-
messenger.registerOutgoingPluginChannel(this, SHADERAPI_OUTGOING_CHANNEL)
37+
val listener = ShaderAPIListener()
38+
messenger.registerIncomingPluginChannel(this, SHADERAPI_REQUEST_CHANNEL, listener)
39+
messenger.registerIncomingPluginChannel(this, SHADERAPI_STATUS_CHANNEL, listener)
40+
messenger.registerOutgoingPluginChannel(this, SHADERAPI_SEND_DATA_CHANNEL)
41+
42+
Bukkit.getPluginManager().registerEvents(ShaderStatusChangeListener(), this)
3843
}
3944
println("Plugin enabled in $time ms")
4045
}

src/main/kotlin/com/liamxsage/shaderapi/Variables.kt

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package com.liamxsage.shaderapi
22

33
import net.minecraft.resources.ResourceLocation
44

5-
const val SHADERAPI_INCOMING_CHANNEL = "shaderapi:request_shader_url"
6-
const val SHADERAPI_OUTGOING_CHANNEL = "shaderapi:receive_shader_url"
7-
val SHADERAPI_RESOURCELOCATION = ResourceLocation.parse(SHADERAPI_OUTGOING_CHANNEL)
5+
const val SHADERAPI_REQUEST_CHANNEL = "shaderapi:request_shader_url"
6+
const val SHADERAPI_STATUS_CHANNEL = "shaderapi:status_response"
7+
const val SHADERAPI_SEND_DATA_CHANNEL = "shaderapi:receive_shader_url"
8+
val SHADERAPI_RESOURCELOCATION = ResourceLocation.parse(SHADERAPI_SEND_DATA_CHANNEL)
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package com.liamxsage.shaderapi.events
2+
3+
import org.bukkit.entity.Player
4+
import org.bukkit.event.Event
5+
import org.bukkit.event.HandlerList
6+
7+
class ShaderStatusChangedEvent(val player: Player, val status: String) : Event() {
8+
9+
override fun getHandlers(): HandlerList {
10+
return HANDLERS
11+
}
12+
13+
companion object {
14+
val HANDLERS = HandlerList()
15+
16+
@JvmStatic
17+
fun getHandlerList(): HandlerList {
18+
return HANDLERS
19+
}
20+
}
21+
}

src/main/kotlin/com/liamxsage/shaderapi/listeners/ShaderAPIListener.kt

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
package com.liamxsage.shaderapi.listeners
22

3-
import com.liamxsage.klassicx.extensions.getLogger
4-
import com.liamxsage.shaderapi.SHADERAPI_INCOMING_CHANNEL
3+
import com.liamxsage.shaderapi.SHADERAPI_REQUEST_CHANNEL
54
import com.liamxsage.shaderapi.SHADERAPI_RESOURCELOCATION
5+
import com.liamxsage.shaderapi.SHADERAPI_STATUS_CHANNEL
66
import com.liamxsage.shaderapi.ShaderAPI
7+
import com.liamxsage.shaderapi.events.ShaderStatusChangedEvent
78
import com.liamxsage.shaderapi.resource.ShaderPackInfo
8-
import com.liamxsage.shaderapi.resource.ShaderPackInfoImpl
99
import io.netty.buffer.ByteBuf
1010
import io.netty.buffer.Unpooled
1111
import net.minecraft.network.FriendlyByteBuf
@@ -21,15 +21,30 @@ import java.net.URI
2121
class ShaderAPIListener : PluginMessageListener {
2222

2323

24+
private val handleIncomingPackets = mapOf(
25+
SHADERAPI_REQUEST_CHANNEL to this::onRequestShaderUrl,
26+
SHADERAPI_STATUS_CHANNEL to this::onShaderStatusResponse
27+
)
28+
2429
private val shaderPackInfo: ShaderPackInfo = ShaderPackInfo.shaderPackInfo()
2530
.uri(URI.create(ShaderAPI.instance.config.getString("shaderPack") ?: "https://cdn.modrinth.com/data/HVnmMxH1/versions/pAOQ9Amz/ComplementaryReimagined_r5.2.2.zip"))
2631
.computeHashAndBuild().get()
2732

2833
override fun onPluginMessageReceived(channel: String, player: Player, message: ByteArray?) {
29-
if (SHADERAPI_INCOMING_CHANNEL != channel) return // Ensure it's the correct channel
34+
if (channel !in handleIncomingPackets.keys) return // Ensure it's the correct channel
35+
36+
handleIncomingPackets[channel]?.invoke(player, message)
37+
}
38+
39+
private fun onRequestShaderUrl(player: Player, message: ByteArray?) {
3040
sendShaderUrl(player, shaderPackInfo)
3141
}
3242

43+
private fun onShaderStatusResponse(player: Player, message: ByteArray?) {
44+
val statusResponse = message?.let { String(it, Charsets.UTF_8) } ?: return
45+
ShaderStatusChangedEvent(player, statusResponse).callEvent()
46+
}
47+
3348
private fun sendShaderUrl(player: Player, shaderPackInfo: ShaderPackInfo) {
3449
try {
3550
// Create a ByteBuf to hold the data
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package com.liamxsage.shaderapi.listeners
2+
3+
import com.liamxsage.klassicx.extensions.getLogger
4+
import com.liamxsage.shaderapi.events.ShaderStatusChangedEvent
5+
import org.bukkit.event.EventHandler
6+
import org.bukkit.event.Listener
7+
8+
class ShaderStatusChangeListener : Listener {
9+
10+
@EventHandler
11+
fun onShaderStatusChangedEvent(event: ShaderStatusChangedEvent): Unit = with(event) {
12+
getLogger().info("Shader Status Response by ${player.name}: $status")
13+
}
14+
15+
}

0 commit comments

Comments
 (0)