summary refs log tree commit diff stats
path: root/src/main/kotlin/space/autistic/radio/PirateRadio.kt
blob: d463e41e3457ca57d3d097a8cfcf6d1c0460d316 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
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 {
    var proxy: SidedProxy? = null
    const val MOD_ID = "pirate-radio"
    val logger = LoggerFactory.getLogger(MOD_ID)


    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()
    }
}