Skip to content

Commit bbeea08

Browse files
committed
Updated changelog in update.json.
Added curseforge link in `/cooldown about` command. Simplified code for creating directory. Removed redundant information logging. Usings optimal JsonConfiguration from core module. Debug information now prints in debug log, not info. Now cooldown module not depends on Permissions module. Simplified cooldown commands. Updated essentials core dependency. Signed-off-by: Pavel Erokhin (MairwunNx) <[email protected]>
1 parent 1d15878 commit bbeea08

File tree

11 files changed

+81
-92
lines changed

11 files changed

+81
-92
lines changed

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ project_jvm_version_target=1.8
1414
kotlin_version=1.3.61
1515
kotlinx_serialization_version=0.14.0
1616
dokka_version=0.10.0
17-
ess_core_version=v1.14.4-1.+
17+
ess_core_version=v1.14.4-1.0.3.2
1818
ess_permissions_version=v1.14.4-1.+
1919
module_version=1.14.4-1.0.2.0
2020
module_name=Project Essentials Cooldown

src/main/kotlin/com/mairwunnx/projectessentials/cooldown/CooldownConfig.kt

Lines changed: 7 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,8 @@ package com.mairwunnx.projectessentials.cooldown
22

33
import com.mairwunnx.projectessentials.cooldown.models.CooldownModel
44
import com.mairwunnx.projectessentials.core.helpers.MOD_CONFIG_FOLDER
5+
import com.mairwunnx.projectessentials.core.helpers.jsonInstance
56
import kotlinx.serialization.UnstableDefault
6-
import kotlinx.serialization.json.Json
7-
import kotlinx.serialization.json.JsonConfiguration
87
import org.apache.logging.log4j.LogManager
98
import java.io.File
109
import java.io.FileNotFoundException
@@ -16,51 +15,25 @@ internal object CooldownConfig {
1615
private val COOLDOWNS_CONFIG = MOD_CONFIG_FOLDER + File.separator + "cooldowns.json"
1716

1817
internal fun load() {
19-
logger.info(" - loading command cooldown configuration ...")
18+
logger.info("Loading command cooldown configuration")
2019
try {
2120
val configRaw = File(COOLDOWNS_CONFIG).readText()
22-
config = Json.parse(CooldownModel.serializer(), configRaw)
23-
logger.info(" - loaded cooldowns (${config.commandCooldowns.size})")
24-
config.commandCooldowns.forEach {
25-
try {
26-
val command = it.split("=")[0]
27-
val cooldown = it.split("=")[1]
28-
logger.info(" - command: ${command}; cooldown: $cooldown")
29-
} catch (_: IndexOutOfBoundsException) {
30-
logger.error("Cooldown $it loaded with error, please check your configuration.")
31-
}
32-
}
21+
config = jsonInstance.parse(CooldownModel.serializer(), configRaw)
22+
logger.info("Loaded cooldowns (${config.commandCooldowns.size})")
3323
} catch (_: FileNotFoundException) {
3424
logger.error("Configuration file ($COOLDOWNS_CONFIG) not found!")
3525
logger.warn("The default configuration will be used.")
3626
}
3727
}
3828

3929
internal fun save() {
40-
logger.debug(" - setup json configuration for parsing ...")
41-
val json = Json(
42-
JsonConfiguration(
43-
encodeDefaults = true,
44-
strictMode = true,
45-
unquoted = false,
46-
allowStructuredMapKeys = true,
47-
prettyPrint = true,
48-
useArrayPolymorphism = false
49-
)
50-
)
51-
createConfigDirs()
52-
logger.info(" - saving command cooldowns configuration ...")
53-
val configRaw = json.stringify(CooldownModel.serializer(), config)
30+
File(MOD_CONFIG_FOLDER).mkdirs()
31+
logger.info("Saving command cooldowns configuration")
32+
val configRaw = jsonInstance.stringify(CooldownModel.serializer(), config)
5433
try {
5534
File(COOLDOWNS_CONFIG).writeText(configRaw)
5635
} catch (ex: SecurityException) {
5736
logger.error("An error occurred while saving cooldowns configuration", ex)
5837
}
5938
}
60-
61-
private fun createConfigDirs() {
62-
logger.info(" - creating directories for configurations ...")
63-
val configDirectory = File(MOD_CONFIG_FOLDER)
64-
if (!configDirectory.exists()) configDirectory.mkdirs()
65-
}
6639
}

