11package com .coflnet ;
22
3- import CoflCore .CoflCore ;
4- import CoflCore .classes .*;
5- import CoflCore .CoflSkyCommand ;
6- import CoflCore .commands .Command ;
7- import CoflCore .commands .CommandType ;
8- import CoflCore .commands .models .FlipData ;
9- import CoflCore .configuration .Config ;
10- import CoflCore .configuration .Configuration ;
11- import CoflCore .configuration .LocalConfig ;
12- import CoflCore .events .OnSettingsReceive ;
13- import CoflCore .handlers .DescriptionHandler ;
14- import CoflCore .handlers .EventRegistry ;
15- import CoflCore .network .QueryServerCommands ;
16- import CoflCore .network .WSClient ;
17- import com .mojang .brigadier .Message ;
18- import it .unimi .dsi .fastutil .objects .ObjectArrayList ;
3+ import java .io .ByteArrayOutputStream ;
4+ import java .io .IOException ;
5+ import java .lang .reflect .Field ;
6+ import java .nio .file .Path ;
7+ import java .util .ArrayList ;
8+ import java .util .Arrays ;
9+ import java .util .Base64 ;
10+ import java .util .Collections ;
11+ import java .util .List ;
12+
13+ import org .lwjgl .glfw .GLFW ;
1914
2015import com .coflnet .gui .RenderUtils ;
2116import com .coflnet .gui .cofl .CoflBinGUI ;
2419import com .google .gson .GsonBuilder ;
2520import com .google .gson .JsonElement ;
2621import com .google .gson .JsonObject ;
27- import com .mojang .authlib . minecraft . client . ObjectMapper ;
22+ import com .mojang .brigadier . Message ;
2823import com .mojang .brigadier .arguments .StringArgumentType ;
29- import com .mojang .serialization .DataResult ;
30- import com .mojang .serialization .JsonOps ;
24+
25+ import CoflCore .CoflCore ;
26+ import CoflCore .CoflSkyCommand ;
27+ import CoflCore .commands .Command ;
28+ import CoflCore .commands .CommandType ;
29+ import CoflCore .commands .RawCommand ;
30+ import CoflCore .commands .models .FlipData ;
31+ import CoflCore .handlers .DescriptionHandler ;
32+ import CoflCore .handlers .EventRegistry ;
33+ import it .unimi .dsi .fastutil .objects .ObjectArrayList ;
3134import net .fabricmc .api .ClientModInitializer ;
3235import net .fabricmc .fabric .api .client .command .v2 .ClientCommandManager ;
3336import net .fabricmc .fabric .api .client .command .v2 .ClientCommandRegistrationCallback ;
3639import net .fabricmc .fabric .api .client .item .v1 .ItemTooltipCallback ;
3740import net .fabricmc .fabric .api .client .keybinding .v1 .KeyBindingHelper ;
3841import net .fabricmc .fabric .api .client .message .v1 .ClientReceiveMessageEvents ;
39- import net .fabricmc .fabric .api .client .message .v1 .ClientSendMessageEvents ;
4042import net .fabricmc .fabric .api .client .networking .v1 .ClientPlayConnectionEvents ;
4143import net .fabricmc .fabric .api .client .rendering .v1 .HudRenderCallback ;
4244import net .fabricmc .fabric .api .client .screen .v1 .ScreenEvents ;
43- import net .fabricmc .fabric .api .client .screen .v1 .ScreenKeyboardEvents ;
44- import net .fabricmc .fabric .api .message .v1 .ServerMessageEvents ;
45- import net .fabricmc .fabric .api .networking .v1 .S2CPlayChannelEvents ;
4645import net .fabricmc .loader .api .FabricLoader ;
47- import net .minecraft .advancement .criterion .InventoryChangedCriterion ;
4846import net .minecraft .client .MinecraftClient ;
49- import net .minecraft .client .gui .hud .ChatHud ;
50- import net .minecraft .client .gui .hud .InGameHud ;
5147import net .minecraft .client .gui .screen .ChatScreen ;
52- import net .minecraft .client .gui .screen .Screen ;
5348import net .minecraft .client .gui .screen .ingame .GenericContainerScreen ;
5449import net .minecraft .client .gui .screen .ingame .HandledScreen ;
55- import net .minecraft .client .gui .screen .ingame .HandledScreens ;
56- import net .minecraft .client .gui .screen .ingame .InventoryScreen ;
57- import net .minecraft .client .gui .tooltip .HoveredTooltipPositioner ;
58- import net .minecraft .client .gui .tooltip .Tooltip ;
5950import net .minecraft .client .network .ClientPlayNetworkHandler ;
6051import net .minecraft .client .network .ClientPlayerEntity ;
6152import net .minecraft .client .network .PlayerListEntry ;
6253import net .minecraft .client .option .KeyBinding ;
63- import net .minecraft .client .util .ChatMessages ;
6454import net .minecraft .client .util .InputUtil ;
65- import net .minecraft .component .Component ;
6655import net .minecraft .component .ComponentType ;
6756import net .minecraft .entity .player .PlayerEntity ;
68- import net .minecraft .entity .player .PlayerInventory ;
6957import net .minecraft .inventory .Inventories ;
7058import net .minecraft .inventory .Inventory ;
71- import net .minecraft .inventory .InventoryChangedListener ;
72- import net .minecraft .item .Item ;
7359import net .minecraft .item .ItemStack ;
7460import net .minecraft .item .Items ;
75- import net .minecraft .item .tooltip .TooltipData ;
7661import net .minecraft .nbt .NbtCompound ;
7762import net .minecraft .nbt .NbtIo ;
78- import net .minecraft .network .packet .c2s .play .ChatMessageC2SPacket ;
79- import net .minecraft .network .packet .s2c .play .ChatMessageS2CPacket ;
80- import net .minecraft .network .packet .s2c .play .GameJoinS2CPacket ;
81- import net .minecraft .network .packet .s2c .play .ScoreboardScoreUpdateS2CPacket ;
82- import net .minecraft .registry .Registries ;
8363import net .minecraft .registry .entry .RegistryEntry ;
84- import net .minecraft .scoreboard .*;
85- import net .minecraft .screen .ScreenHandler ;
86- import net .minecraft .screen .ScreenHandlerListener ;
64+ import net .minecraft .scoreboard .ScoreHolder ;
65+ import net .minecraft .scoreboard .Scoreboard ;
66+ import net .minecraft .scoreboard .ScoreboardDisplaySlot ;
67+ import net .minecraft .scoreboard .ScoreboardObjective ;
68+ import net .minecraft .scoreboard .Team ;
8769import net .minecraft .sound .SoundEvent ;
8870import net .minecraft .sound .SoundEvents ;
89- import net .minecraft .text .HoverEvent ;
9071import net .minecraft .text .Text ;
9172import net .minecraft .util .Formatting ;
92- import net .minecraft .util .Identifier ;
9373import net .minecraft .util .collection .DefaultedList ;
94- import org .lwjgl .glfw .GLFW ;
95- import org .spongepowered .asm .mixin .transformer .ClassInfo ;
96-
97- import java .io .ByteArrayOutputStream ;
98- import java .io .IOException ;
99- import java .lang .reflect .Field ;
100- import java .nio .file .Path ;
101- import java .util .*;
102- import java .util .regex .Matcher ;
103- import java .util .regex .Pattern ;
10474
10575public class CoflModClient implements ClientModInitializer {
10676 public static Gson gson = new GsonBuilder ().excludeFieldsWithoutExposeAnnotation ().create ();
10777 private static boolean keyPressed = false ;
10878 private static int counter = 0 ;
10979 public static KeyBinding bestflipsKeyBinding ;
80+ public static KeyBinding uploadItemKeyBinding ;
11081 public static ArrayList <String > knownIds = new ArrayList <>();
11182
11283 private String username = "" ;
@@ -143,7 +114,12 @@ public void onInitializeClient() {
143114 "keybinding.coflmod.bestflips" ,
144115 InputUtil .Type .KEYSYM ,
145116 GLFW .GLFW_KEY_B ,
146- "" ));
117+ "SkyCofl" ));
118+ uploadItemKeyBinding = KeyBindingHelper .registerKeyBinding (new KeyBinding (
119+ "keybinding.coflmod.uploaditem" ,
120+ InputUtil .Type .KEYSYM ,
121+ GLFW .GLFW_KEY_I ,
122+ "SkyCofl" ));
147123
148124 ClientTickEvents .END_CLIENT_TICK .register (client -> {
149125 if (bestflipsKeyBinding .isPressed ()) {
@@ -155,6 +131,9 @@ public void onInitializeClient() {
155131 } else {
156132 counter = 0 ;
157133 }
134+ if (uploadItemKeyBinding .wasPressed ())
135+ handleGetHoveredItem (client );
136+
158137 });
159138
160139 ClientPlayConnectionEvents .JOIN .register ((handler , sender , server ) -> {
@@ -351,6 +330,29 @@ public void onInitializeClient() {
351330 });
352331 }
353332
333+ private void handleGetHoveredItem (MinecraftClient client ) {
334+ uploadItem (client .player .getInventory ().getStack (client .player .getInventory ().getSelectedSlot ()));
335+ }
336+
337+ public static void uploadItem (ItemStack hoveredStack ) {
338+ MinecraftClient client = MinecraftClient .getInstance ();
339+ if (client .player == null || hoveredStack == null ) return ;
340+
341+ RawCommand data = new RawCommand ("hotkey" , gson .toJson ("upload_item" + getContextToAppend (hoveredStack )));
342+ CoflCore .Wrapper .SendMessage (data );
343+ }
344+
345+ private static String getContextToAppend (ItemStack hoveredStack ) {
346+ String toAppend = "" ;
347+ MinecraftClient client = MinecraftClient .getInstance ();
348+ if (client .player == null )
349+ return "" ;
350+
351+ DefaultedList <ItemStack > mockList = DefaultedList .of ();
352+ mockList .add (hoveredStack );
353+ return "|" + inventoryToNBT (mockList );
354+ }
355+
354356 private static void uploadTabList () {
355357 Command <String []> data = new Command <>(CommandType .uploadTab , CoflModClient .getTabList ().toArray (new String [0 ]));
356358 CoflCore .Wrapper .SendMessage (data );
0 commit comments