introduced AntiIllegalSignCharacters appliance to prevent usage of illegal characters in sign edits
This commit is contained in:
@@ -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()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user