Compare commits

..

1 Commits

Author SHA1 Message Date
ac5cb8d445 fix: allow all characters in plot-title flag 2022-10-08 21:55:35 +02:00
4 changed files with 14 additions and 9 deletions

View File

@ -866,8 +866,10 @@ public final class BukkitPlatform extends JavaPlugin implements Listener, PlotPl
com.plotsquared.core.location.Location pLoc = BukkitUtil.adapt(entity.getLocation());
PlotArea area = pLoc.getPlotArea();
if (area != null) {
Plot currentPlot = area.getPlotAbs(pLoc);
if (currentPlot == null || !originalPlotId.equals(currentPlot.getId())) {
PlotId currentPlotId = area.getPlotAbs(pLoc).getId();
if (!originalPlotId.equals(currentPlotId) && (currentPlotId == null || !area.getPlot(
originalPlotId)
.equals(area.getPlot(currentPlotId)))) {
if (entity.hasMetadata("ps-tmp-teleport")) {
continue;
}
@ -881,11 +883,11 @@ public final class BukkitPlatform extends JavaPlugin implements Listener, PlotPl
com.plotsquared.core.location.Location pLoc = BukkitUtil.adapt(entity.getLocation());
PlotArea area = pLoc.getPlotArea();
if (area != null) {
Plot currentPlot = area.getPlotAbs(pLoc);
if (currentPlot != null) {
PlotId currentPlotId = area.getPlotAbs(pLoc).getId();
if (currentPlotId != null) {
entity.setMetadata(
"shulkerPlot",
new FixedMetadataValue((Plugin) PlotSquared.platform(), currentPlot.getId())
new FixedMetadataValue((Plugin) PlotSquared.platform(), currentPlotId)
);
}
}

View File

@ -36,7 +36,8 @@ import java.util.regex.Pattern;
public class StringMan {
private static final Pattern STRING_SPLIT_PATTERN = Pattern.compile("(?<quoted>\"[\\w ]+\")|(?<single>\\w+)");
// Stolen from https://stackoverflow.com/a/366532/12620913 | Debug: https://regex101.com/r/DudJLb/1
private static final Pattern STRING_SPLIT_PATTERN = Pattern.compile("[^\\s\"]+|\"([^\"]*)\"");
public static String replaceFromMap(String string, Map<String, String> replacements) {
StringBuilder sb = new StringBuilder(string);
@ -355,7 +356,7 @@ public class StringMan {
var matcher = StringMan.STRING_SPLIT_PATTERN.matcher(message);
List<String> splitMessages = new ArrayList<>();
while (matcher.find()) {
splitMessages.add(matcher.group(0).replaceAll("\"", ""));
splitMessages.add(matcher.group(matcher.groupCount() - 1).replaceAll("\"", ""));
}
return splitMessages;
}

View File

@ -101,7 +101,7 @@ public class FlagTest {
public void shouldSuccessfullyParseTitleFlagWithTitleEmptyAndSubTitleSingleWord() {
Assertions.assertDoesNotThrow(() -> {
var title = PlotTitleFlag.TITLE_FLAG_DEFAULT.parse("\"\" \"single\"").getValue();
Assertions.assertEquals(" ", title.title());
Assertions.assertEquals("", title.title());
Assertions.assertEquals("single", title.subtitle());
}, "Should not throw a FlagParseException");
}

View File

@ -32,7 +32,9 @@ public class StringManTest {
new Message("title", List.of("title")),
new Message("title \"sub title\"", List.of("title", "sub title")),
new Message("\"a title\" subtitle", List.of("a title", "subtitle")),
new Message("\"title\" \"subtitle\"", List.of("title", "subtitle"))
new Message("\"title\" \"subtitle\"", List.of("title", "subtitle")),
new Message("\"How <bold>bold</bold> of you\" \"to assume I like <rainbow>rainbows</rainbow>\"",
List.of("How <bold>bold</bold> of you", "to assume I like <rainbow>rainbows</rainbow>"))
);
for (Message message : messages) {