55import dev .isxander .yacl .api .Option ;
66import dev .isxander .yacl .api .OptionGroup ;
77import dev .isxander .yacl .api .utils .Dimension ;
8- import dev .isxander .yacl .impl .YACLConstants ;
98import net .minecraft .client .MinecraftClient ;
109import net .minecraft .client .font .MultilineText ;
1110import net .minecraft .client .font .TextRenderer ;
1413import net .minecraft .client .gui .screen .Screen ;
1514import net .minecraft .client .gui .screen .narration .NarrationMessageBuilder ;
1615import net .minecraft .client .gui .screen .narration .NarrationPart ;
17- import net .minecraft .client .gui .widget .ButtonWidget ;
1816import net .minecraft .client .gui .widget .ElementListWidget ;
1917import net .minecraft .client .util .math .MatrixStack ;
20- import net .minecraft .text .OrderedText ;
2118import net .minecraft .text .Text ;
2219import net .minecraft .util .math .MathHelper ;
2320import org .jetbrains .annotations .Nullable ;
@@ -296,25 +293,24 @@ public List<? extends Element> children() {
296293 public class GroupSeparatorEntry extends Entry {
297294 private final OptionGroup group ;
298295 private final MultilineText wrappedName ;
299- private final List < OrderedText > wrappedTooltip ;
296+ private final MultilineText wrappedTooltip ;
300297
301298 private final LowProfileButtonWidget expandMinimizeButton ;
302299
303- private float hoveredTicks = 0 ;
304- private int prevMouseX , prevMouseY ;
305-
306300 private final Screen screen ;
307301 private final TextRenderer textRenderer = MinecraftClient .getInstance ().textRenderer ;
308302
309303 private boolean groupExpanded ;
310304
311305 private List <OptionEntry > optionEntries ;
312306
307+ private int y ;
308+
313309 private GroupSeparatorEntry (OptionGroup group , Screen screen ) {
314310 this .group = group ;
315311 this .screen = screen ;
316312 this .wrappedName = MultilineText .create (textRenderer , group .name (), getRowWidth () - 45 );
317- this .wrappedTooltip = textRenderer . wrapLines ( group .tooltip (), screen .width / 2 );
313+ this .wrappedTooltip = MultilineText . create ( textRenderer , group .tooltip (), screen .width / 3 * 2 );
318314 this .groupExpanded = !group .collapsed ();
319315 this .expandMinimizeButton = new LowProfileButtonWidget (0 , 0 , 20 , 20 , Text .empty (), btn -> {
320316 setExpanded (!isExpanded ());
@@ -324,26 +320,19 @@ private GroupSeparatorEntry(OptionGroup group, Screen screen) {
324320
325321 @ Override
326322 public void render (MatrixStack matrices , int index , int y , int x , int entryWidth , int entryHeight , int mouseX , int mouseY , boolean hovered , float tickDelta ) {
323+ this .y = y ;
324+
327325 expandMinimizeButton .x = x ;
328326 expandMinimizeButton .y = y + entryHeight / 2 - expandMinimizeButton .getHeight () / 2 ;
329327 expandMinimizeButton .render (matrices , mouseX , mouseY , tickDelta );
330328
331- hovered &= !expandMinimizeButton .isMouseOver (mouseX , mouseY );
332- if (hovered && (!YACLConstants .HOVER_MOUSE_RESET || (mouseX == prevMouseX && mouseY == prevMouseY )))
333- hoveredTicks += tickDelta ;
334- else
335- hoveredTicks = 0 ;
336-
337329 wrappedName .drawCenterWithShadow (matrices , x + entryWidth / 2 , y + getYPadding ());
338-
339- prevMouseX = mouseX ;
340- prevMouseY = mouseY ;
341330 }
342331
343332 @ Override
344333 public void postRender (MatrixStack matrices , int mouseX , int mouseY , float delta ) {
345- if (hoveredTicks >= YACLConstants . HOVER_TICKS ) {
346- screen . renderOrderedTooltip (matrices , wrappedTooltip , mouseX , mouseY );
334+ if (isHovered () && ! expandMinimizeButton . isMouseOver ( mouseX , mouseY ) ) {
335+ YACLScreen . renderMultilineTooltip (matrices , textRenderer , wrappedTooltip , getRowLeft () + getRowWidth () / 2 , y - 3 , y + getItemHeight () + 3 , screen . width , screen . height );
347336 }
348337 }
349338
0 commit comments