|
14 | 14 | import com.coflnet.gui.tfm.TfmBinGUI; |
15 | 15 | import com.google.gson.Gson; |
16 | 16 | import com.google.gson.GsonBuilder; |
| 17 | +import com.google.gson.JsonElement; |
17 | 18 | import com.google.gson.JsonObject; |
18 | 19 | import com.mojang.brigadier.arguments.StringArgumentType; |
| 20 | +import com.mojang.serialization.DataResult; |
| 21 | +import com.mojang.serialization.JsonOps; |
19 | 22 | import net.fabricmc.api.ClientModInitializer; |
20 | 23 | import net.fabricmc.fabric.api.client.command.v2.ClientCommandManager; |
21 | 24 | import net.fabricmc.fabric.api.client.command.v2.ClientCommandRegistrationCallback; |
|
40 | 43 | import net.minecraft.client.gui.tooltip.Tooltip; |
41 | 44 | import net.minecraft.client.option.KeyBinding; |
42 | 45 | import net.minecraft.client.util.InputUtil; |
| 46 | +import net.minecraft.component.ComponentType; |
43 | 47 | import net.minecraft.entity.player.PlayerEntity; |
44 | 48 | import net.minecraft.entity.player.PlayerInventory; |
45 | 49 | import net.minecraft.inventory.Inventories; |
|
61 | 65 | import net.minecraft.text.Text; |
62 | 66 | import net.minecraft.util.collection.DefaultedList; |
63 | 67 | import org.lwjgl.glfw.GLFW; |
| 68 | +import org.spongepowered.asm.mixin.transformer.ClassInfo; |
64 | 69 |
|
65 | 70 | import java.io.ByteArrayOutputStream; |
66 | 71 | import java.io.IOException; |
@@ -171,7 +176,7 @@ public void onPropertyUpdate(ScreenHandler handler, int property, int value) {} |
171 | 176 |
|
172 | 177 | ItemTooltipCallback.EVENT.register((stack, tooltipContext, tooltipType, lines) -> { |
173 | 178 | if (itemIds.isEmpty()) return; |
174 | | - DescriptionHandler.DescModification[] tooltips = DescriptionHandler.getTooltipData(itemIds.get(stack.toString())); |
| 179 | + DescriptionHandler.DescModification[] tooltips = DescriptionHandler.getTooltipData(itemIds.get(getIdFromStack(stack))); |
175 | 180 | ArrayList<Text> temp = new ArrayList<>(lines); |
176 | 181 | for (DescriptionHandler.DescModification tooltip : tooltips) { |
177 | 182 | switch (tooltip.type){ |
@@ -300,13 +305,24 @@ public static String[] getItemIdsFromInventory(DefaultedList<ItemStack> itemStac |
300 | 305 | for (int i = 0; i < itemStacks.size(); i++) { |
301 | 306 | ItemStack stack = itemStacks.get(i); |
302 | 307 | if (stack.getItem() != Items.AIR) { |
303 | | - itemIds.put(stack.toString(), stack.toString()); |
304 | | - res.add(stack.toString()); |
| 308 | + String id = getIdFromStack(stack); |
| 309 | + itemIds.put(id, id); |
| 310 | + res.add(id); |
| 311 | + System.out.println(id); |
305 | 312 | } |
306 | 313 | } |
307 | 314 |
|
308 | 315 | return res.toArray(String[]::new); |
309 | 316 | } |
310 | 317 |
|
| 318 | + public static String getIdFromStack(ItemStack stack){ |
| 319 | + JsonObject stackJson = ItemStack.CODEC.encodeStart(JsonOps.INSTANCE, stack).getOrThrow().getAsJsonObject(); |
| 320 | + JsonObject customData = stackJson.getAsJsonObject("components").getAsJsonObject("minecraft:custom_data"); |
| 321 | + JsonElement uuid = customData.get("uuid"); |
| 322 | + if (uuid != null) return uuid.getAsString(); |
| 323 | + return stackJson.get("id").getAsString()+";"+stackJson.get("count").getAsString(); |
| 324 | + |
| 325 | + } |
| 326 | + |
311 | 327 | } |
312 | 328 |
|
0 commit comments