Skip to content

Commit

Permalink
clean up
Browse files Browse the repository at this point in the history
  • Loading branch information
l4zs committed May 19, 2022
1 parent 6702db7 commit 00d270f
Show file tree
Hide file tree
Showing 18 changed files with 207 additions and 133 deletions.
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,12 +20,12 @@ Translation files are saved as .properties files in the translations folder.

### Permissions
- `/back` - `tpa.back`
- `/tpaccept <player>` - `tpa.tpaccept`
- `/tpa <player>` - `tpa.tpa`
- `/tpa reload-config` - `tpa.reload-config`
- `/tpa reload-translations` - `tpa.reload-translations`
- `/tpaccept <player>` - `tpa.tpaccept`
- `/tpahere <player>` - `tpa.tpahere`
- `/tpahereall` - `tpa.tpahereall`
- `/tpahere <player>` - `tpa.tpahere`
- `/tpcancel <player>` - `tpa.tpcancel`
- `/tpdeny <player>` - `tpa.tpdeny`
- `/tptoggle` - `tpa.tptoggle`
Expand Down
10 changes: 5 additions & 5 deletions build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

plugins {
kotlin("jvm") version "1.6.10"
id("org.jlleitschuh.gradle.ktlint") version "10.2.1"
id("io.papermc.paperweight.userdev") version "1.3.5"
kotlin("jvm") version "1.6.21"
id("org.jlleitschuh.gradle.ktlint") version "10.3.0"
id("io.papermc.paperweight.userdev") version "1.3.6"
id("net.minecrell.plugin-yml.bukkit") version "0.5.1"
}

group = "de.l4zs"
version = "1.1.0"
version = "1.1.1"

