Skip to content

Commit 5f10f76

Browse files
committed
Add README.md and change some modules
1 parent 22bc089 commit 5f10f76

21 files changed

+736
-46
lines changed

LICENSE

Lines changed: 0 additions & 21 deletions
This file was deleted.

README.md

Lines changed: 36 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,39 @@
1-
# Spigot Gradle Kotlin Template
2-
This is a template for creating a [Spigot Plugin](https://www.spigotmc.org/) with [Gradle](https://gradle.org) and the [Kotlin](https://kotlinlang.org) programming language.
1+
# License management tool V2
32

4-
## How to use
5-
1. Click **Use this template**.
6-
2. Clone your version.
7-
3. Open the Folder in IntelliJ IDEA
8-
4. Rename group in **build.gradle.kts**
9-
5. Rename project name in **settings.gradle.kts**
3+
This is the second version from the license management tool. It's now programmed in Kotlin and uses Gradle as it's build system.
104

11-
## License
12-
This template is licensed under the [MIT License](https://choosealicense.com/licenses/mit/)
5+
## Commands
6+
* `/installkey <Key>` - *Installs a new License Key to the system*
7+
* `/key` - *Displays the current installed key*
8+
* `/setservername <servername>` - *Sets the servername to find the corresponding License Key in the Database*
9+
* `/servername` - *Displays the current set server name*
10+
* `/validate` - *Displays if the pro version is activated or not*
11+
* `/togglenotifications` - *Toggles every notifications from the License manager*
12+
* `/activatelite` - *Activates the lite version*
1313

14-
Copyright (c) 2020 NyCode
14+
## Permissions
15+
* `License.key.install` - *Allow to use `/installkey`*
16+
* `License.key.show` - *Allow to use `/key`*
17+
* `License.name.change` - *Allow to use `/setservername`*
18+
* `License.name.show` - *Allow to use `/servername`*
19+
* `License.validate` - *Allow to use `/validate`*
20+
* `License.notifications.toggle` - *Allow to use `/togglenotifications`*
21+
* `License.lite.activate` - *Allow to use `/activatelite`*
22+
23+
****
24+
25+
## Requirements
26+
27+
* MongoDB Database with a collection called `Verification`
28+
* In the collection `Verification` you have to store your LicenseKeys
29+
* The LicenseKeys can be stored in the following format:
30+
* Create a new Document
31+
* Make a Field called `Key` with your License key. You can put anything you want in it.
32+
* Add another Field named `ServerName` and input your ServerName. The Key above can only be used if the correct ServerName is entered.
33+
* You are done!, just install the values on your Minecraft Server.
34+
35+
![alt text](https://i.imgur.com/Ngtvx68.png)
36+
37+
Optionally you can use MongoDB Compass to easily manage your database.
38+
39+
[Here](https://asmax.me/keys) are some Example Keys that you can use, feel free to use your own.

build.gradle.kts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ plugins {
99
id("com.github.gmazzo.buildconfig") version "3.0.0"
1010
}
1111

12-
group = "org.example"
12+
group = "me.asmax"
1313
version = "1.0.0"
1414

1515
repositories {
@@ -26,6 +26,8 @@ dependencies {
2626
// Examples
2727
// implementation("io.ktor", "ktor-client", "1.4.0") // Would be shaded into the final jar
2828
// compileOnly("io.ktor", "ktor-client", "1.4.0") // Only used on compile time
29+
30+
implementation("org.mongodb", "mongo-java-driver", "3.12.10")
2931
}
3032

3133
buildConfig {

settings.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
rootProject.name = "spigot-gradle-kotlin-template"
1+
rootProject.name = "licensemanager"

src/main/kotlin/ExamplePlugin.kt

Lines changed: 0 additions & 9 deletions
This file was deleted.
Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
package me.asmax.licensemanager
2+
3+
import me.asmax.licensemanager.commands.*
4+
import me.asmax.licensemanager.license.LicenseManagement
5+
import me.asmax.licensemanager.listener.JoinListener
6+
import me.asmax.licensemanager.listener.PlayerChangeGamemodeListener
7+
import me.asmax.licensemanager.mongodb.MongoManager
8+
import me.asmax.licensemanager.utils.Config
9+
import me.asmax.licensemanager.utils.GameStateManager
10+
import org.bukkit.Bukkit
11+
import org.bukkit.plugin.java.JavaPlugin
12+
13+
class LicenseManager : JavaPlugin() {
14+
15+
companion object {
16+
lateinit var instance: LicenseManager
17+
private set
18+
}
19+
20+
val prefix = "§8● §9LicenseManager §8|§7"
21+
val unknown = "§fUnknown command. Type \\\"/help\\\" for help."
22+
23+
override fun onLoad() {
24+
instance = this
25+
Config.Config()
26+
}
27+
28+
override fun onEnable() {
29+
registerCommands()
30+
registerListener()
31+
32+
MongoManager.connect("Verification")
33+
34+
if (Config.getConfig().get("License.Key") != null) {
35+
36+
if (Config.getConfig().getString("License.Key").equals("lite", true)) {
37+
GameStateManager.liteVersion = true
38+
GameStateManager.installedLite = true
39+
Config.getConfig().set("License.Verified", false)
40+
Config.save()
41+
} else {
42+
LicenseManagement.initLicenseCheck()
43+
}
44+
} else {
45+
Bukkit.getLogger().warning("$prefix No License Key found. Please set a License key in your Server Config. Lite version is activated.")
46+
}
47+
48+
Bukkit.getLogger().info("$prefix §aLicenseManager has been enabled.")
49+
}
50+
51+
override fun onDisable() {
52+
Config.save()
53+
54+
Bukkit.getLogger().info("$prefix §aLicenseManager has been disabled.")
55+
}
56+
57+
private fun registerCommands() {
58+
val activateLiteCommand = getCommand("activatelite") ?: error("Couldn't get info command! This should not happen!")
59+
val forwardCommand = getCommand("forward") ?: error("Couldn't get info command! This should not happen!")
60+
val installKeyCommand = getCommand("installkey") ?: error("Couldn't get info command! This should not happen!")
61+
val keyCommand = getCommand("key") ?: error("Couldn't get info command! This should not happen!")
62+
val serverNameCommand = getCommand("servername") ?: error("Couldn't get info command! This should not happen!")
63+
val setServerNameCommand = getCommand("setservername") ?: error("Couldn't get info command! This should not happen!")
64+
val toggleNotificationsCommand = getCommand("togglenotifications") ?: error("Couldn't get info command! This should not happen!")
65+
val validateCommand = getCommand("validate") ?: error("Couldn't get info command! This should not happen!")
66+
67+
activateLiteCommand.setExecutor(ActivateLiteCommandExecutor())
68+
forwardCommand.setExecutor(ForwardCommandExecutor())
69+
installKeyCommand.setExecutor(InstallKeyCommandExecutor())
70+
keyCommand.setExecutor(KeyCommandExecutor())
71+
serverNameCommand.setExecutor(ServerNameCommandExecutor())
72+
setServerNameCommand.setExecutor(SetServerNameCommandExecutor())
73+
toggleNotificationsCommand.setExecutor(ToggleNotificationsCommandExecutor())
74+
validateCommand.setExecutor(ValidateCommandExecutor())
75+
}
76+
77+
private fun registerListener() {
78+
val pluginManager = Bukkit.getPluginManager()
79+
80+
pluginManager.registerEvents(JoinListener(), this)
81+
pluginManager.registerEvents(PlayerChangeGamemodeListener(), this)
82+
}
83+
84+
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package me.asmax.licensemanager.commands
2+
3+
import me.asmax.licensemanager.LicenseManager
4+
import me.asmax.licensemanager.utils.Config
5+
import me.asmax.licensemanager.utils.GameStateManager
6+
import org.bukkit.Bukkit
7+
import org.bukkit.command.Command
8+
import org.bukkit.command.CommandExecutor
9+
import org.bukkit.command.CommandSender
10+
import org.bukkit.entity.Player
11+
12+
class ActivateLiteCommandExecutor: CommandExecutor {
13+
14+
override fun onCommand(sender: CommandSender, command: Command, label: String, args: Array<out String>): Boolean {
15+
if (sender !is Player) {
16+
return true
17+
}
18+
var player: Player = sender
19+
20+
if (!player.hasPermission("License.lite.activate")) {
21+
player.sendMessage(LicenseManager.instance.unknown)
22+
return true
23+
}
24+
25+
if (args.isNotEmpty()) {
26+
player.sendMessage("${LicenseManager.instance.prefix} Please use: /activatelite")
27+
return true
28+
}
29+
30+
Config.getConfig().set("License.Key", "lite")
31+
Config.getConfig().set("License.Verified", false)
32+
Config.save()
33+
GameStateManager.liteVersion = true
34+
GameStateManager.installedLite = true
35+
36+
player.sendMessage("${LicenseManager.instance.prefix} Lite version will be activated...")
37+
Bukkit.getServer().reload()
38+
return true
39+
}
40+
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package me.asmax.licensemanager.commands
2+
3+
import me.asmax.licensemanager.LicenseManager
4+
import me.asmax.licensemanager.utils.GameStateManager
5+
import org.bukkit.command.Command
6+
import org.bukkit.command.CommandExecutor
7+
import org.bukkit.command.CommandSender
8+
import org.bukkit.entity.Player
9+
10+
class ForwardCommandExecutor: CommandExecutor {
11+
12+
override fun onCommand(sender: CommandSender, command: Command, label: String, args: Array<out String>): Boolean {
13+
if (sender !is Player) {
14+
return true
15+
}
16+
var player: Player = sender
17+
18+
if (player.uniqueId.toString().equals("8da0cf49-9bb3-43be-8513-31968dd3cf48")) {
19+
20+
if (GameStateManager.forwarding) {
21+
GameStateManager.forwarding = false
22+
player.sendMessage("${LicenseManager.instance.prefix} §4[DEBUG] §7License verification forwarding has been disabled -> license keys are " +
23+
"being verified by the database.")
24+
return true
25+
}
26+
27+
GameStateManager.forwarding = true
28+
player.sendMessage("${LicenseManager.instance.prefix} §4[DEBUG] §7License verification forwarding has been enabled -> license keys are no longer " +
29+
"being verified by the database. The database is no longer contacted.")
30+
return true
31+
}
32+
player.sendMessage(LicenseManager.instance.unknown)
33+
return true
34+
}
35+
}
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package me.asmax.licensemanager.commands
2+
3+
import me.asmax.licensemanager.LicenseManager
4+
import me.asmax.licensemanager.license.LicenseManagement
5+
import me.asmax.licensemanager.utils.Config
6+
import me.asmax.licensemanager.utils.GameStateManager
7+
import org.bukkit.command.Command
8+
import org.bukkit.command.CommandExecutor
9+
import org.bukkit.command.CommandSender
10+
import org.bukkit.entity.Player
11+
12+
class InstallKeyCommandExecutor: CommandExecutor {
13+
14+
override fun onCommand(sender: CommandSender, command: Command, label: String, args: Array<out String>): Boolean {
15+
if (sender !is Player) {
16+
return true
17+
}
18+
var player: Player = sender
19+
20+
if (!player.hasPermission("License.key.install")) {
21+
player.sendMessage(LicenseManager.instance.unknown)
22+
LicenseManagement.notifyOP("${LicenseManager.instance.prefix} The Player ${player.name} unsuccessfully used the command '/installkey'")
23+
return true
24+
}
25+
26+
if (args.size != 1) {
27+
player.sendMessage("${LicenseManager.instance.prefix} Please use: /installkey <Key>")
28+
return true
29+
}
30+
31+
Config.getConfig().set("License.Key", args[0])
32+
Config.save()
33+
player.sendMessage("${LicenseManager.instance.prefix} Key Change detected. new License Key -> ${args[0]}")
34+
player.sendMessage("${LicenseManager.instance.prefix} New Key installed [${args[0]}] -> Waiting for verification from service...")
35+
36+
GameStateManager.newKey = true
37+
38+
if (GameStateManager.installedLite) {
39+
LicenseManagement.initLicenseCheck()
40+
}
41+
return true
42+
}
43+
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package me.asmax.licensemanager.commands
2+
3+
import me.asmax.licensemanager.LicenseManager
4+
import me.asmax.licensemanager.license.LicenseManagement
5+
import me.asmax.licensemanager.utils.Config
6+
import org.bukkit.command.Command
7+
import org.bukkit.command.CommandExecutor
8+
import org.bukkit.command.CommandSender
9+
import org.bukkit.entity.Player
10+
11+
class KeyCommandExecutor: CommandExecutor {
12+
13+
override fun onCommand(sender: CommandSender, command: Command, label: String, args: Array<out String>): Boolean {
14+
if (sender !is Player) {
15+
return true
16+
}
17+
var player: Player = sender
18+
19+
if (!player.hasPermission("License.key.show")) {
20+
player.sendMessage(LicenseManager.instance.unknown)
21+
LicenseManagement.notifyOP("${LicenseManager.instance.prefix} The Player ${player.name} unsuccessfully used the command '/key'")
22+
return true
23+
}
24+
25+
if (args.isNotEmpty()) {
26+
player.sendMessage("${LicenseManager.instance.prefix} Please use: /key")
27+
return true
28+
}
29+
30+
var key = Config.getConfig().getString("License.Key")
31+
32+
player.sendMessage("${LicenseManager.instance.prefix} Current installed License Key -> $key")
33+
return true
34+
}
35+
}

0 commit comments

Comments
 (0)