Skip to content

Commit 1c15d05

Browse files
author
nazrin
committed
Добавлена модульность, починен Revert и History
1 parent 6ffa4f7 commit 1c15d05

53 files changed

Lines changed: 476 additions & 583 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

build.gradle

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ repositories{
1717

1818
ext{
1919
//the build number that this plugin is made for
20-
mindustryVersion = 'v145'
20+
mindustryVersion = 'v149'
2121
jabelVersion = "93fde537c7"
2222
}
2323

@@ -37,6 +37,7 @@ dependencies{
3737
implementation "org.mongodb:mongodb-driver-core:4.10.1"
3838
implementation "org.mongodb:bson:4.10.1"
3939
implementation "org.javacord:javacord:3.8.0"
40+
implementation group: 'com.googlecode.json-simple', name: 'json-simple', version: '1.1.1'
4041
}
4142

4243
jar{

plugin.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
2-
"name": "ExamplePlugin",
3-
"author": "Anuke",
2+
"name": "SMP",
3+
"author": "NazrinNya",
44
"main": "smp.Main",
5-
"description": "A plugin to demonstrate some basic features.",
6-
"version": 1.0
5+
"description": "A highly modular plugin that can be used either for single command or a whole system",
6+
"version": 2.1
77
}

src/java/smp/Main.java

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@
1010
import mindustry.net.Packets;
1111
import smp.commandSystem.CommandRegister;
1212
import smp.commandSystem.mindustry.MindustryCommand;
13+
import smp.system.config.ConfigSystem;
1314

14-
import java.net.UnknownHostException;
1515
import java.util.List;
1616

1717
import static mindustry.Vars.netServer;
@@ -28,28 +28,37 @@
2828
import static smp.functions.Checks.kickIfBanned;
2929
import static smp.history.History.loadHistory;
3030
import static smp.history.History.loadRevert;
31-
import static smp.other.BanMenu.loadBanMenu;
31+
import static smp.other.BanSystem.loadBanMenu;
3232
import static smp.other.InitializeRanks.initializeRanks;
33-
import static smp.other.InitializeSettings.initializeSettings;
33+
import static smp.system.config.ConfigSystem.registerConfig;
34+
import static smp.system.config.ConfigSystem.updateVariables;
35+
import static smp.vars.Variables.*;
3436

3537
public class Main extends Plugin{
3638
public static CommandRegister<MindustryCommand<Player>> register;
3739

3840
//called when game initializes
3941
@Override
4042
public void init() {
43+
registerConfig(Vars.dataDirectory.absolutePath(), "config.json");
44+
updateVariables();
4145
initDatabase();
4246
loadHistory();
4347
loadRevert();
44-
loadBanMenu();
45-
initBot();
46-
initializeNodeGriefingWarnings();
47-
initializeRanks();
48-
initializeCounter();
49-
try {
50-
initializeSettings();
51-
} catch (UnknownHostException e) {
52-
throw new RuntimeException(e);
48+
if (betterBansEnabled) {
49+
loadBanMenu();
50+
}
51+
if (discordEnabled) {
52+
initBot();
53+
}
54+
if (griefingWarningsEnabled) {
55+
initializeNodeGriefingWarnings();
56+
}
57+
if (ranksEnabled) {
58+
initializeRanks();
59+
}
60+
if (timeCounterEnabled) {
61+
initializeCounter();
5362
}
5463
Vars.net.handleServer(Packets.Connect.class, (con, connect) -> {
5564
Events.fire(new EventType.ConnectionEvent(con));
@@ -85,7 +94,6 @@ public void registerServerCommands(CommandHandler handler){
8594
public void registerClientCommands(CommandHandler handler){
8695

8796
register = new CommandRegister<>(handler);
88-
8997
register.registerCommands((List<MindustryCommand<Player>>) getCommandsFromPackage("smp.commandSystem.commands.mindustry"));
9098
Timer.schedule(() -> {
9199
register.updateCommands();

src/java/smp/antigrief/NodeGriefingWarning.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
public class NodeGriefingWarning {
1414
public static void initializeNodeGriefingWarnings() {
1515
Events.on(EventType.ConfigEvent.class, event -> {
16-
if (event.tile.block() == Blocks.powerNode || event.tile.block() == Blocks.powerNodeLarge) {
16+
if (event.tile.block == Blocks.powerNode || event.tile.block == Blocks.powerNodeLarge) {
1717
if (event.tile.buildOn().power.links.isEmpty() && !(event.value instanceof Integer) && event.player != null) {
1818
String str = "[orange]Warning! Possible node griefing at: "
1919
+ event.tile.tileX()

src/java/smp/commandSystem/CommandRegister.java

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,15 @@
1010

1111
import java.io.IOException;
1212
import java.lang.reflect.InvocationTargetException;
13-
import java.util.ArrayList;
14-
import java.util.List;
15-
import java.util.Objects;
13+
import java.util.*;
14+
import java.util.stream.Collectors;
1615

1716
import static arc.util.Log.log;
1817
import static smp.functions.Utilities.notNullElse;
18+
import static smp.system.config.ConfigSystem.*;
1919
import static smp.system.reflect.ReflectSystem.exportClasses;
20+
import static smp.vars.Variables.allCommandsEnabled;
21+
import static smp.vars.Variables.allDiscordCommandsEnabled;
2022

2123
public class CommandRegister<T extends MindustryCommand<Player>> {
2224

@@ -30,7 +32,17 @@ public CommandRegister(CommandHandler handler) {
3032
}
3133

3234
public final void registerCommands(List<T> commands) {
35+
Set<String> whitelistedCommands = new HashSet<>();
36+
if (!allCommandsEnabled){
37+
whitelistedCommands = booleans.keySet().stream().filter(k -> k.contains("mindustry.commands.command-whitelist.")).collect(Collectors.toSet());
38+
System.out.println(whitelistedCommands);
39+
}
3340
for (var command: commands) {
41+
if (!whitelistedCommands.isEmpty() && !whitelistedCommands.contains("mindustry.commands.command-whitelist." + command.name)){
42+
Log.warn("command has not been registered: " + command.name);
43+
continue;
44+
}
45+
3446
if (handler.getCommandList().contains(t -> t.text.equalsIgnoreCase(command.name))) handler.removeCommand(command.name);
3547

3648
StringBuilder builder = new StringBuilder();
@@ -54,6 +66,10 @@ public final void registerCommands(List<T> commands) {
5466

5567
public static void registerDiscordCommands(List<DiscordCommand> commands) {
5668
for (var command : commands) {
69+
if (!getConfigField("discord.commands.command-whitelist." + command.name, booleans) && !allDiscordCommandsEnabled) {
70+
Log.warn("Discord command has not been registered: " + command.name);
71+
return;
72+
}
5773
discordCommands.add(command);
5874
}
5975
}

src/java/smp/commandSystem/commands/discord/admin/BanCommand.java

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,26 @@
11
package smp.commandSystem.commands.discord.admin;
22

3+
import mindustry.gen.Call;
4+
import mindustry.gen.Player;
5+
import org.javacord.api.entity.user.User;
36
import org.javacord.api.event.message.MessageCreateEvent;
47
import smp.commandSystem.discord.DiscordCommand;
58
import smp.database.players.FindPlayerData;
6-
import smp.functions.Utilities;
79
import smp.models.PlayerData;
10+
import smp.models.Punishment;
811

912
import java.util.Date;
1013

1114
import static arc.util.Strings.canParseInt;
1215
import static java.lang.Integer.parseInt;
13-
import static smp.database.players.PlayerFunctions.updateData;
16+
import static smp.vars.Variables.discordURL;
17+
import static smp.database.DatabaseSystem.updateDatabaseDocument;
18+
import static smp.database.DatabaseSystem.playerCollection;
19+
import static smp.discord.Bot.messageLogChannel;
20+
import static smp.discord.embedSystem.embeds.BanEmbed.banEmbed;
21+
import static smp.functions.FindPlayer.findPlayerByName;
1422
import static smp.functions.Wrappers.formatBanTime;
23+
import static smp.functions.Wrappers.timeToDuration;
1524

1625
public class BanCommand extends DiscordCommand {
1726
public BanCommand() {
@@ -35,7 +44,19 @@ public void run(MessageCreateEvent listener) {
3544

3645
if (time == null) {listener.getChannel().sendMessage("Incorrect time!"); return;}
3746

38-
Utilities.banPlayer(time, reason, plr, listener.getMessageAuthor().asUser().get());
47+
banPlayer(time, reason, plr, listener.getMessageAuthor().asUser().get());
3948
listener.getChannel().sendMessage("Banned: " + plr.name);
4049
}
50+
51+
public static void banPlayer(Date date, String reason, PlayerData data, User moderator){
52+
Punishment punishment = new Punishment("ban", date.getTime(), reason, moderator.getName());
53+
data.punishments.add(punishment);
54+
Player plr = findPlayerByName(data.name);
55+
if (plr != null){
56+
Call.sendMessage(plr.plainName() + " has been banned for: " + reason);
57+
plr.con.kick("[red]You have been banned!\n\n" + "[white]Reason: " + reason +"\nDuration: " + timeToDuration(date.getTime()) + " until unban\nIf you think this is a mistake, make sure to appeal ban in our discord: " + discordURL, 0);
58+
}
59+
updateDatabaseDocument(data, playerCollection, "_id", data.id);
60+
messageLogChannel.sendMessage(banEmbed(data, reason, date.getTime(), moderator.getName()));
61+
}
4162
}

src/java/smp/commandSystem/commands/discord/admin/GameOverCommand.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@
66
import org.javacord.api.event.message.MessageCreateEvent;
77
import smp.commandSystem.discord.DiscordCommand;
88

9-
import static java.lang.Integer.parseInt;
10-
119
public class GameOverCommand extends DiscordCommand {
1210
public GameOverCommand() {
1311
super("gameover", " -> executes gameover.", 0,true, false);

src/java/smp/commandSystem/commands/discord/admin/UnbanCommand.java

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,14 @@
33
import org.javacord.api.event.message.MessageCreateEvent;
44
import smp.commandSystem.discord.DiscordCommand;
55
import smp.database.players.FindPlayerData;
6-
import smp.functions.Utilities;
76
import smp.models.PlayerData;
7+
import smp.models.Punishment;
88

99
import static arc.util.Strings.canParseInt;
1010
import static java.lang.Integer.parseInt;
11+
import static smp.database.DatabaseSystem.updateDatabaseDocument;
12+
import static smp.database.DatabaseSystem.playerCollection;
13+
import static smp.database.punishments.FindPunishment.findPunishmentLastBan;
1114

1215
public class UnbanCommand extends DiscordCommand {
1316
public UnbanCommand() {
@@ -27,7 +30,15 @@ public void run(MessageCreateEvent listener) {
2730

2831
if (plr == null) {listener.getChannel().sendMessage("Could not find that player!"); return;}
2932

30-
Utilities.unbanPlayer(plr);
33+
unbanPlayer(plr);
3134
listener.getChannel().sendMessage("Unbanned: " + plr.rawName);
3235
}
36+
37+
public static void unbanPlayer(PlayerData data){
38+
Punishment punishment = findPunishmentLastBan(data);
39+
data.punishments.remove(punishment);
40+
punishment.punishmentType = "unbanned";
41+
data.punishments.add(punishment);
42+
updateDatabaseDocument(data, playerCollection, "_id", data.id);
43+
}
3344
}

src/java/smp/commandSystem/commands/discord/admin/WarnCommand.java

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,18 @@
11
package smp.commandSystem.commands.discord.admin;
22

3+
import org.javacord.api.entity.user.User;
34
import org.javacord.api.event.message.MessageCreateEvent;
45
import smp.commandSystem.discord.DiscordCommand;
56
import smp.database.players.FindPlayerData;
6-
import smp.functions.Utilities;
77
import smp.models.PlayerData;
8+
import smp.models.Punishment;
89

910
import java.util.Date;
1011

1112
import static arc.util.Strings.canParseInt;
1213
import static java.lang.Integer.parseInt;
14+
import static smp.database.DatabaseSystem.updateDatabaseDocument;
15+
import static smp.database.DatabaseSystem.playerCollection;
1316
import static smp.functions.Wrappers.formatBanTime;
1417

1518
public class WarnCommand extends DiscordCommand {
@@ -34,7 +37,13 @@ public void run(MessageCreateEvent listener) {
3437

3538
if (time == null) {listener.getChannel().sendMessage("Incorrect time!"); return;}
3639

37-
Utilities.warnPlayer(time, reason, plr, listener.getMessageAuthor().asUser().get());
40+
warnPlayer(time, reason, plr, listener.getMessageAuthor().asUser().get());
3841
listener.getChannel().sendMessage("Warned: " + plr.name);
3942
}
43+
44+
public static void warnPlayer(Date date, String reason, PlayerData data, User moderator){
45+
Punishment punishment = new Punishment("warn", date.getTime(), reason, moderator.getName());
46+
data.punishments.add(punishment);
47+
updateDatabaseDocument(data, playerCollection, "_id", data.id);
48+
}
4049
}

src/java/smp/commandSystem/commands/discord/basic/ListRanksCommand.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,9 @@ public void run(MessageCreateEvent listener) {
1717
builder.append("```\nRanks: " + "\n");
1818
for (Rank rank : ranks){
1919
builder
20-
.append("Rank ID: ").append(rank.rankId).append("\n")
21-
.append("Rank Name: ").append(rank.rankName).append("\n")
22-
.append("Rank Prefix: ").append(rank.rankPrefix).append("\n").append("\n");
20+
.append("Rank ID: ").append(rank.id).append("\n")
21+
.append("Rank Name: ").append(rank.name).append("\n")
22+
.append("Rank Prefix: ").append(rank.prefix).append("\n").append("\n");
2323

2424
}
2525
builder.append("```");

0 commit comments

Comments
 (0)