Allow PlotTitle to have a "null" mode (default plot title flag should be the configured values)

This commit is contained in:
dordsor21 2021-08-22 15:55:09 +01:00
parent 8a53b41b52
commit 4b26a7e300
No known key found for this signature in database
GPG Key ID: 1E53E88969FFCF0B
3 changed files with 54 additions and 46 deletions

View File

@ -35,7 +35,6 @@ import com.plotsquared.core.events.PlotFlagRemoveEvent;
import com.plotsquared.core.events.Result; import com.plotsquared.core.events.Result;
import com.plotsquared.core.location.Location; import com.plotsquared.core.location.Location;
import com.plotsquared.core.permissions.Permission; import com.plotsquared.core.permissions.Permission;
import com.plotsquared.core.player.ConsolePlayer;
import com.plotsquared.core.player.MetaDataAccess; import com.plotsquared.core.player.MetaDataAccess;
import com.plotsquared.core.player.PlayerMetaDataKeys; import com.plotsquared.core.player.PlayerMetaDataKeys;
import com.plotsquared.core.player.PlotPlayer; import com.plotsquared.core.player.PlotPlayer;
@ -297,60 +296,59 @@ public class PlotListener {
String subtitle; String subtitle;
PlotTitle titleFlag = plot.getFlag(PlotTitleFlag.class); PlotTitle titleFlag = plot.getFlag(PlotTitleFlag.class);
boolean fromFlag; boolean fromFlag;
if (!titleFlag.title().isEmpty() && !titleFlag.subtitle().isEmpty()) { if (titleFlag.title() != null && titleFlag.subtitle() != null) {
title = titleFlag.title(); title = titleFlag.title();
subtitle = titleFlag.subtitle(); subtitle = titleFlag.subtitle();
fromFlag = true; fromFlag = true;
} else { } else {
title = TranslatableCaption.of("titles.title_entered_plot").getComponent(ConsolePlayer.getConsole()); title = "";
subtitle = TranslatableCaption.of("titles.title_entered_plot_sub").getComponent(ConsolePlayer.getConsole()); subtitle = "";
fromFlag = false; fromFlag = false;
} }
if (!title.isEmpty() && !subtitle.isEmpty()) { // It's not actually possible for these to be null, but IntelliJ is dumb
TaskManager.runTaskLaterAsync(() -> { TaskManager.runTaskLaterAsync(() -> {
Plot lastPlot; Plot lastPlot;
try (final MetaDataAccess<Plot> lastPlotAccess = try (final MetaDataAccess<Plot> lastPlotAccess =
player.accessTemporaryMetaData(PlayerMetaDataKeys.TEMPORARY_LAST_PLOT)) { player.accessTemporaryMetaData(PlayerMetaDataKeys.TEMPORARY_LAST_PLOT)) {
lastPlot = lastPlotAccess.get().orElse(null); lastPlot = lastPlotAccess.get().orElse(null);
} }
if ((lastPlot != null) && plot.getId().equals(lastPlot.getId()) && plot.hasOwner()) { if ((lastPlot != null) && plot.getId().equals(lastPlot.getId()) && plot.hasOwner()) {
final UUID plotOwner = plot.getOwnerAbs(); final UUID plotOwner = plot.getOwnerAbs();
String owner = PlayerManager.getName(plotOwner, false); String owner = PlayerManager.getName(plotOwner, false);
Caption header = fromFlag ? StaticCaption.of(title) : TranslatableCaption.of("titles" + Caption header = fromFlag ? StaticCaption.of(title) : TranslatableCaption.of("titles" +
".title_entered_plot"); ".title_entered_plot");
Caption subHeader = fromFlag ? StaticCaption.of(subtitle) : TranslatableCaption.of("titles" + Caption subHeader = fromFlag ? StaticCaption.of(subtitle) : TranslatableCaption.of("titles" +
".title_entered_plot_sub"); ".title_entered_plot_sub");
Template plotTemplate = Template.of("plot", lastPlot.getId().toString()); Template plotTemplate = Template.of("plot", lastPlot.getId().toString());
Template worldTemplate = Template.of("world", player.getLocation().getWorldName()); Template worldTemplate = Template.of("world", player.getLocation().getWorldName());
Template ownerTemplate = Template.of("owner", owner); Template ownerTemplate = Template.of("owner", owner);
final Consumer<String> userConsumer = user -> { final Consumer<String> userConsumer = user -> {
if (Settings.Titles.TITLES_AS_ACTIONBAR) { if (Settings.Titles.TITLES_AS_ACTIONBAR) {
player.sendActionBar(header, plotTemplate, worldTemplate, ownerTemplate); player.sendActionBar(header, plotTemplate, worldTemplate, ownerTemplate);
} else {
player.sendTitle(header, subHeader, plotTemplate, worldTemplate, ownerTemplate);
}
};
UUID uuid = plot.getOwner();
if (uuid == null) {
userConsumer.accept("Unknown");
} else if (uuid.equals(DBFunc.SERVER)) {
userConsumer.accept(MINI_MESSAGE.stripTokens(TranslatableCaption
.of("info.server")
.getComponent(player)));
} else { } else {
PlotSquared.get().getImpromptuUUIDPipeline().getSingle(plot.getOwner(), (user, throwable) -> { player.sendTitle(header, subHeader, plotTemplate, worldTemplate, ownerTemplate);
if (throwable != null) {
userConsumer.accept("Unknown");
} else {
userConsumer.accept(user);
}
});
} }
};
UUID uuid = plot.getOwner();
if (uuid == null) {
userConsumer.accept("Unknown");
} else if (uuid.equals(DBFunc.SERVER)) {
userConsumer.accept(MINI_MESSAGE.stripTokens(TranslatableCaption
.of("info.server")
.getComponent(player)));
} else {
PlotSquared.get().getImpromptuUUIDPipeline().getSingle(plot.getOwner(), (user, throwable) -> {
if (throwable != null) {
userConsumer.accept("Unknown");
} else {
userConsumer.accept(user);
}
});
} }
}, TaskTime.seconds(1L)); }
} }, TaskTime.seconds(1L));
} }
TimedFlag.Timed<Integer> feed = plot.getFlag(FeedFlag.class); TimedFlag.Timed<Integer> feed = plot.getFlag(FeedFlag.class);

