66import com .mojang .brigadier .arguments .IntegerArgumentType ;
77import com .mojang .brigadier .builder .LiteralArgumentBuilder ;
88import com .mojang .brigadier .builder .RequiredArgumentBuilder ;
9+ import com .mojang .brigadier .suggestion .SuggestionProvider ;
10+ import com .mojang .brigadier .tree .ArgumentCommandNode ;
11+ import com .mojang .brigadier .tree .CommandNode ;
912import com .mojang .brigadier .tree .RootCommandNode ;
1013import eu .pb4 .mapcanvas .api .core .CanvasColor ;
1114import eu .pb4 .mapcanvas .api .core .CanvasImage ;
1215import eu .pb4 .mapcanvas .api .font .DefaultFonts ;
1316import eu .pb4 .mapcanvas .api .utils .CanvasUtils ;
17+ import net .minecraft .command .suggestion .SuggestionProviders ;
1418import net .minecraft .network .packet .s2c .play .CommandTreeS2CPacket ;
19+ import net .minecraft .server .command .ServerCommandSource ;
1520import net .minecraft .server .network .ServerPlayerEntity ;
1621import net .minecraft .text .Text ;
22+ import net .minecraft .util .Identifier ;
1723import net .minecraft .util .math .MathHelper ;
24+ import org .jetbrains .annotations .Nullable ;
1825import space .essem .image2map .Image2Map ;
1926import space .essem .image2map .renderer .MapRenderer ;
2027
@@ -44,7 +51,24 @@ public PreviewGui(ServerPlayerEntity player, BufferedImage image, String source,
4451 this .source = source ;
4552 this .sourceImage = image ;
4653
47- player .networkHandler .sendPacket (new CommandTreeS2CPacket ((RootCommandNode ) COMMANDS .getRoot ()));
54+ player .networkHandler .sendPacket (new CommandTreeS2CPacket (COMMANDS .getRoot (), new CommandTreeS2CPacket .CommandNodeInspector <>() {
55+ @ Nullable
56+ @ Override
57+ public Identifier getSuggestionProviderId (ArgumentCommandNode <PreviewGui , ?> node ) {
58+ var suggestionProvider = node .getCustomSuggestions ();
59+ return suggestionProvider != null ? SuggestionProviders .computeId (suggestionProvider ) : null ;
60+ }
61+
62+ @ Override
63+ public boolean isExecutable (CommandNode <PreviewGui > node ) {
64+ return node .getCommand () != null ;
65+ }
66+
67+ @ Override
68+ public boolean hasRequiredLevel (CommandNode <PreviewGui > node ) {
69+ return false ;
70+ }
71+ }));
4872
4973 this .updateImage ();
5074
@@ -186,7 +210,7 @@ private static <T> RequiredArgumentBuilder<PreviewGui, T> argument(String name,
186210 if (x .getSource ().imageProcessing == null ) {
187211 x .getSource ().drawLoading ();
188212 Image2Map .giveToPlayer (x .getSource ().player ,
189- MapRenderer .toVanillaItems (x .getSource ().image , x .getSource ().player .getServerWorld (), x .getSource ().source ),
213+ MapRenderer .toVanillaItems (x .getSource ().image , x .getSource ().player .getWorld (), x .getSource ().source ),
190214 x .getSource ().source , x .getSource ().width , x .getSource ().height );
191215
192216 x .getSource ().close ();
@@ -198,6 +222,11 @@ private static <T> RequiredArgumentBuilder<PreviewGui, T> argument(String name,
198222
199223 COMMANDS .register (literal ("size" )
200224 .then (argument ("width" , IntegerArgumentType .integer (1 ))
225+ .executes (x -> {
226+ var w = IntegerArgumentType .getInteger (x , "width" );
227+ x .getSource ().setSize (w , x .getSource ().sourceImage .getHeight () * w / x .getSource ().sourceImage .getWidth ());
228+ return 0 ;
229+ })
201230 .then (argument ("height" , IntegerArgumentType .integer (1 )).executes (x -> {
202231 x .getSource ().setSize (IntegerArgumentType .getInteger (x , "width" ), IntegerArgumentType .getInteger (x , "height" ));
203232 return 0 ;
0 commit comments