Skip to content

Commit

Permalink
Fix invalid regex runtime error (#25)
Browse files Browse the repository at this point in the history
  • Loading branch information
whiler-sesame committed Jun 23, 2024
1 parent 6615aa9 commit a6a1720
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 2 deletions.
9 changes: 9 additions & 0 deletions src/main/java/net/elytrium/limboreconnect/LimboReconnect.java
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,8 @@
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import java.util.regex.Pattern;
import java.util.regex.PatternSyntaxException;
import net.elytrium.limboapi.api.Limbo;
import net.elytrium.limboapi.api.LimboFactory;
import net.elytrium.limboapi.api.chunk.Dimension;
Expand Down Expand Up @@ -64,6 +66,7 @@ public class LimboReconnect {
private static ComponentSerializer<Component, Component, String> SERIALIZER;
public final List<Title> offlineTitles = new ArrayList<>();
public final List<Title> connectingTitles = new ArrayList<>();
public Pattern triggerMessage;
private final ProxyServer server;
private final Path configPath;
private final Path dataDirectory;
Expand Down Expand Up @@ -117,6 +120,12 @@ public void reload() {
VirtualWorld world = this.factory.createVirtualWorld(
Dimension.valueOf(CONFIG.world.dimension), playerCoords.x, playerCoords.y, playerCoords.z, playerCoords.yaw, playerCoords.pitch);

try {
this.triggerMessage = Pattern.compile(CONFIG.triggerMessage);
} catch (PatternSyntaxException e) {
throw new IllegalArgumentException("Unable to parse 'triggerMessage' into a valid RegEx, check config: " + CONFIG.triggerMessage, e);
}

if (CONFIG.world.loadWorld) {
try {
Path path = this.dataDirectory.resolve(CONFIG.world.worldFilePath);
Expand Down
5 changes: 3 additions & 2 deletions src/main/java/net/elytrium/limboreconnect/listener/ReconnectListener.java
100755 → 100644
Original file line number Diff line number Diff line change
Expand Up @@ -48,14 +48,15 @@ public void onLoginLimboRegister(LoginLimboRegisterEvent event) {

Component kickReason = kickEvent.getServerKickReason().isPresent() ? kickEvent.getServerKickReason().get() : Component.empty();
String kickMessage = Objects.requireNonNullElse(SERIALIZER.serialize(kickReason), "unknown");
boolean match = this.plugin.triggerMessage.matcher(kickMessage).matches();
if (CONFIG.debug) {
LimboReconnect.getLogger().info("Component: {}", kickReason);
LimboReconnect.getLogger().info("Kick message: {}", kickMessage);
LimboReconnect.getLogger().info("Config: {}", CONFIG.triggerMessage);
LimboReconnect.getLogger().info("Match: {}", kickMessage.matches(CONFIG.triggerMessage));
LimboReconnect.getLogger().info("Match: {}", match);
}

if (kickMessage.matches(CONFIG.triggerMessage)) {
if (match) {
if (CONFIG.requirePermission && !kickEvent.getPlayer().hasPermission("limboreconnect.reconnect")) {
return false;
}
Expand Down

0 comments on commit a6a1720

Please sign in to comment.