22
33import io .netty .buffer .Unpooled ;
44import net .minecraft .client .entity .EntityPlayerSP ;
5+ import net .minecraft .client .resources .I18n ;
56import net .minecraft .command .CommandException ;
67import net .minecraft .command .ICommandSender ;
78import net .minecraft .command .WrongUsageException ;
1516import net .minecraft .util .math .BlockPos ;
1617import net .minecraft .util .text .TextComponentString ;
1718import net .minecraft .util .text .TextComponentTranslation ;
19+ import net .minecraft .util .text .TextFormatting ;
1820
1921import javax .annotation .Nullable ;
2022import java .util .ArrayList ;
@@ -36,14 +38,16 @@ public String getUsage(ICommandSender sender) {
3638 return "commands.cbook.usage" ;
3739 }
3840
39- @ Override
4041 public void execute (MinecraftServer server , ICommandSender sender , String [] args ) throws CommandException {
4142 if (args .length == 0 )
4243 throw new WrongUsageException (getUsage (sender ));
4344
4445 if (!(sender instanceof EntityPlayerSP ))
4546 throw new CommandException ("commands.cbook.noPlayer" );
4647
48+ int limit = args .length > 1 ? parseInt (args [1 ], 1 , 50 ) : 50 ;
49+ Random rand = args .length > 2 ? new Random (parseLong (args [2 ])) : new Random ();
50+
4751 EntityPlayerSP player = (EntityPlayerSP ) sender ;
4852 ItemStack heldItem = player .getHeldItemMainhand ();
4953 if (heldItem .getItem () != Items .WRITABLE_BOOK ) {
@@ -57,7 +61,7 @@ public void execute(MinecraftServer server, ICommandSender sender, String[] args
5761 characterGenerator = IntStream .generate (() -> 0x10ffff );
5862 break ;
5963 case "random" :
60- characterGenerator = new Random () .ints (0x80 , 0x10ffff - 0x800 ).map (i -> i < 0xd800 ? i : i + 0x800 );
64+ characterGenerator = rand .ints (0x80 , 0x10ffff - 0x800 ).map (i -> i < 0xd800 ? i : i + 0x800 );
6165 break ;
6266 default :
6367 throw new CommandException (getUsage (sender ));
@@ -66,7 +70,8 @@ public void execute(MinecraftServer server, ICommandSender sender, String[] args
6670 String joinedPages = characterGenerator .limit (50 * 210 ).mapToObj (i -> String .valueOf ((char ) i )).collect (Collectors .joining ());
6771
6872 NBTTagList pages = new NBTTagList ();
69- for (int page = 0 ; page < 50 ; page ++) {
73+
74+ for (int page = 0 ; page < limit ; page ++) {
7075 pages .appendTag (new NBTTagString (joinedPages .substring (page * 210 , (page + 1 ) * 210 )));
7176 }
7277
@@ -81,15 +86,4 @@ public void execute(MinecraftServer server, ICommandSender sender, String[] args
8186
8287 sender .sendMessage (new TextComponentTranslation ("commands.cbook.success" ));
8388 }
84-
85- @ Override
86- public List <String > getTabCompletions (MinecraftServer server , ICommandSender sender , String [] args , @ Nullable BlockPos targetPos ) {
87- if (args .length == 0 ) {
88- return Collections .emptyList ();
89- }
90- if (args .length == 1 ) {
91- return getListOfStringsMatchingLastWord (args , "fill" , "random" );
92- }
93- return Collections .emptyList ();
94- }
9589}
0 commit comments