Compare commits
6 Commits
main
...
april_fool
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
42736bd566 | ||
|
|
157edbd6b6 | ||
|
|
a7e029b0a1 | ||
|
|
ab98222f06 | ||
|
|
ad91cda0c0 | ||
|
|
9270423928 |
|
|
@ -8,6 +8,9 @@ dependencies {
|
|||
}
|
||||
compileOnly("org.spongepowered:configurate-yaml:4.1.2") // Configurate
|
||||
compileOnly("net.luckperms:api:5.3") // Luckperms
|
||||
testImplementation("org.junit.jupiter:junit-jupiter-api:5.7.0")
|
||||
testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:5.7.0")
|
||||
testImplementation("com.alttd:Galaxy-API:1.19.2-R0.1-SNAPSHOT")
|
||||
}
|
||||
|
||||
publishing {
|
||||
|
|
@ -24,4 +27,8 @@ publishing {
|
|||
credentials(PasswordCredentials::class)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
tasks.test {
|
||||
useJUnitPlatform()
|
||||
}
|
||||
|
|
@ -543,4 +543,9 @@ public final class Config {
|
|||
NICK_ALLOWED_COLOR_CODESLIST = getList("nicknames.allowed-color-codes", List.of("&0", "&1", "&2", "&3", "&4", "&5", "&6", "&7", "&8", "&9", "&a", "&b", "&c", "&d", "&e", "&f", "&r"));
|
||||
NICK_CURRENT = getString("nicknames.messages.nick-current", NICK_CURRENT);
|
||||
}
|
||||
|
||||
public static String APRIL_FOOLS_RESET = "esrever";
|
||||
private static void aprilFools() {
|
||||
APRIL_FOOLS_RESET = getString("april-fools.reset", APRIL_FOOLS_RESET);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,12 +1,14 @@
|
|||
package com.alttd.chat.objects;
|
||||
|
||||
import net.kyori.adventure.text.Component;
|
||||
import net.kyori.adventure.text.JoinConfiguration;
|
||||
import net.kyori.adventure.text.TextComponent;
|
||||
import net.kyori.adventure.text.TextReplacementConfig;
|
||||
import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer;
|
||||
import org.intellij.lang.annotations.RegExp;
|
||||
|
||||
import javax.annotation.RegEx;
|
||||
import java.util.regex.Pattern;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class ModifiableString {
|
||||
private Component text;
|
||||
|
|
@ -30,4 +32,37 @@ public class ModifiableString {
|
|||
public Component component() {
|
||||
return text;
|
||||
}
|
||||
|
||||
public void reverse() {
|
||||
text = reverseComponent(text);
|
||||
}
|
||||
|
||||
public Component reverseComponent(Component component) {
|
||||
if (!(component instanceof TextComponent textComponent)) {
|
||||
return Component.text("")
|
||||
.append(Component.join(JoinConfiguration.noSeparators(), reverseChildren(component.children())));
|
||||
}
|
||||
|
||||
String content = textComponent.content();
|
||||
String reversedContent = new StringBuilder(content).reverse().toString();
|
||||
|
||||
List<Component> reversedChildren = reverseChildren(component.children());
|
||||
|
||||
return Component.text("")
|
||||
.append(Component.join(JoinConfiguration.noSeparators(), reversedChildren)
|
||||
.append(Component.text(reversedContent, component.style())));
|
||||
}
|
||||
|
||||
public List<Component> reverseChildren(List<Component> children) {
|
||||
return children.stream()
|
||||
.map(this::reverseComponent)
|
||||
.collect(Collectors.collectingAndThen(Collectors.toList(), list -> {
|
||||
Collections.reverse(list);
|
||||
return list;
|
||||
}));
|
||||
}
|
||||
|
||||
public void removeStringAtStart(String s) {
|
||||
text = text.replaceText(TextReplacementConfig.builder().match("^" + s).replacement("").build());
|
||||
}
|
||||
}
|
||||
|
|
|
|||
86
api/src/test/java/ReverseTest.java
Normal file
86
api/src/test/java/ReverseTest.java
Normal file
|
|
@ -0,0 +1,86 @@
|
|||
import com.alttd.chat.config.Config;
|
||||
import com.alttd.chat.objects.ModifiableString;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
|
||||
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
|
||||
import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import net.kyori.adventure.text.minimessage.MiniMessage;
|
||||
|
||||
public class ReverseTest {
|
||||
|
||||
@Test
|
||||
public void testReverseString() {
|
||||
String input = "Hello how are you doing today?";
|
||||
String expectedOutput = new StringBuilder(input).reverse().toString();
|
||||
MiniMessage miniMessage = MiniMessage.miniMessage();
|
||||
ModifiableString modifiableString = new ModifiableString(miniMessage.deserialize(input));
|
||||
modifiableString.reverse();
|
||||
assertEquals(expectedOutput, modifiableString.string());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testRemoveKeyword() {
|
||||
String input = "Hello how are you doing today?";
|
||||
MiniMessage miniMessage = MiniMessage.miniMessage();
|
||||
|
||||
ModifiableString modifiableString = new ModifiableString(miniMessage.deserialize(Config.APRIL_FOOLS_RESET + " " + input));
|
||||
modifiableString.removeStringAtStart(Config.APRIL_FOOLS_RESET + " ");
|
||||
|
||||
assertEquals(input, modifiableString.string());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testRemoveKeywordWithTags() {
|
||||
MiniMessage miniMessage = MiniMessage.miniMessage();
|
||||
String input = "<blue>" + Config.APRIL_FOOLS_RESET + " <red>Hello how are</red> you <blue>doing today</blue>?</blue>";
|
||||
String expectedOutput = "Hello how are you doing today?";
|
||||
Component deserialize = miniMessage.deserialize(input);
|
||||
|
||||
ModifiableString modifiableString = new ModifiableString(deserialize);
|
||||
modifiableString.removeStringAtStart(Config.APRIL_FOOLS_RESET + " ");
|
||||
|
||||
assertEquals(expectedOutput, modifiableString.string());
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void testReverseStringWithTags() {
|
||||
String input = "<red>Hello how are</red> you <blue>doing today</blue>?";
|
||||
MiniMessage miniMessage = MiniMessage.miniMessage();
|
||||
Component deserialize = miniMessage.deserialize(input);
|
||||
ModifiableString modifiableString = new ModifiableString(deserialize);
|
||||
String expectedOutput = new StringBuilder(PlainTextComponentSerializer.plainText().serialize(deserialize)).reverse().toString();
|
||||
modifiableString.reverse();
|
||||
assertEquals(expectedOutput, modifiableString.string());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void complexTestReverseStringWithTags() {
|
||||
String input = "<green><red>Hello <b>how</b> are</red> you <blue>doing today</blue><gold>?</gold></green>";
|
||||
MiniMessage miniMessage = MiniMessage.miniMessage();
|
||||
Component deserialize = miniMessage.deserialize(input);
|
||||
ModifiableString modifiableString = new ModifiableString(deserialize);
|
||||
String expectedOutput = new StringBuilder(PlainTextComponentSerializer.plainText().serialize(deserialize)).reverse().toString();
|
||||
modifiableString.reverse();
|
||||
assertEquals(expectedOutput, modifiableString.string());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void extraComplexTestReverseStringWithTags() {
|
||||
String input = "<gold>This <red>is</red> longer<green> <name> <red>Hello <b>how</b> are</red> you <test> <blue>doing <name> today</blue><gold>?</gold></green></gold>";
|
||||
MiniMessage miniMessage = MiniMessage.miniMessage();
|
||||
Component deserialize = miniMessage.deserialize(input, TagResolver.resolver(
|
||||
Placeholder.component("name", miniMessage.deserialize("<red>Cool<blue><rainbow>_player_</rainbow>name</red>")),
|
||||
Placeholder.parsed("test", "test replacement")
|
||||
));
|
||||
ModifiableString modifiableString = new ModifiableString(deserialize);
|
||||
String expectedOutput = new StringBuilder(PlainTextComponentSerializer.plainText().serialize(deserialize)).reverse().toString();
|
||||
modifiableString.reverse();
|
||||
System.out.println(expectedOutput);
|
||||
assertEquals(expectedOutput, modifiableString.string());
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -29,6 +29,7 @@ import org.bukkit.event.EventPriority;
|
|||
import org.bukkit.event.Listener;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.time.*;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
import java.util.regex.Pattern;
|
||||
|
|
@ -107,7 +108,14 @@ public class ChatListener implements Listener {
|
|||
|
||||
Set<Player> playersToPing = new HashSet<>();
|
||||
pingPlayers(playersToPing, modifiableString, player);
|
||||
|
||||
LocalDate now = LocalDate.now();
|
||||
if (now.getMonth().equals(Month.APRIL) && now.getDayOfMonth() == 1) {
|
||||
if (modifiableString.string().startsWith(Config.APRIL_FOOLS_RESET + " ")) {
|
||||
modifiableString.removeStringAtStart(Config.APRIL_FOOLS_RESET + " ");
|
||||
} else {
|
||||
modifiableString.reverse();
|
||||
}
|
||||
}
|
||||
input = render(player, modifiableString.component());
|
||||
for (Player receiver : receivers) {
|
||||
receiver.sendMessage(input);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user