Skip to content

Commit 6c84234

Browse files
committed
Refactored a lot of stuff and added some new features
Added DragonTechMC#38: now usernames don't count as spam Fixed DragonTechMC#36: now we get get the name of the player if he is online (but still fallback to the offline user if he isn't) Added DragonTechMC#35: Added a replacer with stars (****) or words to replace with Added DragonTechMC#34: now we have a Messages.conf with all (or most) player messages configurable Added DragonTechMC#27: now you can define the directory of the file datastore Also fixed some stuff which was erroring on SpongeAPI 7.1.0, it should now work on all versions
1 parent fb86c49 commit 6c84234

36 files changed

+441
-1173
lines changed

build.gradle

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
plugins {
22
id 'org.spongepowered.plugin' version '0.8.1'
3-
id 'com.qixalite.spongestart' version '1.6.2'
3+
id 'com.qixalite.spongestart2' version '3.0.1'
44
id 'java'
55
}
66

@@ -17,12 +17,11 @@ repositories {
1717
}
1818

1919
spongestart {
20-
eula true
21-
spongeForgeVersion '1.10.2-2221-5.2.0-BETA-2223'
20+
minecraft '1.12.2'
2221
}
2322

2423
dependencies {
25-
compile 'org.spongepowered:spongeapi:5.2.0-SNAPSHOT'
24+
compile 'org.spongepowered:spongeapi:7.1.0-SNAPSHOT'
2625
testCompile 'junit:junit:4.12'
2726
testCompile 'org.powermock:powermock-module-junit4:1.6.6'
2827
testCompile 'org.powermock:powermock-api-mockito:1.6.6'
Lines changed: 101 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,16 @@
11
package me.morpheus.dtpunishment;
22

3+
import me.morpheus.dtpunishment.configuration.*;
4+
import me.morpheus.dtpunishment.data.ChatOffenceData;
5+
import me.morpheus.dtpunishment.data.DataStore;
6+
import me.morpheus.dtpunishment.data.FileDataStore;
7+
import me.morpheus.dtpunishment.data.MySqlDataStore;
8+
import ninja.leaping.configurate.objectmapping.GuiceObjectMapperFactory;
39
import org.slf4j.Logger;
410
import org.spongepowered.api.Sponge;
11+
import org.spongepowered.api.config.ConfigDir;
512
import org.spongepowered.api.event.Listener;
13+
import org.spongepowered.api.event.game.GameReloadEvent;
614
import org.spongepowered.api.event.game.state.GameInitializationEvent;
715
import org.spongepowered.api.event.game.state.GamePreInitializationEvent;
816
import org.spongepowered.api.plugin.Plugin;
@@ -11,61 +19,125 @@
1119
import com.google.inject.Injector;
1220

1321
import me.morpheus.dtpunishment.commands.CommandManager;
14-
import me.morpheus.dtpunishment.configuration.ConfigurationManager;
15-
import me.morpheus.dtpunishment.configuration.MainConfig;
16-
import me.morpheus.dtpunishment.configuration.PunishmentLength;
17-
import me.morpheus.dtpunishment.configuration.PunishmentLengthSerializer;
1822
import me.morpheus.dtpunishment.listeners.PlayerListener;
1923
import ninja.leaping.configurate.objectmapping.serialize.TypeSerializers;
2024

25+
import java.io.File;
26+
import java.nio.file.Path;
27+
2128
@Plugin(id = "dtpunishment", name = "DTPunishment", description = "Dragon Tech Punishment: a unique chat safeguard plugin")
2229
public class DTPunishment {
2330

24-
private Logger logger;
31+
@Inject
32+
public Logger logger;
2533

26-
private Injector injector;
34+
public static Logger getLogger() {
35+
return instance.logger;
36+
}
2737

28-
private Injector childInjector;
38+
@Inject
39+
@ConfigDir(sharedRoot = false)
40+
public File configDir;
2941

30-
private MainConfig config;
42+
public File dataDir;
3143

32-
private CommandManager commandManager;
44+
@Inject
45+
public GuiceObjectMapperFactory mapper;
3346

34-
@Inject
35-
public DTPunishment(Logger logger, Injector injector, MainConfig mainConfig) {
36-
this.logger = logger;
37-
this.injector = injector;
38-
this.config = mainConfig;
39-
registerSerializers();
40-
}
47+
public DataStore dataStore;
4148

42-
private void registerSerializers() {
43-
TypeSerializers.getDefaultSerializers().registerType(TypeToken.of(PunishmentLength.class),
44-
new PunishmentLengthSerializer());
45-
}
49+
private static DTPunishment instance;
50+
51+
private ConfigManager<ChatConfig> chatConfig;
52+
private ConfigManager<MainConfig> mainConfig;
53+
private ConfigManager<Messages> messages;
4654

4755
@Listener
4856
public void onServerPreInit(GamePreInitializationEvent event) {
49-
logger.info("Enabling DTPunishment...");
57+
instance = this;
58+
59+
TypeSerializers.getDefaultSerializers().registerType(TypeToken.of(PunishmentLength.class),
60+
new PunishmentLengthSerializer());
61+
62+
this.chatConfig = new ConfigManager<>(ChatConfig.class, "chat.conf", configDir, mapper);
63+
this.mainConfig = new ConfigManager<>(MainConfig.class, "DTPunishments.conf", configDir, mapper);
64+
this.messages = new ConfigManager<>(Messages.class, "Messages.conf", configDir, mapper);
65+
66+
File file;
67+
if (getConfig().useCustomDataDirectory && !getConfig().customDataDirectory.isEmpty()) {
68+
file = new File(new File(getConfig().customDataDirectory), "data");
69+
} else {
70+
file = new File(this.configDir, "data");
71+
}
72+
if (!file.exists()) file.mkdirs();
73+
this.dataDir = file;
74+
75+
if (this.mainConfig.getConfig().database.enabled) {
76+
this.dataStore = new MySqlDataStore();
77+
} else {
78+
this.dataStore = new FileDataStore();
79+
}
5080

51-
// Create the child injector for the plugin
52-
childInjector = injector.createChildInjector(new DTPunishmentModule(config));
53-
54-
// Get config manager and init
55-
ConfigurationManager configurationManager = childInjector.getInstance(ConfigurationManager.class);
56-
configurationManager.intialise();
81+
logger.info("Enabling DTPunishment...");
5782

5883
// Get command manager from child injector
59-
commandManager = childInjector.getInstance(CommandManager.class);
84+
commandManager = new CommandManager();
85+
wordChecker = new WordChecker();
86+
this.offenceData = new ChatOffenceData();
6087
}
6188

6289
@Listener
6390
public void onServerInit(GameInitializationEvent event) {
6491
logger.info("Registering listeners and commands...");
65-
Sponge.getEventManager().registerListeners(this, childInjector.getInstance(PlayerListener.class));
92+
Sponge.getEventManager().registerListeners(this, new PlayerListener());
6693

6794
// Register any commands
6895
commandManager.registerCommands();
6996
}
7097

98+
@Listener
99+
public void onReload(GameReloadEvent e) {
100+
this.mainConfig.load();
101+
this.chatConfig.load();
102+
}
103+
104+
public static DTPunishment getInstance() {
105+
return instance;
106+
}
107+
108+
public static MainConfig getConfig() {
109+
return instance.mainConfig.getConfig();
110+
}
111+
112+
public static Messages getMessages() {
113+
return instance.messages.getConfig();
114+
}
115+
116+
public static ChatConfig getChatConfig() {
117+
return instance.chatConfig.getConfig();
118+
}
119+
120+
public static DataStore getDataStore() {
121+
return instance.dataStore;
122+
}
123+
124+
private CommandManager commandManager;
125+
public static CommandManager getCommandManager() {
126+
return instance.commandManager;
127+
}
128+
129+
private WordChecker wordChecker;
130+
public static WordChecker getWordChecker() {
131+
return instance.wordChecker;
132+
}
133+
134+
private ChatOffenceData offenceData;
135+
public static ChatOffenceData getOffenceData() {
136+
return instance.offenceData;
137+
}
138+
139+
public static File getDataDirectory() {
140+
return instance.dataDir;
141+
}
142+
71143
}

src/main/java/me/morpheus/dtpunishment/DTPunishmentModule.java

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

src/main/java/me/morpheus/dtpunishment/WordChecker.java

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,9 @@
1616
import com.google.inject.Singleton;
1717

1818
import me.morpheus.dtpunishment.configuration.ChatConfig;
19+
import org.spongepowered.api.Sponge;
20+
import org.spongepowered.api.entity.living.player.Player;
1921

20-
@Singleton
2122
public class WordChecker {
2223

2324
private ChatConfig chatConfig;
@@ -30,10 +31,8 @@ public class WordChecker {
3031

3132
private Pattern characterSpamRegexPattern;
3233

33-
@Inject
34-
public WordChecker(ChatConfig chatConfig) {
35-
this.chatConfig = chatConfig;
36-
34+
public WordChecker() {
35+
this.chatConfig = DTPunishment.getChatConfig();
3736
updateFromConfiguration();
3837
}
3938

@@ -102,8 +101,8 @@ public boolean containsUppercase(String message) {
102101
int total = 0;
103102

104103
for (String word : words) {
104+
if (Sponge.getServer().getPlayer(word).isPresent()) continue;
105105
String cleaned = word.replaceAll("[\\W]", "");
106-
107106
total += cleaned.length();
108107

109108
if (StringUtils.isAllLowerCase(cleaned))

src/main/java/me/morpheus/dtpunishment/commands/CommandLastOffence.java

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package me.morpheus.dtpunishment.commands;
22

3+
import me.morpheus.dtpunishment.DTPunishment;
34
import org.spongepowered.api.command.CommandException;
45
import org.spongepowered.api.command.CommandResult;
56
import org.spongepowered.api.command.CommandSource;
@@ -16,12 +17,7 @@
1617

1718
public class CommandLastOffence implements CommandExecutor {
1819

19-
private ChatOffenceData chatOffenceData;
20-
21-
@Inject
22-
public CommandLastOffence(ChatOffenceData chatOffenceData) {
23-
this.chatOffenceData = chatOffenceData;
24-
}
20+
private ChatOffenceData chatOffenceData = DTPunishment.getOffenceData();
2521

2622
@Override
2723
public CommandResult execute(CommandSource src, CommandContext args) throws CommandException {

0 commit comments

Comments
 (0)