diff options
| author | Unknown <shekwancheung0528@gmail.com> | 2019-04-13 15:40:23 +0800 |
|---|---|---|
| committer | Unknown <shekwancheung0528@gmail.com> | 2019-04-13 15:40:23 +0800 |
| commit | 2570a35b35ec29b6677e318f2bf3d5b6640bf106 (patch) | |
| tree | 28a69c3180b5f875cb931b154ee3718d96067e17 /src/main/java | |
| parent | 41998600e53f941554c8d73790180c13a2e5663c (diff) | |
| download | RoughlyEnoughItems-2570a35b35ec29b6677e318f2bf3d5b6640bf106.tar.gz RoughlyEnoughItems-2570a35b35ec29b6677e318f2bf3d5b6640bf106.tar.bz2 RoughlyEnoughItems-2570a35b35ec29b6677e318f2bf3d5b6640bf106.zip | |
v2.7.3 Bug fixes
Fix #56
Diffstat (limited to 'src/main/java')
32 files changed, 228 insertions, 261 deletions
diff --git a/src/main/java/me/shedaniel/rei/api/RecipeCategory.java b/src/main/java/me/shedaniel/rei/api/RecipeCategory.java index b0756a087..80b7aa167 100644 --- a/src/main/java/me/shedaniel/rei/api/RecipeCategory.java +++ b/src/main/java/me/shedaniel/rei/api/RecipeCategory.java @@ -1,6 +1,7 @@ package me.shedaniel.rei.api; import me.shedaniel.rei.gui.RecipeViewingScreen; +import me.shedaniel.rei.gui.widget.CategoryBaseWidget; import me.shedaniel.rei.gui.widget.RecipeBaseWidget; import me.shedaniel.rei.gui.widget.Widget; import net.minecraft.client.gui.DrawableHelper; @@ -26,7 +27,7 @@ public interface RecipeCategory<T extends RecipeDisplay> { } default void drawCategoryBackground(Rectangle bounds, int mouseX, int mouseY, float delta) { - new RecipeBaseWidget(bounds).render(); + new CategoryBaseWidget(bounds).render(); DrawableHelper.fill(bounds.x + 17, bounds.y + 5, bounds.x + bounds.width - 17, bounds.y + 17, RecipeViewingScreen.SUB_COLOR.getRGB()); DrawableHelper.fill(bounds.x + 17, bounds.y + 21, bounds.x + bounds.width - 17, bounds.y + 33, RecipeViewingScreen.SUB_COLOR.getRGB()); } diff --git a/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java b/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java index 3bad4263d..ff7e325b9 100644 --- a/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java +++ b/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java @@ -519,10 +519,8 @@ public class ContainerScreenOverlay extends AbstractParentElement implements Dra @Override public boolean mouseClicked(double double_1, double double_2, int int_1) { - if (isVisible() && getBounds().contains(double_1, double_2) && int_1 == 1) { + if (isVisible() && getBounds().contains(double_1, double_2) && int_1 == 1) setText(""); - return true; - } return super.mouseClicked(double_1, double_2, int_1); } diff --git a/src/main/java/me/shedaniel/rei/gui/RecipeViewingScreen.java b/src/main/java/me/shedaniel/rei/gui/RecipeViewingScreen.java index 4555d5bff..b643e2c51 100644 --- a/src/main/java/me/shedaniel/rei/gui/RecipeViewingScreen.java +++ b/src/main/java/me/shedaniel/rei/gui/RecipeViewingScreen.java @@ -94,8 +94,8 @@ public class RecipeViewingScreen extends Screen { } if (choosePageActivated) return recipeChoosePageWidget.keyPressed(int_1, int_2, int_3); - for(Widget widget : widgets) - if (widget.keyPressed(int_1, int_2, int_3)) + for(Element element : children()) + if (element.keyPressed(int_1, int_2, int_3)) return true; return super.keyPressed(int_1, int_2, int_3); } @@ -314,7 +314,7 @@ public class RecipeViewingScreen extends Screen { if (selectedCategory != null) selectedCategory.drawCategoryBackground(bounds, mouseX, mouseY, delta); else { - new RecipeBaseWidget(bounds).render(); + new CategoryBaseWidget(bounds).render(); fill(bounds.x + 17, bounds.y + 5, bounds.x + bounds.width - 17, bounds.y + 17, SUB_COLOR.getRGB()); fill(bounds.x + 17, bounds.y + 21, bounds.x + bounds.width - 17, bounds.y + 33, SUB_COLOR.getRGB()); } diff --git a/src/main/java/me/shedaniel/rei/gui/config/ItemListOrderingConfig.java b/src/main/java/me/shedaniel/rei/gui/config/ItemListOrderingConfig.java new file mode 100644 index 000000000..7dbb40042 --- /dev/null +++ b/src/main/java/me/shedaniel/rei/gui/config/ItemListOrderingConfig.java @@ -0,0 +1,34 @@ +package me.shedaniel.rei.gui.config; + +import me.shedaniel.rei.client.ItemListOrdering; +import net.minecraft.client.resource.language.I18n; + +public enum ItemListOrderingConfig { + REGISTRY_ASCENDING(ItemListOrdering.registry, true), NAME_ASCENDING(ItemListOrdering.name, true), GROUPS_ASCENDING(ItemListOrdering.item_groups, true), REGISTRY_DESCENDING(ItemListOrdering.registry, false), NAME_DESCENDING(ItemListOrdering.name, false), GROUPS_DESCENDING(ItemListOrdering.item_groups, false); + + private ItemListOrdering ordering; + private boolean isAscending; + + ItemListOrderingConfig(ItemListOrdering ordering, boolean isAscending) { + this.ordering = ordering; + this.isAscending = isAscending; + } + + public static ItemListOrderingConfig from(ItemListOrdering ordering, boolean isAscending) { + int index = ordering.ordinal() + (isAscending ? 0 : 3); + return values()[index]; + } + + public ItemListOrdering getOrdering() { + return ordering; + } + + public boolean isAscending() { + return isAscending; + } + + @Override + public String toString() { + return I18n.translate("text.rei.config.list_ordering_button", I18n.translate(getOrdering().getNameTranslationKey()), I18n.translate(isAscending ? "ordering.rei.ascending" : "ordering.rei.descending")); + } +} diff --git a/src/main/java/me/shedaniel/rei/gui/config/ItemListOrderingEntry.java b/src/main/java/me/shedaniel/rei/gui/config/ItemListOrderingEntry.java deleted file mode 100644 index f70d1be88..000000000 --- a/src/main/java/me/shedaniel/rei/gui/config/ItemListOrderingEntry.java +++ /dev/null @@ -1,90 +0,0 @@ -package me.shedaniel.rei.gui.config; - -import com.google.common.collect.Lists; -import me.shedaniel.cloth.gui.ClothConfigScreen.ListEntry; -import me.shedaniel.rei.RoughlyEnoughItemsCore; -import me.shedaniel.rei.client.ItemListOrdering; -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.gui.Element; -import net.minecraft.client.gui.widget.ButtonWidget; -import net.minecraft.client.resource.language.I18n; -import net.minecraft.client.util.Window; -import net.minecraft.util.Pair; - -import java.util.Arrays; -import java.util.List; -import java.util.Optional; -import java.util.concurrent.atomic.AtomicReference; - -public class ItemListOrderingEntry extends ListEntry { - private AtomicReference<Pair<ItemListOrdering, Boolean>> value; - private ButtonWidget buttonWidget; - private ButtonWidget resetButton; - private List<Element> widgets; - - public ItemListOrderingEntry(String fieldName, Pair<ItemListOrdering, Boolean> val) { - super(fieldName); - this.value = new AtomicReference(val); - this.buttonWidget = new ButtonWidget(0, 0, 150, 20, "", widget -> { - int index = Arrays.asList(ItemListOrdering.values()).indexOf(value.get().getLeft()) + 1; - boolean currentAscending = value.get().getRight(); - if (index >= ItemListOrdering.values().length) { - index = 0; - currentAscending = !currentAscending; - } - ItemListOrderingEntry.this.value.set(new Pair<>(ItemListOrdering.values()[index], currentAscending)); - getScreen().setEdited(true); - }); - this.resetButton = new ButtonWidget(0, 0, MinecraftClient.getInstance().textRenderer.getStringWidth(I18n.translate("text.cloth.reset_value")) + 6, 20, I18n.translate("text.cloth.reset_value"), (widget) -> { - this.value.set((Pair) getDefaultValue().get()); - getScreen().setEdited(true); - }); - this.widgets = Lists.newArrayList(this.buttonWidget, this.resetButton); - } - - public Object getObject() { - return this.value.get(); - } - - @Override - public Optional<Object> getDefaultValue() { - return Optional.of(new Pair<>(ItemListOrdering.registry, true)); - } - - @Override - public void render(int index, int y, int x, int entryWidth, int entryHeight, int mouseX, int mouseY, boolean isSelected, float delta) { - Window window = MinecraftClient.getInstance().window; - this.resetButton.active = this.getDefaultValue().isPresent() && (((Pair<ItemListOrdering, Boolean>) this.getDefaultValue().get()).getLeft() != this.value.get().getLeft() || ((Pair<ItemListOrdering, Boolean>) this.getDefaultValue().get()).getRight().booleanValue() != this.value.get().getRight().booleanValue()); - this.resetButton.y = y; - this.buttonWidget.y = y; - this.buttonWidget.setMessage(I18n.translate("text.rei.config.list_ordering_button", I18n.translate(value.get().getLeft().getNameTranslationKey()), I18n.translate(value.get().getRight() ? "ordering.rei.ascending" : "ordering.rei.descending"))); - if (MinecraftClient.getInstance().textRenderer.isRightToLeft()) { - MinecraftClient.getInstance().textRenderer.drawWithShadow(I18n.translate(this.getFieldName(), new Object[0]), (float) (window.getScaledWidth() - x - MinecraftClient.getInstance().textRenderer.getStringWidth(I18n.translate(this.getFieldName(), new Object[0]))), (float) (y + 5), 16777215); - this.resetButton.x = x; - this.buttonWidget.x = x + this.resetButton.getWidth() + 2; - this.buttonWidget.setWidth(150 - this.resetButton.getWidth() - 2); - } else { - MinecraftClient.getInstance().textRenderer.drawWithShadow(I18n.translate(this.getFieldName(), new Object[0]), (float) x, (float) (y + 5), 16777215); - this.resetButton.x = window.getScaledWidth() - x - this.resetButton.getWidth(); - this.buttonWidget.x = window.getScaledWidth() - x - 150; - this.buttonWidget.setWidth(150 - this.resetButton.getWidth() - 2); - } - this.buttonWidget.render(mouseX, mouseY, delta); - this.resetButton.render(mouseX, mouseY, delta); - } - - public String getYesNoText(boolean bool) { - return bool ? "§aYes" : "§cNo"; - } - - @Override - public List<? extends Element> children() { - return widgets; - } - - @Override - public void save() { - RoughlyEnoughItemsCore.getConfigManager().getConfig().itemListOrdering = value.get().getLeft(); - RoughlyEnoughItemsCore.getConfigManager().getConfig().isAscending = value.get().getRight(); - } -} diff --git a/src/main/java/me/shedaniel/rei/gui/credits/CreditsEntryListWidget.java b/src/main/java/me/shedaniel/rei/gui/credits/CreditsEntryListWidget.java index 2ef5e7a39..451f05128 100644 --- a/src/main/java/me/shedaniel/rei/gui/credits/CreditsEntryListWidget.java +++ b/src/main/java/me/shedaniel/rei/gui/credits/CreditsEntryListWidget.java @@ -1,9 +1,10 @@ package me.shedaniel.rei.gui.credits; import net.minecraft.client.MinecraftClient; -import net.minecraft.client.gui.widget.ItemListWidget; +import net.minecraft.client.gui.menu.AlwaysSelectedItemListWidget; +import net.minecraft.text.TextComponent; -public class CreditsEntryListWidget extends ItemListWidget<CreditsItem> { +public class CreditsEntryListWidget extends AlwaysSelectedItemListWidget<CreditsEntryListWidget.CreditsItem> { public CreditsEntryListWidget(MinecraftClient client, int width, int height, int startY, int endY, int entryHeight) { super(client, width, height, startY, endY, entryHeight); @@ -32,4 +33,21 @@ public class CreditsEntryListWidget extends ItemListWidget<CreditsItem> { return width - 40; } + public static class CreditsItem extends AlwaysSelectedItemListWidget.class_4281<CreditsItem> { + private String text; + + public CreditsItem(TextComponent textComponent) { + this(textComponent.getFormattedText()); + } + + public CreditsItem(String text) { + this.text = text; + } + + @Override + public void render(int index, int y, int x, int entryWidth, int entryHeight, int mouseX, int mouseY, boolean isSelected, float delta) { + MinecraftClient.getInstance().textRenderer.drawWithShadow(text, x + 5, y + 5, -1); + } + } + } diff --git a/src/main/java/me/shedaniel/rei/gui/credits/CreditsItem.java b/src/main/java/me/shedaniel/rei/gui/credits/CreditsItem.java deleted file mode 100644 index 0c7c1f8ce..000000000 --- a/src/main/java/me/shedaniel/rei/gui/credits/CreditsItem.java +++ /dev/null @@ -1,24 +0,0 @@ -package me.shedaniel.rei.gui.credits; - -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.gui.widget.ItemListWidget; -import net.minecraft.text.TextComponent; - -public class CreditsItem extends ItemListWidget.Item<CreditsItem> { - - private String text; - - public CreditsItem(TextComponent textComponent) { - this(textComponent.getFormattedText()); - } - - public CreditsItem(String text) { - this.text = text; - } - - @Override - public void render(int index, int y, int x, int entryWidth, int entryHeight, int mouseX, int mouseY, boolean isSelected, float delta) { - MinecraftClient.getInstance().textRenderer.drawWithShadow(text, x + 5, y + 5, -1); - } - -} diff --git a/src/main/java/me/shedaniel/rei/gui/credits/CreditsScreen.java b/src/main/java/me/shedaniel/rei/gui/credits/CreditsScreen.java index b09ca2fa1..bc780b53f 100644 --- a/src/main/java/me/shedaniel/rei/gui/credits/CreditsScreen.java +++ b/src/main/java/me/shedaniel/rei/gui/credits/CreditsScreen.java @@ -1,6 +1,7 @@ package me.shedaniel.rei.gui.credits; import me.shedaniel.rei.client.ScreenHelper; +import me.shedaniel.rei.gui.credits.CreditsEntryListWidget.CreditsItem; import me.shedaniel.rei.gui.widget.ButtonWidget; import net.minecraft.client.gui.ContainerScreen; import net.minecraft.client.gui.Screen; @@ -48,7 +49,7 @@ public class CreditsScreen extends Screen { @Override public boolean mouseScrolled(double double_1, double double_2, double double_3) { - if (entryListWidget.mouseScrolled(double_1, double_2, double_3)) + if (entryListWidget.mouseScrolled(double_1, double_2, double_3 * 3)) return true; return super.mouseScrolled(double_1, double_2, double_3); } @@ -59,6 +60,7 @@ public class CreditsScreen extends Screen { this.entryListWidget.render(int_1, int_2, float_1); this.drawCenteredString(this.font, I18n.translate("text.rei.credits"), this.width / 2, 16, 16777215); super.render(int_1, int_2, float_1); + buttonDone.render(int_1, int_2, float_1); } } diff --git a/src/main/java/me/shedaniel/rei/gui/widget/ButtonWidget.java b/src/main/java/me/shedaniel/rei/gui/widget/ButtonWidget.java index f1a3d41b1..03c8a0b96 100644 --- a/src/main/java/me/shedaniel/rei/gui/widget/ButtonWidget.java +++ b/src/main/java/me/shedaniel/rei/gui/widget/ButtonWidget.java @@ -3,7 +3,6 @@ package me.shedaniel.rei.gui.widget; import com.mojang.blaze3d.platform.GlStateManager; import me.shedaniel.rei.client.ScreenHelper; import net.minecraft.client.audio.PositionedSoundInstance; -import net.minecraft.client.font.TextRenderer; import net.minecraft.client.gui.Element; import net.minecraft.client.gui.widget.AbstractButtonWidget; import net.minecraft.sound.SoundEvents; @@ -58,7 +57,6 @@ public abstract class ButtonWidget extends HighlightableWidget { @Override public void render(int mouseX, int mouseY, float delta) { int x = bounds.x, y = bounds.y, width = bounds.width, height = bounds.height; - TextRenderer textRenderer = minecraft.textRenderer; minecraft.getTextureManager().bindTexture(AbstractButtonWidget.WIDGETS_LOCATION); GlStateManager.color4f(1.0F, 1.0F, 1.0F, 1.0F); int textureOffset = this.getTextureId(isHovered(mouseX, mouseY)); @@ -87,7 +85,7 @@ public abstract class ButtonWidget extends HighlightableWidget { colour = 16777120; } - this.drawCenteredString(textRenderer, this.text, x + width / 2, y + (height - 8) / 2, colour); + this.drawCenteredString(font, text, x + width / 2, y + (height - 8) / 2, colour); if (getTooltips().isPresent()) if (!focused && isHighlighted(mouseX, mouseY)) diff --git a/src/main/java/me/shedaniel/rei/gui/widget/CategoryBaseWidget.java b/src/main/java/me/shedaniel/rei/gui/widget/CategoryBaseWidget.java new file mode 100644 index 000000000..68cf078c9 --- /dev/null +++ b/src/main/java/me/shedaniel/rei/gui/widget/CategoryBaseWidget.java @@ -0,0 +1,16 @@ +package me.shedaniel.rei.gui.widget; + +import java.awt.*; + +public class CategoryBaseWidget extends RecipeBaseWidget { + + public CategoryBaseWidget(Rectangle bounds) { + super(bounds); + } + + @Override + protected int getTextureOffset() { + return 66; + } + +} diff --git a/src/main/java/me/shedaniel/rei/gui/widget/ClickableLabelWidget.java b/src/main/java/me/shedaniel/rei/gui/widget/ClickableLabelWidget.java index db43fbafc..43c11bc92 100644 --- a/src/main/java/me/shedaniel/rei/gui/widget/ClickableLabelWidget.java +++ b/src/main/java/me/shedaniel/rei/gui/widget/ClickableLabelWidget.java @@ -19,7 +19,7 @@ public abstract class ClickableLabelWidget extends LabelWidget { int colour = -1; if (isHovered(mouseX, mouseY)) colour = hoveredColor; - drawCenteredString(textRenderer, (isHovered(mouseX, mouseY) ? "§n" : "") + text, x, y, colour); + drawCenteredString(font, (isHovered(mouseX, mouseY) ? "§n" : "") + text, x, y, colour); if (getTooltips().isPresent()) if (!focused && isHighlighted(mouseX, mouseY)) ScreenHelper.getLastOverlay().addTooltip(QueuedTooltip.create(getTooltips().get().split("\n"))); diff --git a/src/main/java/me/shedaniel/rei/gui/widget/CraftableToggleButtonWidget.java b/src/main/java/me/shedaniel/rei/gui/widget/CraftableToggleButtonWidget.java index a49ea8dd1..e635f6b54 100644 --- a/src/main/java/me/shedaniel/rei/gui/widget/CraftableToggleButtonWidget.java +++ b/src/main/java/me/shedaniel/rei/gui/widget/CraftableToggleButtonWidget.java @@ -39,8 +39,9 @@ public abstract class CraftableToggleButtonWidget extends ButtonWidget { GuiLighting.disable(); MinecraftClient.getInstance().getTextureManager().bindTexture(CHEST_GUI_TEXTURE); GlStateManager.color4f(1.0F, 1.0F, 1.0F, 1.0F); - this.blitOffset += 100; - this.blit(getBounds().x, getBounds().y, (56 + (RoughlyEnoughItemsCore.getConfigManager().isCraftableOnlyEnabled() ? 0 : 20)), 202, 20, 20); + int color = RoughlyEnoughItemsCore.getConfigManager().isCraftableOnlyEnabled() ? 939579655 : 956235776; + this.blitOffset += 100f; + this.fillGradient(getBounds().x, getBounds().y, getBounds().x + getBounds().width, getBounds().y + getBounds().height, color, color); this.blitOffset = 0; } diff --git a/src/main/java/me/shedaniel/rei/gui/widget/DraggableWidget.java b/src/main/java/me/shedaniel/rei/gui/widget/DraggableWidget.java index 65b07728d..afcec07f7 100644 --- a/src/main/java/me/shedaniel/rei/gui/widget/DraggableWidget.java +++ b/src/main/java/me/shedaniel/rei/gui/widget/DraggableWidget.java @@ -45,7 +45,7 @@ public abstract class DraggableWidget extends HighlightableWidget { dragged = true; } } else { - Window window = MinecraftClient.getInstance().window; + Window window = minecraft.window; midPoint = processMidPoint(midPoint, mouse, startPoint, window, relateX, relateY); updateWidgets(midPoint); } diff --git a/src/main/java/me/shedaniel/rei/gui/widget/ItemSlotWidget.java b/src/main/java/me/shedaniel/rei/gui/widget/ItemSlotWidget.java index 0ec150ed3..44895525e 100644 --- a/src/main/java/me/shedaniel/rei/gui/widget/ItemSlotWidget.java +++ b/src/main/java/me/shedaniel/rei/gui/widget/ItemSlotWidget.java @@ -69,7 +69,7 @@ public class ItemSlotWidget extends HighlightableWidget { GlStateManager.disableLighting(); GlStateManager.disableDepthTest(); GlStateManager.colorMask(true, true, true, false); - fill(x, y, x + 16, y + 16, -2130706433); + fillGradient(x, y, x + 16, y + 16, -2130706433, -2130706433); GlStateManager.colorMask(true, true, true, true); GlStateManager.enableLighting(); GlStateManager.enableDepthTest(); @@ -81,7 +81,7 @@ public class ItemSlotWidget extends HighlightableWidget { ItemRenderer itemRenderer = minecraft.getItemRenderer(); itemRenderer.zOffset = 200.0F; itemRenderer.renderGuiItem(itemStack, x, y); - itemRenderer.renderGuiItemOverlay(minecraft.textRenderer, itemStack, x, y, getItemCountOverlay(itemStack)); + itemRenderer.renderGuiItemOverlay(font, itemStack, x, y, getItemCountOverlay(itemStack)); itemRenderer.zOffset = 0.0F; } if (!itemStack.isEmpty() && isHighlighted(mouseX, mouseY) && showToolTips) diff --git a/src/main/java/me/shedaniel/rei/gui/widget/LabelWidget.java b/src/main/java/me/shedaniel/rei/gui/widget/LabelWidget.java index f452dc472..40b84b811 100644 --- a/src/main/java/me/shedaniel/rei/gui/widget/LabelWidget.java +++ b/src/main/java/me/shedaniel/rei/gui/widget/LabelWidget.java @@ -12,18 +12,16 @@ public class LabelWidget extends HighlightableWidget { public int x; public int y; public String text; - protected TextRenderer textRenderer; public LabelWidget(int x, int y, String text) { this.x = x; this.y = y; this.text = text; - this.textRenderer = minecraft.textRenderer; } @Override public Rectangle getBounds() { - int width = textRenderer.getStringWidth(text); + int width = font.getStringWidth(text); return new Rectangle(x - width / 2 - 1, y - 5, width + 2, 14); } @@ -34,7 +32,7 @@ public class LabelWidget extends HighlightableWidget { @Override public void render(int mouseX, int mouseY, float delta) { - drawCenteredString(textRenderer, text, x, y, -1); + drawCenteredString(font, text, x, y, -1); } } diff --git a/src/main/java/me/shedaniel/rei/gui/widget/RecipeBaseWidget.java b/src/main/java/me/shedaniel/rei/gui/widget/RecipeBaseWidget.java index 72b042f63..5d4341fdb 100644 --- a/src/main/java/me/shedaniel/rei/gui/widget/RecipeBaseWidget.java +++ b/src/main/java/me/shedaniel/rei/gui/widget/RecipeBaseWidget.java @@ -1,10 +1,8 @@ package me.shedaniel.rei.gui.widget; import com.mojang.blaze3d.platform.GlStateManager; -import net.minecraft.client.MinecraftClient; import net.minecraft.client.render.GuiLighting; import net.minecraft.util.Identifier; -import net.minecraft.util.math.MathHelper; import java.awt.*; import java.util.Collections; @@ -19,6 +17,8 @@ public class RecipeBaseWidget extends HighlightableWidget { public RecipeBaseWidget(Rectangle bounds) { this.bounds = bounds; + if (bounds.width < 8 || bounds.height < 8) + throw new IllegalArgumentException("Base too small, at least 8x8!"); } @Override @@ -39,26 +39,33 @@ public class RecipeBaseWidget extends HighlightableWidget { public void render(int mouseX, int mouseY, float delta) { GlStateManager.color4f(1.0F, 1.0F, 1.0F, 1.0F); GuiLighting.disable(); - MinecraftClient.getInstance().getTextureManager().bindTexture(CHEST_GUI_TEXTURE); - blit(bounds.x, bounds.y, 106, 190, bounds.width / 2, bounds.height / 2); - blit(bounds.x + bounds.width / 2, bounds.y, 256 - bounds.width / 2, 190, bounds.width / 2, bounds.height / 2); - blit(bounds.x, bounds.y + bounds.height / 2, 106, 190 + 66 - bounds.height / 2, bounds.width / 2, bounds.height / 2); - blit(bounds.x + bounds.width / 2, bounds.y + bounds.height / 2, 256 - bounds.width / 2, 190 + 66 - bounds.height / 2, bounds.width / 2, bounds.height / 2); - if (bounds.height > 40) - for(int i = 20; i < bounds.height - 20; i += MathHelper.clamp(20, 0, bounds.height - 20 - i)) { - int height = MathHelper.clamp(20, 0, bounds.height - 20 - i); - blit(bounds.x, bounds.y + i, 106, 230, bounds.width / 2, height); - blit(bounds.x + bounds.width / 2, bounds.y + i, 256 - bounds.width / 2, 210, bounds.width / 2, height); - } - if (bounds.width > 40) - for(int i = 20; i < bounds.width - 20; i += MathHelper.clamp(40, 0, bounds.width - 20 - i)) { - int width = MathHelper.clamp(40, 0, bounds.width - 20 - i); - GlStateManager.color4f(1.0F, 1.0F, 1.0F, 1.0F); - GuiLighting.disable(); - blit(bounds.x + i, bounds.y, 113, 190, width, MathHelper.clamp(4, 0, bounds.height / 2)); - blit(bounds.x + i, bounds.y + bounds.height - 4, 113, 252, width, MathHelper.clamp(4, 0, bounds.height / 2)); - fill(bounds.x + i, bounds.y + 4, bounds.x + i + width, bounds.y + bounds.height - 4, INNER_COLOR.getRGB()); - } + minecraft.getTextureManager().bindTexture(CHEST_GUI_TEXTURE); + int x = bounds.x, y = bounds.y, width = bounds.width, height = bounds.height; + int textureOffset = getTextureOffset(); + + //Four Corners + this.blit(x, y, 106, 124 + textureOffset, 4, 4); + this.blit(x + width - 4, y, 252, 124 + textureOffset, 4, 4); + this.blit(x, y + height - 4, 106, 186 + textureOffset, 4, 4); + this.blit(x + width - 4, y + height - 4, 252, 186 + textureOffset, 4, 4); + + //Sides + for(int xx = 4; xx < width - 4; xx += 128) { + int thisWidth = Math.min(128, width - 4 - xx); + this.blit(x + xx, y, 110, 124 + textureOffset, thisWidth, 4); + |
