Skip to content

Commit

Permalink
Fix: new message builder
Browse files Browse the repository at this point in the history
  • Loading branch information
vulcandragi committed Sep 9, 2024
1 parent c2f7cdb commit d299a35
Show file tree
Hide file tree
Showing 22 changed files with 162 additions and 143 deletions.
2 changes: 2 additions & 0 deletions src/main/kotlin/com/fardragi/nyaruko/App.kt
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package com.fardragi.nyaruko
import com.fardragi.nyaruko.auth.authModule
import com.fardragi.nyaruko.config.Config
import com.fardragi.nyaruko.config.DatabaseConfig
import com.fardragi.nyaruko.config.DiscordConfig
import com.fardragi.nyaruko.database.DatabaseConnection
import com.fardragi.nyaruko.permission.permissionModule
import org.koin.core.module.dsl.createdAtStart
Expand All @@ -15,6 +16,7 @@ val appModule = module {
createdAtStart()
}
single { DatabaseConfig(get()) }
single { DiscordConfig(get()) }
single { DatabaseConnection(get()) } withOptions {
createdAtStart()
}
Expand Down
2 changes: 1 addition & 1 deletion src/main/kotlin/com/fardragi/nyaruko/auth/AuthModule.kt
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ class AuthModule() : KoinScopeComponent {
private var commandManager = MinecraftServer.getServer().commandManager as ServerCommandManager

fun start() {
loginHandler = LoginHandler(scope.get())
loginHandler = LoginHandler(scope.get(), scope.get())
FMLCommonHandler.instance().bus().register(loginHandler)

commandManager.registerCommand(RegisterCommand(scope.get()))
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
package com.fardragi.nyaruko.auth.commands

import com.fardragi.nyaruko.auth.messages.LoginCheckSuccessMessage
import com.fardragi.nyaruko.auth.messages.LoginMessage
import com.fardragi.nyaruko.enums.PermissionLevel
import com.fardragi.nyaruko.exceptions.MessageException
import com.fardragi.nyaruko.extensions.sendMessages
import com.fardragi.nyaruko.services.UserService
import com.fardragi.nyaruko.shared.commands.NyarukoCommandBase
import com.fardragi.nyaruko.shared.messages.DefaultMessage
import net.minecraft.command.ICommandSender
import net.minecraft.entity.player.EntityPlayerMP
import net.minecraft.util.ChatComponentText

class LoginCommand(private val userService: UserService) : NyarukoCommandBase() {
override fun getCommandName(): String {
Expand All @@ -18,19 +19,19 @@ class LoginCommand(private val userService: UserService) : NyarukoCommandBase()
return "/login <senha>"
}

override suspend fun processCommandPlayer(player: EntityPlayerMP, args: Array<out String>): Array<ChatComponentText> {
override suspend fun processCommandPlayer(player: EntityPlayerMP, args: Array<out String>) {
if (args.isEmpty()) {
return arrayOf(DefaultMessage.usage(getCommandUsage(player), commandName))
throw MessageException(DefaultMessage.usage(LoginMessage.usageAction()))
}

val userId = player.uniqueID.toString()
val password = args[0]

if (!userService.checkPassword(userId, password)) {
return arrayOf(DefaultMessage.error("Senha incorreta"))
throw MessageException(DefaultMessage.error("Senha incorreta"))
}

return arrayOf(LoginCheckSuccessMessage.create())
player.sendMessages(DefaultMessage.success("Logado com sucesso"))
}

override fun getRequiredPermissionLevel(): Int {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
package com.fardragi.nyaruko.auth.commands

import com.fardragi.nyaruko.auth.messages.AlreadyRegisteredMessage
import com.fardragi.nyaruko.auth.messages.LoginMessage
import com.fardragi.nyaruko.auth.messages.RegisterMessage
import com.fardragi.nyaruko.enums.PermissionLevel
import com.fardragi.nyaruko.exceptions.MessageException
import com.fardragi.nyaruko.extensions.sendMessages
import com.fardragi.nyaruko.services.UserService
import com.fardragi.nyaruko.shared.commands.NyarukoCommandBase
import com.fardragi.nyaruko.shared.messages.DefaultMessage
import net.minecraft.command.ICommandSender
import net.minecraft.entity.player.EntityPlayerMP
import net.minecraft.util.ChatComponentText

class RegisterCommand(private val userService: UserService) : NyarukoCommandBase() {
override fun getCommandName(): String {
Expand All @@ -19,9 +19,9 @@ class RegisterCommand(private val userService: UserService) : NyarukoCommandBase
return "/register <senha> <repetir senha>"
}

override suspend fun processCommandPlayer(player: EntityPlayerMP, args: Array<out String>): Array<ChatComponentText> {
override suspend fun processCommandPlayer(player: EntityPlayerMP, args: Array<out String>) {
if (args.isEmpty() || args.size < 2) {
return arrayOf(DefaultMessage.usage(getCommandUsage(player), commandName))
throw MessageException(DefaultMessage.usage(RegisterMessage.usageAction()))
}

val userId = player.uniqueID.toString()
Expand All @@ -31,16 +31,16 @@ class RegisterCommand(private val userService: UserService) : NyarukoCommandBase
val user = userService.getById(userId)

if (user.isRegistered) {
return arrayOf(AlreadyRegisteredMessage.create())
throw MessageException(RegisterMessage.alreadyRegistered())
}

if (password != repeatPassword) {
return arrayOf(DefaultMessage.error("As senhas não são iguais"))
throw MessageException(DefaultMessage.error("As senhas não são iguais"))
}

userService.setPassword(userId, repeatPassword)

return arrayOf(LoginMessage.create())
player.sendMessages(RegisterMessage.success())
}

override fun getRequiredPermissionLevel(): Int {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
package com.fardragi.nyaruko.auth.handlers

import com.fardragi.nyaruko.auth.messages.WelcomeMessage
import com.fardragi.nyaruko.extensions.addChatMessages
import com.fardragi.nyaruko.config.DiscordConfig
import com.fardragi.nyaruko.extensions.sendMessages
import com.fardragi.nyaruko.services.UserService
import cpw.mods.fml.common.eventhandler.EventPriority
import cpw.mods.fml.common.eventhandler.SubscribeEvent
Expand All @@ -11,7 +12,7 @@ import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch

class LoginHandler(private val userService: UserService) {
class LoginHandler(private val userService: UserService, private val discordConfig: DiscordConfig) {
@SubscribeEvent(priority = EventPriority.HIGHEST)
fun onPlayerJoin(event: PlayerLoggedInEvent) {
val player = event.player
Expand All @@ -23,8 +24,8 @@ class LoginHandler(private val userService: UserService) {

delay(2000)

val welcome = WelcomeMessage.create(userName, user.isRegistered)
player.addChatMessages(welcome)
val welcome = WelcomeMessage.create(user.isRegistered, discordConfig.discordInvite)
player.sendMessages(welcome)
}
}
}

This file was deleted.

This file was deleted.

This file was deleted.

22 changes: 10 additions & 12 deletions src/main/kotlin/com/fardragi/nyaruko/auth/messages/LoginMessage.kt
Original file line number Diff line number Diff line change
@@ -1,22 +1,20 @@
package com.fardragi.nyaruko.auth.messages

import com.fardragi.nyaruko.shared.messages.TextBuilder
import net.minecraft.event.ClickEvent
import net.minecraft.event.HoverEvent
import net.minecraft.util.ChatComponentText
import net.minecraft.util.ChatStyle
import net.minecraft.util.EnumChatFormatting

object LoginMessage {
fun create(): ChatComponentText {
val command = ChatComponentText("/login <password>")
command.chatStyle = ChatStyle()
.setChatClickEvent(ClickEvent(ClickEvent.Action.SUGGEST_COMMAND, "/login"))
.setChatHoverEvent(HoverEvent(HoverEvent.Action.SHOW_TEXT, ChatComponentText("/login")))
fun usageAction(): TextBuilder {
val textBuilder = TextBuilder()
.append("/login <senha>", EnumChatFormatting.YELLOW) {
it.clickEvent(ClickEvent.Action.SUGGEST_COMMAND, "/login")
it.hoverEvent(HoverEvent.Action.SHOW_TEXT) { event ->
event.append("/login")
}
}

val text = ChatComponentText("use ")
text.chatStyle = ChatStyle().setColor(EnumChatFormatting.YELLOW)
text.appendSibling(command)

return text
return textBuilder
}
}
Original file line number Diff line number Diff line change
@@ -1,14 +1,46 @@
package com.fardragi.nyaruko.auth.messages

import net.minecraft.util.ChatComponentText
import net.minecraft.util.ChatStyle
import com.fardragi.nyaruko.shared.messages.MessageBuilder
import com.fardragi.nyaruko.shared.messages.TextBuilder
import net.minecraft.event.ClickEvent
import net.minecraft.event.HoverEvent
import net.minecraft.util.EnumChatFormatting

object RegisterMessage {
fun create(): ChatComponentText {
val text = ChatComponentText("use /register <password> <repeat password>")
text.chatStyle = ChatStyle().setColor(EnumChatFormatting.YELLOW)
fun usageAction(): TextBuilder {
val textBuilder = TextBuilder()
.append("/register <senha> <repetir senha>", EnumChatFormatting.YELLOW) {
it.clickEvent(ClickEvent.Action.SUGGEST_COMMAND, "/register")
it.hoverEvent(HoverEvent.Action.SHOW_TEXT) { event ->
event.append("/register")
}
}

return text
return textBuilder
}

fun alreadyRegistered(): MessageBuilder {
val messageBuilder = MessageBuilder()
.add { builder ->
builder.append("Usuario ja registrado, use ", EnumChatFormatting.YELLOW)
builder.append(LoginMessage.usageAction())
builder.append(" para entrar", EnumChatFormatting.YELLOW)
}

return messageBuilder
}

fun success(): MessageBuilder {
val messageBuilder = MessageBuilder()
.add { builder ->
builder.append("Registrado com sucesso", EnumChatFormatting.GREEN)
}
.add { builder ->
builder.append("Use ", EnumChatFormatting.YELLOW)
builder.append(LoginMessage.usageAction())
builder.append(" para entrar", EnumChatFormatting.YELLOW)
}

return messageBuilder
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,14 @@ package com.fardragi.nyaruko.auth.messages

import com.fardragi.nyaruko.shared.messages.MessageBuilder
import net.minecraft.event.ClickEvent
import net.minecraft.util.ChatComponentText
import net.minecraft.util.EnumChatFormatting

object WelcomeMessage {
fun create(name: String, isRegistered: Boolean): Array<ChatComponentText> {
fun create(isRegistered: Boolean, discordInvite: String): MessageBuilder {
val messageBuilder = MessageBuilder()
.addDividerLine()
.add { builder ->
builder.append(" ")
builder.append(" ")
builder.append("123", EnumChatFormatting.AQUA) {
it.obfuscated()
}
Expand All @@ -22,20 +21,22 @@ object WelcomeMessage {
.addEmptyLine()
.add { builder ->
if (isRegistered) {
builder.append("Logue usando /login <senha>", EnumChatFormatting.YELLOW)
builder.append("Logue usando ", EnumChatFormatting.YELLOW)
builder.append(LoginMessage.usageAction())
} else {
builder.append("Registre-se usando /register <senha> <repetir senha>", EnumChatFormatting.YELLOW)
builder.append("Registre-se usando ", EnumChatFormatting.YELLOW)
builder.append(RegisterMessage.usageAction())
}
}
.addEmptyLine()
.add { builder ->
builder.append("Discord: ", EnumChatFormatting.DARK_PURPLE)
builder.append("https://discord.gg/8KxJNzTJzq", EnumChatFormatting.BLUE) {
it.clickEvent(ClickEvent.Action.OPEN_URL, "https://discord.gg/8KxJNzTJzq")
builder.append(discordInvite, EnumChatFormatting.BLUE) {
it.clickEvent(ClickEvent.Action.OPEN_URL, discordInvite)
}
}
.addDividerLine()

return messageBuilder.build()
return messageBuilder
}
}
4 changes: 4 additions & 0 deletions src/main/kotlin/com/fardragi/nyaruko/config/Config.kt
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,10 @@ class Config {
val configuration = Configuration(File(Minecraft.getWorkingDir(), "config.cfg"))

init {
save()
}

fun save() {
if (configuration.hasChanged())
configuration.save()
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ class DatabaseConfig(config: Config) {
val user: String = config.configuration.getString("user", CATEGORY, "root", "Database user")

init {
if (config.configuration.hasChanged())
config.configuration.save()
config.save()
}
}
11 changes: 11 additions & 0 deletions src/main/kotlin/com/fardragi/nyaruko/config/DiscordConfig.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.fardragi.nyaruko.config

private const val CATEGORY = "discord"

class DiscordConfig(config: Config) {
val discordInvite: String = config.configuration.getString("discordInvite", CATEGORY, "https://discord.gg/", "Link for discord invite")

init {
config.save()
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package com.fardragi.nyaruko.exceptions

import com.fardragi.nyaruko.shared.messages.MessageBuilder

class MessageException(val messageBuilder: MessageBuilder) : Exception()
Original file line number Diff line number Diff line change
@@ -1,17 +1,10 @@
package com.fardragi.nyaruko.extensions

import com.fardragi.nyaruko.shared.messages.MessageBuilder
import net.minecraft.command.ICommandSender
import net.minecraft.entity.player.EntityPlayer
import net.minecraft.util.ChatComponentText

fun EntityPlayer.addChatMessages(messages: Array<ChatComponentText>) {
messages.forEach {
this.addChatMessage(it)
}
}

fun ICommandSender.addChatMessages(messages: Array<ChatComponentText>) {
messages.forEach {
fun ICommandSender.sendMessages(messageBuilder: MessageBuilder) {
messageBuilder.build().forEach {
this.addChatMessage(it)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ package com.fardragi.nyaruko.permission

import org.koin.dsl.module

var permissionModule = module {
val permissionModule = module {
single { PermissionModule() }
scope<PermissionModule> {

Expand Down
Loading

0 comments on commit d299a35

Please sign in to comment.