aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorAaron <51387595+AzureAaron@users.noreply.github.com>2024-10-19 01:29:34 -0400
committerAaron <51387595+AzureAaron@users.noreply.github.com>2024-10-21 01:13:20 -0400
commit58a167d36c9607b1c45cbf3aac2f8083581464d7 (patch)
tree7c90f44a75204d8af893e0309d4b255f8e72c9d8 /src/main/java
parent6bcf1db390b03cc58debd75121489650294f3760 (diff)
downloadSkyblocker-58a167d36c9607b1c45cbf3aac2f8083581464d7.tar.gz
Skyblocker-58a167d36c9607b1c45cbf3aac2f8083581464d7.tar.bz2
Skyblocker-58a167d36c9607b1c45cbf3aac2f8083581464d7.zip
1.21.2-rc1
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/de/hysky/skyblocker/mixins/AbstractInventoryScreenMixin.java21
-rw-r--r--src/main/java/de/hysky/skyblocker/mixins/InventoryScreenMixin.java16
-rw-r--r--src/main/java/de/hysky/skyblocker/mixins/accessors/DrawContextInvoker.java5
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/auction/AuctionBrowserScreen.java8
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/dwarven/GlaciteColdOverlay.java5
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/events/EventToast.java3
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/events/JacobEventToast.java1
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/ItemRarityBackgrounds.java2
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/SkyblockCraftingTableScreen.java4
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/itemlist/ItemListWidget.java2
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/itemlist/recipebook/SkyblockCraftingRecipeResults.java11
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/itemlist/recipebook/SkyblockCraftingTab.java5
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/itemlist/recipebook/SkyblockRecipeBookWidget.java15
-rw-r--r--src/main/java/de/hysky/skyblocker/utils/render/RenderHelper.java65
14 files changed, 47 insertions, 116 deletions
diff --git a/src/main/java/de/hysky/skyblocker/mixins/AbstractInventoryScreenMixin.java b/src/main/java/de/hysky/skyblocker/mixins/AbstractInventoryScreenMixin.java
deleted file mode 100644
index 4e95e3dc..00000000
--- a/src/main/java/de/hysky/skyblocker/mixins/AbstractInventoryScreenMixin.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package de.hysky.skyblocker.mixins;
-
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.injection.At;
-
-import com.llamalad7.mixinextras.injector.v2.WrapWithCondition;
-
-import de.hysky.skyblocker.config.SkyblockerConfigManager;
-import de.hysky.skyblocker.utils.Utils;
-import net.minecraft.client.gui.DrawContext;
-import net.minecraft.client.gui.screen.ingame.InventoryScreen;
-import net.minecraft.client.gui.screen.ingame.StatusEffectsDisplay;
-
-@Mixin(InventoryScreen.class)
-public class AbstractInventoryScreenMixin {
-
- @WrapWithCondition(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/screen/ingame/StatusEffectsDisplay;drawStatusEffects(Lnet/minecraft/client/gui/DrawContext;IIF)V"))
- private boolean skyblocker$dontDrawStatusEffects(StatusEffectsDisplay statusEffectsDisplay, DrawContext context, int mouseX, int mouseY, float tickDelta) {
- return !(Utils.isOnSkyblock() && SkyblockerConfigManager.get().uiAndVisuals.hideStatusEffectOverlay);
- }
-}
diff --git a/src/main/java/de/hysky/skyblocker/mixins/InventoryScreenMixin.java b/src/main/java/de/hysky/skyblocker/mixins/InventoryScreenMixin.java
index 1c57a466..da35dba2 100644
--- a/src/main/java/de/hysky/skyblocker/mixins/InventoryScreenMixin.java
+++ b/src/main/java/de/hysky/skyblocker/mixins/InventoryScreenMixin.java
@@ -1,13 +1,18 @@
package de.hysky.skyblocker.mixins;
+import org.spongepowered.asm.mixin.Mixin;
+import org.spongepowered.asm.mixin.injection.At;
+import org.spongepowered.asm.mixin.injection.ModifyArg;
+
+import com.llamalad7.mixinextras.injector.v2.WrapWithCondition;
+
import de.hysky.skyblocker.config.SkyblockerConfigManager;
import de.hysky.skyblocker.skyblock.itemlist.recipebook.SkyblockRecipeBookWidget;
import de.hysky.skyblocker.utils.Utils;
+import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.gui.screen.ingame.InventoryScreen;
+import net.minecraft.client.gui.screen.ingame.StatusEffectsDisplay;
import net.minecraft.client.gui.screen.recipebook.RecipeBookWidget;
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.injection.At;
-import org.spongepowered.asm.mixin.injection.ModifyArg;
@Mixin(InventoryScreen.class)
public abstract class InventoryScreenMixin {
@@ -21,4 +26,9 @@ public abstract class InventoryScreenMixin {
private int skyblocker$moveButton(int x) {
return Utils.isOnSkyblock() && SkyblockerConfigManager.get().uiAndVisuals.showEquipmentInInventory ? x + 21 : x;
}
+
+ @WrapWithCondition(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/screen/ingame/StatusEffectsDisplay;drawStatusEffects(Lnet/minecraft/client/gui/DrawContext;IIF)V"))
+ private boolean skyblocker$dontDrawStatusEffects(StatusEffectsDisplay statusEffectsDisplay, DrawContext context, int mouseX, int mouseY, float tickDelta) {
+ return !(Utils.isOnSkyblock() && SkyblockerConfigManager.get().uiAndVisuals.hideStatusEffectOverlay);
+ }
}
diff --git a/src/main/java/de/hysky/skyblocker/mixins/accessors/DrawContextInvoker.java b/src/main/java/de/hysky/skyblocker/mixins/accessors/DrawContextInvoker.java
index 312f0f69..5d516be2 100644
--- a/src/main/java/de/hysky/skyblocker/mixins/accessors/DrawContextInvoker.java
+++ b/src/main/java/de/hysky/skyblocker/mixins/accessors/DrawContextInvoker.java
@@ -4,7 +4,6 @@ import net.minecraft.client.font.TextRenderer;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.gui.tooltip.TooltipComponent;
import net.minecraft.client.gui.tooltip.TooltipPositioner;
-import net.minecraft.client.render.RenderLayer;
import net.minecraft.util.Identifier;
import org.jetbrains.annotations.Nullable;
@@ -12,14 +11,10 @@ import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.gen.Invoker;
import java.util.List;
-import java.util.function.Function;
@Mixin(DrawContext.class)
public interface DrawContextInvoker {
@Invoker
void invokeDrawTooltip(TextRenderer textRenderer, List<TooltipComponent> components, int x, int y, TooltipPositioner positioner, @Nullable Identifier texture);
-
- @Invoker
- void invokeDrawTexturedQuad(Function<Identifier, RenderLayer> renderLayers, Identifier texture, int x1, int x2, int y1, int y2, float u1, float u2, float v1, float v2, int color);
}
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/auction/AuctionBrowserScreen.java b/src/main/java/de/hysky/skyblocker/skyblock/auction/AuctionBrowserScreen.java
index 2625c3b6..f0908918 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/auction/AuctionBrowserScreen.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/auction/AuctionBrowserScreen.java
@@ -150,14 +150,14 @@ public class AuctionBrowserScreen extends AbstractCustomHypixelGUI<AuctionHouseS
// Scrollbar
if (prevPageVisible) {
if (onScrollbarTop(mouseX, mouseY))
- context.drawSprite(RenderLayer::getGuiTextured, UP_ARROW.get(), 159, 13, 6, 3);
- else context.drawSprite(RenderLayer::getGuiTextured, UP_ARROW.get(), 159, 13, 6, 3, ColorHelper.getArgb(137, 137, 137));
+ context.drawSpriteStretched(RenderLayer::getGuiTextured, UP_ARROW.get(), 159, 13, 6, 3);
+ else context.drawSpriteStretched(RenderLayer::getGuiTextured, UP_ARROW.get(), 159, 13, 6, 3, ColorHelper.getArgb(137, 137, 137));
}
if (nextPageVisible) {
if (onScrollbarBottom(mouseX, mouseY))
- context.drawSprite(RenderLayer::getGuiTextured, DOWN_ARROW.get(), 159, 72, 6, 3);
- else context.drawSprite(RenderLayer::getGuiTextured, DOWN_ARROW.get(), 159, 72, 6, 3, ColorHelper.getArgb(137, 137, 137));
+ context.drawSpriteStretched(RenderLayer::getGuiTextured, DOWN_ARROW.get(), 159, 72, 6, 3);
+ else context.drawSpriteStretched(RenderLayer::getGuiTextured, DOWN_ARROW.get(), 159, 72, 6, 3, ColorHelper.getArgb(137, 137, 137));
}
context.drawText(textRenderer, String.format("%d/%d", currentPage, totalPages), 111, 6, Colors.GRAY, false);
if (totalPages <= 1)
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/dwarven/GlaciteColdOverlay.java b/src/main/java/de/hysky/skyblocker/skyblock/dwarven/GlaciteColdOverlay.java
index c70038fd..9e6516b6 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/dwarven/GlaciteColdOverlay.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/dwarven/GlaciteColdOverlay.java
@@ -1,6 +1,5 @@
package de.hysky.skyblocker.skyblock.dwarven;
-import com.mojang.blaze3d.systems.RenderSystem;
import de.hysky.skyblocker.annotations.Init;
import de.hysky.skyblocker.config.SkyblockerConfigManager;
import de.hysky.skyblocker.utils.Utils;
@@ -58,7 +57,7 @@ public class GlaciteColdOverlay {
* @see InGameHud#renderOverlay as this is a carbon copy of it
*/
private static void renderOverlay(DrawContext context, Identifier texture, float opacity) {
- int i = ColorHelper.getWhite(opacity);
+ int white = ColorHelper.getWhite(opacity);
context.drawTexture(
RenderLayer::getGuiTexturedOverlay,
texture,
@@ -70,7 +69,7 @@ public class GlaciteColdOverlay {
context.getScaledWindowHeight(),
context.getScaledWindowWidth(),
context.getScaledWindowHeight(),
- i
+ white
);
}
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/events/EventToast.java b/src/main/java/de/hysky/skyblocker/skyblock/events/EventToast.java
index 75eae6c6..f261a13f 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/events/EventToast.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/events/EventToast.java
@@ -55,7 +55,6 @@ public class EventToast implements Toast {
drawTimer(context, 30, y);
context.drawItemWithoutEntity(icon, 8, getHeight()/2 - 8);
- //return startTime > 5_000 ? Visibility.HIDE: Visibility.SHOW;
}
protected int drawMessage(DrawContext context, int x, int y, int color) {
@@ -92,8 +91,6 @@ public class EventToast implements Toast {
public int getHeight() {
return Math.max(getInnerContentsHeight() + 12 + 2, 32);
}
-
- //FIXME no clue if this works as intended
@Override
public Visibility getVisibility() {
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/events/JacobEventToast.java b/src/main/java/de/hysky/skyblocker/skyblock/events/JacobEventToast.java
index e1b76c7a..39d5e4cf 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/events/JacobEventToast.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/events/JacobEventToast.java
@@ -54,6 +54,5 @@ public class JacobEventToast extends EventToast {
context.drawItemWithoutEntity(icon, 8, getHeight() / 2 - 8);
matrices.pop();
- //return startTime > 5_000 ? Visibility.HIDE : Visibility.SHOW;
}
}
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/item/ItemRarityBackgrounds.java b/src/main/java/de/hysky/skyblocker/skyblock/item/ItemRarityBackgrounds.java
index 9331362d..b771b067 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/item/ItemRarityBackgrounds.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/item/ItemRarityBackgrounds.java
@@ -97,7 +97,7 @@ public class ItemRarityBackgrounds {
RenderSystem.enableBlend();
RenderSystem.defaultBlendFunc();
- context.drawSprite(RenderLayer::getGuiTextured, SPRITE.get(), x, y, 16, 16, ColorHelper.fromFloats(SkyblockerConfigManager.get().general.itemInfoDisplay.itemRarityBackgroundsOpacity, rarity.r, rarity.g, rarity.b));
+ context.drawSpriteStretched(RenderLayer::getGuiTextured, SPRITE.get(), x, y, 16, 16, ColorHelper.fromFloats(SkyblockerConfigManager.get().general.itemInfoDisplay.itemRarityBackgroundsOpacity, rarity.r, rarity.g, rarity.b));
RenderSystem.disableBlend();
}
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/item/SkyblockCraftingTableScreen.java b/src/main/java/de/hysky/skyblocker/skyblock/item/SkyblockCraftingTableScreen.java
index 305bd023..1deb029a 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/item/SkyblockCraftingTableScreen.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/item/SkyblockCraftingTableScreen.java
@@ -57,8 +57,6 @@ public class SkyblockCraftingTableScreen extends HandledScreen<SkyblockCraftingT
this.addDrawableChild(moreCraftsButton);
}
assert (client != null ? client.player : null) != null;
- //FIXME remove this - it appears it is no longer the case that the recipe book replaces the screen handler in 1.21.2?
- client.player.currentScreenHandler = handler; // recipe book replaces it with the Dummy one fucking DUMBASS
this.addSelectableChild(this.recipeBook);
this.setInitialFocus(this.recipeBook);
this.titleX = 29;
@@ -67,7 +65,7 @@ public class SkyblockCraftingTableScreen extends HandledScreen<SkyblockCraftingT
@Override
public void handledScreenTick() {
super.handledScreenTick();
- //this.recipeBook.update();
+ this.recipeBook.update();
if (moreCraftsButton == null) return;
ItemStack stack = handler.slots.get(26).getStack();
moreCraftsButton.active = stack.isEmpty() || stack.isOf(Items.PLAYER_HEAD);
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/itemlist/ItemListWidget.java b/src/main/java/de/hysky/skyblocker/skyblock/itemlist/ItemListWidget.java
index db411e49..62458c0d 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/itemlist/ItemListWidget.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/itemlist/ItemListWidget.java
@@ -33,7 +33,7 @@ public class ItemListWidget /*extends RecipeBookWidget*/ {
private static int currentTab = 0;
- public ItemListWidget() {//AbstractCraftingRecipeBookWidget
+ public ItemListWidget() {
super();
}
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/itemlist/recipebook/SkyblockCraftingRecipeResults.java b/src/main/java/de/hysky/skyblocker/skyblock/itemlist/recipebook/SkyblockCraftingRecipeResults.java
index 8066764a..913107e5 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/itemlist/recipebook/SkyblockCraftingRecipeResults.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/itemlist/recipebook/SkyblockCraftingRecipeResults.java
@@ -110,7 +110,7 @@ public class SkyblockCraftingRecipeResults implements RecipeAreaDisplay {
if (this.nextPageButton.active) this.nextPageButton.render(context, mouseX, mouseY, delta);
}
- //TODO enable scissor
+ //TODO enable scissor?
private void drawRecipeDisplay(DrawContext context, TextRenderer textRenderer, int x, int y, int mouseX, int mouseY) {
//Render the "Craft Text" which is usually a requirement (e.g. Wolf Slayer 7)
String craftText = this.recipeResults.get(this.currentPage).getCraftText();
@@ -198,6 +198,8 @@ public class SkyblockCraftingRecipeResults implements RecipeAreaDisplay {
}
closeRecipeView();
+ } else {
+ hideShowPageButtons(); //This branch is called when the recipe book is reinitialized (usually from resizing)
}
}
@@ -242,6 +244,13 @@ public class SkyblockCraftingRecipeResults implements RecipeAreaDisplay {
}
}
+ hideShowPageButtons();
+ }
+
+ /**
+ * Hides or shows the page buttons.
+ */
+ private void hideShowPageButtons() {
//Show the previous page button if the page count is greater than 0
this.prevPageButton.active = this.currentPage > 0;
//Show the next page button if the current page is less than the highest possible page
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/itemlist/recipebook/SkyblockCraftingTab.java b/src/main/java/de/hysky/skyblocker/skyblock/itemlist/recipebook/SkyblockCraftingTab.java
index 7b912fc3..480c91df 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/itemlist/recipebook/SkyblockCraftingTab.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/itemlist/recipebook/SkyblockCraftingTab.java
@@ -5,6 +5,7 @@ import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
+import net.minecraft.util.math.MathHelper;
/**
* The Skyblock Crafting Tab which handles the mouse clicks & rendering for the results page and the search field.
@@ -34,7 +35,9 @@ record SkyblockCraftingTab(SkyblockRecipeBookWidget recipeBook, ItemStack icon,
return true;
} else {
if (recipeBook.searchField != null) {
- if (recipeBook.searchField.mouseClicked(mouseX, mouseY, button)) {
+ boolean magnifyingGlassClicked = recipeBook.searchFieldRect != null && recipeBook.searchFieldRect.contains(MathHelper.floor(mouseX), MathHelper.floor(mouseY));
+
+ if (magnifyingGlassClicked || recipeBook.searchField.mouseClicked(mouseX, mouseY, button)) {
results.closeRecipeView();
recipeBook.searchField.setFocused(true);
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/itemlist/recipebook/SkyblockRecipeBookWidget.java b/src/main/java/de/hysky/skyblocker/skyblock/itemlist/recipebook/SkyblockRecipeBookWidget.java
index b7af2913..4e920a1d 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/itemlist/recipebook/SkyblockRecipeBookWidget.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/itemlist/recipebook/SkyblockRecipeBookWidget.java
@@ -11,6 +11,8 @@ import de.hysky.skyblocker.mixins.accessors.RecipeBookWidgetAccessor;
import it.unimi.dsi.fastutil.Pair;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.DrawContext;
+import net.minecraft.client.gui.ScreenRect;
+import net.minecraft.client.gui.navigation.NavigationAxis;
import net.minecraft.client.gui.screen.narration.NarrationMessageBuilder;
import net.minecraft.client.gui.screen.recipebook.GhostRecipe;
import net.minecraft.client.gui.screen.recipebook.RecipeBookWidget;
@@ -66,6 +68,8 @@ public class SkyblockRecipeBookWidget extends RecipeBookWidget<NoopRecipeScreenH
this.searchField.setEditableColor(0xFFFFFF);
this.searchField.setText(defaultSearchText);
this.searchField.setPlaceholder(SEARCH_HINT_TEXT);
+ //This field's name is misleading, the rectangle is actually the area of the magnifying glass icon rather than the entire search field
+ this.searchFieldRect = ScreenRect.of(NavigationAxis.HORIZONTAL, left + 8, this.searchField.getY(), this.searchField.getX() - left, this.searchField.getHeight());
//Setup Tabs
this.tabButtons.clear();
@@ -100,10 +104,10 @@ public class SkyblockRecipeBookWidget extends RecipeBookWidget<NoopRecipeScreenH
public void render(DrawContext context, int mouseX, int mouseY, float delta) {
if (this.isOpen()) {
context.getMatrices().push();
- context.getMatrices().translate(0.0F, 0.0F, 100.0F);
+ context.getMatrices().translate(0.0f, 0.0f, 100.0f);
int left = accessor().invokeGetLeft();
int top = accessor().invokeGetTop();
- context.drawTexture(RenderLayer::getGuiTextured, TEXTURE, left, top, 1.0F, 1.0F, IMAGE_WIDTH, IMAGE_HEIGHT, 256, 256);
+ context.drawTexture(RenderLayer::getGuiTextured, TEXTURE, left, top, 1.0f, 1.0f, IMAGE_WIDTH, IMAGE_HEIGHT, 256, 256);
for (Pair<RecipeTab, SkyblockRecipeTabButton> tabButton : this.tabButtons) {
tabButton.right().render(context, mouseX, mouseY, delta);
@@ -187,11 +191,10 @@ public class SkyblockRecipeBookWidget extends RecipeBookWidget<NoopRecipeScreenH
return (RecipeBookWidgetAccessor) this;
}
- /**
- * No-op as we don't use this, the logic just crashes the game.
- */
@Override
- protected void refreshResults(boolean resetCurrentPage, boolean filteringCraftable) {}
+ protected void refreshResults(boolean resetCurrentPage, boolean filteringCraftable) {
+ this.currentTab.left().updateSearchResults(this.searchField.getText());
+ }
/**
* Sets the "Toggle Craftable" Button texture.
diff --git a/src/main/java/de/hysky/skyblocker/utils/render/RenderHelper.java b/src/main/java/de/hysky/skyblocker/utils/render/RenderHelper.java
index ae2ce7da..6debc355 100644
--- a/src/main/java/de/hysky/skyblocker/utils/render/RenderHelper.java
+++ b/src/main/java/de/hysky/skyblocker/utils/render/RenderHelper.java
@@ -5,7 +5,6 @@ import com.mojang.logging.LogUtils;
import de.hysky.skyblocker.SkyblockerMod;
import de.hysky.skyblocker.annotations.Init;
import de.hysky.skyblocker.mixins.accessors.BeaconBlockEntityRendererInvoker;
-import de.hysky.skyblocker.mixins.accessors.DrawContextInvoker;
import de.hysky.skyblocker.utils.Boxes;
import de.hysky.skyblocker.utils.render.culling.OcclusionCulling;
import de.hysky.skyblocker.utils.render.title.Title;
@@ -20,8 +19,6 @@ import net.minecraft.client.gl.ShaderProgramKeys;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.render.*;
import net.minecraft.client.render.VertexFormat.DrawMode;
-import net.minecraft.client.texture.Scaling;
-import net.minecraft.client.texture.Sprite;
import net.minecraft.client.util.BufferAllocator;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.client.world.ClientWorld;
@@ -405,65 +402,8 @@ public class RenderHelper {
return x >= x1 && x <= x2 && y >= y1 && y <= y2;
}
- private static void drawSprite(DrawContext context, Sprite sprite, int i, int j, int k, int l, int x, int y, int width, int height, int color) {
- if (width == 0 || height == 0) {
- return;
- }
- ((DrawContextInvoker) context).invokeDrawTexturedQuad(RenderLayer::getGuiTextured, sprite.getAtlasId(), x, x + width, y, y + height, sprite.getFrameU((float) k / (float) i), sprite.getFrameU((float) (k + width) / (float) i), sprite.getFrameV((float) l / (float) j), sprite.getFrameV((float) (l + height) / (float) j), color);
- }
-
- private static void drawSpriteTiled(DrawContext context, Sprite sprite, int x, int y, int width, int height, int i, int j, int tileWidth, int tileHeight, int k, int l, int color) {
- if (width <= 0 || height <= 0) {
- return;
- }
- if (tileWidth <= 0 || tileHeight <= 0) {
- throw new IllegalArgumentException("Tiled sprite texture size must be positive, got " + tileWidth + "x" + tileHeight);
- }
- for (int m = 0; m < width; m += tileWidth) {
- int n = Math.min(tileWidth, width - m);
- for (int o = 0; o < height; o += tileHeight) {
- int p = Math.min(tileHeight, height - o);
- drawSprite(context, sprite, k, l, i, j, x + m, y + o, n, p, color);
- }
- }
- }
-
public static void renderNineSliceColored(DrawContext context, Identifier texture, int x, int y, int width, int height, float red, float green, float blue, float alpha) {
- Sprite sprite = MinecraftClient.getInstance().getGuiAtlasManager().getSprite(texture);
- Scaling scaling = MinecraftClient.getInstance().getGuiAtlasManager().getScaling(sprite);
- if (!(scaling instanceof Scaling.NineSlice nineSlice)) return;
- Scaling.NineSlice.Border border = nineSlice.border();
-
- int color = ColorHelper.fromFloats(alpha, red, green, blue);
- int i = Math.min(border.left(), width / 2);
- int j = Math.min(border.right(), width / 2);
- int k = Math.min(border.top(), height / 2);
- int l = Math.min(border.bottom(), height / 2);
- if (width == nineSlice.width() && height == nineSlice.height()) {
- drawSprite(context, sprite, nineSlice.width(), nineSlice.height(), 0, 0, x, y, width, height, color);
- return;
- }
- if (height == nineSlice.height()) {
- drawSprite(context, sprite, nineSlice.width(), nineSlice.height(), 0, 0, x, y, i, height, color);
- drawSpriteTiled(context, sprite, x + i, y, width - j - i, height, i, 0, nineSlice.width() - j - i, nineSlice.height(), nineSlice.width(), nineSlice.height(), color);
- drawSprite(context, sprite, nineSlice.width(), nineSlice.height(), nineSlice.width() - j, 0, x + width - j, y, j, height, color);
- return;
- }
- if (width == nineSlice.width()) {
- drawSprite(context, sprite, nineSlice.width(), nineSlice.height(), 0, 0, x, y, width, k, color);
- drawSpriteTiled(context, sprite, x, y + k, width, height - l - k, 0, k, nineSlice.width(), nineSlice.height() - l - k, nineSlice.width(), nineSlice.height(), color);
- drawSprite(context, sprite, nineSlice.width(), nineSlice.height(), 0, nineSlice.height() - l, x, y + height - l, width, l, color);
- return;
- }
- drawSprite(context, sprite, nineSlice.width(), nineSlice.height(), 0, 0, x, y, i, k, color);
- drawSpriteTiled(context, sprite, x + i, y, width - j - i, k, i, 0, nineSlice.width() - j - i, k, nineSlice.width(), nineSlice.height(), color);
- drawSprite(context, sprite, nineSlice.width(), nineSlice.height(), nineSlice.width() - j, 0, x + width - j, y, j, k, color);
- drawSprite(context, sprite, nineSlice.width(), nineSlice.height(), 0, nineSlice.height() - l, x, y + height - l, i, l, color);
- drawSpriteTiled(context, sprite, x + i, y + height - l, width - j - i, l, i, nineSlice.height() - l, nineSlice.width() - j - i, l, nineSlice.width(), nineSlice.height(), color);
- drawSprite(context, sprite, nineSlice.width(), nineSlice.height(), nineSlice.width() - j, nineSlice.height() - l, x + width - j, y + height - l, j, l, color);
- drawSpriteTiled(context, sprite, x, y + k, i, height - l - k, 0, k, i, nineSlice.height() - l - k, nineSlice.width(), nineSlice.height(), color);
- drawSpriteTiled(context, sprite, x + i, y + k, width - j - i, height - l - k, i, k, nineSlice.width() - j - i, nineSlice.height() - l - k, nineSlice.width(), nineSlice.height(), color);
- drawSpriteTiled(context, sprite, x + width - j, y + k, i, height - l - k, nineSlice.width() - j, k, j, nineSlice.height() - l - k, nineSlice.width(), nineSlice.height(), color);
+ context.drawGuiTexture(RenderLayer::getGuiTextured, texture, x, y, width, height, ColorHelper.fromFloats(alpha, red, green, blue));
}
private static final float[] colorBuffer = new float[4];
@@ -482,8 +422,7 @@ public class RenderHelper {
MethodType mt = MethodType.methodType(void.class, Runnable.class);
return lookup.findStatic(deferredTaskClass, "schedule", mt);
- } catch (Throwable ignored) {
- }
+ } catch (Throwable ignored) {}
return null;
}