diff --git a/common/src/main/java/eu/mhsl/craftattack/spawn/common/appliances/security/antiIllegalSignCharacters/AntiIllegalSignCharacters.java b/common/src/main/java/eu/mhsl/craftattack/spawn/common/appliances/security/antiIllegalSignCharacters/AntiIllegalSignCharacters.java new file mode 100644 index 0000000..9a94b66 --- /dev/null +++ b/common/src/main/java/eu/mhsl/craftattack/spawn/common/appliances/security/antiIllegalSignCharacters/AntiIllegalSignCharacters.java @@ -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 listeners() { + return List.of( + new SignEditListener() + ); + } +} diff --git a/common/src/main/java/eu/mhsl/craftattack/spawn/common/appliances/security/antiIllegalSignCharacters/SignEditListener.java b/common/src/main/java/eu/mhsl/craftattack/spawn/common/appliances/security/antiIllegalSignCharacters/SignEditListener.java new file mode 100644 index 0000000..9ad38c9 --- /dev/null +++ b/common/src/main/java/eu/mhsl/craftattack/spawn/common/appliances/security/antiIllegalSignCharacters/SignEditListener.java @@ -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 { + @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)); + } + } + } +}