Skip to content

Commit 316ed7b

Browse files
authored
Merge pull request #17 from Emibergo02/5.0
5.0 Merge
2 parents 2155d63 + 045343d commit 316ed7b

74 files changed

Lines changed: 2436 additions & 1521 deletions

File tree

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: 36 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -6,103 +6,108 @@ plugins {
66

77

88
group = 'dev.unnm3d'
9-
version = '4.6.1'
9+
version = '5.3'
1010

1111

1212
repositories {
1313
mavenLocal()
14-
maven { url 'https://s01.oss.sonatype.org/content/repositories/snapshots' }
14+
maven { url 'https://repo.spicord.org/' }
1515
maven { url 'https://jitpack.io' }
16-
maven { url 'https://repo.papermc.io/repository/maven-public/' }
16+
maven { url 'https://hub.spigotmc.org/nexus/content/repositories/snapshots/' }
1717
maven { url 'https://repo.extendedclip.com/content/repositories/placeholderapi/' }
1818
maven { url 'https://repo.xenondevs.xyz/releases' }
1919
maven { url 'https://repo.maven.apache.org/maven2/' }
20-
2120
}
2221

2322
dependencies {
2423
compileOnly 'net.kyori:adventure-text-minimessage:4.17.0'
2524
compileOnly 'net.kyori:adventure-text-serializer-plain:4.17.0'
25+
compileOnly 'net.kyori:adventure-text-serializer-legacy:4.17.0'
26+
compileOnly 'net.kyori:adventure-platform-bukkit:4.3.3'
27+
compileOnly 'com.alibaba:fastjson:2.0.52'
2628

2729
implementation 'com.github.Exlll.ConfigLib:configlib-paper:v4.5.0'
28-
implementation 'xyz.xenondevs.invui:invui-core:1.31'
29-
implementation 'xyz.xenondevs.invui:inventory-access-r7:1.31'
30-
implementation 'xyz.xenondevs.invui:inventory-access-r9:1.31'
31-
implementation 'xyz.xenondevs.invui:inventory-access-r11:1.31'
32-
implementation 'xyz.xenondevs.invui:inventory-access-r14:1.31'
33-
implementation 'xyz.xenondevs.invui:inventory-access-r15:1.31'
34-
implementation 'xyz.xenondevs.invui:inventory-access-r16:1.31'
35-
implementation 'xyz.xenondevs.invui:inventory-access-r17:1.31'
36-
implementation 'xyz.xenondevs.invui:inventory-access-r18:1.31'
37-
implementation 'xyz.xenondevs.invui:inventory-access-r19:1.31'
38-
implementation 'dev.jorel:commandapi-bukkit-shade:9.5.0-SNAPSHOT'
30+
implementation 'xyz.xenondevs.invui:invui-core:1.35'
31+
implementation 'xyz.xenondevs.invui:inventory-access-r7:1.35'
32+
implementation 'xyz.xenondevs.invui:inventory-access-r11:1.35'
33+
implementation 'xyz.xenondevs.invui:inventory-access-r15:1.35'
34+
implementation 'xyz.xenondevs.invui:inventory-access-r16:1.35'
35+
implementation 'xyz.xenondevs.invui:inventory-access-r17:1.35'
36+
implementation 'xyz.xenondevs.invui:inventory-access-r18:1.35'
37+
implementation 'xyz.xenondevs.invui:inventory-access-r19:1.35'
38+
implementation 'xyz.xenondevs.invui:inventory-access-r20:1.35'
39+
implementation 'xyz.xenondevs.invui:inventory-access-r21:1.35'
40+
implementation 'dev.jorel:commandapi-bukkit-shade:9.5.3'
3941
implementation 'com.github.Anon8281:UniversalScheduler:0.1.6'
4042

41-
compileOnly 'io.papermc.paper:paper-api:1.20.1-R0.1-SNAPSHOT'
43+
44+
compileOnly 'org.spigotmc:spigot-api:1.19.4-R0.1-SNAPSHOT'
4245
compileOnly 'me.clip:placeholderapi:2.11.3'
43-
compileOnly 'io.lettuce:lettuce-core:6.2.5.RELEASE'
44-
compileOnly 'org.jetbrains:annotations:24.0.1'
45-
compileOnly 'com.zaxxer:HikariCP:5.0.1'
46-
compileOnly 'org.mariadb.jdbc:mariadb-java-client:3.1.4'
46+
compileOnly 'io.lettuce:lettuce-core:6.2.7.RELEASE'
47+
compileOnly 'org.jetbrains:annotations:24.1.0'
48+
compileOnly 'com.zaxxer:HikariCP:5.1.0'
4749
compileOnly 'net.luckperms:api:5.4'
4850
compileOnly 'com.github.MilkBowl:VaultAPI:1.7'
4951
compileOnly 'com.github.oraxen:oraxen:1.162.0'
5052
compileOnly 'com.github.LeonMangler:PremiumVanishAPI:2.8.8'
51-
compileOnly 'org.projectlombok:lombok:1.18.32'
53+
compileOnly 'org.projectlombok:lombok:1.18.34'
5254
compileOnly 'com.github.Spicord.Spicord:spicord-common:v5-SNAPSHOT'
5355
compileOnly 'net.dv8tion:JDA:5.0.0-beta.16'
5456
compileOnly 'org.apache.commons:commons-collections4:4.4'
5557

58+
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.10.2'
59+
testImplementation 'org.junit.jupiter:junit-jupiter-params:5.10.2'
60+
testImplementation 'org.junit.jupiter:junit-jupiter-engine:5.10.2'
61+
testImplementation 'io.papermc.paper:paper-api:1.20.1-R0.1-SNAPSHOT'
5662

57-
annotationProcessor('org.projectlombok:lombok:1.18.32')
63+
annotationProcessor 'org.projectlombok:lombok:1.18.34'
64+
}
65+
66+
test {
67+
useJUnitPlatform()
5868
}
5969

6070
shadowJar {
6171
destinationDirectory.set(file("$rootDir/target"))
6272
archiveClassifier.set('')
6373
dependencies {
64-
6574
include dependency('com.github.Exlll.ConfigLib:configlib-paper')
6675
include dependency('com.github.Exlll.ConfigLib:configlib-yaml')
6776
include dependency("com.github.Exlll.ConfigLib:configlib-core")
6877
include dependency('xyz.xenondevs.invui:invui-core')
6978
include dependency('xyz.xenondevs.invui:inventory-access')
7079
include dependency('xyz.xenondevs.invui:inventory-access-r7')
71-
include dependency('xyz.xenondevs.invui:inventory-access-r9')
7280
include dependency('xyz.xenondevs.invui:inventory-access-r11')
73-
include dependency('xyz.xenondevs.invui:inventory-access-r14')
7481
include dependency('xyz.xenondevs.invui:inventory-access-r15')
7582
include dependency('xyz.xenondevs.invui:inventory-access-r16')
7683
include dependency('xyz.xenondevs.invui:inventory-access-r17')
7784
include dependency('xyz.xenondevs.invui:inventory-access-r18')
7885
include dependency('xyz.xenondevs.invui:inventory-access-r19')
86+
include dependency('xyz.xenondevs.invui:inventory-access-r20')
87+
include dependency('xyz.xenondevs.invui:inventory-access-r21')
7988
include dependency('dev.jorel:commandapi-bukkit-shade')
8089
include dependency('com.github.Anon8281:UniversalScheduler:0.1.6')
8190
}
8291

8392
exclude 'colors.bin'
8493

85-
8694
relocate 'de.exlll.configlib', 'dev.unnm3d.redischat.libraries.configlib'
8795
relocate 'xyz.xenondevs.invui', 'dev.unnm3d.redischat.libraries.invui'
8896
relocate 'xyz.xenondevs.inventoryaccess', 'dev.unnm3d.redischat.libraries.inventoryaccess'
8997
relocate 'dev.jorel.commandapi', 'dev.unnm3d.redischat.libraries.commandapi'
9098
relocate 'com.github.Anon8281.universalScheduler', 'dev.unnm3d.redischat.libraries.universalScheduler'
91-
9299
}
93100

94-
def sourceJavaVersion = 21
101+
def sourceJavaVersion = 17
95102
def releaseJavaVersion = 17
96103

97104
java {
98-
toolchain{
105+
toolchain {
99106
languageVersion = JavaLanguageVersion.of(releaseJavaVersion)
100107
sourceCompatibility = JavaLanguageVersion.of(sourceJavaVersion)
101108
}
102109

103110
withSourcesJar()
104-
withJavadocJar()
105-
106111
}
107112
compileJava.options.release.set releaseJavaVersion
108113
compileJava.options.encoding 'UTF-8'
@@ -131,12 +136,10 @@ publishing {
131136
artifactId = 'redischat'
132137
version = "$version"
133138
artifact shadowJar
134-
artifact javadocJar
135139
artifact sourcesJar
136140
}
137141
}
138142
}
139143

