/
PaperAdvancedTextImpl.java
120 lines (102 loc) · 4.21 KB
/
PaperAdvancedTextImpl.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
package com.denizenscript.denizen.paper.utilities;
import com.denizenscript.denizen.nms.NMSHandler;
import com.denizenscript.denizen.paper.PaperModule;
import com.denizenscript.denizen.utilities.AdvancedTextImpl;
import com.denizenscript.denizencore.utilities.CoreUtilities;
import net.kyori.adventure.text.Component;
import net.md_5.bungee.api.ChatColor;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.Nameable;
import org.bukkit.block.Sign;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.InventoryType;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.InventoryHolder;
import java.util.ArrayList;
import java.util.List;
public class PaperAdvancedTextImpl extends AdvancedTextImpl {
@Override
public Inventory createInventory(InventoryHolder holder, int slots, String title) {
return Bukkit.getServer().createInventory(holder, slots, PaperModule.parseFormattedText(title, ChatColor.BLACK));
}
@Override
public Inventory createInventory(InventoryHolder holder, InventoryType type, String title) {
return Bukkit.getServer().createInventory(holder, type, PaperModule.parseFormattedText(title, ChatColor.BLACK));
}
@Override
public String parseComponent(Object input, ChatColor baseColor) {
if (input == null) {
return null;
}
if (input instanceof Component) {
return PaperModule.stringifyComponent((Component) input, baseColor);
}
return super.parseComponent(input, baseColor);
}
@Override
public String getTitle(Inventory inventory) {
// TODO: Paper lacks an inventory.getTitle? 0.o
return NMSHandler.instance.getTitle(inventory);
}
@Override
public void setCustomName(Entity entity, String name) {
entity.customName(PaperModule.parseFormattedText(name, ChatColor.WHITE));
}
@Override
public String getCustomName(Entity entity) {
return PaperModule.stringifyComponent(entity.customName(), ChatColor.WHITE);
}
@Override
public void setPlayerListName(Player player, String name) {
player.playerListName(PaperModule.parseFormattedText(name, ChatColor.WHITE));
}
@Override
public String getPlayerListName(Player player) {
return PaperModule.stringifyComponent(player.playerListName(), ChatColor.WHITE);
}
@Override
public String[] getSignLines(Sign sign) {
String[] output = new String[4];
int i = 0;
for (Component component : sign.lines()) {
output[i++] = PaperModule.stringifyComponent(component, ChatColor.BLACK);
}
return output;
}
@Override
public void setSignLine(Sign sign, int line, String text) {
sign.line(line, PaperModule.parseFormattedText(text == null ? "" : text, ChatColor.BLACK));
}
@Override
public void sendResourcePack(Player player, String url, String hash, boolean forced, String prompt) {
if (prompt == null && !forced) {
super.sendResourcePack(player, url, hash, false, null);
}
else {
player.setResourcePack(url, CoreUtilities.toLowerCase(hash), forced, PaperModule.parseFormattedText(prompt, ChatColor.WHITE));
}
}
@Override
public void sendSignUpdate(Player player, Location loc, String[] text) {
List<Component> components = new ArrayList<>();
for (String line : text) {
components.add(PaperModule.parseFormattedText(line, ChatColor.BLACK));
}
player.sendSignChange(loc, components);
}
@Override
public String getCustomName(Nameable object) {
return PaperModule.stringifyComponent(object.customName(), ChatColor.BLACK);
}
@Override
public void setCustomName(Nameable object, String name) {
object.customName(PaperModule.parseFormattedText(name, ChatColor.BLACK));
}
@Override
public void sendConsoleMessage(CommandSender sender, String text) {
sender.sendMessage(PaperModule.parseFormattedText(text, ChatColor.WHITE));
}
}