repositories {
mavenCentral()
Expand All @@ -29,7 +29,7 @@ tasks {
withType<KotlinCompile> {
kotlinOptions {
jvmTarget = "17"
freeCompilerArgs += "-opt-in=kotlin.RequiresOptIn"
freeCompilerArgs = freeCompilerArgs + "-opt-in=kotlin.RequiresOptIn"
}
}
}
Expand Down
2 changes: 1 addition & 1 deletion gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#
#Wed Mar 31 23:14:45 CEST 2021
distributionBase=GRADLE_USER_HOME
distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.2-bin.zip
distributionPath=wrapper/dists
zipStorePath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
58 changes: 16 additions & 42 deletions src/main/kotlin/de/l4zs/tpa/TPA.kt
Original file line number Diff line number Diff line change
Expand Up @@ -30,60 +30,34 @@ import de.l4zs.tpa.config.ConfigManager
import de.l4zs.tpa.i18n.TranslationsProvider
import de.l4zs.tpa.listener.BackListener
import de.l4zs.tpa.util.TpaManager
import net.axay.kspigot.commands.register
import net.axay.kspigot.event.register
import net.axay.kspigot.extensions.pluginManager
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import net.axay.kspigot.main.KSpigot
import java.util.Locale
import kotlin.io.path.div
import kotlin.io.path.notExists

class TPA : KSpigot() {

lateinit var translationsProvider: TranslationsProvider
lateinit var configManager: ConfigManager
lateinit var tpaManager: TpaManager
val defaultScope = CoroutineScope(Dispatchers.Default)
val ioScope = CoroutineScope(Dispatchers.IO)

override fun startup() {
BackCommand().register(this).register(true)
TpacceptCommand().register(this).register(true)
TpaCommand().register(this).register(true)
TpahereCommand().register(this).register(true)
TpahereallCommand().register(this).register(true)
TpcancelCommand().register(this).register(true)
TpdenyCommand().register(this).register(true)
TptoggleCommand().register().register(true)

BackListener().register().register()

val translationNames = listOf("general_en.properties", "general_de.properties")
// save default translations
translationNames.forEach {
if ((dataFolder.toPath() / "translations" / it).notExists()) {
saveResource("translations/$it", false)
}
}

configManager = ConfigManager(this)
translationsProvider = TranslationsProvider(this)
reloadTranslations()
tpaManager = TpaManager(this)
}

override fun shutdown() {
}

fun reloadTranslations() {
val locales = configManager.config.yml.getStringList("translations").map { Locale(it) }

if (locales.isEmpty()) {
logger.severe("No translations found. Please add at least one translation (default available are 'en' and 'de') to the config.yml")
pluginManager.disablePlugin(this)
}

translationsProvider.unregisterTranslations(locales.first())
translationsProvider.locales.clear()
translationsProvider.locales.addAll(locales)
translationsProvider.registerTranslations()
listOf(
BackCommand(),
TpacceptCommand(),
TpaCommand(),
TpahereCommand(),
TpahereallCommand(),
TpcancelCommand(),
TpdenyCommand(),
TptoggleCommand()
).filter { !configManager.config.disabledCommands.contains(it.commandName) }.map { it.register(this) }

BackListener().register()
}
}
8 changes: 5 additions & 3 deletions src/main/kotlin/de/l4zs/tpa/command/BackCommand.kt
Original file line number Diff line number Diff line change
Expand Up @@ -25,13 +25,15 @@ import net.axay.kspigot.commands.command
import net.axay.kspigot.commands.requiresPermission
import net.axay.kspigot.commands.runs

class BackCommand {
class BackCommand : RegisterableCommand {

fun register(plugin: TPA) = command("back") {
override val commandName = "back"

override fun register(plugin: TPA) = command(commandName) {
requiresPermission("tpa.back")
runs {
if (player.backLocation != null) {
if (plugin.configManager.config.yml.getStringList("disabled_worlds.back").contains(player.backLocation!!.world.name)) {
if (plugin.configManager.config.isWorldBackDisabled(player.backLocation!!.world.name)) {
player.sendMessage(Message.backCannotTeleportToThatWorld())
} else {
player.teleportAsync(player.backLocation!!)
Expand Down
30 changes: 30 additions & 0 deletions src/main/kotlin/de/l4zs/tpa/command/RegisterableCommand.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
/*
* TPA is a simple plugin giving the ability to request teleports to others and go back to your death location if you die.
* Copyright (c) 2022 l4zs
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/

package de.l4zs.tpa.command

import com.mojang.brigadier.builder.LiteralArgumentBuilder
import de.l4zs.tpa.TPA
import net.minecraft.commands.CommandSourceStack

interface RegisterableCommand {

val commandName: String

fun register(plugin: TPA): LiteralArgumentBuilder<CommandSourceStack>
}
16 changes: 6 additions & 10 deletions src/main/kotlin/de/l4zs/tpa/command/TpaCommand.kt
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,6 @@ package de.l4zs.tpa.command

import com.mojang.brigadier.arguments.StringArgumentType
import de.l4zs.tpa.TPA
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.DelicateCoroutinesApi
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import net.axay.kspigot.chat.KColors
import net.axay.kspigot.chat.literalText
Expand All @@ -36,12 +33,11 @@ import net.axay.kspigot.commands.suggestListSuspending
import net.axay.kspigot.extensions.onlinePlayers
import net.kyori.adventure.text.Component

class TpaCommand {
class TpaCommand : RegisterableCommand {

private val scope = CoroutineScope(Dispatchers.IO)
override val commandName = "tpa"

@OptIn(DelicateCoroutinesApi::class)
fun register(plugin: TPA) = command("tpa") {
override fun register(plugin: TPA) = command(commandName) {
requiresPermission("tpa.tpa")
argument("player", StringArgumentType.greedyString()) {
suggestListSuspending { suggest ->
Expand All @@ -67,7 +63,7 @@ class TpaCommand {
literal("reload-config") {
requiresPermission("tpa.reload-config")
runs {
scope.launch {
plugin.ioScope.launch {
plugin.configManager.reloadConfigs()
player.sendMessage(
literalText {
Expand All @@ -81,8 +77,8 @@ class TpaCommand {
literal("reload-translations") {
requiresPermission("tpa.reload-translations")
runs {
scope.launch {
plugin.reloadTranslations()
plugin.ioScope.launch {
plugin.translationsProvider.reloadTranslations()
player.sendMessage(
literalText {
color = KColors.GREEN
Expand Down
14 changes: 8 additions & 6 deletions src/main/kotlin/de/l4zs/tpa/command/TpacceptCommand.kt
Original file line number Diff line number Diff line change
Expand Up @@ -20,18 +20,20 @@ package de.l4zs.tpa.command

import com.mojang.brigadier.arguments.StringArgumentType
import de.l4zs.tpa.TPA
import de.l4zs.tpa.util.Message
import net.axay.kspigot.commands.argument
import net.axay.kspigot.commands.command
import net.axay.kspigot.commands.getArgument
import net.axay.kspigot.commands.requiresPermission
import net.axay.kspigot.commands.runs
import net.axay.kspigot.commands.suggestListSuspending
import net.axay.kspigot.extensions.onlinePlayers
import net.kyori.adventure.text.Component

class TpacceptCommand {
class TpacceptCommand : RegisterableCommand {

fun register(plugin: TPA) = command("tpaccept") {
override val commandName = "tpaccept"

override fun register(plugin: TPA) = command(commandName) {
requiresPermission("tpa.tpaccept")
argument("player", StringArgumentType.greedyString()) {
suggestListSuspending { suggest ->
Expand All @@ -46,10 +48,10 @@ class TpacceptCommand {
}.map { it.name }.sorted()
}
runs {
val target = onlinePlayers.firstOrNull { it.name == getArgument<String>("player") }
val targetName = getArgument<String>("player")
val target = onlinePlayers.firstOrNull { it.name == targetName }
?: return@runs player.sendMessage(
Component.translatable("player_not_found")
.args(Component.text(getArgument<String>("player")))
Message.playerNotFound(targetName)
)
plugin.tpaManager.acceptTpaRequest(target, player, player)
}
Expand Down
6 changes: 4 additions & 2 deletions src/main/kotlin/de/l4zs/tpa/command/TpahereCommand.kt
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,11 @@ import net.axay.kspigot.commands.suggestListSuspending
import net.axay.kspigot.extensions.onlinePlayers
import net.kyori.adventure.text.Component

class TpahereCommand {
class TpahereCommand : RegisterableCommand {

fun register(plugin: TPA) = command("tpahere") {
override val commandName = "tpahere"

override fun register(plugin: TPA) = command(commandName) {
requiresPermission("tpa.tpahere")
argument("player", StringArgumentType.greedyString()) {
suggestListSuspending { suggest ->
Expand Down
6 changes: 4 additions & 2 deletions src/main/kotlin/de/l4zs/tpa/command/TpahereallCommand.kt
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,11 @@ import net.axay.kspigot.commands.requiresPermission
import net.axay.kspigot.commands.runs
import net.axay.kspigot.extensions.onlinePlayers

class TpahereallCommand {
class TpahereallCommand : RegisterableCommand {

fun register(plugin: TPA) = command("tpahereall") {
override val commandName = "tpahereall"

override fun register(plugin: TPA) = command(commandName) {
requiresPermission("tpa.tpahereall")
runs {
onlinePlayers.minus(player).forEach {
Expand Down
6 changes: 4 additions & 2 deletions src/main/kotlin/de/l4zs/tpa/command/TpcancelCommand.kt
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,11 @@ import net.axay.kspigot.commands.suggestListSuspending
import net.axay.kspigot.extensions.onlinePlayers
import net.kyori.adventure.text.Component

class TpcancelCommand {
class TpcancelCommand : RegisterableCommand {

fun register(plugin: TPA) = command("tpcancel") {
override val commandName = "tpcancel"

override fun register(plugin: TPA) = command(commandName) {
requiresPermission("tpa.tpcancel")
argument("player", StringArgumentType.greedyString()) {
suggestListSuspending { suggest ->
Expand Down
6 changes: 4 additions & 2 deletions src/main/kotlin/de/l4zs/tpa/command/TpdenyCommand.kt
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,11 @@ import net.axay.kspigot.commands.suggestListSuspending
import net.axay.kspigot.extensions.onlinePlayers
import net.kyori.adventure.text.Component

class TpdenyCommand {
class TpdenyCommand : RegisterableCommand {

fun register(plugin: TPA) = command("tpdeny") {
override val commandName = "tpdeny"

override fun register(plugin: TPA) = command(commandName) {
requiresPermission("tpa.tpdeny")
argument("player", StringArgumentType.greedyString()) {
suggestListSuspending { suggest ->
Expand Down
7 changes: 5 additions & 2 deletions src/main/kotlin/de/l4zs/tpa/command/TptoggleCommand.kt
Original file line number Diff line number Diff line change
Expand Up @@ -18,14 +18,17 @@

package de.l4zs.tpa.command

import de.l4zs.tpa.TPA
import de.l4zs.tpa.util.toggleTpa
import net.axay.kspigot.commands.command
import net.axay.kspigot.commands.requiresPermission
import net.axay.kspigot.commands.runs

class TptoggleCommand {
class TptoggleCommand : RegisterableCommand {

fun register() = command("tptoggle") {
override val commandName = "tptoggle"

override fun register(plugin: TPA) = command(commandName) {
requiresPermission("tpa.tptoggle")
runs {
player.toggleTpa()
Expand Down
29 changes: 28 additions & 1 deletion src/main/kotlin/de/l4zs/tpa/config/impl/Config.kt
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,35 @@ package de.l4zs.tpa.config.impl

import de.l4zs.tpa.TPA
import de.l4zs.tpa.config.AbstractConfig
import net.axay.kspigot.extensions.server
import org.bukkit.World
import java.util.Locale

class Config(plugin: TPA) : AbstractConfig("config.yml", plugin) {

val yml = yaml
val requestsExpire: Long
get() = yaml.getLong("request_expire", 60) * 1000
private val disabledBackWorlds: List<World>
get() = yaml.getStringList("disabled_worlds.back").mapNotNull { server.getWorld(it) }
private val disabledTpaToWorlds: List<World>
get() = yaml.getStringList("disabled_worlds.tpa.to").mapNotNull { server.getWorld(it) }
private val disabledTpaFromWorlds: List<World>
get() = yaml.getStringList("disabled_worlds.tpa.from").mapNotNull { server.getWorld(it) }
private val allowedTpaIfSameWorld: List<World>
get() = yaml.getStringList("disabled_worlds.tpa.allow_if_same_world").mapNotNull { server.getWorld(it) }
private val alwaysAllowTpaIfSameWorld: Boolean
get() = yaml.getStringList("disabled_worlds.tpa.allow_if_same_world").contains("*")
val locales: List<Locale>
get() = yaml.getStringList("locales").mapNotNull { Locale.forLanguageTag(it) }
val disabledCommands: List<String>
get() = yaml.getStringList("disabled_commands")

fun isWorldBackDisabled(name: String): Boolean {
return disabledBackWorlds.any { it.name == name }
}

fun shouldAllowTpa(from: World, to: World): Boolean {
return if (from == to && (alwaysAllowTpaIfSameWorld || allowedTpaIfSameWorld.any { it == from })) true
else !(disabledTpaFromWorlds.contains(from) || disabledTpaToWorlds.contains(to))
}
}
Loading

0 comments on commit 00d270f

Please sign in to comment.