140-
141144
jar.dependsOn shadowJar
142145
clean.delete "$rootDir/target"

docs/dev/unnm3d/redischat/channels/ChannelGUI.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@
7272
<h1 title="Class ChannelGUI" class="title">Class ChannelGUI</h1>
7373
</div>
7474
<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
75-
<div class="inheritance">dev.unnm3d.redischat.channels.ChannelGUI</div>
75+
<div class="inheritance">dev.unnm3d.redischat.channels.gui.ChannelGUI</div>
7676
</div>
7777
<section class="class-description" id="class-description">
7878
<hr>

docs/dev/unnm3d/redischat/channels/MutePublic.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ <h1 title="Class MutePublic" class="title">Class MutePublic</h1>
7373
</div>
7474
<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
7575
<div class="inheritance">xyz.xenondevs.invui.item.impl.AbstractItem
76-
<div class="inheritance">dev.unnm3d.redischat.channels.MutePublic</div>
76+
<div class="inheritance">dev.unnm3d.redischat.channels.gui.MutePublic</div>
7777
</div>
7878
</div>
7979
<section class="class-description" id="class-description">

docs/dev/unnm3d/redischat/channels/PlayerChannel.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ <h1 title="Class PlayerChannel" class="title">Class PlayerChannel</h1>
7373
</div>
7474
<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
7575
<div class="inheritance">xyz.xenondevs.invui.item.impl.AbstractItem
76-
<div class="inheritance">dev.unnm3d.redischat.channels.PlayerChannel</div>
76+
<div class="inheritance">dev.unnm3d.redischat.channels.gui.PlayerChannel</div>
7777
</div>
7878
</div>
7979
<section class="class-description" id="class-description">

