Skip to content

Commit

Permalink
Add: warp command
Browse files Browse the repository at this point in the history
  • Loading branch information
vulcandragi committed Sep 19, 2024
1 parent b8a4724 commit f7d74b2
Show file tree
Hide file tree
Showing 39 changed files with 332 additions and 138 deletions.
16 changes: 5 additions & 11 deletions src/main/kotlin/com/fardragi/nyaruko/App.kt
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -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() }
}
2 changes: 1 addition & 1 deletion src/main/kotlin/com/fardragi/nyaruko/NyarukoMod.kt
Original file line number Diff line number Diff line change
@@ -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
Expand Down
17 changes: 0 additions & 17 deletions src/main/kotlin/com/fardragi/nyaruko/auth/AuthModule.kt

This file was deleted.

2 changes: 1 addition & 1 deletion src/main/kotlin/com/fardragi/nyaruko/client/ClientProxy.kt
Original file line number Diff line number Diff line change
@@ -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 {
}
14 changes: 0 additions & 14 deletions src/main/kotlin/com/fardragi/nyaruko/core/CoreModule.kt

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ class DatabaseConnection(config: DatabaseConfig) {
runBlocking {
query {
SchemaUtils.createMissingTablesAndColumns(
Users, Commands, Groups, UserGroups, GroupCommands
Users, Commands, Groups, UserGroups, GroupCommands, Warps
)
}
}
Expand Down
14 changes: 14 additions & 0 deletions src/main/kotlin/com/fardragi/nyaruko/database/tables/Warps.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package com.fardragi.nyaruko.database.tables

import org.jetbrains.exposed.dao.id.IdTable

object Warps : IdTable<UInt>("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)
}
Original file line number Diff line number Diff line change
@@ -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")
Original file line number Diff line number Diff line change
@@ -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
Expand Down Expand Up @@ -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
}
16 changes: 16 additions & 0 deletions src/main/kotlin/com/fardragi/nyaruko/models/Warp.kt
Original file line number Diff line number Diff line change
@@ -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<UInt>) : Entity<UInt>(id) {
companion object : EntityClass<UInt, Warp>(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
}
17 changes: 17 additions & 0 deletions src/main/kotlin/com/fardragi/nyaruko/modules/auth/AuthModule.kt
Original file line number Diff line number Diff line change
@@ -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()
}
}
Original file line number Diff line number Diff line change
@@ -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()

Expand All @@ -27,7 +25,7 @@ class LoginCommand() : NyarukoCommandBase(), KoinComponent {

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

val userId = player.uniqueID
Expand All @@ -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
}
}
Original file line number Diff line number Diff line change
@@ -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 {
Expand All @@ -25,7 +24,7 @@ class RegisterCommand() : NyarukoCommandBase(), KoinComponent {

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

val userId = player.uniqueID
Expand Down
Original file line number Diff line number Diff line change
@@ -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
Expand Down
Original file line number Diff line number Diff line change
@@ -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
Expand Down
Original file line number Diff line number Diff line change
@@ -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
Expand Down
Original file line number Diff line number Diff line change
@@ -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
Expand Down
Original file line number Diff line number Diff line change
@@ -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
Expand Down
7 changes: 7 additions & 0 deletions src/main/kotlin/com/fardragi/nyaruko/modules/base/IModule.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package com.fardragi.nyaruko.modules.base

import org.koin.core.component.KoinComponent

fun interface IModule : KoinComponent {
suspend fun start()
}
Original file line number Diff line number Diff line change
@@ -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
Expand Down
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -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)
}

Expand All @@ -37,14 +39,26 @@ abstract class NyarukoCommandBase : CommandBase() {
}

open suspend fun processCommandPlayer(player: EntityPlayerMP, args: Array<out String>) {
return
throw MessageException(DefaultMessage.error("Você não pode usar esse comando"))
}

open suspend fun processCommandBlock(commandBlock: CommandBlockLogic, args: Array<out String>) {
return
throw MessageException(DefaultMessage.error("O comando não pode ser usando em um comand block"))
}

open suspend fun processCommandConsole(sender: ICommandSender, args: Array<out String>) {
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
}
}
Original file line number Diff line number Diff line change
@@ -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
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
package com.fardragi.nyaruko.modules.base.events

class ServerStartingEvent() : NyarukoEvent()
Original file line number Diff line number Diff line change
@@ -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
Expand Down
Original file line number Diff line number Diff line change
@@ -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)
Expand Down
Loading

0 comments on commit f7d74b2

Please sign in to comment.