src/main/kotlin/com/mairwunnx/projectessentials/cooldown/CooldownHandler.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
package com.mairwunnx.projectessentials.cooldown
22

3+
import com.mairwunnx.projectessentials.cooldown.EntryPoint.Companion.hasPermission
34
import com.mairwunnx.projectessentials.core.extensions.commandName
45
import com.mairwunnx.projectessentials.core.extensions.player
5-
import com.mairwunnx.projectessentials.permissions.permissions.PermissionsAPI
66
import net.minecraftforge.event.CommandEvent
77

88
internal object CooldownHandler {
@@ -13,7 +13,7 @@ internal object CooldownHandler {
1313
try {
1414
if (
1515
!CooldownConfig.config.ignoredPlayers.contains(commandSenderNickName) &&
16-
!PermissionsAPI.hasPermission(commandSenderNickName, "ess.cooldown.bypass")
16+
!hasPermission(commandSender, "ess.cooldown.bypass", 3)
1717
) {
1818
event.isCanceled = CooldownUtils.processCooldownOfCommand(
1919
commandName, commandSenderNickName, event

src/main/kotlin/com/mairwunnx/projectessentials/cooldown/CooldownUtils.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,15 +47,15 @@ internal object CooldownUtils {
4747
?: CommandsAliases.searchForAliasesForCooldown(
4848
commandName, cooldownsMap
4949
).let {
50-
logger.info("original command: ${it.b} and cooldown: ${it.a}")
50+
logger.debug("original command: ${it.b} and cooldown: ${it.a}")
5151
originalCommand = it.b
5252
return@let it.a
5353
}
5454
?: cooldownsMap[CooldownAPI.defaultCooldownLiterals.iterator().next()]
5555
?: CooldownAPI.DEFAULT_COOLDOWN
5656

57-
logger.info("Getting cooldown expired for command: $command when raw command: $commandName")
58-
logger.info("Cooldown for $command when raw command $commandName is $commandCooldown")
57+
logger.debug("Getting cooldown expired for command: $command when raw command: $commandName")
58+
logger.debug("Cooldown for $command when raw command $commandName is $commandCooldown")
5959
if (CooldownAPI.getCooldownIsExpired(commandSenderNickName, command, commandCooldown)) {
6060
CooldownAPI.addCooldown(commandSenderNickName, command)
6161
return false

src/main/kotlin/com/mairwunnx/projectessentials/cooldown/EntryPoint.kt

Lines changed: 25 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package com.mairwunnx.projectessentials.cooldown
22

33
import com.mairwunnx.projectessentials.cooldown.commands.CooldownCommand
44
import com.mairwunnx.projectessentials.core.EssBase
5+
import com.mairwunnx.projectessentials.permissions.permissions.PermissionsAPI
56
import net.minecraft.entity.player.ServerPlayerEntity
67
import net.minecraftforge.common.MinecraftForge
78
import net.minecraftforge.event.CommandEvent
@@ -22,19 +23,29 @@ internal class EntryPoint : EssBase() {
2223
modVersion = "1.14.4-1.0.2.0"
2324
logBaseInfo()
2425
validateForgeVersion()
25-
logger.debug("Register event bus for $modName mod ...")
2626
MinecraftForge.EVENT_BUS.register(this)
27-
logger.info("Loading $modName permissions data ...")
2827
CooldownConfig.load()
2928
}
3029

3130
internal companion object {
3231
internal lateinit var modInstance: EntryPoint
32+
var permissionsInstalled: Boolean = false
33+
34+
fun hasPermission(player: ServerPlayerEntity?, node: String, opLevel: Int = 4): Boolean =
35+
if (permissionsInstalled) {
36+
if (player == null) {
37+
true
38+
} else {
39+
PermissionsAPI.hasPermission(player.name.string, node)
40+
}
41+
} else {
42+
player?.server?.opPermissionLevel ?: 4 >= opLevel
43+
}
3344
}
3445

3546
@SubscribeEvent
3647
fun onServerStarting(it: FMLServerStartingEvent) {
37-
logger.info("$modName starting mod loading ...")
48+
loadAdditionalModules()
3849
CooldownCommand.register(it.server.commandManager.dispatcher)
3950
}
4051

@@ -48,8 +59,17 @@ internal class EntryPoint : EssBase() {
4859
@Suppress("UNUSED_PARAMETER")
4960
@SubscribeEvent
5061
internal fun onServerStopping(it: FMLServerStoppingEvent) {
51-
logger.info("Shutting down $modName mod ...")
52-
logger.info(" - Saving cooldown configuration ...")
5362
CooldownConfig.save()
5463
}
64+
65+
private fun loadAdditionalModules() {
66+
try {
67+
Class.forName(
68+
"com.mairwunnx.projectessentials.permissions.permissions.PermissionsAPI"
69+
)
70+
permissionsInstalled = true
71+
} catch (_: ClassNotFoundException) {
72+
// ignored
73+
}
74+
}
5575
}

src/main/kotlin/com/mairwunnx/projectessentials/cooldown/commands/CooldownCommand.kt

Lines changed: 35 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,12 @@ package com.mairwunnx.projectessentials.cooldown.commands
22

33
import com.mairwunnx.projectessentials.cooldown.CooldownConfig
44
import com.mairwunnx.projectessentials.cooldown.EntryPoint
5+
import com.mairwunnx.projectessentials.cooldown.EntryPoint.Companion.hasPermission
56
import com.mairwunnx.projectessentials.core.extensions.isPlayerSender
67
import com.mairwunnx.projectessentials.core.extensions.sendMsg
78
import com.mairwunnx.projectessentials.core.helpers.PERMISSION_LEVEL
8-
import com.mairwunnx.projectessentials.permissions.permissions.PermissionsAPI
99
import com.mojang.brigadier.CommandDispatcher
10-
import com.mojang.brigadier.builder.LiteralArgumentBuilder
10+
import com.mojang.brigadier.builder.LiteralArgumentBuilder.literal
1111
import com.mojang.brigadier.context.CommandContext
1212
import net.minecraft.command.CommandSource
1313
import net.minecraft.command.Commands
@@ -19,37 +19,32 @@ object CooldownCommand {
1919
fun register(
2020
dispatcher: CommandDispatcher<CommandSource>
2121
) {
22-
logger.info(" - register \"/essentials cooldown [...]\" command ...")
23-
2422
dispatcher.register(
25-
LiteralArgumentBuilder.literal<CommandSource>("essentials").then(
26-
Commands.literal("cooldown").executes {
27-
return@executes versionExecute(it)
28-
}.then(Commands.literal("reload").executes {
29-
return@executes reloadExecute(it)
30-
}).then(Commands.literal("save").executes {
31-
return@executes saveExecute(it)
32-
}).then(Commands.literal("version").executes {
33-
return@executes versionExecute(it)
34-
})
35-
)
23+
literal<CommandSource>("cooldown").executes {
24+
return@executes versionExecute(it)
25+
}.then(Commands.literal("reload").executes {
26+
return@executes reloadExecute(it)
27+
}).then(Commands.literal("save").executes {
28+
return@executes saveExecute(it)
29+
}).then(Commands.literal("version").executes {
30+
return@executes versionExecute(it)
31+
})
3632
)
3733
}
3834

3935
private fun versionExecute(c: CommandContext<CommandSource>): Int {
4036
var isServerSender = false
4137
val commandSender = c.source
42-
val commandSenderNickName = if (c.isPlayerSender()) {
43-
c.source.asPlayer().name.string
38+
val commandSenderPlayer = if (c.isPlayerSender()) {
39+
c.source.asPlayer()
4440
} else {
4541
isServerSender = true
46-
"server"
42+
null
4743
}
4844

4945
if (isServerSender ||
50-
PermissionsAPI.hasPermission(commandSenderNickName, "ess.cooldown") ||
51-
PermissionsAPI.hasPermission(commandSenderNickName, "ess.stuff") ||
52-
PermissionsAPI.hasPermission(commandSenderNickName, "ess.cooldown.version")
46+
hasPermission(commandSenderPlayer, "ess.cooldown") ||
47+
hasPermission(commandSenderPlayer, "ess.cooldown.version")
5348
) {
5449
if (isServerSender) {
5550
logger.info(" ${EntryPoint.modInstance.modName}")
@@ -59,6 +54,7 @@ object CooldownCommand {
5954
logger.info("Target Minecraft version: ${EntryPoint.modInstance.modTargetMC}")
6055
logger.info("Source code: ${EntryPoint.modInstance.modSources}")
6156
logger.info("Telegram chat: ${EntryPoint.modInstance.modTelegram}")
57+
logger.info("CurseForge: ${EntryPoint.modInstance.modCurseForge}")
6258
} else {
6359
sendMsg(
6460
"cooldown",
@@ -70,15 +66,16 @@ object CooldownCommand {
7066
EntryPoint.modInstance.modTargetForge,
7167
EntryPoint.modInstance.modTargetMC,
7268
EntryPoint.modInstance.modSources,
73-
EntryPoint.modInstance.modTelegram
69+
EntryPoint.modInstance.modTelegram,
70+
EntryPoint.modInstance.modCurseForge
7471
)
7572
}
7673
return 0
7774
} else {
7875
logger.warn(
7976
PERMISSION_LEVEL
80-
.replace("%0", commandSenderNickName)
81-
.replace("%1", "/essentials cooldown about")
77+
.replace("%0", commandSenderPlayer!!.name.string)
78+
.replace("%1", "/cooldown")
8279
)
8380
sendMsg("cooldown", commandSender, "version.restricted")
8481
return 0
@@ -88,29 +85,28 @@ object CooldownCommand {
8885
private fun reloadExecute(c: CommandContext<CommandSource>): Int {
8986
var isServerSender = false
9087
val commandSender = c.source
91-
val commandSenderNickName = if (c.isPlayerSender()) {
92-
c.source.asPlayer().name.string
88+
val commandSenderPlayer = if (c.isPlayerSender()) {
89+
c.source.asPlayer()
9390
} else {
9491
isServerSender = true
95-
"server"
92+
null
9693
}
9794

9895
if (isServerSender ||
99-
PermissionsAPI.hasPermission(commandSenderNickName, "ess.cooldown.reload") ||
100-
PermissionsAPI.hasPermission(commandSenderNickName, "ess.stuff")
96+
hasPermission(commandSenderPlayer, "ess.cooldown.reload")
10197
) {
10298
CooldownConfig.load()
10399
if (isServerSender) {
104-
logger.info("Successfully reloaded Project Essentials Cooldown configuration")
100+
logger.info("Successfully reloaded Cooldown configuration")
105101
} else {
106102
sendMsg("cooldown", commandSender, "reload.success")
107103
}
108104
return 0
109105
} else {
110106
logger.warn(
111107
PERMISSION_LEVEL
112-
.replace("%0", commandSenderNickName)
113-
.replace("%1", "/essentials cooldown reload")
108+
.replace("%0", commandSenderPlayer!!.name.string)
109+
.replace("%1", "/cooldown reload")
114110
)
115111
sendMsg("cooldown", commandSender, "reload.restricted")
116112
return 0
@@ -120,29 +116,28 @@ object CooldownCommand {
120116
private fun saveExecute(c: CommandContext<CommandSource>): Int {
121117
var isServerSender = false
122118
val commandSender = c.source
123-
val commandSenderNickName = if (c.isPlayerSender()) {
124-
c.source.asPlayer().name.string
119+
val commandSenderPlayer = if (c.isPlayerSender()) {
120+
c.source.asPlayer()
125121
} else {
126122
isServerSender = true
127-
"server"
123+
null
128124
}
129125

130126
if (isServerSender ||
131-
PermissionsAPI.hasPermission(commandSenderNickName, "ess.cooldown.save") ||
132-
PermissionsAPI.hasPermission(commandSenderNickName, "ess.stuff")
127+
hasPermission(commandSenderPlayer, "ess.cooldown.save")
133128
) {
134129
CooldownConfig.save()
135130
if (isServerSender) {
136-
logger.info("Successfully saved Project Essentials configuration")
131+
logger.info("Successfully saved Cooldown configuration")
137132
} else {
138133
sendMsg("cooldown", commandSender, "save.success")
139134
}
140135
return 0
141136
} else {
142137
logger.warn(
143138
PERMISSION_LEVEL
144-
.replace("%0", commandSenderNickName)
145-
.replace("%1", "/essentials cooldown save")
139+
.replace("%0", commandSenderPlayer!!.name.string)
140+
.replace("%1", "/cooldown save")
146141
)
147142
sendMsg("cooldown", commandSender, "save.restricted")
148143
return 0

src/main/kotlin/com/mairwunnx/projectessentials/cooldown/essentials/CommandsAliases.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ object CommandsAliases {
3434
if (aliasesOfCommands != null &&
3535
command in aliasesOfCommands
3636
) {
37-
logger.info("Command: $baseCommand; Cooldown: ${cooldownsMap[baseCommand]}")
37+
logger.debug("Command: $baseCommand; Cooldown: ${cooldownsMap[baseCommand]}")
3838
return Tuple(cooldownsMap[baseCommand], baseCommand)
3939
}
4040
}

src/main/resources/assets/projectessentialscooldown/lang/de_de.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,5 @@
55
"project_essentials_cooldown.save.restricted": "§cDu bist §7nicht berechtigt §cum Cooldown-Konfigurationen zu speichern.",
66
"project_essentials_cooldown.save.success": "§6Cooldown-Konfigurationen §7erfolgreich §6gespeichert.",
77
"project_essentials_cooldown.version.restricted": "§cDu bist §7nicht berechtigt §cum die Version des Cooldown-Moduls einzusehen.",
8-
"project_essentials_cooldown.version.success": "§6%s\n§cVersion: §7%s\n§cMaintainer: §7%s\n§cForge Zielversion: §7%s\n§cMinecraft Zielversion: §7%s\n§cSource Code: §7%s§7\n§cTelegram Chat: §7%s"
8+
"project_essentials_cooldown.version.success": "§6%s\n§cVersion: §7%s\n§cMaintainer: §7%s\n§cForge Zielversion: §7%s\n§cMinecraft Zielversion: §7%s\n§cSource Code: §7%s§7\n§cTelegram Chat: §7%s\n§cCurseForge: §7%s"
99
}

src/main/resources/assets/projectessentialscooldown/lang/en_us.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,5 @@
55
"project_essentials_cooldown.save.restricted": "§cYou §7don't have permission §cto save cooldown configuration.",
66
"project_essentials_cooldown.save.success": "§6Cooldown configuration §7successfully §6saved.",
77
"project_essentials_cooldown.version.restricted": "§cYou §7don't have permission §cto see cooldown module version.",
8-
"project_essentials_cooldown.version.success": " §6%s\n§cVersion: §7%s\n§cMaintainer: §7%s\n§cTarget Forge version: §7%s\n§cTarget Minecraft version: §7%s\n§cSource code: §7%s§7\n§cTelegram chat: §7%s"
8+
"project_essentials_cooldown.version.success": " §6%s\n§cVersion: §7%s\n§cMaintainer: §7%s\n§cTarget Forge version: §7%s\n§cTarget Minecraft version: §7%s\n§cSource code: §7%s§7\n§cTelegram chat: §7%s\n§cCurseForge: §7%s"
99
}

src/main/resources/assets/projectessentialscooldown/lang/ru_ru.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,5 @@
55
"project_essentials_cooldown.save.restricted": "§cУ вас §7нет разрешение §cна сохранении конфигурации essentials cooldown.",
66
"project_essentials_cooldown.save.success": "§6Essentials cooldown конфигурация §7успешно §6сохранена.",
77
"project_essentials_cooldown.version.restricted": "§cУ вас §7нет разрешение §cна просмотр версии essentials cooldown.",
8-
"project_essentials_cooldown.version.success": " §6%s\n§cВерсия: §7%s\n§cСопровождающий: §7%s\n§cНацеленная Forge версия: §7%s\n§cНацеленная Minecraft версия: §7%s\n§cИсходный код: §7%s§7\n§cTelegram чат: §7%s"
8+
"project_essentials_cooldown.version.success": " §6%s\n§cВерсия: §7%s\n§cСопровождающий: §7%s\n§cНацеленная Forge версия: §7%s\n§cНацеленная Minecraft версия: §7%s\n§cИсходный код: §7%s§7\n§cTelegram чат: §7%s\n§cCurseForge: §7%s"
99
}

0 commit comments

Comments
 (0)