introduced AntiIllegalSignCharacters appliance to prevent usage of illegal characters in sign edits

This commit is contained in:
2025-12-22 18:44:22 +01:00
parent a257b604ea
commit 71f2da8e99
2 changed files with 39 additions and 0 deletions

View File

@@ -0,0 +1,16 @@
package eu.mhsl.craftattack.spawn.common.appliances.security.antiIllegalSignCharacters;
import eu.mhsl.craftattack.spawn.core.appliance.Appliance;
import org.bukkit.event.Listener;
import org.jetbrains.annotations.NotNull;
import java.util.List;
public class AntiIllegalSignCharacters extends Appliance {
@Override
protected @NotNull List<Listener> listeners() {
return List.of(
new SignEditListener()
);
}
}

View File

@@ -0,0 +1,23 @@
package eu.mhsl.craftattack.spawn.common.appliances.security.antiIllegalSignCharacters;
import eu.mhsl.craftattack.spawn.core.appliance.ApplianceListener;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer;
import org.bukkit.event.EventHandler;
import org.bukkit.event.block.SignChangeEvent;
class SignEditListener extends ApplianceListener<AntiIllegalSignCharacters> {
@EventHandler
public void onSignEdit(SignChangeEvent event) {
for (int i = 0; i < 4; i++) {
Component line = event.line(i);
if(line == null) continue;
String lineStr = PlainTextComponentSerializer.plainText().serialize(line);
if (!lineStr.matches("^[ -~]*$")) {
String cleaned = lineStr.replaceAll("[^ -~]", "");
event.line(i, Component.text(cleaned));
}
}
}
}