diff options
Diffstat (limited to 'src')
38 files changed, 227 insertions, 169 deletions
diff --git a/src/main/java/me/shedaniel/rei/api/RecipeCategory.java b/src/main/java/me/shedaniel/rei/api/RecipeCategory.java index 4bc4c6e0d..9fdd35801 100644 --- a/src/main/java/me/shedaniel/rei/api/RecipeCategory.java +++ b/src/main/java/me/shedaniel/rei/api/RecipeCategory.java @@ -1,8 +1,8 @@ package me.shedaniel.rei.api; import me.shedaniel.rei.gui.RecipeViewingScreen; -import me.shedaniel.rei.gui.widget.Widget; import me.shedaniel.rei.gui.widget.RecipeBaseWidget; +import me.shedaniel.rei.gui.widget.Widget; import net.minecraft.client.gui.DrawableHelper; import net.minecraft.item.ItemStack; import net.minecraft.util.Identifier; diff --git a/src/main/java/me/shedaniel/rei/client/ClientHelper.java b/src/main/java/me/shedaniel/rei/client/ClientHelper.java index 84a3706f3..89678caeb 100644 --- a/src/main/java/me/shedaniel/rei/client/ClientHelper.java +++ b/src/main/java/me/shedaniel/rei/client/ClientHelper.java @@ -16,7 +16,6 @@ import net.fabricmc.loader.api.FabricLoader; import net.fabricmc.loader.api.ModContainer; import net.fabricmc.loader.api.metadata.ModMetadata; import net.minecraft.client.MinecraftClient; -import net.minecraft.client.Mouse; import net.minecraft.client.gui.Screen; import net.minecraft.client.gui.ingame.CreativePlayerInventoryScreen; import net.minecraft.client.util.InputUtil; @@ -28,7 +27,6 @@ import net.minecraft.util.Identifier; import net.minecraft.util.PacketByteBuf; import net.minecraft.util.registry.Registry; -import java.awt.*; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -54,14 +52,6 @@ public class ClientHelper implements ClientModInitializer { return ""; } - public static Point getMouseLocation() { - MinecraftClient client = MinecraftClient.getInstance(); - Mouse mouse = client.mouse; - double double_1 = mouse.getX() * (double) client.window.getScaledWidth() / (double) client.window.getWidth(); - double double_2 = mouse.getY() * (double) client.window.getScaledHeight() / (double) client.window.getHeight(); - return new Point((int) double_1, (int) double_2); - } - public static boolean isCheating() { return RoughlyEnoughItemsCore.getConfigManager().getConfig().cheating; } diff --git a/src/main/java/me/shedaniel/rei/client/ConfigObject.java b/src/main/java/me/shedaniel/rei/client/ConfigObject.java index 447fb8658..b1303a697 100644 --- a/src/main/java/me/shedaniel/rei/client/ConfigObject.java +++ b/src/main/java/me/shedaniel/rei/client/ConfigObject.java @@ -34,9 +34,6 @@ public class ConfigObject { @Comment("To disable REI's defualt plugin, don't change this unless you understand what you are doing") public boolean loadDefaultPlugin = true; - @Comment("Toggle the credits button") - public boolean disableCreditsButton = false; - @Comment("Maximum recipes viewed at one time.") public int maxRecipePerPage = 3; diff --git a/src/main/java/me/shedaniel/rei/client/ScreenHelper.java b/src/main/java/me/shedaniel/rei/client/ScreenHelper.java index fa426e300..5c7112d41 100644 --- a/src/main/java/me/shedaniel/rei/client/ScreenHelper.java +++ b/src/main/java/me/shedaniel/rei/client/ScreenHelper.java @@ -1,18 +1,24 @@ package me.shedaniel.rei.client; import com.google.common.collect.Lists; +import com.mojang.blaze3d.platform.GlStateManager; import me.shedaniel.rei.RoughlyEnoughItemsCore; import me.shedaniel.rei.gui.ContainerScreenOverlay; import me.shedaniel.rei.gui.widget.TextFieldWidget; import me.shedaniel.rei.listeners.ContainerScreenHooks; 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.Drawable; import net.minecraft.client.gui.InputListener; import net.minecraft.client.gui.widget.ButtonWidget; import net.minecraft.client.gui.widget.RecipeBookButtonWidget; +import net.minecraft.client.render.GuiLighting; +import net.minecraft.client.util.Window; import net.minecraft.item.ItemStack; +import java.awt.*; import java.util.List; public class ScreenHelper implements ClientModInitializer { @@ -65,6 +71,37 @@ public class ScreenHelper implements ClientModInitializer { return (ContainerScreenHooks) lastContainerScreen; } + public static void drawHoveringWidget(int x, int y, Drawable drawable, int width, int height, float delta) { + Window window = MinecraftClient.getInstance().window; + drawHoveringWidget(new Dimension(window.getScaledWidth(), window.getScaledHeight()), x, y, drawable, width, height, delta); + } + + public static void drawHoveringWidget(Dimension dimension, int x, int y, Drawable drawable, int width, int height, float delta) { + int int_5 = x + 12; + int int_6 = y - 12; + + if (int_5 + width > dimension.width) + int_5 -= 28 + width; + if (int_6 + height + 6 > dimension.height) + int_6 = dimension.height - height - 6; + + drawable.draw(int_5, int_6, delta); + // zOffset = 300.0F; + // itemRenderer.zOffset = 300.0F; + // int int_9 = -267386864; + // drawGradientRect(int_5 - 3, int_6 - 4, int_5 + width + 3, int_6 - 3, -267386864, -267386864); + // drawGradientRect(int_5 - 3, int_6 + height + 3, int_5 + width + 3, int_6 + height + 4, -267386864, -267386864); + // drawGradientRect(int_5 - 3, int_6 - 3, int_5 + width + 3, int_6 + height + 3, -267386864, -267386864); + // drawGradientRect(int_5 - 4, int_6 - 3, int_5 - 3, int_6 + height + 3, -267386864, -267386864); + // drawGradientRect(int_5 + width + 3, int_6 - 3, int_5 + width + 4, int_6 + height + 3, -267386864, -267386864); + // int int_10 = 1347420415; + // int int_11 = 1344798847; + // drawGradientRect(int_5 - 3, int_6 - 3 + 1, int_5 - 3 + 1, int_6 + height + 3 - 1, 1347420415, 1344798847); + // drawGradientRect(int_5 + width + 2, int_6 - 3 + 1, int_5 + width + 3, int_6 + height + 3 - 1, 1347420415, 1344798847); + // drawGradientRect(int_5 - 3, int_6 - 3, int_5 + width + 3, int_6 - 3 + 1, 1347420415, 1347420415); + // drawGradientRect(int_5 - 3, int_6 + height + 2, int_5 + width + 3, int_6 + height + 3, 1344798847, 1344798847); + } + @Override public void onInitializeClient() { ClientTickCallback.EVENT.register(client -> { diff --git a/src/main/java/me/shedaniel/rei/client/Weather.java b/src/main/java/me/shedaniel/rei/client/Weather.java index b4cc2dc04..f59cba7d4 100644 --- a/src/main/java/me/shedaniel/rei/client/Weather.java +++ b/src/main/java/me/shedaniel/rei/client/Weather.java @@ -1,14 +1,14 @@ package me.shedaniel.rei.client; public enum Weather { - CLEAR(0, "Clear"), RAIN(1, "Rain"), THUNDER(2, "Thunder"); + CLEAR(0, "text.rei.weather.clear"), RAIN(1, "text.rei.weather.rain"), THUNDER(2, "text.rei.weather.thunder"); private final int id; - private final String name; + private final String translateKey; - Weather(int id, String name) { + Weather(int id, String translateKey) { this.id = id; - this.name = name; + this.translateKey = translateKey; } public static Weather byId(int int_1) { @@ -31,8 +31,7 @@ public enum Weather { return id; } - public String getName() { - return name; + public String getTranslateKey() { + return translateKey; } - } diff --git a/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java b/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java index b752ae04d..8692e68a9 100644 --- a/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java +++ b/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java @@ -2,11 +2,11 @@ package me.shedaniel.rei.gui; import com.google.common.collect.Lists; import com.mojang.blaze3d.platform.GlStateManager; +import me.shedaniel.cloth.ClothInitializer; import me.shedaniel.rei.RoughlyEnoughItemsCore; import me.shedaniel.rei.client.ClientHelper; import me.shedaniel.rei.client.ScreenHelper; import me.shedaniel.rei.client.Weather; -import me.shedaniel.rei.gui.credits.CreditsScreen; import me.shedaniel.rei.gui.widget.*; import net.minecraft.client.MinecraftClient; import net.minecraft.client.audio.PositionedSoundInstance; @@ -26,10 +26,10 @@ import net.minecraft.util.math.MathHelper; import net.minecraft.world.GameMode; import java.awt.*; -import java.util.Arrays; import java.util.Collections; import java.util.LinkedList; import java.util.List; +import java.util.Optional; import java.util.stream.Collectors; public class ContainerScreenOverlay extends ScreenComponent { @@ -45,6 +45,10 @@ public class ContainerScreenOverlay extends ScreenComponent { private ButtonWidget buttonLeft, buttonRight; private int lastLeft; + public static ItemListOverlay getItemListOverlay() { + return itemListOverlay; + } + public void onInitialized() { onInitialized(false); } @@ -66,6 +70,15 @@ public class ContainerScreenOverlay extends ScreenComponent { page = getTotalPage(); itemListOverlay.updateList(getItemListArea(), page, searchTerm); } + + @Override + public Optional<String> getTooltips() { + return Optional.ofNullable(I18n.translate("text.rei.previous_page")); + } + + @Override + public void setHasFocus(boolean boolean_1) { + } }); widgets.add(buttonRight = new ButtonWidget(rectangle.x + rectangle.width - 18, rectangle.y + 5, 16, 16, new TranslatableTextComponent("text.rei.right_arrow")) { @Override @@ -75,6 +88,15 @@ public class ContainerScreenOverlay extends ScreenComponent { page = 0; itemListOverlay.updateList(getItemListArea(), page, searchTerm); } + + @Override + public Optional<String> getTooltips() { + return Optional.ofNullable(I18n.translate("text.rei.next_page")); + } + + @Override + public void setHasFocus(boolean boolean_1) { + } }); if (setPage) page = MathHelper.clamp(page, 0, getTotalPage()); @@ -97,24 +119,23 @@ public class ContainerScreenOverlay extends ScreenComponent { MinecraftClient.getInstance().getTextureManager().bindTexture(CHEST_GUI_TEXTURE); GlStateManager.color4f(1.0F, 1.0F, 1.0F, 1.0F); drawTexturedRect(getBounds().x + 3, getBounds().y + 3, 0, 0, 14, 14); - if (isHighlighted(mouseX, mouseY)) { - List<String> list = new LinkedList<>(Arrays.asList(I18n.translate("text.rei.config_tooltip").split("\n"))); - list.add(" "); - if (!ClientHelper.isCheating()) - list.add("§c§m" + I18n.translate("text.rei.cheating")); - else - list.add("§a" + I18n.translate("text.rei.cheating")); - addTooltip(QueuedTooltip.create(list)); - } + } + + @Override + public Optional<String> getTooltips() { + String tooltips = I18n.translate("text.rei.config_tooltip"); + tooltips += "\n "; + if (!ClientHelper.isCheating()) + tooltips += "\n§c§m" + I18n.translate("text.rei.cheating"); + else + tooltips += "\n§a" + I18n.translate("text.rei.cheating"); + return Optional.ofNullable(tooltips); + } + + @Override + public void setHasFocus(boolean boolean_1) { } }); - if (!RoughlyEnoughItemsCore.getConfigManager().getConfig().disableCreditsButton) - widgets.add(new ButtonWidget(RoughlyEnoughItemsCore.getConfigManager().getConfig().mirrorItemPanel ? window.getScaledWidth() - 50 : 10, window.getScaledHeight() - 30, 40, 20, I18n.translate("text.rei.credits")) { - @Override - public void onPressed() { - MinecraftClient.getInstance().openScreen(new CreditsScreen(ScreenHelper.getLastContainerScreen())); - } - }); if (RoughlyEnoughItemsCore.getConfigManager().getConfig().showUtilsButtons) { widgets.add(new ButtonWidget(RoughlyEnoughItemsCore.getConfigManager().getConfig().mirrorItemPanel ? window.getScaledWidth() - 55 : 35, 10, 20, 20, "") { @Override @@ -126,14 +147,21 @@ public class ContainerScreenOverlay extends ScreenComponent { public void draw(int mouseX, int mouseY, float partialTicks) { text = getGameModeShortText(getCurrentGameMode()); super.draw(mouseX, mouseY, partialTicks); - if (isHighlighted(mouseX, mouseY)) - addTooltip(QueuedTooltip.create(I18n.translate("text.rei.gamemode_button.tooltip", getGameModeText(getNextGameMode())).split("\n"))); + } + + @Override + public Optional<String> getTooltips() { + return Optional.ofNullable(I18n.translate("text.rei.gamemode_button.tooltip", getGameModeText(getNextGameMode()))); + } + + @Override + public void setHasFocus(boolean boolean_1) { } }); widgets.add(new ButtonWidget(RoughlyEnoughItemsCore.getConfigManager().getConfig().mirrorItemPanel ? window.getScaledWidth() - 80 : 60, 10, 20, 20, "") { @Override public void onPressed() { - MinecraftClient.getInstance().player.sendChatMessage(RoughlyEnoughItemsCore.getConfigManager().getConfig().weatherCommand.replaceAll("\\{weather}", getNextWeather().getName().toLowerCase())); + MinecraftClient.getInstance().player.sendChatMessage(RoughlyEnoughItemsCore.getConfigManager().getConfig().weatherCommand.replaceAll("\\{weather}", getNextWeather().name().toLowerCase())); } @Override @@ -143,8 +171,15 @@ public class ContainerScreenOverlay extends ScreenComponent { MinecraftClient.getInstance().getTextureManager().bindTexture(CHEST_GUI_TEXTURE); GlStateManager.color4f(1.0F, 1.0F, 1.0F, 1.0F); drawTexturedRect(getBounds().x + 3, getBounds().y + 3, getCurrentWeather().getId() * 14, 14, 14, 14); - if (isHighlighted(mouseX, mouseY)) - addTooltip(QueuedTooltip.create(I18n.translate("text.rei.weather_button.tooltip", getNextWeather().getName()).split("\n"))); + } + + @Override + public Optional<String> getTooltips() { + return Optional.ofNullable(I18n.translate("text.rei.weather_button.tooltip", I18n.translate(getNextWeather().getTranslateKey()))); + } + + @Override + public void setHasFocus(boolean boolean_1) { } }); } @@ -156,6 +191,8 @@ public class ContainerScreenOverlay extends ScreenComponent { super.draw(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 @@ -164,6 +201,10 @@ public class ContainerScreenOverlay extends ScreenComponent { page = 0; itemListOverlay.updateList(getItemListArea(), page, searchTerm); } + + @Override + public void setHasFocus(boolean boolean_1) { + } }); if (ScreenHelper.searchField == null) ScreenHelper.searchField = new TextFieldWidget(0, 0, 0, 0) { @@ -217,38 +258,18 @@ public class ContainerScreenOverlay extends ScreenComponent { } private String getGameModeShortText(GameMode gameMode) { - switch (gameMode) { - case CREATIVE: - return "C"; - case SURVIVAL: - return "S"; - case ADVENTURE: - return "A"; - case SPECTATOR: - return "SP"; - } - return gameMode.name(); + return I18n.translate("text.rei.short_gamemode." + gameMode.getName()); } private String getGameModeText(GameMode gameMode) { - switch (gameMode) { - case CREATIVE: - return "Creative"; - case SURVIVAL: - return "Survival"; - case ADVENTURE: - return "Adventure"; - case SPECTATOR: - return "Spectator"; - } - return gameMode.name(); + return I18n.translate("selectWorld.gameMode." + gameMode.getName()); } private GameMode getNextGameMode() { try { GameMode current = getCurrentGameMode(); int next = current.getId() + 1; - if (next >= 3) + if (next > 3) next = 0; return GameMode.byId(next); } catch (Exception e) { @@ -372,7 +393,7 @@ public class ContainerScreenOverlay extends ScreenComponent { public boolean mouseScrolled(double i, double j, double amount) { if (!ScreenHelper.isOverlayVisible()) return false; - if (rectangle.contains(ClientHelper.getMouseLocation())) { + if (rectangle.contains(ClothInitializer.clientUtils.getMouseLocation())) { if (amount > 0 && buttonLeft.enabled) buttonLeft.onPressed(); else if (amount < 0 && buttonRight.enabled) @@ -399,7 +420,7 @@ public class ContainerScreenOverlay extends ScreenComponent { } if (!ScreenHelper.isOverlayVisible()) return false; - Point point = ClientHelper.getMouseLocation(); + Point point = ClothInitializer.clientUtils.getMouseLocation(); ItemStack itemStack = null; if (MinecraftClient.getInstance().currentScreen instanceof ContainerScreen) if (ScreenHelper.getLastContainerScreenHooks().rei_getHoveredSlot() != null && !ScreenHelper.getLastContainerScreenHooks().rei_getHoveredSlot().getStack().isEmpty()) diff --git a/src/main/java/me/shedaniel/rei/gui/RecipeViewingScreen.java b/src/main/java/me/shedaniel/rei/gui/RecipeViewingScreen.java index 31ba6793d..968d6079c 100644 --- a/src/main/java/me/shedaniel/rei/gui/RecipeViewingScreen.java +++ b/src/main/java/me/shedaniel/rei/gui/RecipeViewingScreen.java @@ -2,6 +2,7 @@ package me.shedaniel.rei.gui; import com.google.common.collect.Lists; import com.mojang.blaze3d.platform.GlStateManager; +import me.shedaniel.cloth.ClothInitializer; import me.shedaniel.rei.RoughlyEnoughItemsCore; import me.shedaniel.rei.api.*; import me.shedaniel.rei.client.ClientHelper; @@ -128,6 +129,11 @@ public class RecipeViewingScreen extends Screen { page = 0; RecipeViewingScreen.this.onInitialized(); } + + @Override + public Optional<String> getTooltips() { + return Optional.ofNullable(I18n.translate("text.rei.previous_category")); + } }); widgets.add(new ClickableLabelWidget((int) bounds.getCenterX(), (int) bounds.getY() + 7, "") { @Override @@ -158,6 +164,11 @@ public class RecipeViewingScreen extends Screen { page = 0; RecipeViewingScreen.this.onInitialized(); } + + @Override + public Optional<String> getTooltips() { + return Optional.ofNullable(I18n.translate("text.rei.next_category")); + } }); categoryBack.enabled = categories.size() > 1; categoryNext.enabled = categories.size() > 1; @@ -170,6 +181,11 @@ public class RecipeViewingScreen extends Screen { page = getTotalPages(selectedCategory) - 1; RecipeViewingScreen.this.onInitialized(); } + + @Override + public Optional<String> getTooltips() { + return Optional.ofNullable(I18n.translate("text.rei.previous_page")); + } }); widgets.add(new ClickableLabelWidget((int) bounds.getCenterX(), (int) bounds.getY() + 23, "") { @Override @@ -197,9 +213,15 @@ public class RecipeViewingScreen extends Screen { page = 0; RecipeViewingScreen.this.onInitialized(); } + + @Override + public Optional<String> getTooltips() { + return Optional.ofNullable(I18n.translate("text.rei.next_page")); + } }); - recipeBack.enabled = categoriesMap.get(selectedCategory).size() > getRecipesPerPage(); - recipeNext.enabled = categoriesMap.get(selectedCategory).size() > getRecipesPerPage(); + int recipesPerPageByHeight = getRecipesPerPageByHeight(); + recipeBack.enabled = categoriesMap.get(selectedCategory).size() > recipesPerPageByHeight; + recipeNext.enabled = categoriesMap.get(selectedCategory).size() > recipesPerPageByHeight; for(int i = 0; i < 6; i++) { int j = i + categoryPages * 6; @@ -360,13 +382,13 @@ public class RecipeViewingScreen extends Screen { for(InputListener listener : listeners) if (listener.mouseScrolled(i, j, amount)) return true; - if (getBounds().contains(ClientHelper.getMouseLocation())) { + if (getBounds().contains(ClothInitializer.clientUtils.getMouseLocation())) { if (amount > 0 && recipeBack.enabled) recipeBack.onPressed(); else if (amount < 0 && recipeNext.enabled) recipeNext.onPressed(); } - if ((new Rectangle(bounds.x, bounds.y - 28, bounds.width, 28)).contains(ClientHelper.getMouseLocation())) { + if ((new Rectangle(bounds.x, bounds.y - 28, bounds.width, 28)).contains(ClothInitializer.clientUtils.getMouseLocation())) { if (amount > 0 && categoryBack.enabled) categoryBack.onPressed(); else if (amount < 0 && categoryNext.enabled) diff --git a/src/main/java/me/shedaniel/rei/gui/config/ConfigEntry.java b/src/main/java/me/shedaniel/rei/gui/config/ConfigEntry.java index fdea6df9f..c5a520448 100644 --- a/src/main/java/me/shedaniel/rei/gui/config/ConfigEntry.java +++ b/src/main/java/me/shedaniel/rei/gui/config/ConfigEntry.java @@ -1,6 +1,6 @@ package me.shedaniel.rei.gui.config; -import me.shedaniel.rei.client.ClientHelper; +import me.shedaniel.cloth.ClothInitializer; import me.shedaniel.rei.gui.widget.ButtonWidget; import me.shedaniel.rei.gui.widget.TextFieldWidget; import net.minecraft.client.MinecraftClient; @@ -33,7 +33,7 @@ public abstract class ConfigEntry extends EntryListWidget.Entry<ConfigEntry> { @Override public void draw(int entryWidth, int height, int i3, int i4, boolean isSelected, float delta) { Window window = MinecraftClient.getInstance().window; - Point mouse = ClientHelper.getMouseLocation(); + Point mouse = ClothInitializer.clientUtils.getMouseLocation(); if (MinecraftClient.getInstance().textRenderer.isRightToLeft()) { MinecraftClient.getInstance().textRenderer.drawWithShadow(nameComponent.getFormattedText(), window.getScaledWidth() - MinecraftClient.getInstance().textRenderer.getStringWidth(nameComponent.getFormattedText()) - 40, getY() + 5, 16777215); this.buttonWidget.text = buttonProvider.getText(); @@ -97,7 +97,7 @@ public abstract class ConfigEntry extends EntryListWidget.Entry<ConfigEntry> { @Override public void draw(int entryWidth, int height, int i3, int i4, boolean isSelected, float delta) { Window window = MinecraftClient.getInstance().window; - Point mouse = ClientHelper.getMouseLocation(); + Point mouse = ClothInitializer.clientUtils.getMouseLocation(); if (MinecraftClient.getInstance().textRenderer.isRightToLeft()) { MinecraftClient.getInstance().textRenderer.drawWithShadow(nameComponent.getFormattedText(), window.getScaledWidth() - MinecraftClient.getInstance().textRenderer.getStringWidth(nameComponent.getFormattedText()) - 40, getY() + 5, 16777215); this.textFieldWidget.getBounds().setLocation(getX() + 1, getY() + 2); diff --g |
