summary refs log tree commit diff stats
path: root/src/main/kotlin/space/autistic/radio/PirateRadio.kt
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/kotlin/space/autistic/radio/PirateRadio.kt')
-rw-r--r--src/main/kotlin/space/autistic/radio/PirateRadio.kt59
1 files changed, 50 insertions, 9 deletions
diff --git a/src/main/kotlin/space/autistic/radio/PirateRadio.kt b/src/main/kotlin/space/autistic/radio/PirateRadio.kt
index 54d0b9f..d463e41 100644
--- a/src/main/kotlin/space/autistic/radio/PirateRadio.kt
+++ b/src/main/kotlin/space/autistic/radio/PirateRadio.kt
@@ -1,17 +1,58 @@
 package space.autistic.radio
 
+import com.mojang.serialization.Codec
 import net.fabricmc.api.ModInitializer
+import net.fabricmc.fabric.api.event.registry.DynamicRegistries
+import net.fabricmc.fabric.api.networking.v1.PayloadTypeRegistry
+import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking
+import net.minecraft.item.ItemStack
+import net.minecraft.registry.Registry
+import net.minecraft.registry.RegistryKey
+import net.minecraft.text.Text
+import net.minecraft.util.Identifier
 import org.slf4j.LoggerFactory
+import space.autistic.radio.antenna.Antenna
+import space.autistic.radio.antenna.PirateRadioAntennaSerializers
+import space.autistic.radio.network.StorageCardUpdateC2SPayload
+import kotlin.math.max
+import kotlin.math.min
 
 object PirateRadio : ModInitializer {
-	const val MOD_ID = "pirate-radio"
-	private val logger = LoggerFactory.getLogger(MOD_ID)
+    var proxy: SidedProxy? = null
+    const val MOD_ID = "pirate-radio"
+    val logger = LoggerFactory.getLogger(MOD_ID)
 
-	override fun onInitialize() {
-		logger.info("This project is made with love by a queer trans person.\n" +
-				"The folks of these identities who have contributed to the project would like to make their identities known:\n" +
-				"Autgender; Not a person; Anticapitalist; Genderqueer; Trans.")
-		PirateRadioItems.initialize()
-		PirateRadioEntityTypes.initialize()
-	}
+
+    override fun onInitialize() {
+        if (proxy == null) {
+            proxy = CommonProxy()
+        }
+        logger.info(
+            "This project is made with love by a queer trans person.\n" +
+                    "The folks of these identities who have contributed to the project would like to make their identities known:\n" +
+                    "Autgender; Not a person; Anticapitalist; Genderqueer; Trans."
+        )
+        PirateRadioRegistries.initialize()
+        PirateRadioAntennaSerializers.initialize()
+        DynamicRegistries.registerSynced(PirateRadioRegistryKeys.ANTENNA, Antenna.CODEC)
+        PayloadTypeRegistry.playC2S()
+            .register(StorageCardUpdateC2SPayload.PAYLOAD_ID, StorageCardUpdateC2SPayload.CODEC)
+        ServerPlayNetworking.registerGlobalReceiver(StorageCardUpdateC2SPayload.PAYLOAD_ID) { payload, context ->
+            if (!context.player().isAlive) {
+                return@registerGlobalReceiver
+            }
+            val stack = context.player().inventory.getStack(payload.slot)
+            if (stack.isOf(PirateRadioItems.STORAGE_CARD)) {
+                stack.set(PirateRadioComponents.FREQUENCY, min(1080, max(768, payload.frequency)))
+                var text = payload.text
+                if (text.length > 16384) {
+                    text = text.substring(0, 16384)
+                }
+                stack.set(PirateRadioComponents.MESSAGE, Text.literal(text))
+            }
+        }
+        PirateRadioComponents.initialize()
+        PirateRadioItems.initialize()
+        PirateRadioEntityTypes.initialize()
+    }
 }
\ No newline at end of file