package net.shadowfacts.phycon import net.fabricmc.api.ClientModInitializer import net.fabricmc.fabric.api.client.model.ModelLoadingRegistry import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking import net.fabricmc.fabric.api.client.screenhandler.v1.ScreenRegistry import net.fabricmc.fabric.api.renderer.v1.RendererAccess import net.fabricmc.fabric.api.renderer.v1.material.RenderMaterial import net.shadowfacts.phycon.block.inserter.InserterScreen import net.shadowfacts.phycon.block.redstone_emitter.RedstoneEmitterScreen import net.shadowfacts.phycon.init.PhyScreens import net.shadowfacts.phycon.block.terminal.TerminalScreen import net.shadowfacts.phycon.client.PhyExtendedModelProvider import net.shadowfacts.phycon.client.PhyModelProvider import net.shadowfacts.phycon.networking.ClientReceiver import net.shadowfacts.phycon.networking.S2CTerminalUpdateDisplayedItems /** * @author shadowfacts */ object PhysicalConnectivityClient: ClientModInitializer { var screenMaterial: RenderMaterial? = null private set override fun onInitializeClient() { ModelLoadingRegistry.INSTANCE.registerResourceProvider(::PhyModelProvider) RendererAccess.INSTANCE.renderer?.also { renderer -> screenMaterial = renderer.materialFinder() .emissive(0, true) .disableAo(0, true) .disableDiffuse(0, true) .find() ModelLoadingRegistry.INSTANCE.registerResourceProvider(::PhyExtendedModelProvider) } ScreenRegistry.register(PhyScreens.TERMINAL, ::TerminalScreen) ScreenRegistry.register(PhyScreens.INSERTER, ::InserterScreen) ScreenRegistry.register(PhyScreens.REDSTONE_EMITTER, ::RedstoneEmitterScreen) registerGlobalReceiver(S2CTerminalUpdateDisplayedItems) } private fun registerGlobalReceiver(receiver: ClientReceiver) { ClientPlayNetworking.registerGlobalReceiver(receiver.CHANNEL, receiver) } }