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