package fr.username404.snowygui import fr.username404.snowygui.EventSnowy.Companion.useKey import fr.username404.snowygui.config.Configuration import fr.username404.snowygui.gui.feature.ButtonImpl import fr.username404.snowygui.gui.feature.Ignored import fr.username404.snowygui.misc.AddKeyMaps import net.minecraft.network.chat.TranslatableComponent import org.apache.logging.log4j.LogManager import org.apache.logging.log4j.Logger import java.lang.reflect.Modifier abstract class Snowy { protected fun Class<*>.isValidForButtonCollection(): Boolean = (!((Modifier.isAbstract(javaClass.modifiers)) || javaClass.isAnnotationPresent(Ignored::class.java))) private val displayInitMessage: Boolean by Configuration companion object { val MissingComponent: TranslatableComponent = object: TranslatableComponent(null) { override fun getString(): String = "MISSING_COMPONENT" } @JvmStatic protected val FeaturePackage: String = "fr.username404.snowygui.gui.feature" lateinit var annotatedButtons: Set> fun onEvent(e: String, lambda: argsLambda) = useKey(e).add(lambda) @JvmField val logs: Logger = LogManager.getLogger() } private fun eventsInit() { onEvent("EndTick") { for (Key in AddKeyMaps.list.keys) { if (Key.isDown) { AddKeyMaps.list[Key]?.invoke() } } } } fun atInit() { if (displayInitMessage) logs.info("Init point of SnowyGUI hit.") eventsInit() } }