101 lines
3.2 KiB
Kotlin
101 lines
3.2 KiB
Kotlin
package matterlink
|
|
|
|
import cpw.mods.fml.common.eventhandler.SubscribeEvent
|
|
import cpw.mods.fml.common.gameevent.PlayerEvent
|
|
import cpw.mods.fml.common.gameevent.TickEvent
|
|
import matterlink.bridge.ServerChatHandler
|
|
import matterlink.bridge.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.entity.player.EntityPlayerMP
|
|
import net.minecraft.server.MinecraftServer
|
|
import net.minecraft.server.dedicated.DedicatedServer
|
|
import net.minecraft.tileentity.TileEntityCommandBlock
|
|
import net.minecraftforge.event.CommandEvent
|
|
import net.minecraftforge.event.ServerChatEvent
|
|
import net.minecraftforge.event.entity.living.LivingDeathEvent
|
|
import net.minecraftforge.event.entity.player.AchievementEvent
|
|
|
|
//FORGE-DEPENDENT
|
|
object EventHandler {
|
|
|
|
//MC-VERSION & FORGE DEPENDENT
|
|
@SubscribeEvent
|
|
fun progressEvent(e: AchievementEvent) {
|
|
val achievement = e.achievement
|
|
val entityPlayer = e.entityPlayer as? EntityPlayerMP ?: return
|
|
val statFile = entityPlayer.statFile
|
|
|
|
if (!statFile.canUnlockAchievement(achievement) || statFile.hasAchievementUnlocked(achievement)) {
|
|
return
|
|
}
|
|
|
|
ProgressHandler.handleProgress(
|
|
name = e.entityPlayer.displayName,
|
|
message = "has earned the achievement",
|
|
display = e.achievement.statName.unformattedText
|
|
)
|
|
}
|
|
|
|
//FORGE-DEPENDENT
|
|
@SubscribeEvent
|
|
fun chatEvent(e: ServerChatEvent) {
|
|
ChatProcessor.sendToBridge(
|
|
user = e.username,
|
|
msg = e.message,
|
|
event = ""
|
|
)
|
|
}
|
|
|
|
//FORGE-DEPENDENT
|
|
@SubscribeEvent
|
|
fun commandEvent(e: CommandEvent) {
|
|
val sender = when {
|
|
e.sender is DedicatedServer -> cfg.outgoing.systemUser
|
|
e.sender is TileEntityCommandBlock -> "CommandBlock"
|
|
else -> e.sender.commandSenderName
|
|
}
|
|
val args = e.parameters.joinToString(" ")
|
|
val type = when {
|
|
e.command is CommandEmote -> USER_ACTION
|
|
e.command is CommandBroadcast -> ""
|
|
else -> return
|
|
}
|
|
ChatProcessor.sendToBridge(user = sender, msg = args, event = type)
|
|
|
|
}
|
|
|
|
//FORGE-DEPENDENT
|
|
@SubscribeEvent
|
|
fun deathEvent(e: LivingDeathEvent) {
|
|
if (e.entityLiving is EntityPlayer) {
|
|
val player = e.entityLiving as EntityPlayer
|
|
DeathHandler.handleDeath(
|
|
player = player.displayName,
|
|
deathMessage = e.entityLiving.combatTracker.func_151521_b().unformattedText,
|
|
damageType = e.source.damageType
|
|
)
|
|
}
|
|
}
|
|
|
|
//FORGE-DEPENDENT
|
|
@SubscribeEvent
|
|
fun joinEvent(e: PlayerEvent.PlayerLoggedInEvent) {
|
|
JoinLeaveHandler.handleJoin(e.player.displayName)
|
|
}
|
|
|
|
//FORGE-DEPENDENT
|
|
@SubscribeEvent
|
|
fun leaveEvent(e: PlayerEvent.PlayerLoggedOutEvent) {
|
|
JoinLeaveHandler.handleLeave(e.player.displayName)
|
|
}
|
|
|
|
//FORGE-DEPENDENT
|
|
@SubscribeEvent
|
|
fun serverTickEvent(e: TickEvent.ServerTickEvent) {
|
|
TickHandler.handleTick()
|
|
}
|
|
} |