22
33import net .minecraft .server .v1_7_R4 .ChatSerializer ;
44import net .minecraft .server .v1_7_R4 .IChatBaseComponent ;
5+ import org .bukkit .Bukkit ;
56import org .bukkit .ChatColor ;
67import org .bukkit .Server ;
8+ import org .bukkit .command .Command ;
9+ import org .bukkit .command .CommandSender ;
710import org .bukkit .command .ConsoleCommandSender ;
811import org .bukkit .craftbukkit .v1_7_R4 .entity .CraftPlayer ;
912import org .bukkit .entity .Player ;
1316
1417public class TitleAPI extends JavaPlugin {
1518
16- public static void sendFullTitle (Player player , Integer fadeIn , Integer stay , Integer fadeOut , String title , String subtitle ) {
19+ public static void sendTitle (Player player , Integer fadeIn , Integer stay , Integer fadeOut , String title , String subtitle ) {
1720 CraftPlayer craftPlayer = (CraftPlayer ) player ;
1821 if (craftPlayer .getHandle ().playerConnection .networkManager .getVersion () != 47 )
1922 return ; // If using 1.8, allow method to run
2023
24+ if (title == null ) title = "" ;
2125 title = ChatColor .translateAlternateColorCodes ('&' , title );
26+
27+ if (subtitle == null ) subtitle = "" ;
2228 subtitle = ChatColor .translateAlternateColorCodes ('&' , subtitle );
2329
2430 IChatBaseComponent title2 ;
@@ -35,34 +41,65 @@ public static void sendFullTitle(Player player, Integer fadeIn, Integer stay, In
3541 craftPlayer .getHandle ().playerConnection .sendPacket (new ProtocolInjector .PacketTitle (ProtocolInjector .PacketTitle .Action .SUBTITLE , subtitle2 ));
3642 }
3743
38- public static void sendTitle (Player player , Integer fadeIn , Integer stay , Integer fadeOut , String title ) {
39- CraftPlayer craftPlayer = (CraftPlayer ) player ;
40- if (craftPlayer .getHandle ().playerConnection .networkManager .getVersion () != 47 )
41- return ; // If using 1.8, allow method to run
44+ @ Override
45+ public boolean onCommand (CommandSender sender , Command command , String string , String [] args ) {
46+ if (args .length < 6 ) {
47+ sender .sendMessage (ChatColor .RED + "Usage: /title <player> title|subtitle <fadeIn> <stay> <fadeOut> <text>" );
48+ sender .sendMessage (ChatColor .RED + "Note: fadeIn, stay &, fadeOut require to be a number, works in ticks; 20 = 1 second" );
49+ return false ;
50+ }
4251
43- title = ChatColor .translateAlternateColorCodes ('&' , title );
52+ if (Bukkit .getPlayer (args [0 ]) == null ) {
53+ sender .sendMessage (ChatColor .RED + "Player not found" );
54+ return false ;
55+ }
4456
45- IChatBaseComponent title2 ;
46- title2 = ChatSerializer .a (TextConverter .convert (title ));
57+ Player player = Bukkit .getPlayer (args [0 ]);
4758
48- craftPlayer . getHandle (). playerConnection . sendPacket ( new ProtocolInjector . PacketTitle ( ProtocolInjector . PacketTitle . Action . TIMES , fadeIn , stay , fadeOut ));
49- if ( title != null )
50- craftPlayer . getHandle (). playerConnection . sendPacket ( new ProtocolInjector . PacketTitle ( ProtocolInjector . PacketTitle . Action . TITLE , title2 )) ;
51- }
59+ if (! args [ 1 ]. equalsIgnoreCase ( "title" ) && ! args [ 1 ]. equalsIgnoreCase ( "subtitle" )) {
60+ sender . sendMessage ( ChatColor . RED + "Invalid argument: " + args [ 1 ]);
61+ return false ;
62+ }
5263
53- public static void sendSubtitle ( Player player , Integer fadeIn , Integer stay , Integer fadeOut , String subtitle ) {
54- CraftPlayer craftPlayer = ( CraftPlayer ) player ;
55- if ( craftPlayer . getHandle (). playerConnection . networkManager . getVersion () != 47 )
56- return ; // If using 1.8, allow method to run
64+ if (! isInteger ( args [ 2 ]) ) {
65+ sender . sendMessage ( ChatColor . RED + "Not a number: " + args [ 2 ]) ;
66+ return false ;
67+ }
5768
58- subtitle = ChatColor .translateAlternateColorCodes ('&' , subtitle );
69+ if (!isInteger (args [3 ])) {
70+ sender .sendMessage (ChatColor .RED + "Not a number: " + args [3 ]);
71+ return false ;
72+ }
5973
60- IChatBaseComponent subtitle2 ;
61- subtitle2 = ChatSerializer .a (TextConverter .convert (subtitle ));
74+ if (!isInteger (args [4 ])) {
75+ sender .sendMessage (ChatColor .RED + "Not a number: " + args [4 ]);
76+ return false ;
77+ }
6278
63- craftPlayer .getHandle ().playerConnection .sendPacket (new ProtocolInjector .PacketTitle (ProtocolInjector .PacketTitle .Action .TIMES , fadeIn , stay , fadeOut ));
64- if (subtitle != null )
65- craftPlayer .getHandle ().playerConnection .sendPacket (new ProtocolInjector .PacketTitle (ProtocolInjector .PacketTitle .Action .SUBTITLE , subtitle2 ));
79+ StringBuilder builder = new StringBuilder ();
80+ for (String value : args ) {
81+ builder .append (value ).append (" " );
82+ }
83+ String message = builder .toString ();
84+ message = message .replace (args [0 ] + " " , "" );
85+ message = message .replace (args [1 ] + " " , "" );
86+ message = message .replace (args [2 ] + " " , "" );
87+ message = message .replace (args [3 ] + " " , "" );
88+ message = message .replace (args [4 ] + " " , "" );
89+
90+ if (args [1 ].equalsIgnoreCase ("title" )) {
91+ sendTitle (player , Integer .parseInt (args [2 ]), Integer .parseInt (args [3 ]), Integer .parseInt (args [4 ]), message , null );
92+ sender .sendMessage (ChatColor .GREEN + "Title sent" );
93+ return true ;
94+ }
95+
96+ if (args [1 ].equalsIgnoreCase ("subtitle" )) {
97+ sendTitle (player , Integer .parseInt (args [2 ]), Integer .parseInt (args [3 ]), Integer .parseInt (args [4 ]), null , message );
98+ sender .sendMessage (ChatColor .GREEN + "Title sent" );
99+ return true ;
100+ }
101+
102+ return false ;
66103 }
67104
68105 public void onEnable () {
0 commit comments