diff options
| author | Unknown <shekwancheung0528@gmail.com> | 2019-03-30 20:21:18 +0800 |
|---|---|---|
| committer | Unknown <shekwancheung0528@gmail.com> | 2019-03-30 20:21:18 +0800 |
| commit | 16e35bc7ddb5924008be5be1b60db29d461d72b5 (patch) | |
| tree | 6b4405a47f6a902f4900e72d140304e3524ee0b5 /src/main/java/me | |
| parent | d5b270a829f5488ba6ab72778745da1f64769ff8 (diff) | |
| download | RoughlyEnoughItems-16e35bc7ddb5924008be5be1b60db29d461d72b5.tar.gz RoughlyEnoughItems-16e35bc7ddb5924008be5be1b60db29d461d72b5.tar.bz2 RoughlyEnoughItems-16e35bc7ddb5924008be5be1b60db29d461d72b5.zip | |
Using Cloth events instead of overwriting methods
Diffstat (limited to 'src/main/java/me')
30 files changed, 263 insertions, 280 deletions
diff --git a/src/main/java/me/shedaniel/rei/api/TabGetter.java b/src/main/java/me/shedaniel/rei/api/TabGetter.java deleted file mode 100644 index 8afe43f30..000000000 --- a/src/main/java/me/shedaniel/rei/api/TabGetter.java +++ /dev/null @@ -1,5 +0,0 @@ -package me.shedaniel.rei.api; - -public interface TabGetter { - int rei_getSelectedTab(); -} diff --git a/src/main/java/me/shedaniel/rei/client/RecipeHelperImpl.java b/src/main/java/me/shedaniel/rei/client/RecipeHelperImpl.java index 539897376..52f5721a8 100644 --- a/src/main/java/me/shedaniel/rei/client/RecipeHelperImpl.java +++ b/src/main/java/me/shedaniel/rei/client/RecipeHelperImpl.java @@ -167,7 +167,7 @@ public class RecipeHelperImpl implements RecipeHelper { plugins.sort((first, second) -> { return second.getPriority() - first.getPriority(); }); - RoughlyEnoughItemsCore.LOGGER.info("Loading %d REI plugins: %s", plugins.size(), String.join(", ", plugins.stream().map(plugin -> { + RoughlyEnoughItemsCore.LOGGER.info("[REI] Loading %d plugins: %s", plugins.size(), String.join(", ", plugins.stream().map(plugin -> { return RoughlyEnoughItemsCore.getPluginIdentifier(plugin).map(Identifier::toString).orElseGet(() -> "null"); }).collect(Collectors.toList()))); Collections.reverse(plugins); @@ -184,8 +184,8 @@ public class RecipeHelperImpl implements RecipeHelper { if (pluginDisabler.isFunctionEnabled(identifier, PluginFunction.REGISTER_SPEED_CRAFT)) plugin.registerSpeedCraft(this); }); - RoughlyEnoughItemsCore.LOGGER.info("Registered REI Categories: " + String.join(", ", categories.stream().map(RecipeCategory::getCategoryName).collect(Collectors.toList()))); - RoughlyEnoughItemsCore.LOGGER.info("Registered %d recipes for REI.", recipeCount.get()); + RoughlyEnoughItemsCore.LOGGER.info("[REI] Registered Categories: " + String.join(", ", categories.stream().map(RecipeCategory::getCategoryName).collect(Collectors.toList()))); + RoughlyEnoughItemsCore.LOGGER.info("[REI] Registered %d recipes.", recipeCount.get()); } @Override diff --git a/src/main/java/me/shedaniel/rei/client/ScreenHelper.java b/src/main/java/me/shedaniel/rei/client/ScreenHelper.java index fa109b98d..a0bb52ae4 100644 --- a/src/main/java/me/shedaniel/rei/client/ScreenHelper.java +++ b/src/main/java/me/shedaniel/rei/client/ScreenHelper.java @@ -1,7 +1,6 @@ package me.shedaniel.rei.client; import com.google.common.collect.Lists; -import me.shedaniel.rei.RoughlyEnoughItemsCore; import me.shedaniel.rei.gui.ContainerScreenOverlay; import me.shedaniel.rei.gui.widget.TextFieldWidget; import me.shedaniel.rei.listeners.ContainerScreenHooks; @@ -9,9 +8,6 @@ import net.fabricmc.api.ClientModInitializer; import net.fabricmc.fabric.api.event.client.ClientTickCallback; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.ContainerScreen; -import net.minecraft.client.gui.InputListener; -import net.minecraft.client.gui.widget.ButtonWidget; -import net.minecraft.client.gui.widget.RecipeBookButtonWidget; import net.minecraft.client.util.Window; import net.minecraft.item.ItemStack; import org.apache.logging.log4j.util.TriConsumer; @@ -47,16 +43,6 @@ public class ScreenHelper implements ClientModInitializer { return getLastOverlay(false, false); } - public static void disableRecipeBook(ContainerScreen lastContainerScreen, List<InputListener> listeners, List<ButtonWidget> buttonWidgets) { - RoughlyEnoughItemsCore.LOGGER.info("%d %d", listeners.size(), buttonWidgets.size()); - for(InputListener listener : listeners) - if (listener instanceof RecipeBookButtonWidget) - listeners.remove(listener); - for(ButtonWidget buttonWidget : buttonWidgets) - if (buttonWidget instanceof RecipeBookButtonWidget) - buttonWidgets.remove(buttonWidget); - } - public static ContainerScreen getLastContainerScreen() { return lastContainerScreen; } diff --git a/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java b/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java index ecbd9c481..1963f7f4c 100644 --- a/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java +++ b/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java @@ -10,10 +10,7 @@ import me.shedaniel.rei.client.Weather; import me.shedaniel.rei.gui.widget.*; import net.minecraft.client.MinecraftClient; import net.minecraft.client.audio.PositionedSoundInstance; -import net.minecraft.client.gui.ContainerScreen; -import net.minecraft.client.gui.InputListener; -import net.minecraft.client.gui.Screen; -import net.minecraft.client.gui.ScreenComponent; +import net.minecraft.client.gui.*; import net.minecraft.client.render.GuiLighting; import net.minecraft.client.resource.language.I18n; import net.minecraft.client.util.Window; @@ -32,7 +29,7 @@ import java.util.List; import java.util.Optional; import java.util.stream.Collectors; -public class ContainerScreenOverlay extends ScreenComponent { +public class ContainerScreenOverlay extends AbstractParentElement implements Drawable { private static final Identifier CHEST_GUI_TEXTURE = new Identifier("roughlyenoughitems", "textures/gui/recipecontainer.png"); private static final List<QueuedTooltip> QUEUED_TOOLTIPS = Lists.newArrayList(); @@ -189,10 +186,11 @@ public class ContainerScreenOverlay extends ScreenComponent { page = MathHelper.clamp(page, 0, getTotalPage()); this.text = String.format("%s/%s", page + 1, getTotalPage() + 1); super.render(mouseX, mouseY, partialTicks); - if (isHighlighted(mouseX, mouseY)) - addTooltip(QueuedTooltip.create(I18n.translate("text.rei.go_back_first_page").split("\n"))); - else if (focused) - ScreenHelper.getLastOverlay().addTooltip(QueuedTooltip.create(new Point(x, y), I18n.translate("text.rei.go_back_first_page").split("\n"))); + } + + @Override + public Optional<String> getTooltips() { + return Optional.ofNullable(I18n.translate("text.rei.go_back_first_page")); } @Override @@ -311,7 +309,8 @@ public class ContainerScreenOverlay extends ScreenComponent { return rectangle; } - public void drawOverlay(int mouseX, int mouseY, float partialTicks) { + @Override + public void render(int mouseX, int mouseY, float partialTicks) { List<ItemStack> currentStacks = ClientHelper.getInventoryItemsTypes(); if (getLeft() != lastLeft) onInitialized(true); @@ -321,7 +320,7 @@ public class ContainerScreenOverlay extends ScreenComponent { } GlStateManager.color4f(1.0F, 1.0F, 1.0F, 1.0F); GuiLighting.disable(); - this.draw(mouseX, mouseY, partialTicks); + this.renderWidgets(mouseX, mouseY, partialTicks); GuiLighting.disable(); Screen currentScreen = MinecraftClient.getInstance().currentScreen; if (!(currentScreen instanceof RecipeViewingScreen) || !((RecipeViewingScreen) currentScreen).choosePageActivated) @@ -353,11 +352,11 @@ public class ContainerScreenOverlay extends ScreenComponent { QUEUED_TOOLTIPS.add(queuedTooltip); } - public void draw(int int_1, int int_2, float float_1) { + public void renderWidgets(int int_1, int int_2, float float_1) { if (!ScreenHelper.isOverlayVisible()) return; - buttonLeft.enabled = itemListOverlay.getWidgets().size() > 0; - buttonRight.enabled = itemListOverlay.getWidgets().size() > 0; + buttonLeft.enabled = itemListOverlay.children().size() > 0; + buttonRight.enabled = itemListOverlay.children().size() > 0; widgets.forEach(widget -> { GuiLighting.disable(); widget.render(int_1, int_2, float_1); @@ -415,7 +414,7 @@ public class ContainerScreenOverlay extends ScreenComponent { @Override public boolean keyPressed(int int_1, int int_2, int int_3) { if (ScreenHelper.isOverlayVisible()) - for(InputListener listener : widgets) + for(Element listener : widgets) if (listener.keyPressed(int_1, int_2, int_3)) return true; if (ClientHelper.HIDE.matchesKey(int_1, int_2)) { @@ -442,14 +441,14 @@ public class ContainerScreenOverlay extends ScreenComponent { public boolean charTyped(char char_1, int int_1) { if (!ScreenHelper.isOverlayVisible()) return false; - for(InputListener listener : children()) + for(Element listener : children()) if (listener.charTyped(char_1, int_1)) return true; return super.charTyped(char_1, int_1); } @Override - public List<? extends InputListener> children() { + public List<? extends Element> children() { return widgets; } @@ -457,7 +456,15 @@ public class ContainerScreenOverlay extends ScreenComponent { public boolean mouseClicked(double double_1, double double_2, int int_1) { if (!ScreenHelper.isOverlayVisible()) return false; - return super.mouseClicked(double_1, double_2, int_1); + for(Element element : this.children()) { + if (element.mouseClicked(double_1, double_2, int_1)) { + this.method_20084(element); + if (int_1 == 0) + this.setDragging(true); + return true; + } + } + return false; } } diff --git a/src/main/java/me/shedaniel/rei/gui/RecipeViewingScreen.java b/src/main/java/me/shedaniel/rei/gui/RecipeViewingScreen.java index 876e6391e..06ed3f6ec 100644 --- a/src/main/java/me/shedaniel/rei/gui/RecipeViewingScreen.java +++ b/src/main/java/me/shedaniel/rei/gui/RecipeViewingScreen.java @@ -11,7 +11,7 @@ import me.shedaniel.rei.gui.widget.*; import net.minecraft.client.MinecraftClient; import net.minecraft.client.audio.PositionedSoundInstance; import net.minecraft.client.gui.ContainerScreen; -import net.minecraft.client.gui.InputListener; +import net.minecraft.client.gui.Element; import net.minecraft.client.gui.Screen; import net.minecraft.client.render.GuiLighting; import net.minecraft.client.resource.language.I18n; @@ -144,10 +144,11 @@ public class RecipeViewingScreen extends Screen { public void render(int mouseX, int mouseY, float partialTicks) { this.text = selectedCategory.getCategoryName(); super.render(mouseX, mouseY, partialTicks); - if (isHighlighted(mouseX, mouseY)) - ScreenHelper.getLastOverlay().addTooltip(QueuedTooltip.create(I18n.translate("text.rei.view_all_categories").split("\n"))); - else if (focused) - ScreenHelper.getLastOverlay().addTooltip(QueuedTooltip.create(new Point(x, y), I18n.translate("text.rei.view_all_categories").split("\n"))); + } + + @Override + public Optional<String> getTooltips() { + return Optional.ofNullable(I18n.translate("text.rei.view_all_categories")); } @Override @@ -196,10 +197,11 @@ public class RecipeViewingScreen extends Screen { public void render(int mouseX, int mouseY, float partialTicks) { this.text = String.format("%d/%d", page + 1, getTotalPages(selectedCategory)); super.render(mouseX, mouseY, partialTicks); - if (isHighlighted(mouseX, mouseY)) - ScreenHelper.getLastOverlay().addTooltip(QueuedTooltip.create(I18n.translate("text.rei.choose_page").split("\n"))); - else if (focused) - ScreenHelper.getLastOverlay().addTooltip(QueuedTooltip.create(new Point(x, y), I18n.translate("text.rei.choose_page").split("\n"))); + } + + @Override + public Optional<String> getTooltips() { + return Optional.ofNullable(I18n.translate("text.rei.choose_page")); } @Override @@ -331,7 +333,7 @@ public class RecipeViewingScreen extends Screen { GlStateManager.color4f(1.0F, 1.0F, 1.0F, 1.0F); GuiLighting.disable(); tabs.stream().filter(TabWidget::isSelected).forEach(tabWidget -> tabWidget.render(mouseX, mouseY, delta)); - ScreenHelper.getLastOverlay().drawOverlay(mouseX, mouseY, delta); + ScreenHelper.getLastOverlay().render(mouseX, mouseY, delta); if (choosePageActivated) { blitOffset = 500.0f; this.fillGradient(0, 0, this.width, this.height, -1072689136, -804253680); @@ -355,7 +357,7 @@ public class RecipeViewingScreen extends Screen { return true; return false; } - for(InputListener listener : children()) + for(Element listener : children()) if (listener.charTyped(char_1, int_1)) return true; return super.charTyped(char_1, int_1); @@ -383,7 +385,7 @@ public class RecipeViewingScreen extends Screen { @Override public boolean mouseScrolled(double i, double j, double amount) { - for(InputListener listener : children()) + for(Element listener : children()) if (listener.mouseScrolled(i, j, amount)) return true; if (getBounds().contains(ClientUtils.getMouseLocation())) { @@ -413,7 +415,7 @@ public class RecipeViewingScreen extends Screen { init(); return false; } - for(InputListener entry : children()) + for(Element entry : children()) if (entry.mouseClicked(double_1, double_2, int_1)) { method_20084(entry); if (int_1 == 0) @@ -424,7 +426,7 @@ public class RecipeViewingScreen extends Screen { } @Override - public InputListener getFocused() { + public Element getFocused() { if (choosePageActivated) return recipeChoosePageWidget; return super.getFocused(); diff --git a/src/main/java/me/shedaniel/rei/gui/config/ItemListOrderingEntry.java b/src/main/java/me/shedaniel/rei/gui/config/ItemListOrderingEntry.java index 11b6a344d..118668bb7 100644 --- a/src/main/java/me/shedaniel/rei/gui/config/ItemListOrderingEntry.java +++ b/src/main/java/me/shedaniel/rei/gui/config/ItemListOrderingEntry.java @@ -7,7 +7,7 @@ import me.shedaniel.cloth.gui.ClothConfigScreen.ListWidget; import me.shedaniel.rei.RoughlyEnoughItemsCore; import me.shedaniel.rei.client.ItemListOrdering; import net.minecraft.client.MinecraftClient; -import net.minecraft.client.gui.InputListener; +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; @@ -21,7 +21,7 @@ public class ItemListOrderingEntry extends ListEntry { private AtomicReference<Pair<ItemListOrdering, Boolean>> value; private ButtonWidget buttonWidget; private ButtonWidget resetButton; - private List<InputListener> widgets; + private List<Element> widgets; public ItemListOrderingEntry(String fieldName, Pair<ItemListOrdering, Boolean> val) { super(fieldName); @@ -53,7 +53,7 @@ public class ItemListOrderingEntry extends ListEntry { } @Override - public void draw(int index, int y, int x, int entryWidth, int entryHeight, int mouseX, int mouseY, boolean isSelected, float delta) { + 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()).getKey() != this.value.get().getKey() || ((Pair<ItemListOrdering, Boolean>) this.getDefaultValue().get()).getValue().booleanValue() != this.value.get().getValue().booleanValue()); this.resetButton.y = y; @@ -79,7 +79,7 @@ public class ItemListOrderingEntry extends ListEntry { } @Override - public List<? extends InputListener> children() { + public List<? extends Element> children() { return widgets; } @@ -90,11 +90,11 @@ public class ItemListOrderingEntry extends ListEntry { public void setDragging(boolean b) { } - public InputListener getFocused() { + public Element getFocused() { return null; } - public void setFocused(InputListener inputListener) { + public void setFocused(Element inputListener) { } public boolean mouseClicked(double double_1, double double_2, int int_1) { diff --git a/src/main/java/me/shedaniel/rei/gui/credits/CreditsEntry.java b/src/main/java/me/shedaniel/rei/gui/credits/CreditsEntry.java deleted file mode 100644 index 63ec352a5..000000000 --- a/src/main/java/me/shedaniel/rei/gui/credits/CreditsEntry.java +++ /dev/null @@ -1,20 +0,0 @@ -package me.shedaniel.rei.gui.credits; - -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.gui.widget.EntryListWidget; -import net.minecraft.text.TextComponent; - -public class CreditsEntry extends EntryListWidget.Entry<CreditsEntry> { - - private TextComponent textComponent; - - public CreditsEntry(TextComponent textComponent) { - this.textComponent = textComponent; - } - - @Override - public void draw(int index, int y, int x, int entryWidth, int entryHeight, int mouseX, int mouseY, boolean isSelected, float delta) { - MinecraftClient.getInstance().textRenderer.drawWithShadow(textComponent.getFormattedText(), x + 5, y + 5, -1); - } - -} 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 4deac886b..2ef5e7a39 100644 --- a/src/main/java/me/shedaniel/rei/gui/credits/CreditsEntryListWidget.java +++ b/src/main/java/me/shedaniel/rei/gui/credits/CreditsEntryListWidget.java @@ -1,37 +1,35 @@ package me.shedaniel.rei.gui.credits; import net.minecraft.client.MinecraftClient; -import net.minecraft.client.gui.widget.EntryListWidget; +import net.minecraft.client.gui.widget.ItemListWidget; -public class CreditsEntryListWidget extends EntryListWidget<CreditsEntry> { +public class CreditsEntryListWidget extends ItemListWidget<CreditsItem> { public CreditsEntryListWidget(MinecraftClient client, int width, int height, int startY, int endY, int entryHeight) { super(client, width, height, startY, endY, entryHeight); - field_19091 = false; // showSelection + visible = false; // showSelection } public void creditsClearEntries() { - clearEntries(); + clearItems(); } - private CreditsEntry getEntry(int int_1) { + private CreditsItem getEntry(int int_1) { return this.children().get(int_1); } - public void creditsAddEntry(CreditsEntry entry) { - addEntry(entry); + public void creditsAddEntry(CreditsItem entry) { + addItem(entry); } @Override - // getRowWidth - public int method_20053() { - return field_19083 - 80; // width + public int getItemWidth() { + return width - 80; } @Override - // getScrollbarPosition - protected int method_20078() { - return field_19083 - 40; // width + protected int getScrollbarPosition() { + return width - 40; } } diff --git a/src/main/java/me/shedaniel/rei/gui/credits/CreditsItem.java b/src/main/java/me/shedaniel/rei/gui/credits/CreditsItem.java new file mode 100644 index 000000000..0c7c1f8ce --- /dev/null +++ b/src/main/java/me/shedaniel/rei/gui/credits/CreditsItem.java @@ -0,0 +1,24 @@ +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 c8da3f5a2..56eeceb4e 100644 --- a/src/main/java/me/shedaniel/rei/gui/credits/CreditsScreen.java +++ b/src/main/java/me/shedaniel/rei/gui/credits/CreditsScreen.java @@ -34,8 +34,8 @@ public class CreditsScreen extends Screen { children.add(entryListWidget = new CreditsEntryListWidget(minecraft, width, height, 32, height - 32, 12)); entryListWidget.creditsClearEntries(); for(String line : I18n.translate("text.rei.credit.text").split("\n")) - entryListWidget.creditsAddEntry(new CreditsEntry(new StringTextComponent(line))); - entryListWidget.creditsAddEntry(new CreditsEntry(new StringTextComponent(""))); + entryListWidget.creditsAddEntry(new CreditsItem(new StringTextComponent(line))); + entryListWidget.creditsAddEntry(new CreditsItem(new StringTextComponent(""))); children.add(buttonDone = new ButtonWidget(width / 2 - 100, height - 26, 200, 20, I18n.translate("gui.done")) { @Override public void onPressed() { 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 b16e38187..0578e8bf6 100644 --- a/src/main/java/me/shedaniel/rei/gui/widget/ButtonWidget.java +++ b/src/main/java/me/shedaniel/rei/gui/widget/ButtonWidget.java @@ -2,10 +2,9 @@ package me.shedaniel.rei.gui.widget; import com.mojang.blaze3d.platform.GlStateManager; import me.shedaniel.rei.client.ScreenHelper; -import net.minecraft.client.MinecraftClient; import net.minecraft.client.audio.PositionedSoundInstance; import net.minecraft.client.font.TextRenderer; -import net.minecraft.client.gui.InputListener; +import net.minecraft.client.gui.Element; import net.minecraft.client.gui.widget.AbstractButtonWidget; import net.minecraft.sound.SoundEvents; import net.minecraft.text.TextComponent; @@ -20,7 +19,6 @@ public abstract class ButtonWidget extends HighlightableWidget { public String text; public boolean enabled; - public boolean visible; public boolean focused; private Rectangle bounds; @@ -31,7 +29,6 @@ public abstract class ButtonWidget extends HighlightableWidget { public ButtonWidget(Rectangle rectangle, String text) { this.bounds = rectangle; this.enabled = true; - this.visible = true; this.text = text; } @@ -60,72 +57,68 @@ public abstract class ButtonWidget extends HighlightableWidget { @Override public void render(int mouseX, int mouseY, float partialTicks) { - if (this.visible) { - int x = bounds.x, y = bounds.y, width = bounds.width, height = bounds.height; - MinecraftClient client = MinecraftClient.getInstance(); - TextRenderer textRenderer = client.textRenderer; - client.getTextureManager().bindTexture(AbstractButtonWidget.WIDGETS_LOCATION); - GlStateManager.color4f(1.0F, 1.0F, 1.0F, 1.0F); - int textureOffset = this.getTextureId(isHovered(mouseX, mouseY)); - GlStateManager.enableBlend(); - GlStateManager.blendFuncSeparate(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA, GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ZERO); - GlStateManager.blendFunc(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA); - //Four Corners - this.blit(x, y, 0, 46 + textureOffset * 20, 4, 4); - this.blit(x + width - 4, y, 196, 46 + textureOffset * 20, 4, 4); - this.blit(x, y + height - 4, 0, 62 + textureOffset * 20, 4, 4); - this.blit(x + width - 4, y + height - 4, 196, 62 + textureOffset * 20, 4, 4); - - //Sides - this.blit(x + 4, y, 4, 46 + textureOffset * 20, width - 8, 4); - this.blit(x + 4, y + height - 4, 4, 62 + textureOffset * 20, width - 8, 4); - - for(int i = y + 4; i < y + height - 4; i += 4) { - this.blit(x, i, 0, 50 + textureOffset * 20, width / 2, MathHelper.clamp(y + height - 4 - i, 0, 4)); - this.blit(x + width / 2, i, 200 - width / 2, 50 + textureOffset * 20, width / 2, MathHelper.clamp(y + height - 4 - i, 0, 4)); - } - - int colour = 14737632; - if (!this.enabled) { - colour = 10526880; - } else if (isHovered(mouseX, mouseY)) { - colour = 16777120; - } - - this.drawCenteredString(textRenderer, this.text, x + width / 2, y + (height - 8) / 2, colour); - - if (getTooltips().isPresent()) - if (isHighlighted(mouseX, mouseY)) - ScreenHelper.getLastOverlay().addTooltip(QueuedTooltip.create(getTooltips().get().split("\n"))); - else if (focused) - ScreenHelper.getLastOverlay().addTooltip(QueuedTooltip.create(new Point(x + width / 2, y + height / 2), getTooltips().get().split("\n"))); + 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)); + GlStateManager.enableBlend(); + GlStateManager.blendFuncSeparate(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA, GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ZERO); + GlStateManager.blendFunc(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA); + //Four Corners + this.blit(x, y, 0, 46 + textureOffset * |
