diff --git a/src/main/kotlin/com/fardragi/nyaruko/App.kt b/src/main/kotlin/com/fardragi/nyaruko/App.kt index a047f41..fd6744f 100644 --- a/src/main/kotlin/com/fardragi/nyaruko/App.kt +++ b/src/main/kotlin/com/fardragi/nyaruko/App.kt @@ -1,16 +1,13 @@ package com.fardragi.nyaruko -import com.fardragi.nyaruko.auth.AuthModule +import com.fardragi.nyaruko.modules.auth.AuthModule import com.fardragi.nyaruko.config.Config import com.fardragi.nyaruko.config.DatabaseConfig import com.fardragi.nyaruko.config.DiscordConfig -import com.fardragi.nyaruko.core.CoreModule +import com.fardragi.nyaruko.modules.core.CoreModule import com.fardragi.nyaruko.database.DatabaseConnection -import com.fardragi.nyaruko.permission.PermissionModule -import com.fardragi.nyaruko.services.CommandService -import com.fardragi.nyaruko.services.GroupService -import com.fardragi.nyaruko.services.SessionsService -import com.fardragi.nyaruko.services.UserService +import com.fardragi.nyaruko.modules.permission.PermissionModule +import com.fardragi.nyaruko.services.* import org.koin.core.module.dsl.createdAtStart import org.koin.core.module.dsl.withOptions import org.koin.dsl.module @@ -26,12 +23,9 @@ val appModule = module { createdAtStart() } - single { CoreModule() } - single { AuthModule() } - single { PermissionModule() } - single { UserService(get()) } single { SessionsService() } single { CommandService() } single { GroupService() } + single { WarpService() } } diff --git a/src/main/kotlin/com/fardragi/nyaruko/NyarukoMod.kt b/src/main/kotlin/com/fardragi/nyaruko/NyarukoMod.kt index a76e58b..dfa5eeb 100644 --- a/src/main/kotlin/com/fardragi/nyaruko/NyarukoMod.kt +++ b/src/main/kotlin/com/fardragi/nyaruko/NyarukoMod.kt @@ -1,6 +1,6 @@ package com.fardragi.nyaruko -import com.fardragi.nyaruko.shared.IProxy +import com.fardragi.nyaruko.modules.base.IProxy import cpw.mods.fml.common.Mod import cpw.mods.fml.common.SidedProxy import cpw.mods.fml.common.event.FMLInitializationEvent diff --git a/src/main/kotlin/com/fardragi/nyaruko/auth/AuthModule.kt b/src/main/kotlin/com/fardragi/nyaruko/auth/AuthModule.kt deleted file mode 100644 index bd7d61c..0000000 --- a/src/main/kotlin/com/fardragi/nyaruko/auth/AuthModule.kt +++ /dev/null @@ -1,17 +0,0 @@ -package com.fardragi.nyaruko.auth - -import com.fardragi.nyaruko.auth.commands.LoginCommand -import com.fardragi.nyaruko.auth.commands.RegisterCommand -import com.fardragi.nyaruko.auth.handlers.AuthHandler -import com.fardragi.nyaruko.auth.handlers.CheckHandler -import com.fardragi.nyaruko.shared.IModule - -class AuthModule() : IModule { - override suspend fun start() { - AuthHandler().register() - CheckHandler().register() - - RegisterCommand().register() - LoginCommand().register() - } -} diff --git a/src/main/kotlin/com/fardragi/nyaruko/client/ClientProxy.kt b/src/main/kotlin/com/fardragi/nyaruko/client/ClientProxy.kt index f3ce72a..61dd679 100644 --- a/src/main/kotlin/com/fardragi/nyaruko/client/ClientProxy.kt +++ b/src/main/kotlin/com/fardragi/nyaruko/client/ClientProxy.kt @@ -1,6 +1,6 @@ package com.fardragi.nyaruko.client -import com.fardragi.nyaruko.shared.IProxy +import com.fardragi.nyaruko.modules.base.IProxy class ClientProxy : IProxy { } diff --git a/src/main/kotlin/com/fardragi/nyaruko/core/CoreModule.kt b/src/main/kotlin/com/fardragi/nyaruko/core/CoreModule.kt deleted file mode 100644 index c4b2a54..0000000 --- a/src/main/kotlin/com/fardragi/nyaruko/core/CoreModule.kt +++ /dev/null @@ -1,14 +0,0 @@ -package com.fardragi.nyaruko.core - -import com.fardragi.nyaruko.core.handlers.PlayerTickHandler -import com.fardragi.nyaruko.shared.IModule -import org.koin.core.component.KoinScopeComponent -import org.koin.core.component.createScope - -class CoreModule() : KoinScopeComponent, IModule { - override val scope by lazy { createScope(this) } - - override suspend fun start() { - PlayerTickHandler().register() - } -} diff --git a/src/main/kotlin/com/fardragi/nyaruko/database/DatabaseConnection.kt b/src/main/kotlin/com/fardragi/nyaruko/database/DatabaseConnection.kt index 43cfb34..b470263 100644 --- a/src/main/kotlin/com/fardragi/nyaruko/database/DatabaseConnection.kt +++ b/src/main/kotlin/com/fardragi/nyaruko/database/DatabaseConnection.kt @@ -18,7 +18,7 @@ class DatabaseConnection(config: DatabaseConfig) { runBlocking { query { SchemaUtils.createMissingTablesAndColumns( - Users, Commands, Groups, UserGroups, GroupCommands + Users, Commands, Groups, UserGroups, GroupCommands, Warps ) } } diff --git a/src/main/kotlin/com/fardragi/nyaruko/database/tables/Warps.kt b/src/main/kotlin/com/fardragi/nyaruko/database/tables/Warps.kt new file mode 100644 index 0000000..ac0b163 --- /dev/null +++ b/src/main/kotlin/com/fardragi/nyaruko/database/tables/Warps.kt @@ -0,0 +1,14 @@ +package com.fardragi.nyaruko.database.tables + +import org.jetbrains.exposed.dao.id.IdTable + +object Warps : IdTable("warps") { + override val id = uinteger("id").autoIncrement().entityId() + val name = varchar("name", 255).uniqueIndex() + val dimension = integer("dimension") + val positionX = integer("position_x") + val positionY = integer("position_y") + val positionZ = integer("position_z") + + override val primaryKey = PrimaryKey(id) +} diff --git a/src/main/kotlin/com/fardragi/nyaruko/exceptions/NotFoundException.kt b/src/main/kotlin/com/fardragi/nyaruko/exceptions/NotFoundException.kt index 3c83722..f8bd241 100644 --- a/src/main/kotlin/com/fardragi/nyaruko/exceptions/NotFoundException.kt +++ b/src/main/kotlin/com/fardragi/nyaruko/exceptions/NotFoundException.kt @@ -1,3 +1,3 @@ package com.fardragi.nyaruko.exceptions -class NotFoundException(className: String?, id: String?) : Exception("$className not found with id: $id") +class NotFoundException(className: String?, id: String?) : Exception("$className não encontrado: $id") diff --git a/src/main/kotlin/com/fardragi/nyaruko/extensions/EntityPlayer.kt b/src/main/kotlin/com/fardragi/nyaruko/extensions/EntityPlayer.kt index e1b9667..10ddd64 100644 --- a/src/main/kotlin/com/fardragi/nyaruko/extensions/EntityPlayer.kt +++ b/src/main/kotlin/com/fardragi/nyaruko/extensions/EntityPlayer.kt @@ -1,5 +1,6 @@ package com.fardragi.nyaruko.extensions +import com.fardragi.nyaruko.models.Warp import com.fardragi.nyaruko.utils.NyarukoTeleporter import com.fardragi.nyaruko.viewmodels.PositionViewModel import net.minecraft.entity.player.EntityPlayer @@ -44,6 +45,10 @@ fun EntityPlayer.teleport(position: PositionViewModel) { ) } +fun EntityPlayer.teleport(warp: Warp) { + teleport(PositionViewModel(this, warp)) +} + fun EntityPlayer.isTruePlayer(): Boolean { return this is EntityPlayerMP && this !is FakePlayer } diff --git a/src/main/kotlin/com/fardragi/nyaruko/models/Warp.kt b/src/main/kotlin/com/fardragi/nyaruko/models/Warp.kt new file mode 100644 index 0000000..953358a --- /dev/null +++ b/src/main/kotlin/com/fardragi/nyaruko/models/Warp.kt @@ -0,0 +1,16 @@ +package com.fardragi.nyaruko.models + +import com.fardragi.nyaruko.database.tables.Warps +import org.jetbrains.exposed.dao.Entity +import org.jetbrains.exposed.dao.EntityClass +import org.jetbrains.exposed.dao.id.EntityID + +class Warp(id: EntityID) : Entity(id) { + companion object : EntityClass(Warps) + + var name by Warps.name + var dimension by Warps.dimension + var positionX by Warps.positionX + var positionY by Warps.positionY + var positionZ by Warps.positionZ +} diff --git a/src/main/kotlin/com/fardragi/nyaruko/modules/auth/AuthModule.kt b/src/main/kotlin/com/fardragi/nyaruko/modules/auth/AuthModule.kt new file mode 100644 index 0000000..6bdf09f --- /dev/null +++ b/src/main/kotlin/com/fardragi/nyaruko/modules/auth/AuthModule.kt @@ -0,0 +1,17 @@ +package com.fardragi.nyaruko.modules.auth + +import com.fardragi.nyaruko.modules.auth.commands.LoginCommand +import com.fardragi.nyaruko.modules.auth.commands.RegisterCommand +import com.fardragi.nyaruko.modules.auth.handlers.AuthHandler +import com.fardragi.nyaruko.modules.auth.handlers.CheckHandler +import com.fardragi.nyaruko.modules.base.IModule + +class AuthModule() : IModule { + override suspend fun start() { + AuthHandler().register() + CheckHandler().register() + + RegisterCommand().register() + LoginCommand().register() + } +} diff --git a/src/main/kotlin/com/fardragi/nyaruko/auth/commands/LoginCommand.kt b/src/main/kotlin/com/fardragi/nyaruko/modules/auth/commands/LoginCommand.kt similarity index 65% rename from src/main/kotlin/com/fardragi/nyaruko/auth/commands/LoginCommand.kt rename to src/main/kotlin/com/fardragi/nyaruko/modules/auth/commands/LoginCommand.kt index caf0f53..47c258a 100644 --- a/src/main/kotlin/com/fardragi/nyaruko/auth/commands/LoginCommand.kt +++ b/src/main/kotlin/com/fardragi/nyaruko/modules/auth/commands/LoginCommand.kt @@ -1,19 +1,17 @@ -package com.fardragi.nyaruko.auth.commands +package com.fardragi.nyaruko.modules.auth.commands -import com.fardragi.nyaruko.auth.messages.LoginMessage -import com.fardragi.nyaruko.enums.PermissionLevel +import com.fardragi.nyaruko.modules.auth.messages.LoginMessage import com.fardragi.nyaruko.exceptions.MessageException import com.fardragi.nyaruko.extensions.sendMessages import com.fardragi.nyaruko.services.SessionsService import com.fardragi.nyaruko.services.UserService -import com.fardragi.nyaruko.shared.commands.NyarukoCommandBase -import com.fardragi.nyaruko.shared.messages.DefaultMessage +import com.fardragi.nyaruko.modules.base.commands.NyarukoCommandBase +import com.fardragi.nyaruko.modules.base.messages.DefaultMessage import net.minecraft.command.ICommandSender import net.minecraft.entity.player.EntityPlayerMP -import org.koin.core.component.KoinComponent import org.koin.core.component.inject -class LoginCommand() : NyarukoCommandBase(), KoinComponent { +class LoginCommand() : NyarukoCommandBase() { private val userService: UserService by inject() private val sessionsService: SessionsService by inject() @@ -27,7 +25,7 @@ class LoginCommand() : NyarukoCommandBase(), KoinComponent { override suspend fun processCommandPlayer(player: EntityPlayerMP, args: Array) { if (args.isEmpty()) { - throw MessageException(DefaultMessage.usage(LoginMessage.usageAction())) + throw MessageException(DefaultMessage.usageFail(LoginMessage.usageAction())) } val userId = player.uniqueID @@ -44,12 +42,4 @@ class LoginCommand() : NyarukoCommandBase(), KoinComponent { player.sendMessages(DefaultMessage.success("Logado com sucesso")) sessionsService.setAuthenticate(userId) } - - override fun getRequiredPermissionLevel(): Int { - return PermissionLevel.All.level - } - - override fun canCommandSenderUseCommand(sender: ICommandSender?): Boolean { - return true - } } diff --git a/src/main/kotlin/com/fardragi/nyaruko/auth/commands/RegisterCommand.kt b/src/main/kotlin/com/fardragi/nyaruko/modules/auth/commands/RegisterCommand.kt similarity index 78% rename from src/main/kotlin/com/fardragi/nyaruko/auth/commands/RegisterCommand.kt rename to src/main/kotlin/com/fardragi/nyaruko/modules/auth/commands/RegisterCommand.kt index 36c9b7f..af60fd7 100644 --- a/src/main/kotlin/com/fardragi/nyaruko/auth/commands/RegisterCommand.kt +++ b/src/main/kotlin/com/fardragi/nyaruko/modules/auth/commands/RegisterCommand.kt @@ -1,18 +1,17 @@ -package com.fardragi.nyaruko.auth.commands +package com.fardragi.nyaruko.modules.auth.commands -import com.fardragi.nyaruko.auth.messages.RegisterMessage +import com.fardragi.nyaruko.modules.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 com.fardragi.nyaruko.modules.base.commands.NyarukoCommandBase +import com.fardragi.nyaruko.modules.base.messages.DefaultMessage import net.minecraft.command.ICommandSender import net.minecraft.entity.player.EntityPlayerMP -import org.koin.core.component.KoinComponent import org.koin.core.component.inject -class RegisterCommand() : NyarukoCommandBase(), KoinComponent { +class RegisterCommand() : NyarukoCommandBase() { private val userService: UserService by inject() override fun getCommandName(): String { @@ -25,7 +24,7 @@ class RegisterCommand() : NyarukoCommandBase(), KoinComponent { override suspend fun processCommandPlayer(player: EntityPlayerMP, args: Array) { if (args.isEmpty() || args.size < 2) { - throw MessageException(DefaultMessage.usage(RegisterMessage.usageAction())) + throw MessageException(DefaultMessage.usageFail(RegisterMessage.usageAction())) } val userId = player.uniqueID diff --git a/src/main/kotlin/com/fardragi/nyaruko/auth/handlers/AuthHandler.kt b/src/main/kotlin/com/fardragi/nyaruko/modules/auth/handlers/AuthHandler.kt similarity index 90% rename from src/main/kotlin/com/fardragi/nyaruko/auth/handlers/AuthHandler.kt rename to src/main/kotlin/com/fardragi/nyaruko/modules/auth/handlers/AuthHandler.kt index 1894099..a8c0530 100644 --- a/src/main/kotlin/com/fardragi/nyaruko/auth/handlers/AuthHandler.kt +++ b/src/main/kotlin/com/fardragi/nyaruko/modules/auth/handlers/AuthHandler.kt @@ -1,11 +1,11 @@ -package com.fardragi.nyaruko.auth.handlers +package com.fardragi.nyaruko.modules.auth.handlers -import com.fardragi.nyaruko.auth.messages.WelcomeMessage +import com.fardragi.nyaruko.modules.auth.messages.WelcomeMessage import com.fardragi.nyaruko.config.DiscordConfig import com.fardragi.nyaruko.extensions.sendMessages import com.fardragi.nyaruko.services.SessionsService import com.fardragi.nyaruko.services.UserService -import com.fardragi.nyaruko.shared.handlers.NyarukoHandlerBase +import com.fardragi.nyaruko.modules.base.handlers.NyarukoHandlerBase import com.fardragi.nyaruko.viewmodels.PositionViewModel import cpw.mods.fml.common.eventhandler.EventPriority import cpw.mods.fml.common.eventhandler.SubscribeEvent diff --git a/src/main/kotlin/com/fardragi/nyaruko/auth/handlers/CheckHandler.kt b/src/main/kotlin/com/fardragi/nyaruko/modules/auth/handlers/CheckHandler.kt similarity index 83% rename from src/main/kotlin/com/fardragi/nyaruko/auth/handlers/CheckHandler.kt rename to src/main/kotlin/com/fardragi/nyaruko/modules/auth/handlers/CheckHandler.kt index 1cbebc9..90d9d0e 100644 --- a/src/main/kotlin/com/fardragi/nyaruko/auth/handlers/CheckHandler.kt +++ b/src/main/kotlin/com/fardragi/nyaruko/modules/auth/handlers/CheckHandler.kt @@ -1,11 +1,11 @@ -package com.fardragi.nyaruko.auth.handlers +package com.fardragi.nyaruko.modules.auth.handlers -import com.fardragi.nyaruko.auth.messages.LoginMessage -import com.fardragi.nyaruko.core.events.PlayerMoveEvent +import com.fardragi.nyaruko.modules.auth.messages.LoginMessage +import com.fardragi.nyaruko.modules.core.events.PlayerMoveEvent import com.fardragi.nyaruko.extensions.isTruePlayer import com.fardragi.nyaruko.extensions.sendMessages import com.fardragi.nyaruko.services.SessionsService -import com.fardragi.nyaruko.shared.handlers.NyarukoHandlerBase +import com.fardragi.nyaruko.modules.base.handlers.NyarukoHandlerBase import cpw.mods.fml.common.eventhandler.EventPriority import cpw.mods.fml.common.eventhandler.SubscribeEvent import net.minecraftforge.event.entity.item.ItemTossEvent diff --git a/src/main/kotlin/com/fardragi/nyaruko/auth/messages/LoginMessage.kt b/src/main/kotlin/com/fardragi/nyaruko/modules/auth/messages/LoginMessage.kt similarity index 94% rename from src/main/kotlin/com/fardragi/nyaruko/auth/messages/LoginMessage.kt rename to src/main/kotlin/com/fardragi/nyaruko/modules/auth/messages/LoginMessage.kt index 478072c..684a927 100644 --- a/src/main/kotlin/com/fardragi/nyaruko/auth/messages/LoginMessage.kt +++ b/src/main/kotlin/com/fardragi/nyaruko/modules/auth/messages/LoginMessage.kt @@ -1,4 +1,4 @@ -package com.fardragi.nyaruko.auth.messages +package com.fardragi.nyaruko.modules.auth.messages import com.fardragi.nyaruko.utils.MessageBuilder import com.fardragi.nyaruko.utils.TextBuilder diff --git a/src/main/kotlin/com/fardragi/nyaruko/auth/messages/RegisterMessage.kt b/src/main/kotlin/com/fardragi/nyaruko/modules/auth/messages/RegisterMessage.kt similarity index 96% rename from src/main/kotlin/com/fardragi/nyaruko/auth/messages/RegisterMessage.kt rename to src/main/kotlin/com/fardragi/nyaruko/modules/auth/messages/RegisterMessage.kt index e96da17..9cb39a6 100644 --- a/src/main/kotlin/com/fardragi/nyaruko/auth/messages/RegisterMessage.kt +++ b/src/main/kotlin/com/fardragi/nyaruko/modules/auth/messages/RegisterMessage.kt @@ -1,4 +1,4 @@ -package com.fardragi.nyaruko.auth.messages +package com.fardragi.nyaruko.modules.auth.messages import com.fardragi.nyaruko.utils.MessageBuilder import com.fardragi.nyaruko.utils.TextBuilder diff --git a/src/main/kotlin/com/fardragi/nyaruko/auth/messages/WelcomeMessage.kt b/src/main/kotlin/com/fardragi/nyaruko/modules/auth/messages/WelcomeMessage.kt similarity index 96% rename from src/main/kotlin/com/fardragi/nyaruko/auth/messages/WelcomeMessage.kt rename to src/main/kotlin/com/fardragi/nyaruko/modules/auth/messages/WelcomeMessage.kt index 9709bf6..dccd6c4 100644 --- a/src/main/kotlin/com/fardragi/nyaruko/auth/messages/WelcomeMessage.kt +++ b/src/main/kotlin/com/fardragi/nyaruko/modules/auth/messages/WelcomeMessage.kt @@ -1,4 +1,4 @@ -package com.fardragi.nyaruko.auth.messages +package com.fardragi.nyaruko.modules.auth.messages import com.fardragi.nyaruko.utils.MessageBuilder import net.minecraft.event.ClickEvent diff --git a/src/main/kotlin/com/fardragi/nyaruko/modules/base/IModule.kt b/src/main/kotlin/com/fardragi/nyaruko/modules/base/IModule.kt new file mode 100644 index 0000000..6b09952 --- /dev/null +++ b/src/main/kotlin/com/fardragi/nyaruko/modules/base/IModule.kt @@ -0,0 +1,7 @@ +package com.fardragi.nyaruko.modules.base + +import org.koin.core.component.KoinComponent + +fun interface IModule : KoinComponent { + suspend fun start() +} diff --git a/src/main/kotlin/com/fardragi/nyaruko/shared/IProxy.kt b/src/main/kotlin/com/fardragi/nyaruko/modules/base/IProxy.kt similarity index 92% rename from src/main/kotlin/com/fardragi/nyaruko/shared/IProxy.kt rename to src/main/kotlin/com/fardragi/nyaruko/modules/base/IProxy.kt index c56a0cf..ffaec8d 100644 --- a/src/main/kotlin/com/fardragi/nyaruko/shared/IProxy.kt +++ b/src/main/kotlin/com/fardragi/nyaruko/modules/base/IProxy.kt @@ -1,4 +1,4 @@ -package com.fardragi.nyaruko.shared +package com.fardragi.nyaruko.modules.base import cpw.mods.fml.common.event.FMLInitializationEvent import cpw.mods.fml.common.event.FMLPostInitializationEvent diff --git a/src/main/kotlin/com/fardragi/nyaruko/shared/commands/NyarukoCommandBase.kt b/src/main/kotlin/com/fardragi/nyaruko/modules/base/commands/NyarukoCommandBase.kt similarity index 65% rename from src/main/kotlin/com/fardragi/nyaruko/shared/commands/NyarukoCommandBase.kt rename to src/main/kotlin/com/fardragi/nyaruko/modules/base/commands/NyarukoCommandBase.kt index 759d670..a1b4366 100644 --- a/src/main/kotlin/com/fardragi/nyaruko/shared/commands/NyarukoCommandBase.kt +++ b/src/main/kotlin/com/fardragi/nyaruko/modules/base/commands/NyarukoCommandBase.kt @@ -1,9 +1,10 @@ -package com.fardragi.nyaruko.shared.commands +package com.fardragi.nyaruko.modules.base.commands import com.fardragi.nyaruko.NyarukoLog +import com.fardragi.nyaruko.enums.PermissionLevel import com.fardragi.nyaruko.exceptions.MessageException import com.fardragi.nyaruko.extensions.sendMessages -import com.fardragi.nyaruko.shared.messages.DefaultMessage +import com.fardragi.nyaruko.modules.base.messages.DefaultMessage import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch @@ -13,9 +14,10 @@ import net.minecraft.command.ServerCommandManager import net.minecraft.command.server.CommandBlockLogic import net.minecraft.entity.player.EntityPlayerMP import net.minecraft.server.MinecraftServer +import org.koin.core.component.KoinComponent -abstract class NyarukoCommandBase : CommandBase() { - fun register(){ +abstract class NyarukoCommandBase : CommandBase(), KoinComponent { + fun register() { (MinecraftServer.getServer().commandManager as ServerCommandManager).registerCommand(this) } @@ -37,14 +39,26 @@ abstract class NyarukoCommandBase : CommandBase() { } open suspend fun processCommandPlayer(player: EntityPlayerMP, args: Array) { - return + throw MessageException(DefaultMessage.error("Você não pode usar esse comando")) } open suspend fun processCommandBlock(commandBlock: CommandBlockLogic, args: Array) { - return + throw MessageException(DefaultMessage.error("O comando não pode ser usando em um comand block")) } open suspend fun processCommandConsole(sender: ICommandSender, args: Array) { - return + throw MessageException(DefaultMessage.error("Você não pode usar esse comando")) + } + + override fun getRequiredPermissionLevel(): Int { + return getPermissionLevel().level + } + + open fun getPermissionLevel(): PermissionLevel { + return PermissionLevel.All + } + + override fun canCommandSenderUseCommand(sender: ICommandSender?): Boolean { + return true } } diff --git a/src/main/kotlin/com/fardragi/nyaruko/shared/events/NyarukoEvent.kt b/src/main/kotlin/com/fardragi/nyaruko/modules/base/events/NyarukoEvent.kt similarity index 80% rename from src/main/kotlin/com/fardragi/nyaruko/shared/events/NyarukoEvent.kt rename to src/main/kotlin/com/fardragi/nyaruko/modules/base/events/NyarukoEvent.kt index af5e148..359a24c 100644 --- a/src/main/kotlin/com/fardragi/nyaruko/shared/events/NyarukoEvent.kt +++ b/src/main/kotlin/com/fardragi/nyaruko/modules/base/events/NyarukoEvent.kt @@ -1,4 +1,4 @@ -package com.fardragi.nyaruko.shared.events +package com.fardragi.nyaruko.modules.base.events import cpw.mods.fml.common.eventhandler.Event import net.minecraftforge.common.MinecraftForge diff --git a/src/main/kotlin/com/fardragi/nyaruko/modules/base/events/ServerStartingEvent.kt b/src/main/kotlin/com/fardragi/nyaruko/modules/base/events/ServerStartingEvent.kt new file mode 100644 index 0000000..8520dd9 --- /dev/null +++ b/src/main/kotlin/com/fardragi/nyaruko/modules/base/events/ServerStartingEvent.kt @@ -0,0 +1,3 @@ +package com.fardragi.nyaruko.modules.base.events + +class ServerStartingEvent() : NyarukoEvent() diff --git a/src/main/kotlin/com/fardragi/nyaruko/shared/handlers/NyarukoHandlerBase.kt b/src/main/kotlin/com/fardragi/nyaruko/modules/base/handlers/NyarukoHandlerBase.kt similarity index 83% rename from src/main/kotlin/com/fardragi/nyaruko/shared/handlers/NyarukoHandlerBase.kt rename to src/main/kotlin/com/fardragi/nyaruko/modules/base/handlers/NyarukoHandlerBase.kt index 48491e6..e3ac579 100644 --- a/src/main/kotlin/com/fardragi/nyaruko/shared/handlers/NyarukoHandlerBase.kt +++ b/src/main/kotlin/com/fardragi/nyaruko/modules/base/handlers/NyarukoHandlerBase.kt @@ -1,4 +1,4 @@ -package com.fardragi.nyaruko.shared.handlers +package com.fardragi.nyaruko.modules.base.handlers import cpw.mods.fml.common.FMLCommonHandler import net.minecraftforge.common.MinecraftForge diff --git a/src/main/kotlin/com/fardragi/nyaruko/shared/messages/DefaultMessage.kt b/src/main/kotlin/com/fardragi/nyaruko/modules/base/messages/DefaultMessage.kt similarity index 90% rename from src/main/kotlin/com/fardragi/nyaruko/shared/messages/DefaultMessage.kt rename to src/main/kotlin/com/fardragi/nyaruko/modules/base/messages/DefaultMessage.kt index 4f22b7a..7f27ae1 100644 --- a/src/main/kotlin/com/fardragi/nyaruko/shared/messages/DefaultMessage.kt +++ b/src/main/kotlin/com/fardragi/nyaruko/modules/base/messages/DefaultMessage.kt @@ -1,11 +1,11 @@ -package com.fardragi.nyaruko.shared.messages +package com.fardragi.nyaruko.modules.base.messages import com.fardragi.nyaruko.utils.MessageBuilder import com.fardragi.nyaruko.utils.TextBuilder import net.minecraft.util.EnumChatFormatting object DefaultMessage { - fun usage(usageAction: TextBuilder): MessageBuilder { + fun usageFail(usageAction: TextBuilder): MessageBuilder { val messageBuilder = MessageBuilder() .addLine { builder -> builder.append("Falha ao executar", EnumChatFormatting.RED) diff --git a/src/main/kotlin/com/fardragi/nyaruko/modules/core/CoreModule.kt b/src/main/kotlin/com/fardragi/nyaruko/modules/core/CoreModule.kt new file mode 100644 index 0000000..37185c5 --- /dev/null +++ b/src/main/kotlin/com/fardragi/nyaruko/modules/core/CoreModule.kt @@ -0,0 +1,21 @@ +package com.fardragi.nyaruko.modules.core + +import com.fardragi.nyaruko.modules.core.handlers.PlayerTickHandler +import com.fardragi.nyaruko.modules.base.IModule +import com.fardragi.nyaruko.modules.core.commands.SetWarpCommand +import com.fardragi.nyaruko.modules.core.commands.WarpCommand +import com.fardragi.nyaruko.services.WarpService +import org.koin.core.component.inject + +class CoreModule() : IModule { + private val warpService: WarpService by inject() + + override suspend fun start() { + warpService.load() + + PlayerTickHandler().register() + + WarpCommand().register() + SetWarpCommand().register() + } +} diff --git a/src/main/kotlin/com/fardragi/nyaruko/modules/core/commands/SetWarpCommand.kt b/src/main/kotlin/com/fardragi/nyaruko/modules/core/commands/SetWarpCommand.kt new file mode 100644 index 0000000..6c6bfb3 --- /dev/null +++ b/src/main/kotlin/com/fardragi/nyaruko/modules/core/commands/SetWarpCommand.kt @@ -0,0 +1,42 @@ +package com.fardragi.nyaruko.modules.core.commands + +import com.fardragi.nyaruko.enums.PermissionLevel +import com.fardragi.nyaruko.exceptions.MessageException +import com.fardragi.nyaruko.extensions.sendMessages +import com.fardragi.nyaruko.modules.base.commands.NyarukoCommandBase +import com.fardragi.nyaruko.modules.base.messages.DefaultMessage +import com.fardragi.nyaruko.modules.core.messages.WarpMessage +import com.fardragi.nyaruko.services.WarpService +import com.fardragi.nyaruko.viewmodels.PositionViewModel +import net.minecraft.command.ICommandSender +import net.minecraft.entity.player.EntityPlayerMP +import org.koin.core.component.inject + +class SetWarpCommand : NyarukoCommandBase() { + private val warpService: WarpService by inject() + + override fun getCommandName(): String { + return "setwarp" + } + + override fun getCommandUsage(sender: ICommandSender?): String { + return "/setwarp " + } + + override fun getPermissionLevel(): PermissionLevel { + return PermissionLevel.Op + } + + override suspend fun processCommandPlayer(player: EntityPlayerMP, args: Array) { + if (args.isEmpty()) { + throw MessageException(DefaultMessage.usageFail(WarpMessage.usageAction(commandName))) + } + + val location = PositionViewModel(player) + val name = args[0] + + warpService.create(name, location) + + player.sendMessages(DefaultMessage.success("Warp criada com sucesso")) + } +} diff --git a/src/main/kotlin/com/fardragi/nyaruko/modules/core/commands/WarpCommand.kt b/src/main/kotlin/com/fardragi/nyaruko/modules/core/commands/WarpCommand.kt new file mode 100644 index 0000000..db273a7 --- /dev/null +++ b/src/main/kotlin/com/fardragi/nyaruko/modules/core/commands/WarpCommand.kt @@ -0,0 +1,35 @@ +package com.fardragi.nyaruko.modules.core.commands + +import com.fardragi.nyaruko.exceptions.MessageException +import com.fardragi.nyaruko.extensions.teleport +import com.fardragi.nyaruko.modules.base.commands.NyarukoCommandBase +import com.fardragi.nyaruko.modules.base.messages.DefaultMessage +import com.fardragi.nyaruko.modules.core.messages.WarpMessage +import com.fardragi.nyaruko.services.WarpService +import net.minecraft.command.ICommandSender +import net.minecraft.entity.player.EntityPlayerMP +import org.koin.core.component.inject + +class WarpCommand : NyarukoCommandBase() { + private val warpService: WarpService by inject() + + override fun getCommandName(): String { + return "warp" + } + + override fun getCommandUsage(sender: ICommandSender?): String { + return "/warp " + } + + override suspend fun processCommandPlayer(player: EntityPlayerMP, args: Array) { + if (args.isEmpty()) { + throw MessageException(DefaultMessage.usageFail(WarpMessage.usageAction(commandName))) + } + + val name = args[0] + + val warp = warpService.get(name) + + player.teleport(warp) + } +} diff --git a/src/main/kotlin/com/fardragi/nyaruko/core/events/PlayerMoveEvent.kt b/src/main/kotlin/com/fardragi/nyaruko/modules/core/events/PlayerMoveEvent.kt similarity index 75% rename from src/main/kotlin/com/fardragi/nyaruko/core/events/PlayerMoveEvent.kt rename to src/main/kotlin/com/fardragi/nyaruko/modules/core/events/PlayerMoveEvent.kt index 90f2075..9a09a0f 100644 --- a/src/main/kotlin/com/fardragi/nyaruko/core/events/PlayerMoveEvent.kt +++ b/src/main/kotlin/com/fardragi/nyaruko/modules/core/events/PlayerMoveEvent.kt @@ -1,6 +1,6 @@ -package com.fardragi.nyaruko.core.events +package com.fardragi.nyaruko.modules.core.events -import com.fardragi.nyaruko.shared.events.NyarukoEvent +import com.fardragi.nyaruko.modules.base.events.NyarukoEvent import com.fardragi.nyaruko.viewmodels.PositionViewModel import cpw.mods.fml.common.eventhandler.Cancelable import net.minecraft.entity.player.EntityPlayerMP diff --git a/src/main/kotlin/com/fardragi/nyaruko/core/handlers/PlayerTickHandler.kt b/src/main/kotlin/com/fardragi/nyaruko/modules/core/handlers/PlayerTickHandler.kt similarity index 91% rename from src/main/kotlin/com/fardragi/nyaruko/core/handlers/PlayerTickHandler.kt rename to src/main/kotlin/com/fardragi/nyaruko/modules/core/handlers/PlayerTickHandler.kt index 33e10ff..cd05adc 100644 --- a/src/main/kotlin/com/fardragi/nyaruko/core/handlers/PlayerTickHandler.kt +++ b/src/main/kotlin/com/fardragi/nyaruko/modules/core/handlers/PlayerTickHandler.kt @@ -1,8 +1,8 @@ -package com.fardragi.nyaruko.core.handlers +package com.fardragi.nyaruko.modules.core.handlers -import com.fardragi.nyaruko.core.events.PlayerMoveEvent +import com.fardragi.nyaruko.modules.core.events.PlayerMoveEvent import com.fardragi.nyaruko.extensions.teleport -import com.fardragi.nyaruko.shared.handlers.NyarukoHandlerBase +import com.fardragi.nyaruko.modules.base.handlers.NyarukoHandlerBase import com.fardragi.nyaruko.viewmodels.PositionViewModel import cpw.mods.fml.common.eventhandler.EventPriority import cpw.mods.fml.common.eventhandler.SubscribeEvent diff --git a/src/main/kotlin/com/fardragi/nyaruko/modules/core/messages/WarpMessage.kt b/src/main/kotlin/com/fardragi/nyaruko/modules/core/messages/WarpMessage.kt new file mode 100644 index 0000000..c6a6b1d --- /dev/null +++ b/src/main/kotlin/com/fardragi/nyaruko/modules/core/messages/WarpMessage.kt @@ -0,0 +1,22 @@ +package com.fardragi.nyaruko.modules.core.messages + +import com.fardragi.nyaruko.utils.TextBuilder +import net.minecraft.event.ClickEvent +import net.minecraft.event.HoverEvent +import net.minecraft.util.EnumChatFormatting + +object WarpMessage { + fun usageAction(name: String): TextBuilder { + val command = "/$name" + + val textBuilder = TextBuilder() + .append("$command ", EnumChatFormatting.YELLOW) { + it.clickEvent(ClickEvent.Action.SUGGEST_COMMAND, command) + it.hoverEvent(HoverEvent.Action.SHOW_TEXT) { event -> + event.append(command) + } + } + + return textBuilder + } +} diff --git a/src/main/kotlin/com/fardragi/nyaruko/modules/permission/PermissionModule.kt b/src/main/kotlin/com/fardragi/nyaruko/modules/permission/PermissionModule.kt new file mode 100644 index 0000000..b34733f --- /dev/null +++ b/src/main/kotlin/com/fardragi/nyaruko/modules/permission/PermissionModule.kt @@ -0,0 +1,17 @@ +package com.fardragi.nyaruko.modules.permission + +import com.fardragi.nyaruko.modules.permission.handlers.RegisterPermissionsHandler +import com.fardragi.nyaruko.services.GroupService +import com.fardragi.nyaruko.modules.base.IModule +import org.koin.core.component.inject + +class PermissionModule() : IModule { + private val groupService by inject() + + override suspend fun start() { + groupService.checkDefault() + + RegisterPermissionsHandler().register() + } +} + diff --git a/src/main/kotlin/com/fardragi/nyaruko/permission/handlers/RegisterPermissionsHandler.kt b/src/main/kotlin/com/fardragi/nyaruko/modules/permission/handlers/RegisterPermissionsHandler.kt similarity index 85% rename from src/main/kotlin/com/fardragi/nyaruko/permission/handlers/RegisterPermissionsHandler.kt rename to src/main/kotlin/com/fardragi/nyaruko/modules/permission/handlers/RegisterPermissionsHandler.kt index fcb8b12..e109a98 100644 --- a/src/main/kotlin/com/fardragi/nyaruko/permission/handlers/RegisterPermissionsHandler.kt +++ b/src/main/kotlin/com/fardragi/nyaruko/modules/permission/handlers/RegisterPermissionsHandler.kt @@ -1,10 +1,10 @@ -package com.fardragi.nyaruko.permission.handlers +package com.fardragi.nyaruko.modules.permission.handlers import com.fardragi.nyaruko.enums.PermissionLevel import com.fardragi.nyaruko.services.CommandService import com.fardragi.nyaruko.services.GroupService -import com.fardragi.nyaruko.shared.events.ServerStartingEvent -import com.fardragi.nyaruko.shared.handlers.NyarukoHandlerBase +import com.fardragi.nyaruko.modules.base.events.ServerStartingEvent +import com.fardragi.nyaruko.modules.base.handlers.NyarukoHandlerBase import cpw.mods.fml.common.eventhandler.EventPriority import cpw.mods.fml.common.eventhandler.SubscribeEvent import kotlinx.coroutines.CoroutineScope @@ -28,7 +28,6 @@ class RegisterPermissionsHandler : NyarukoHandlerBase(), KoinComponent { } CoroutineScope(Dispatchers.Default).launch { - groupService.checkDefault() commandService.registerCommands(commands as HashMap) } } diff --git a/src/main/kotlin/com/fardragi/nyaruko/permission/PermissionModule.kt b/src/main/kotlin/com/fardragi/nyaruko/permission/PermissionModule.kt deleted file mode 100644 index acb5757..0000000 --- a/src/main/kotlin/com/fardragi/nyaruko/permission/PermissionModule.kt +++ /dev/null @@ -1,11 +0,0 @@ -package com.fardragi.nyaruko.permission - -import com.fardragi.nyaruko.permission.handlers.RegisterPermissionsHandler -import com.fardragi.nyaruko.shared.IModule - -class PermissionModule() : IModule { - override suspend fun start() { - RegisterPermissionsHandler().register() - } -} - diff --git a/src/main/kotlin/com/fardragi/nyaruko/server/ServerProxy.kt b/src/main/kotlin/com/fardragi/nyaruko/server/ServerProxy.kt index fb5dd15..44aff71 100644 --- a/src/main/kotlin/com/fardragi/nyaruko/server/ServerProxy.kt +++ b/src/main/kotlin/com/fardragi/nyaruko/server/ServerProxy.kt @@ -2,11 +2,11 @@ package com.fardragi.nyaruko.server import com.fardragi.nyaruko.NyarukoLog import com.fardragi.nyaruko.appModule -import com.fardragi.nyaruko.auth.AuthModule -import com.fardragi.nyaruko.core.CoreModule -import com.fardragi.nyaruko.permission.PermissionModule -import com.fardragi.nyaruko.shared.IProxy -import com.fardragi.nyaruko.shared.events.ServerStartingEvent +import com.fardragi.nyaruko.modules.auth.AuthModule +import com.fardragi.nyaruko.modules.core.CoreModule +import com.fardragi.nyaruko.modules.permission.PermissionModule +import com.fardragi.nyaruko.modules.base.IProxy +import com.fardragi.nyaruko.modules.base.events.ServerStartingEvent import cpw.mods.fml.common.event.FMLInitializationEvent import cpw.mods.fml.common.event.FMLPreInitializationEvent import cpw.mods.fml.common.event.FMLServerStartingEvent @@ -24,14 +24,10 @@ class ServerProxy : IProxy { } override fun onInit(event: FMLInitializationEvent) { - val coreModule = app.koin.get() - val authModule = app.koin.get() - val permissionModule = app.koin.get() - runBlocking { - coreModule.start() - authModule.start() - permissionModule.start() + CoreModule().start() + AuthModule().start() + PermissionModule().start() } } diff --git a/src/main/kotlin/com/fardragi/nyaruko/services/WarpService.kt b/src/main/kotlin/com/fardragi/nyaruko/services/WarpService.kt new file mode 100644 index 0000000..43c59ee --- /dev/null +++ b/src/main/kotlin/com/fardragi/nyaruko/services/WarpService.kt @@ -0,0 +1,34 @@ +package com.fardragi.nyaruko.services + +import com.fardragi.nyaruko.database.query +import com.fardragi.nyaruko.exceptions.NotFoundException +import com.fardragi.nyaruko.models.Warp +import com.fardragi.nyaruko.viewmodels.PositionViewModel + +class WarpService { + private val warps = mutableMapOf() + + suspend fun load() { + query { + Warp.all().forEach { + warps[it.name] = it + } + } + } + + suspend fun create(name: String, position: PositionViewModel) { + query { + warps[name] = Warp.new { + this.name = name + dimension = position.dimension + positionX = position.block.x + positionY = position.block.y + positionZ = position.block.z + } + } + } + + fun get(name: String): Warp { + return warps[name] ?: throw NotFoundException(Warp::class.simpleName, name) + } +} diff --git a/src/main/kotlin/com/fardragi/nyaruko/shared/IModule.kt b/src/main/kotlin/com/fardragi/nyaruko/shared/IModule.kt deleted file mode 100644 index 37f25d6..0000000 --- a/src/main/kotlin/com/fardragi/nyaruko/shared/IModule.kt +++ /dev/null @@ -1,5 +0,0 @@ -package com.fardragi.nyaruko.shared - -fun interface IModule { - suspend fun start() -} diff --git a/src/main/kotlin/com/fardragi/nyaruko/shared/events/ServerStartingEvent.kt b/src/main/kotlin/com/fardragi/nyaruko/shared/events/ServerStartingEvent.kt deleted file mode 100644 index b60fd6f..0000000 --- a/src/main/kotlin/com/fardragi/nyaruko/shared/events/ServerStartingEvent.kt +++ /dev/null @@ -1,3 +0,0 @@ -package com.fardragi.nyaruko.shared.events - -class ServerStartingEvent() : NyarukoEvent() diff --git a/src/main/kotlin/com/fardragi/nyaruko/viewmodels/PositionViewModel.kt b/src/main/kotlin/com/fardragi/nyaruko/viewmodels/PositionViewModel.kt index 28a29db..0017e07 100644 --- a/src/main/kotlin/com/fardragi/nyaruko/viewmodels/PositionViewModel.kt +++ b/src/main/kotlin/com/fardragi/nyaruko/viewmodels/PositionViewModel.kt @@ -1,15 +1,34 @@ package com.fardragi.nyaruko.viewmodels +import com.fardragi.nyaruko.models.Warp import net.minecraft.entity.Entity import kotlin.math.floor -data class PositionViewModel(val player: Entity) { - val dimension = player.dimension - val positionX = player.posX - val positionY = player.posY - val positionZ = player.posZ - val rotationYaw = player.rotationYaw - val rotationPitch = player.rotationPitch +class PositionViewModel { + val dimension: Int + val positionX: Double + val positionY: Double + val positionZ: Double + val rotationYaw: Float + val rotationPitch: Float + + constructor(player: Entity) { + dimension = player.dimension + positionX = player.posX + positionY = player.posY + positionZ = player.posZ + rotationYaw = player.rotationYaw + rotationPitch = player.rotationPitch + } + + constructor(player: Entity, warp: Warp) { + dimension = warp.dimension + positionX = warp.positionX.toDouble() + positionY = warp.positionY.toDouble() + positionZ = warp.positionZ.toDouble() + rotationYaw = player.rotationYaw + rotationPitch = player.rotationPitch + } val block get() = BlockViewModel(