Skip to content

Commit a947abc

Browse files
committed
implement book view and rename openinv to view content
1 parent 88a9f6b commit a947abc

1 file changed

Lines changed: 44 additions & 10 deletions

File tree

src/main/java/meteordevelopment/meteorclient/systems/modules/render/BetterTooltips.java

Lines changed: 44 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,10 @@
2323
import meteordevelopment.meteorclient.utils.render.color.Color;
2424
import meteordevelopment.meteorclient.utils.tooltip.*;
2525
import meteordevelopment.orbit.EventHandler;
26-
import net.minecraft.component.DataComponentTypes;
2726

27+
import net.minecraft.client.gui.screen.ingame.BookScreen;
28+
import net.minecraft.client.gui.screen.ingame.HandledScreen;
29+
import net.minecraft.component.DataComponentTypes;
2830
import net.minecraft.component.type.*;
2931
import net.minecraft.component.type.SuspiciousStewEffectsComponent.StewEffect;
3032
import net.minecraft.entity.Bucketable;
@@ -77,10 +79,19 @@ public class BetterTooltips extends Module {
7779
.build()
7880
);
7981

80-
private final Setting<Keybind> openInventoryKey = sgGeneral.add(new KeybindSetting.Builder()
81-
.name("open-inventory")
82-
.description("Key to open full container inventory screen.")
82+
private final Setting<Boolean> viewContent = sgGeneral.add(new BoolSetting.Builder()
83+
.name("view-content")
84+
.description("Enable view content functionality.")
85+
.defaultValue(true)
86+
.onChanged(value -> updateTooltips = true)
87+
.build()
88+
);
89+
90+
private final Setting<Keybind> viewContentKey = sgGeneral.add(new KeybindSetting.Builder()
91+
.name("view-content-key")
92+
.description("Key to view contents (containers, books, etc.).")
8393
.defaultValue(Keybind.fromKey(GLFW_KEY_LEFT_CONTROL))
94+
.visible(() -> viewContent.get())
8495
.build()
8596
);
8697

@@ -302,8 +313,16 @@ private void appendTooltip(ItemStackTooltipEvent event) {
302313
}
303314
}
304315

305-
if (openInventoryKey.get().isPressed() && (Utils.hasItems(event.itemStack()) || event.itemStack().getItem() instanceof BundleItem)) {
306-
mc.setScreen(new ContainerInventoryScreen(event.itemStack()));
316+
if (viewContent.get() && viewContentKey.get().isPressed()) {
317+
if (Utils.hasItems(event.itemStack()) || event.itemStack().getItem() instanceof BundleItem) {
318+
if (mc.currentScreen instanceof HandledScreen)
319+
mc.currentScreen.close();
320+
mc.setScreen(new ContainerInventoryScreen(event.itemStack()));
321+
} else if (event.itemStack().getItem() == Items.WRITABLE_BOOK || event.itemStack().getItem() == Items.WRITTEN_BOOK) {
322+
if (mc.currentScreen instanceof HandledScreen)
323+
mc.currentScreen.close();
324+
mc.setScreen(new BookScreen(BookScreen.Contents.create(event.itemStack())));
325+
}
307326
}
308327

309328
// Hold to preview tooltip
@@ -334,7 +353,11 @@ else if (event.itemStack.getItem() == Items.FILLED_MAP && previewMaps()) {
334353
// Book preview
335354
else if ((event.itemStack.getItem() == Items.WRITABLE_BOOK || event.itemStack.getItem() == Items.WRITTEN_BOOK) && previewBooks()) {
336355
Text page = getFirstPage(event.itemStack);
337-
if (page != null) event.tooltipData = new BookTooltipComponent(page);
356+
if (page != null) {
357+
int pageCount = getBookPageCount(event.itemStack);
358+
Text pageWithCount = page.copy().append(Text.literal(String.format(" (%d pages)", pageCount)).formatted(Formatting.GRAY));
359+
event.tooltipData = new BookTooltipComponent(pageWithCount);
360+
}
338361
}
339362

340363
// Banner preview
@@ -417,8 +440,9 @@ private void appendPreviewTooltipText(ItemStackTooltipEvent event, boolean space
417440
|| (event.itemStack().getItem() == Items.SHIELD && banners.get())
418441
);
419442

420-
boolean showInventoryText = !openInventoryKey.get().isPressed() && (
443+
boolean showFullPreviewText = viewContent.get() && !viewContentKey.get().isPressed() && (
421444
Utils.hasItems(event.itemStack()) || event.itemStack().getItem() instanceof BundleItem
445+
|| event.itemStack().getItem() == Items.WRITABLE_BOOK || event.itemStack().getItem() == Items.WRITTEN_BOOK
422446
);
423447

424448
if (showPreviewText) {
@@ -427,9 +451,9 @@ private void appendPreviewTooltipText(ItemStackTooltipEvent event, boolean space
427451
event.appendEnd(Text.literal("Hold " + Formatting.YELLOW + keybind + Formatting.RESET + " to preview"));
428452
}
429453

430-
if (showInventoryText) {
454+
if (showFullPreviewText) {
431455
if (spacer && !showPreviewText) event.appendEnd(Text.literal(""));
432-
event.appendEnd(Text.literal("Hold " + Formatting.YELLOW + openInventoryKey.get() + Formatting.RESET + " to open inventory"));
456+
event.appendEnd(Text.literal("Hold " + Formatting.YELLOW + viewContentKey.get() + Formatting.RESET + " to open preview"));
433457
}
434458
}
435459

@@ -462,6 +486,16 @@ private Text getFirstPage(ItemStack bookItem) {
462486
return null;
463487
}
464488

489+
private int getBookPageCount(ItemStack bookItem) {
490+
if (bookItem.get(DataComponentTypes.WRITABLE_BOOK_CONTENT) != null) {
491+
return bookItem.get(DataComponentTypes.WRITABLE_BOOK_CONTENT).pages().size();
492+
} else if (bookItem.get(DataComponentTypes.WRITTEN_BOOK_CONTENT) != null) {
493+
return bookItem.get(DataComponentTypes.WRITTEN_BOOK_CONTENT).pages().size();
494+
}
495+
return 0;
496+
}
497+
498+
465499
private BannerTooltipComponent createBannerFromBannerPatternItem(ItemStack item) {
466500
// I can't imagine getting the banner pattern from a banner pattern item would fail without some serious messing around
467501
BannerPatternsComponent component = new BannerPatternsComponent.Builder().add(mc.player.getRegistryManager().getOrThrow(RegistryKeys.BANNER_PATTERN).getOrThrow(item.get(DataComponentTypes.PROVIDES_BANNER_PATTERNS)).get(0), DyeColor.WHITE).build();

0 commit comments

Comments
 (0)