View File

@ -25,13 +25,21 @@
*/ */
package com.plotsquared.core.plot; package com.plotsquared.core.plot;
import javax.annotation.Nullable;
import java.util.Objects; import java.util.Objects;
public class PlotTitle { public class PlotTitle {
public static final PlotTitle CONFIGURED = new PlotTitle();
private final String title; private final String title;
private final String subtitle; private final String subtitle;
private PlotTitle() {
title = null;
subtitle = null;
}
public PlotTitle(String title, String subtitle) { public PlotTitle(String title, String subtitle) {
Objects.requireNonNull(title); Objects.requireNonNull(title);
Objects.requireNonNull(subtitle); Objects.requireNonNull(subtitle);
@ -39,10 +47,12 @@ public class PlotTitle {
this.subtitle = subtitle; this.subtitle = subtitle;
} }
@Nullable
public String title() { public String title() {
return title; return title;
} }
@Nullable
public String subtitle() { public String subtitle() {
return subtitle; return subtitle;
} }

View File

@ -33,7 +33,7 @@ import org.checkerframework.checker.nullness.qual.NonNull;
public class PlotTitleFlag extends PlotFlag<PlotTitle, PlotTitleFlag> { public class PlotTitleFlag extends PlotFlag<PlotTitle, PlotTitleFlag> {
public static final PlotTitleFlag TITLE_FLAG_EMPTY = new PlotTitleFlag(new PlotTitle("", "")); public static final PlotTitleFlag TITLE_FLAG_EMPTY = new PlotTitleFlag(PlotTitle.CONFIGURED);
/** /**
* Construct a new flag instance. * Construct a new flag instance.