diff options
Diffstat (limited to 'src/main/java/dev/isxander/yacl3/gui/controllers')
6 files changed, 39 insertions, 23 deletions
diff --git a/src/main/java/dev/isxander/yacl3/gui/controllers/ColorController.java b/src/main/java/dev/isxander/yacl3/gui/controllers/ColorController.java index 3c0a5fc..a48bdde 100644 --- a/src/main/java/dev/isxander/yacl3/gui/controllers/ColorController.java +++ b/src/main/java/dev/isxander/yacl3/gui/controllers/ColorController.java @@ -260,7 +260,7 @@ public class ColorController implements IStringController<Color> { @Override public void unfocus() { - if(colorPickerVisible) { + if (colorPickerVisible) { removeColorPicker(); } previewOutlineFadeTicks = 0; @@ -271,7 +271,7 @@ public class ColorController implements IStringController<Color> { Color outlineColor = new Color(0xFF000000); Color highlightedColor = getHighlightedOutlineColor(); - if(!hovered && !colorPreviewHovered) { + if (!hovered && !colorPreviewHovered) { previewOutlineFadeTicks = 0; return outlineColor; } @@ -279,11 +279,11 @@ public class ColorController implements IStringController<Color> { int fadeInTicks = 80; int fadeOutTicks = fadeInTicks + 120; - if(colorPreviewHovered) { + if (colorPreviewHovered) { //white/light grey if the color preview is being hovered previewOutlineFadeTicks = 0; return highlightedColor; - } else if(YACLConfig.HANDLER.instance().showColorPickerIndicator) { + } else if (YACLConfig.HANDLER.instance().showColorPickerIndicator) { if(previewOutlineFadeTicks <= fadeInTicks) { //fade to white return getFadedColor(outlineColor, highlightedColor, previewOutlineFadeTicks, fadeInTicks); diff --git a/src/main/java/dev/isxander/yacl3/gui/controllers/ColorPickerWidget.java b/src/main/java/dev/isxander/yacl3/gui/controllers/ColorPickerWidget.java index efa1aec..a1828f5 100644 --- a/src/main/java/dev/isxander/yacl3/gui/controllers/ColorPickerWidget.java +++ b/src/main/java/dev/isxander/yacl3/gui/controllers/ColorPickerWidget.java @@ -3,9 +3,11 @@ package dev.isxander.yacl3.gui.controllers; import dev.isxander.yacl3.api.utils.Dimension; import dev.isxander.yacl3.api.utils.MutableDimension; import dev.isxander.yacl3.gui.YACLScreen; +import dev.isxander.yacl3.gui.utils.GuiUtils; import dev.isxander.yacl3.gui.utils.YACLRenderHelper; import dev.isxander.yacl3.platform.YACLPlatform; import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.renderer.RenderType; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import net.minecraft.util.Mth; @@ -89,7 +91,7 @@ public class ColorPickerWidget extends ControllerPopupWidget<ColorController> { //Background /*? if >1.20.3 {*/ - graphics.blitSprite(COLOR_PICKER_LOCATION, colorPickerDim.x() - 5, colorPickerDim.y() - 5, colorPickerDim.width() + 10, colorPickerDim.height() + 10); + GuiUtils.blitSprite(graphics, COLOR_PICKER_LOCATION, colorPickerDim.x() - 5, colorPickerDim.y() - 5, colorPickerDim.width() + 10, colorPickerDim.height() + 10); /*?} else {*/ /*graphics.blitNineSliced(COLOR_PICKER_ATLAS, colorPickerDim.x() - 5, colorPickerDim.y() - 5, colorPickerDim.width() + 10, colorPickerDim.height() + 10, 3, 236, 34, 0, 0); *//*?}*/ @@ -100,7 +102,7 @@ public class ColorPickerWidget extends ControllerPopupWidget<ColorController> { //transparent texture - must be rendered BEFORE the main color preview if(controller.allowAlpha()) { /*? if >1.20.3 {*/ - graphics.blitSprite(TRANSPARENT_TEXTURE_LOCATION, previewColorDim.x(), previewColorDim.y(), previewColorDim.width(), previewColorDim.height()); + GuiUtils.blitSprite(graphics, TRANSPARENT_TEXTURE_LOCATION, previewColorDim.x(), previewColorDim.y(), previewColorDim.width(), previewColorDim.height()); /*?} else {*/ /*graphics.blitRepeating(COLOR_PICKER_ATLAS, previewColorDim.x(), previewColorDim.y(), previewColorDim.width(), previewColorDim.height(), 236, 0, 8, 8); *//*?}*/ @@ -112,7 +114,9 @@ public class ColorPickerWidget extends ControllerPopupWidget<ColorController> { //outline graphics.fill(saturationLightDim.x() - outline, saturationLightDim.y() - outline, saturationLightDim.xLimit() + outline, saturationLightDim.yLimit() + outline, Color.black.getRGB()); //White to pending color's RGB from hue, left to right - fillSidewaysGradient(graphics, saturationLightDim.x(), saturationLightDim.y(), saturationLightDim.xLimit(), saturationLightDim.yLimit(), 0xFFFFFFFF, (int) getRgbFromHueX()); + GuiUtils.drawSpecial(graphics, bufferSource -> { + fillSidewaysGradient(graphics, saturationLightDim.x(), saturationLightDim.y(), saturationLightDim.xLimit(), saturationLightDim.yLimit(), 0xFFFFFFFF, (int) getRgbFromHueX(), bufferSource.getBuffer(RenderType.gui())); + }); //Transparent to black, top to bottom graphics.fillGradient(saturationLightDim.x(), saturationLightDim.y(), saturationLightDim.xLimit(), saturationLightDim.yLimit(), 0x00000000, 0xFF000000); //Sat/light thumb shadow @@ -135,12 +139,14 @@ public class ColorPickerWidget extends ControllerPopupWidget<ColorController> { graphics.fill(alphaGradientDim.x() - outline, alphaGradientDim.y() - outline, alphaGradientDim.xLimit() + outline, alphaGradientDim.yLimit() + outline, Color.black.getRGB()); //Transparent texture /*? if >1.20.3 {*/ - graphics.blitSprite(TRANSPARENT_TEXTURE_LOCATION, alphaGradientDim.x(), alphaGradientDim.y(), alphaGradientDim.width(), sliderHeight); + GuiUtils.blitSprite(graphics, TRANSPARENT_TEXTURE_LOCATION, alphaGradientDim.x(), alphaGradientDim.y(), alphaGradientDim.width(), sliderHeight); /*?} else {*/ /*graphics.blitRepeating(COLOR_PICKER_ATLAS, alphaGradientDim.x(), alphaGradientDim.y(), alphaGradientDim.width(), sliderHeight, 236, 0, 8, 8); *//*?}*/ //Pending color to transparent - fillSidewaysGradient(graphics, alphaGradientDim.x(), alphaGradientDim.y(), alphaGradientDim.xLimit(), alphaGradientDim.yLimit(), getRgbWithoutAlpha(), 0x00000000); + GuiUtils.drawSpecial(graphics, bufferSource -> { + fillSidewaysGradient(graphics, alphaGradientDim.x(), alphaGradientDim.y(), alphaGradientDim.xLimit(), alphaGradientDim.yLimit(), getRgbWithoutAlpha(), 0x00000000, bufferSource.getBuffer(RenderType.gui())); + }); //Alpha slider thumb shadow graphics.fill(alphaThumbX - thumbWidth / 2 - 1, alphaGradientDim.y() - outline - 1, alphaThumbX + thumbWidth / 2 + 1, alphaGradientDim.yLimit() + outline + 1, 0xFF404040); //Alpha slider thumb diff --git a/src/main/java/dev/isxander/yacl3/gui/controllers/LabelController.java b/src/main/java/dev/isxander/yacl3/gui/controllers/LabelController.java index fee6c19..9f38d3b 100644 --- a/src/main/java/dev/isxander/yacl3/gui/controllers/LabelController.java +++ b/src/main/java/dev/isxander/yacl3/gui/controllers/LabelController.java @@ -88,8 +88,6 @@ public class LabelController implements Controller<Component> { graphics.pose().pushPose(); graphics.pose().translate(0, 0, 100); if (isMouseOver(mouseX, mouseY)) { - YACLScreen.renderMultilineTooltip(graphics, textRenderer, wrappedTooltip, getDimension().centerX(), getDimension().y() - 5, getDimension().yLimit() + 5, screen.width, screen.height); - Style style = getStyle(mouseX, mouseY); if (style != null && style.getHoverEvent() != null) { HoverEvent hoverEvent = style.getHoverEvent(); diff --git a/src/main/java/dev/isxander/yacl3/gui/controllers/dropdown/DropdownWidget.java b/src/main/java/dev/isxander/yacl3/gui/controllers/dropdown/DropdownWidget.java index f799059..464571e 100644 --- a/src/main/java/dev/isxander/yacl3/gui/controllers/dropdown/DropdownWidget.java +++ b/src/main/java/dev/isxander/yacl3/gui/controllers/dropdown/DropdownWidget.java @@ -5,6 +5,7 @@ import dev.isxander.yacl3.api.utils.Dimension; import dev.isxander.yacl3.api.utils.MutableDimension; import dev.isxander.yacl3.gui.YACLScreen; import dev.isxander.yacl3.gui.controllers.ControllerPopupWidget; +import dev.isxander.yacl3.gui.utils.GuiUtils; import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.gui.screens.Screen; import net.minecraft.network.chat.Component; @@ -59,26 +60,28 @@ public class DropdownWidget<T> extends ControllerPopupWidget<AbstractDropdownCon matrices.translate(0, 0, 200); // Background - graphics.setColor(0.25f, 0.25f, 0.25f, 1.0f); - graphics.blit( + //graphics.setColor(0.25f, 0.25f, 0.25f, 1.0f); + GuiUtils.blitGuiTexColor( + graphics, /*? if >1.20.4 {*/ Screen.MENU_BACKGROUND, /*?} else {*/ /*Screen.BACKGROUND_LOCATION, *//*?}*/ - dropdownDim.x(), dropdownDim.y(), 0, + dropdownDim.x(), dropdownDim.y(), 0.0f, 0.0f, dropdownDim.width(), dropdownDim.height(), - 32, 32 + 32, 32, + 0xFF3F3F3F ); - graphics.setColor(1.0f, 1.0f, 1.0f, 1.0f); + //graphics.setColor(1.0f, 1.0f, 1.0f, 1.0f); graphics.renderOutline(dropdownDim.x(), dropdownDim.y(), dropdownDim.width(), dropdownDim.height(), -1); // Highlight the currently selected element - graphics.setColor(0.0f, 0.0f, 0.0f, 0.5f); + //graphics.setColor(0.0f, 0.0f, 0.0f, 0.5f); int y = dropdownDim.y() + 2 + entryHeight() * selectedVisibleIndex(); - graphics.fill(dropdownDim.x(), y, dropdownDim.xLimit(), y + entryHeight(), -1); - graphics.setColor(1.0f, 1.0f, 1.0f, 1.0f); + graphics.fill(dropdownDim.x(), y, dropdownDim.xLimit(), y + entryHeight(), 0x7F000000); + //graphics.setColor(1.0f, 1.0f, 1.0f, 1.0f); graphics.renderOutline(dropdownDim.x(), y, dropdownDim.width(), entryHeight(), -1); // Render all visible elements diff --git a/src/main/java/dev/isxander/yacl3/gui/controllers/dropdown/ItemControllerElement.java b/src/main/java/dev/isxander/yacl3/gui/controllers/dropdown/ItemControllerElement.java index 2c19c13..37911de 100644 --- a/src/main/java/dev/isxander/yacl3/gui/controllers/dropdown/ItemControllerElement.java +++ b/src/main/java/dev/isxander/yacl3/gui/controllers/dropdown/ItemControllerElement.java @@ -3,6 +3,7 @@ package dev.isxander.yacl3.gui.controllers.dropdown; import dev.isxander.yacl3.api.utils.Dimension; import dev.isxander.yacl3.gui.YACLScreen; import dev.isxander.yacl3.gui.utils.ItemRegistryHelper; +import dev.isxander.yacl3.gui.utils.MiscUtil; import net.minecraft.client.gui.GuiGraphics; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.network.chat.Component; @@ -43,7 +44,7 @@ public class ItemControllerElement extends AbstractDropdownControllerElement<Ite List<ResourceLocation> identifiers = ItemRegistryHelper.getMatchingItemIdentifiers(inputField).toList(); currentItem = ItemRegistryHelper.getItemFromName(inputField, null); for (ResourceLocation identifier : identifiers) { - matchingItems.put(identifier, BuiltInRegistries.ITEM.get(identifier)); + matchingItems.put(identifier, MiscUtil.getFromRegistry(BuiltInRegistries.ITEM, identifier)); } return identifiers; } @@ -86,6 +87,11 @@ public class ItemControllerElement extends AbstractDropdownControllerElement<Ite if (inputFieldFocused) return Component.literal(inputField); - return itemController.option().pendingValue().getDescription(); + return itemController.option().pendingValue() + //? if >=1.21.2 { + .getName(); + //?} else { + /*.getDescription(); + *///?} } } diff --git a/src/main/java/dev/isxander/yacl3/gui/controllers/string/StringControllerElement.java b/src/main/java/dev/isxander/yacl3/gui/controllers/string/StringControllerElement.java index 689d8e2..7151f89 100644 --- a/src/main/java/dev/isxander/yacl3/gui/controllers/string/StringControllerElement.java +++ b/src/main/java/dev/isxander/yacl3/gui/controllers/string/StringControllerElement.java @@ -1,6 +1,7 @@ package dev.isxander.yacl3.gui.controllers.string; import com.mojang.blaze3d.platform.InputConstants; +import dev.isxander.yacl3.api.OptionEventListener; import dev.isxander.yacl3.api.utils.Dimension; import dev.isxander.yacl3.gui.YACLScreen; import dev.isxander.yacl3.gui.controllers.ControllerWidget; @@ -39,8 +40,10 @@ public class StringControllerElement extends ControllerWidget<IStringController< inputFieldFocused = false; selectionLength = 0; emptyText = Component.literal("Click to type...").withStyle(ChatFormatting.GRAY); - control.option().addListener((opt, val) -> { - inputField = control.getString(); + control.option().addEventListener((opt, event) -> { + if (event == OptionEventListener.Event.STATE_CHANGE) { + inputField = control.getString(); + } }); setDimension(dim); } |