1010import net .md_5 .bungee .api .ChatColor ;
1111import net .md_5 .bungee .api .chat .BaseComponent ;
1212import net .md_5 .bungee .api .chat .ItemTag ;
13+ import net .md_5 .bungee .api .chat .TextComponent ;
1314import net .md_5 .bungee .api .chat .hover .content .Entity ;
1415import net .md_5 .bungee .api .chat .hover .content .Item ;
1516import net .md_5 .bungee .api .chat .hover .content .Text ;
1617
17- import java .awt .* ;
18+ import java .awt .Color ;
1819import java .util .UUID ;
1920import java .util .function .BiConsumer ;
2021
22+ import static top .mrxiaom .pluginbase .utils .adventure .serializer .BungeeComponentSerializer .isModernHover ;
23+
2124@ SuppressWarnings ({"deprecation" })
2225public enum Styles {
2326 FONT ((bc , c ) -> {
@@ -112,7 +115,8 @@ public enum Styles {
112115 HoverEvent <?> event = c .hoverEvent ();
113116 if (event != null ) {
114117 HoverEvent .Action <?> action = event .action ();
115- try {
118+ if (isModernHover ) {
119+ // 1.13+ 支持自定义 Content
116120 if (action .equals (HoverEvent .Action .SHOW_TEXT )) {
117121 Component value = (Component ) event .value ();
118122 Text text = new Text (BungeeComponentSerializer .serialize (value ));
@@ -132,11 +136,21 @@ public enum Styles {
132136 Item item = new Item (type , count , ItemTag .ofNbt (nbt ));
133137 bc .setHoverEvent (new net .md_5 .bungee .api .chat .HoverEvent (net .md_5 .bungee .api .chat .HoverEvent .Action .SHOW_ITEM , item ));
134138 }
135- } catch (Throwable ignored ) {
139+ } else {
140+ // 1.12 及以下只能使用 BaseComponent[] 作为值
136141 if (action .equals (HoverEvent .Action .SHOW_TEXT ) && event .value () instanceof Component ) {
137142 BaseComponent [] components = new BaseComponent [] { BungeeComponentSerializer .serialize ((Component ) event .value ()) };
138143 bc .setHoverEvent (new net .md_5 .bungee .api .chat .HoverEvent (net .md_5 .bungee .api .chat .HoverEvent .Action .SHOW_TEXT , components ));
139144 }
145+ if (action .equals (HoverEvent .Action .SHOW_ITEM ) && event .value () instanceof HoverEvent .ShowItem ) {
146+ HoverEvent .ShowItem showItem = (HoverEvent .ShowItem ) event .value ();
147+ String tag = showItem .nbt () == null ? "{}" : showItem .nbt ().string ();
148+ String id = showItem .item ().asString ();
149+ int count = showItem .count ();
150+ String nbt = "{id:\" " + id + "\" ,Count:" + count + "b,tag:" + tag + "}" ;
151+ BaseComponent [] components = new TextComponent [] { new TextComponent (nbt ) };
152+ bc .setHoverEvent (new net .md_5 .bungee .api .chat .HoverEvent (net .md_5 .bungee .api .chat .HoverEvent .Action .SHOW_ITEM , components ));
153+ }
140154 }
141155 }
142156 }),
0 commit comments