src/main/java/dev/unnm3d/redischat/Permissions.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ public enum Permissions {
1313
MAIL_UNREAD("redischat.mail.unread"),
1414
IGNORE("redischat.ignore"),
1515
IGNORE_WHITELIST("redischat.ignore_whitelist"),
16+
BYPASS_FILTER_PREFIX("redischat.bypassfilter."),
1617
USE_FORMATTING("redischat.useformatting"),
1718
USE_DANGEROUS("redischat.usedangeroustags"),
1819
USE_ITEM("redischat.showitem"),
@@ -29,10 +30,13 @@ public enum Permissions {
2930
CHANNEL_PREFIX("redischat.channel."),
3031
CHANNEL_PUBLIC("redischat.channel.public"),
3132
CHANNEL_CREATE("redischat.createchannel"),
33+
CHANNEL_CHANGE_DISPLAYNAME("redischat.changedisplayname"),
3234
CHANNEL_DELETE("redischat.deletechannel"),
3335
CHANNEL_TOGGLE_PLAYER("redischat.playerchannel"),
3436
CHANNEL_LIST("redischat.listchannel"),
3537
CHANNEL_MUTE("redischat.mutechannel"),
38+
CHANNEL_HIDE_PREFIX("redischat.hidechannel."),
39+
CHANNEL_SHOW_PREFIX("redischat.showchannel."),
3640
JOIN_QUIT("redischat.joinquit"),
3741
CHAT_COLOR("redischat.chatcolorcommand"),
3842
SET_PLACEHOLDER("redischat.setchatplaceholder"),

src/main/java/dev/unnm3d/redischat/RedisChat.java

Lines changed: 53 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
import dev.unnm3d.redischat.permission.PermissionProvider;
3333
import dev.unnm3d.redischat.permission.VaultPermissionProvider;
3434
import dev.unnm3d.redischat.settings.Config;
35+
import dev.unnm3d.redischat.settings.FiltersConfig;
3536
import dev.unnm3d.redischat.settings.GuiSettings;
3637
import dev.unnm3d.redischat.settings.Messages;
3738
import dev.unnm3d.redischat.task.AnnouncerManager;
@@ -59,9 +60,7 @@ public final class RedisChat extends JavaPlugin {
5960
private static RedisChat instance;
6061
@Getter
6162
private static TaskScheduler scheduler;
62-
public Config config;
63-
private List<String> registeredCommands;
64-
public Messages messages;
63+
private List<CommandAPICommand> registeredCommands;
6564
public GuiSettings guiSettings;
6665
@Getter
6766
private DataManager dataManager;
@@ -90,6 +89,11 @@ public final class RedisChat extends JavaPlugin {
9089
@Getter
9190
private MailGUIManager mailGUIManager;
9291

92+
public Config config;
93+
public FiltersConfig filterSettings;
94+
public Messages messages;
95+
96+
9397
@Override
9498
public void onLoad() {
9599
CommandAPI.onLoad(new CommandAPIBukkitConfig(this)
@@ -149,6 +153,7 @@ public void onEnable() {
149153
if (config.enableStaffChat)
150154
loadCommandAPICommand(new StaffChatCommand(this).getCommand());
151155

156+
152157
this.channelManager = new ChannelManager(this);
153158
loadCommandAPICommand(new ChannelCommand(this).getCommand());
154159

@@ -255,7 +260,28 @@ public void loadYML() throws ConfigurationException {
255260
.charset(StandardCharsets.UTF_8)
256261
.build()
257262
);
258-
this.config.validateConfig();
263+
if (this.config.validateConfig())
264+
YamlConfigurations.save(configFile, Config.class, this.config);
265+
266+
Path filtersFile = new File(getDataFolder(), "filters.yml").toPath();
267+
this.filterSettings = YamlConfigurations.update(
268+
filtersFile,
269+
FiltersConfig.class,
270+
YamlConfigurationProperties.newBuilder()
271+
.header("""
272+
How to configure filters:
273+
enabled: true/false # If the filter is enabled at all
274+
priority: 1 # The priority of the filter
275+
audienceWhitelist: # The audience type of the filter (who is the target of the filter)
276+
- DISCORD
277+
- PLAYER #Private messages
278+
- CHANNEL #Channel messages
279+
channelWhitelist: [] # Which channels are affected by the filter, leave empty for all channels
280+
281+
""")
282+
.charset(StandardCharsets.UTF_8)
283+
.build()
284+
);
259285

260286
Path messagesFile = new File(getDataFolder(), "messages.yml").toPath();
261287
this.messages = YamlConfigurations.update(
@@ -267,7 +293,6 @@ public void loadYML() throws ConfigurationException {
267293
.charset(StandardCharsets.UTF_8)
268294
.build()
269295
);
270-
this.messages.validateConfig();
271296

272297
Path guiSettingsFile = new File(getDataFolder(), "guis.yml").toPath();
273298
this.guiSettings = YamlConfigurations.update(
@@ -279,11 +304,19 @@ public void loadYML() throws ConfigurationException {
279304
.charset(StandardCharsets.UTF_8)
280305
.build()
281306
);
282-
this.guiSettings.validateConfig();
307+
if (this.guiSettings.validateConfig())
308+
YamlConfigurations.save(guiSettingsFile, GuiSettings.class, this.guiSettings);
283309
}
284310

285311
public void saveMessages() {
286-
YamlConfigurations.save(new File(this.getDataFolder(), "messages.yml").toPath(), Messages.class, messages);
312+
YamlConfigurations.save(
313+
new File(this.getDataFolder(), "messages.yml").toPath(),
314+
Messages.class,
315+
messages,
316+
YamlConfigurationProperties.newBuilder()
317+
.header("RedisChat messages")
318+
.footer("Authors: Unnm3d")
319+
.build());
287320
}
288321

289322
public void saveGuiSettings() {
@@ -297,13 +330,24 @@ public void saveGuiSettings() {
297330
.build());
298331
}
299332

333+
public void saveFilters() {
334+
YamlConfigurations.save(
335+
new File(this.getDataFolder(), "filters.yml").toPath(),
336+
FiltersConfig.class,
337+
filterSettings,
338+
YamlConfigurationProperties.newBuilder()
339+
.header("RedisChat filters")
340+
.footer("Authors: Unnm3d")
341+
.build());
342+
}
343+
300344
@Override
301345
public void onDisable() {
302346
getLogger().warning("RedisChat is disabling...");
303347
if (this.dataManager != null)
304348
this.dataManager.clearInvShareCache();
305349

306-
registeredCommands.forEach(command -> CommandAPI.unregister(command, true));
350+
registeredCommands.forEach(command -> CommandAPI.unregister(command.getName(), true));
307351
CommandAPI.onDisable();
308352

309353
if (this.playerListManager != null)
@@ -337,7 +381,7 @@ private void loadCommandAPICommand(CommandAPICommand commandAPICommand) {
337381

338382
CommandAPI.unregister(commandAPICommand.getName(), true);
339383
commandAPICommand.register();
340-
registeredCommands.add(commandAPICommand.getName());
384+
registeredCommands.add(commandAPICommand);
341385
getLogger().info("Command " + commandAPICommand.getName() + " registered on CommandAPI!");
342386
}
343387

src/main/java/dev/unnm3d/redischat/api/DataManager.java

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,12 @@
11
package dev.unnm3d.redischat.api;
22

3-
import dev.unnm3d.redischat.channels.Channel;
4-
import dev.unnm3d.redischat.channels.PlayerChannel;
5-
import dev.unnm3d.redischat.chat.ChatMessageInfo;
3+
import dev.unnm3d.redischat.chat.objects.Channel;
4+
import dev.unnm3d.redischat.chat.objects.ChatMessage;
65
import dev.unnm3d.redischat.mail.Mail;
76
import org.bukkit.inventory.ItemStack;
87
import org.bukkit.util.io.BukkitObjectInputStream;
98
import org.bukkit.util.io.BukkitObjectOutputStream;
109
import org.jetbrains.annotations.NotNull;
11-
import org.jetbrains.annotations.Nullable;
1210

1311
import java.io.ByteArrayInputStream;
1412
import java.io.ByteArrayOutputStream;
@@ -24,9 +22,7 @@ public interface DataManager {
2422

2523
void unregisterChannel(@NotNull String channelName);
2624

27-
CompletionStage<@Nullable String> getActivePlayerChannel(@NotNull String playerName, Map<String, Channel> registeredChannels);
28-
29-
CompletionStage<List<PlayerChannel>> getPlayerChannelStatuses(@NotNull String playerName, Map<String, Channel> registeredChannels);
25+
CompletionStage<String> getActivePlayerChannel(@NotNull String playerName, Map<String, Channel> registeredChannels);
3026

3127
CompletionStage<List<Channel>> getChannels();
3228

@@ -70,9 +66,7 @@ public interface DataManager {
7066

7167
CompletionStage<Boolean> deleteMail(@NotNull Mail mail);
7268

73-
void setPlayerChannelStatuses(@NotNull String playerName, @NotNull Map<String, String> channelStatuses);
74-
75-
void removePlayerChannelStatus(@NotNull String playerName, @NotNull String channelName);
69+
void setActivePlayerChannel(String playerName, String channelName);
7670

7771
void setMutedEntities(@NotNull String playerName, @NotNull Set<String> mutedChannels);
7872

@@ -82,7 +76,7 @@ public interface DataManager {
8276

8377
void setWhitelistEnabledPlayer(@NotNull String playerName, boolean enabled);
8478

85-
void sendChatMessage(@NotNull ChatMessageInfo chatMessage);
79+
void sendChatMessage(@NotNull ChatMessage chatMessage);
8680

8781
void publishPlayerList(@NotNull List<String> playerNames);
8882

@@ -137,4 +131,5 @@ default Map<String, String> deserializePlayerPlaceholders(String source) {
137131
.collect(Collectors.toMap(strings -> strings[0], strings -> strings[1]));
138132
}
139133

134+
140135
}

0 commit comments

Comments
 (0)