feat: 完善 DisplayMessage 功能

This commit is contained in:
2022-10-29 06:13:58 +08:00
parent f2da19c60c
commit 2f891e71a9
2 changed files with 55 additions and 15 deletions

View File

@@ -59,12 +59,21 @@ public enum CoreMessage {
} }
@SuppressWarnings("unused") @SuppressWarnings("unused")
public void show(CommandSender sender, TextReplacementConfig config) { public void show(CommandSender sender, TextReplacementConfig replacement) {
if (message == null) { if (message == null) {
sender.sendMessage(name()); sender.sendMessage(name());
} }
Audience audience = CoreBukkitAPI.getInstance().getAudienceProvider().sender(sender); Audience audience = CoreBukkitAPI.getInstance().getAudienceProvider().sender(sender);
message.show(audience, config); message.show(audience, replacement);
}
@SuppressWarnings("unused")
public void show(CommandSender sender, TextReplacementConfig... replacement) {
if (message == null) {
sender.sendMessage(name());
}
Audience audience = CoreBukkitAPI.getInstance().getAudienceProvider().sender(sender);
message.show(audience, replacement);
} }
@SuppressWarnings("unused") @SuppressWarnings("unused")

View File

@@ -81,15 +81,15 @@ public class DisplayMessage {
public void show(@NotNull Audience audience, @NotNull TextReplacementConfig replacement) { public void show(@NotNull Audience audience, @NotNull TextReplacementConfig replacement) {
if (message != null) { if (message != null) {
audience.sendMessage(message.compact().replaceText(replacement)); audience.sendMessage(message.replaceText(replacement).compact());
} }
if (actionbar != null) { if (actionbar != null) {
audience.sendActionBar(actionbar.replaceText(replacement)); audience.sendActionBar(actionbar.replaceText(replacement).compact());
} }
if (title != null) { if (title != null) {
audience.showTitle(Title.title( audience.showTitle(Title.title(
title.title().replaceText(replacement), title.title().replaceText(replacement).compact(),
title.subtitle().replaceText(replacement), title.subtitle().replaceText(replacement).compact(),
title.times() title.times()
)); ));
} }
@@ -98,13 +98,44 @@ public class DisplayMessage {
} }
} }
public void show(@NotNull Audience audience, @NotNull TextReplacementConfig... replacements) {
if (message != null) {
Component replacedMessage = message;
for (TextReplacementConfig replacement : replacements) {
replacedMessage = replacedMessage.replaceText(replacement);
}
audience.sendMessage(replacedMessage.compact());
}
if (actionbar != null) {
Component replacedActionBar = actionbar;
for (TextReplacementConfig replacement : replacements) {
replacedActionBar = replacedActionBar.replaceText(replacement);
}
audience.sendActionBar(replacedActionBar.compact());
}
if (title != null) {
Title replacedTitle = title;
for (TextReplacementConfig replacement : replacements) {
replacedTitle = Title.title(
title.title().replaceText(replacement).compact(),
title.subtitle().replaceText(replacement).compact(),
title.times()
);
}
audience.showTitle(replacedTitle);
}
if (sound != null) {
audience.playSound(sound);
}
}
public JsonObject saveToJson() { public JsonObject saveToJson() {
JsonObject object = new JsonObject(); JsonObject object = new JsonObject();
if (message != null) { if (message != null) {
object.add("message", GsonComponentSerializer.gson().serializeToTree(message.compact())); object.add("message", GsonComponentSerializer.gson().serializeToTree(message));
} }
if (actionbar != null) { if (actionbar != null) {
object.add("actionbar", GsonComponentSerializer.gson().serializeToTree(actionbar.compact())); object.add("actionbar", GsonComponentSerializer.gson().serializeToTree(actionbar));
} }
if (title != null) { if (title != null) {
object.add("title", SerializeUtils.serializeTitle(title)); object.add("title", SerializeUtils.serializeTitle(title));
@@ -123,7 +154,7 @@ public class DisplayMessage {
@NotNull @NotNull
public DisplayMessage setMessage(@NotNull Component message) { public DisplayMessage setMessage(@NotNull Component message) {
this.message = message; this.message = message.compact();
return this; return this;
} }
@@ -135,7 +166,7 @@ public class DisplayMessage {
@NotNull @NotNull
public DisplayMessage setActionBar(@NotNull Component message) { public DisplayMessage setActionBar(@NotNull Component message) {
this.actionbar = message; this.actionbar = message.compact();
return this; return this;
} }
@@ -161,15 +192,15 @@ public class DisplayMessage {
@NotNull @NotNull
public DisplayMessage setTitle(@NotNull Component title, @NotNull Component subtitle) { public DisplayMessage setTitle(@NotNull Component title, @NotNull Component subtitle) {
this.title = Title.title(title, subtitle); this.title = Title.title(title.compact(), subtitle.compact());
return this; return this;
} }
@NotNull @NotNull
public DisplayMessage setTitle(@NotNull Component title, @NotNull Component subtitle, int fadeIn, int stay, int fadeOut) { public DisplayMessage setTitle(@NotNull Component title, @NotNull Component subtitle, int fadeIn, int stay, int fadeOut) {
this.title = Title.title( this.title = Title.title(
title, title.compact(),
subtitle, subtitle.compact(),
Title.Times.times( Title.Times.times(
Ticks.duration(fadeIn), Ticks.duration(fadeIn),
Ticks.duration(stay), Ticks.duration(stay),
@@ -235,10 +266,10 @@ public class DisplayMessage {
} }
JsonObject object = element.getAsJsonObject(); JsonObject object = element.getAsJsonObject();
if (object.has("message")) { if (object.has("message")) {
message = GsonComponentSerializer.gson().deserializeFromTree(object.get("message")); message = GsonComponentSerializer.gson().deserializeFromTree(object.get("message")).compact();
} }
if (object.has("actionbar")) { if (object.has("actionbar")) {
actionbar = GsonComponentSerializer.gson().deserializeFromTree(object.get("actionbar")); actionbar = GsonComponentSerializer.gson().deserializeFromTree(object.get("actionbar")).compact();
} }
if (object.has("title")) { if (object.has("title")) {
title = SerializeUtils.deserializeTitle(object.getAsJsonObject("title")); title = SerializeUtils.deserializeTitle(object.getAsJsonObject("title"));