package matterlink import matterlink.api.ApiMessage.Companion.USER_ACTION import matterlink.config.cfg import matterlink.handlers.* import net.minecraft.command.server.CommandBroadcast import net.minecraft.command.server.CommandEmote import net.minecraft.entity.player.EntityPlayer import net.minecraft.server.dedicated.DedicatedServer import net.minecraftforge.event.CommandEvent import net.minecraftforge.event.ServerChatEvent import net.minecraftforge.event.entity.living.LivingDeathEvent import net.minecraftforge.event.entity.player.AdvancementEvent import net.minecraftforge.fml.common.Mod import net.minecraftforge.fml.common.eventhandler.SubscribeEvent import net.minecraftforge.fml.common.gameevent.PlayerEvent import net.minecraftforge.fml.common.gameevent.TickEvent //FORGE-DEPENDENT @Mod.EventBusSubscriber object EventHandler { //MC-VERSION & FORGE DEPENDENT @SubscribeEvent @JvmStatic fun progressEvent(e: AdvancementEvent) { if (e.advancement.display == null) return ProgressHandler.handleProgress( name = e.entityPlayer.displayName.unformattedText, message = "has made the advancement", display = e.advancement.displayText.unformattedText ) } //FORGE-DEPENDENT @SubscribeEvent @JvmStatic fun chatEvent(e: ServerChatEvent) { if(e.isCanceled) return e.isCanceled = ChatProcessor.sendToBridge( user = e.player.displayName.unformattedText, msg = e.message, event = "", uuid = e.player.gameProfile.id.toString() ) } //FORGE-DEPENDENT @SubscribeEvent @JvmStatic fun commandEvent(e: CommandEvent) { instance.log("DEBUG","commandEvent ${e.sender.javaClass.simpleName}") instance.log("DEBUG","commandEvent ${e.sender.javaClass.typeName}") instance.log("DEBUG","command ${e.command.aliases}") instance.log("DEBUG","command ${e.command.name}") val sender = when { e.sender is DedicatedServer -> cfg.outgoing.systemUser else -> e.sender.displayName.unformattedText } instance.log("DEBUG","sender $sender") val args = e.parameters.joinToString(" ") val type = when { e.command is CommandEmote -> USER_ACTION e.command.name.equals("me", true) -> USER_ACTION e.command is CommandBroadcast -> "" else -> return } ChatProcessor.sendToBridge(user = sender, msg = args, event = type) } //FORGE-DEPENDENT @SubscribeEvent @JvmStatic fun deathEvent(e: LivingDeathEvent) { if (e.entityLiving is EntityPlayer) { DeathHandler.handleDeath( player = e.entityLiving.displayName.unformattedText, deathMessage = e.entityLiving.combatTracker.deathMessage.unformattedText, damageType = e.source.damageType ) } } //FORGE-DEPENDENT @SubscribeEvent @JvmStatic fun joinEvent(e: PlayerEvent.PlayerLoggedInEvent) { JoinLeaveHandler.handleJoin(e.player.displayName.unformattedText) } //FORGE-DEPENDENT @SubscribeEvent @JvmStatic fun leaveEvent(e: PlayerEvent.PlayerLoggedOutEvent) { JoinLeaveHandler.handleLeave(e.player.displayName.unformattedText) } //FORGE-DEPENDENT @SubscribeEvent @JvmStatic fun serverTickEvent(e: TickEvent.ServerTickEvent) { if (e.phase == TickEvent.Phase.END) TickHandler.handleTick() } }