Skip to content

Commit c1ab549

Browse files
authored
Merge branch 'multiversion' into feat/sol/darkkronicle-bedwars-display
2 parents a9bdb36 + 7a9be2e commit c1ab549

File tree

8 files changed

+132
-36
lines changed

8 files changed

+132
-36
lines changed

1.19.3/src/main/java/io/github/axolotlclient/mixin/ScreenMixin.java

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -34,25 +34,38 @@
3434
import org.spongepowered.asm.mixin.Mixin;
3535
import org.spongepowered.asm.mixin.injection.At;
3636
import org.spongepowered.asm.mixin.injection.Inject;
37-
import org.spongepowered.asm.mixin.injection.ModifyArgs;
37+
import org.spongepowered.asm.mixin.injection.ModifyVariable;
3838
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
3939
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
40-
import org.spongepowered.asm.mixin.injection.invoke.arg.Args;
4140

4241
@Mixin(Screen.class)
4342
public abstract class ScreenMixin {
4443

45-
@ModifyArgs(method = "renderTooltip(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/item/ItemStack;II)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/screen/Screen;renderTooltip(Lnet/minecraft/client/util/math/MatrixStack;Ljava/util/List;Ljava/util/Optional;II)V"))
46-
public void axolotlclient$modifyTooltipPosition(Args args) {
44+
@ModifyVariable(method = "renderTooltipFromComponents",
45+
at = @At("STORE"), index = 8)
46+
private int axolotlclient$scrollableTooltipsX(int x){
4747
if (ScrollableTooltips.getInstance().enabled.get()) {
4848
if ((MinecraftClient.getInstance().currentScreen instanceof CreativeInventoryScreen)
49-
&& ((CreativeInventoryScreen) MinecraftClient.getInstance().currentScreen).m_zqfbkfzl()) {
50-
return;
49+
&& !((CreativeInventoryScreen) MinecraftClient.getInstance().currentScreen).m_zqfbkfzl()) {
50+
return x;
5151
}
5252

53-
args.set(3, (int) args.get(3) + ScrollableTooltips.getInstance().tooltipOffsetX);
54-
args.set(4, (int) args.get(4) + ScrollableTooltips.getInstance().tooltipOffsetY);
53+
return x + ScrollableTooltips.getInstance().tooltipOffsetX;
5554
}
55+
return x;
56+
}
57+
58+
@ModifyVariable(method = "renderTooltipFromComponents",
59+
at = @At("STORE"), index = 9)
60+
private int axolotlclient$scrollableTooltipsY(int y){
61+
if (ScrollableTooltips.getInstance().enabled.get()) {
62+
if ((MinecraftClient.getInstance().currentScreen instanceof CreativeInventoryScreen)
63+
&& !((CreativeInventoryScreen) MinecraftClient.getInstance().currentScreen).m_zqfbkfzl()) {
64+
return y;
65+
}
66+
return y + ScrollableTooltips.getInstance().tooltipOffsetY;
67+
}
68+
return y;
5669
}
5770

5871
@Inject(method = "handleTextClick", at = @At(value = "INVOKE", target = "Lnet/minecraft/text/ClickEvent;getAction()Lnet/minecraft/text/ClickEvent$Action;", ordinal = 0), cancellable = true)

1.19.4/src/main/java/io/github/axolotlclient/mixin/ScreenMixin.java

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -34,25 +34,38 @@
3434
import org.spongepowered.asm.mixin.Mixin;
3535
import org.spongepowered.asm.mixin.injection.At;
3636
import org.spongepowered.asm.mixin.injection.Inject;
37-
import org.spongepowered.asm.mixin.injection.ModifyArgs;
37+
import org.spongepowered.asm.mixin.injection.ModifyVariable;
3838
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
3939
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
40-
import org.spongepowered.asm.mixin.injection.invoke.arg.Args;
4140

4241
@Mixin(Screen.class)
4342
public abstract class ScreenMixin {
4443

45-
@ModifyArgs(method = "renderTooltip(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/item/ItemStack;II)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/screen/Screen;renderTooltip(Lnet/minecraft/client/util/math/MatrixStack;Ljava/util/List;Ljava/util/Optional;II)V"))
46-
public void axolotlclient$modifyTooltipPosition(Args args) {
44+
@ModifyVariable(method = "renderTooltipFromComponents",
45+
at = @At("STORE"), index = 11)
46+
private int axolotlclient$scrollableTooltipsX(int x){
4747
if (ScrollableTooltips.getInstance().enabled.get()) {
4848
if ((MinecraftClient.getInstance().currentScreen instanceof CreativeInventoryScreen)
49-
&& ((CreativeInventoryScreen) MinecraftClient.getInstance().currentScreen).isInventoryOpen()) {
50-
return;
49+
&& !((CreativeInventoryScreen) MinecraftClient.getInstance().currentScreen).isInventoryOpen()) {
50+
return x;
5151
}
5252

53-
args.set(3, (int) args.get(3) + ScrollableTooltips.getInstance().tooltipOffsetX);
54-
args.set(4, (int) args.get(4) + ScrollableTooltips.getInstance().tooltipOffsetY);
53+
return x + ScrollableTooltips.getInstance().tooltipOffsetX;
5554
}
55+
return x;
56+
}
57+
58+
@ModifyVariable(method = "renderTooltipFromComponents",
59+
at = @At("STORE"), index = 12)
60+
private int axolotlclient$scrollableTooltipsY(int y){
61+
if (ScrollableTooltips.getInstance().enabled.get()) {
62+
if ((MinecraftClient.getInstance().currentScreen instanceof CreativeInventoryScreen)
63+
&& !((CreativeInventoryScreen) MinecraftClient.getInstance().currentScreen).isInventoryOpen()) {
64+
return y;
65+
}
66+
return y + ScrollableTooltips.getInstance().tooltipOffsetY;
67+
}
68+
return y;
5669
}
5770

5871
@Inject(method = "handleTextClick", at = @At(value = "INVOKE", target = "Lnet/minecraft/text/ClickEvent;getAction()Lnet/minecraft/text/ClickEvent$Action;", ordinal = 0), cancellable = true)
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
/*
2+
* Copyright © 2021-2023 moehreag <[email protected]> & Contributors
3+
*
4+
* This file is part of AxolotlClient.
5+
*
6+
* This program is free software; you can redistribute it and/or
7+
* modify it under the terms of the GNU Lesser General Public
8+
* License as published by the Free Software Foundation; either
9+
* version 3 of the License, or (at your option) any later version.
10+
*
11+
* This program is distributed in the hope that it will be useful,
12+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14+
* Lesser General Public License for more details.
15+
*
16+
* You should have received a copy of the GNU Lesser General Public License
17+
* along with this program; if not, write to the Free Software Foundation,
18+
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
19+
*
20+
* For more information, see the LICENSE file.
21+
*/
22+
23+
package io.github.axolotlclient.mixin;
24+
25+
import io.github.axolotlclient.modules.scrollableTooltips.ScrollableTooltips;
26+
import net.minecraft.client.MinecraftClient;
27+
import net.minecraft.client.gui.GuiGraphics;
28+
import net.minecraft.client.gui.screen.ingame.CreativeInventoryScreen;
29+
import org.spongepowered.asm.mixin.Mixin;
30+
import org.spongepowered.asm.mixin.injection.At;
31+
import org.spongepowered.asm.mixin.injection.ModifyVariable;
32+
33+
@Mixin(GuiGraphics.class)
34+
public class GuiGraphicsMixin {
35+
36+
@ModifyVariable(method = "drawTooltip(Lnet/minecraft/client/font/TextRenderer;Ljava/util/List;IILnet/minecraft/client/gui/tooltip/TooltipPositioner;)V",
37+
at = @At("STORE"), index = 11)
38+
private int axolotlclient$scrollableTooltipsX(int x){
39+
if (ScrollableTooltips.getInstance().enabled.get()) {
40+
if ((MinecraftClient.getInstance().currentScreen instanceof CreativeInventoryScreen)
41+
&& !((CreativeInventoryScreen) MinecraftClient.getInstance().currentScreen).isInventoryOpen()) {
42+
return x;
43+
}
44+
45+
return x + ScrollableTooltips.getInstance().tooltipOffsetX;
46+
}
47+
return x;
48+
}
49+
50+
@ModifyVariable(method = "drawTooltip(Lnet/minecraft/client/font/TextRenderer;Ljava/util/List;IILnet/minecraft/client/gui/tooltip/TooltipPositioner;)V",
51+
at = @At("STORE"), index = 12)
52+
private int axolotlclient$scrollableTooltipsY(int y){
53+
if (ScrollableTooltips.getInstance().enabled.get()) {
54+
if ((MinecraftClient.getInstance().currentScreen instanceof CreativeInventoryScreen)
55+
&& !((CreativeInventoryScreen) MinecraftClient.getInstance().currentScreen).isInventoryOpen()) {
56+
return y;
57+
}
58+
return y + ScrollableTooltips.getInstance().tooltipOffsetY;
59+
}
60+
return y;
61+
}
62+
63+
}

1.20/src/main/java/io/github/axolotlclient/mixin/ScreenMixin.java

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -24,37 +24,19 @@
2424

2525
import io.github.axolotlclient.modules.blur.MenuBlur;
2626
import io.github.axolotlclient.modules.screenshotUtils.ScreenshotUtils;
27-
import io.github.axolotlclient.modules.scrollableTooltips.ScrollableTooltips;
28-
import net.minecraft.client.MinecraftClient;
2927
import net.minecraft.client.gui.GuiGraphics;
3028
import net.minecraft.client.gui.screen.Screen;
31-
import net.minecraft.client.gui.screen.ingame.CreativeInventoryScreen;
3229
import net.minecraft.text.ClickEvent;
3330
import net.minecraft.text.Style;
3431
import org.spongepowered.asm.mixin.Mixin;
3532
import org.spongepowered.asm.mixin.injection.At;
3633
import org.spongepowered.asm.mixin.injection.Inject;
37-
import org.spongepowered.asm.mixin.injection.ModifyArgs;
3834
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
3935
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
40-
import org.spongepowered.asm.mixin.injection.invoke.arg.Args;
4136

4237
@Mixin(Screen.class)
4338
public abstract class ScreenMixin {
4439

45-
@ModifyArgs(method = "renderWithTooltip", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/GuiGraphics;drawTooltip(Lnet/minecraft/client/font/TextRenderer;Ljava/util/List;Lnet/minecraft/client/gui/tooltip/TooltipPositioner;II)V"))
46-
public void axolotlclient$modifyTooltipPosition(Args args) {
47-
if (ScrollableTooltips.getInstance().enabled.get()) {
48-
if ((MinecraftClient.getInstance().currentScreen instanceof CreativeInventoryScreen)
49-
&& ((CreativeInventoryScreen) MinecraftClient.getInstance().currentScreen).isInventoryOpen()) {
50-
return;
51-
}
52-
53-
args.set(3, (int) args.get(3) + ScrollableTooltips.getInstance().tooltipOffsetX);
54-
args.set(4, (int) args.get(4) + ScrollableTooltips.getInstance().tooltipOffsetY);
55-
}
56-
}
57-
5840
@Inject(method = "handleTextClick", at = @At(value = "INVOKE", target = "Lnet/minecraft/text/ClickEvent;getAction()Lnet/minecraft/text/ClickEvent$Action;", ordinal = 0), cancellable = true)
5941
public void axolotlclient$customClickEvents(Style style, CallbackInfoReturnable<Boolean> cir) {
6042
ClickEvent event = style.getClickEvent();

1.20/src/main/resources/axolotlclient.mixins.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
"EntityRendererMixin",
2424
"GameMenuScreenMixin",
2525
"GameRendererMixin",
26+
"GuiGraphicsMixin",
2627
"HandledScreenMixin",
2728
"InGameHudMixin",
2829
"InGameOverlayRendererMixin",

1.8.9/src/main/java/io/github/axolotlclient/mixin/ScreenMixin.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,9 +57,11 @@ public abstract class ScreenMixin {
5757
return;
5858
}
5959

60+
int y = args.get(2);
6061
ScrollableTooltips.getInstance().onRenderTooltip();
62+
ScrollableTooltips.getInstance().alignToScreenBottom(args.get(0), y);
6163
args.set(1, (int) args.get(1) + ScrollableTooltips.getInstance().tooltipOffsetX);
62-
args.set(2, (int) args.get(2) + ScrollableTooltips.getInstance().tooltipOffsetY);
64+
args.set(2, y + ScrollableTooltips.getInstance().tooltipOffsetY);
6365
}
6466
}
6567

1.8.9/src/main/java/io/github/axolotlclient/modules/scrollableTooltips/ScrollableTooltips.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,14 @@
2222

2323
package io.github.axolotlclient.modules.scrollableTooltips;
2424

25+
import java.util.List;
26+
2527
import io.github.axolotlclient.AxolotlClient;
2628
import io.github.axolotlclient.AxolotlClientConfig.options.BooleanOption;
2729
import io.github.axolotlclient.AxolotlClientConfig.options.IntegerOption;
2830
import io.github.axolotlclient.AxolotlClientConfig.options.OptionCategory;
2931
import io.github.axolotlclient.modules.AbstractModule;
32+
import io.github.axolotlclient.util.Util;
3033
import net.minecraft.client.gui.screen.Screen;
3134
import org.lwjgl.input.Mouse;
3235

@@ -38,10 +41,13 @@ public class ScrollableTooltips extends AbstractModule {
3841
true);
3942
protected final IntegerOption scrollAmount = new IntegerOption("scrollAmount", 5, 1, 20);
4043
protected final BooleanOption inverse = new BooleanOption("inverse", false);
44+
private final BooleanOption alignToBottom = new BooleanOption("alignToBottom", false);
4145
private final OptionCategory category = new OptionCategory("scrollableTooltips");
4246
public int tooltipOffsetX;
4347
public int tooltipOffsetY;
4448

49+
private boolean alignedToBottom;
50+
4551
public static ScrollableTooltips getInstance() {
4652
return instance;
4753
}
@@ -52,12 +58,14 @@ public void init() {
5258
category.add(enableShiftHorizontalScroll);
5359
category.add(scrollAmount);
5460
category.add(inverse);
61+
category.add(alignToBottom);
5562

5663
AxolotlClient.CONFIG.rendering.addSubCategory(category);
5764
}
5865

5966
public void onRenderTooltip() {
6067
if (enabled.get()) {
68+
6169
int i = Mouse.getDWheel();
6270
if (i != 0) {
6371
if (i < 0) {
@@ -95,6 +103,19 @@ protected boolean applyInverse(boolean value) {
95103
}
96104

97105
public void resetScroll() {
106+
alignedToBottom = false;
98107
tooltipOffsetY = tooltipOffsetX = 0;
99108
}
109+
110+
public void alignToScreenBottom(List<String> tooltip, int y){
111+
if(alignToBottom.get() && !alignedToBottom) {
112+
int height = tooltip.size() * 10 - 4;
113+
114+
if(height + y > Util.getWindow().getHeight()){
115+
tooltipOffsetY = Util.getWindow().getHeight() - y - height;
116+
}
117+
118+
alignedToBottom = true;
119+
}
120+
}
100121
}

1.8.9/src/main/resources/assets/axolotlclient/lang/en_us.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,5 +13,6 @@
1313
"runGCOnUnfocus": "Run GC on Unfocus",
1414
"scrollbarColor": "Scrollbar Color",
1515
"unfocusedFPS": "Unfocused FPS",
16-
"unfocusedVolumeMultiplier": "Unfocused Volume Multiplier"
16+
"unfocusedVolumeMultiplier": "Unfocused Volume Multiplier",
17+
"alignToBottom": "Align to Bottom Screen Edge"
1718
}

0 commit comments

Comments
 (0)