From 2c56475ec7f2b5190b8198ab5fd98b1a927d6250 Mon Sep 17 00:00:00 2001 From: shedaniel Date: Sat, 29 Feb 2020 21:45:26 +0800 Subject: change border Signed-off-by: shedaniel --- .../java/me/shedaniel/rei/api/ConfigObject.java | 5 +++ .../shedaniel/rei/gui/config/RecipeBorderType.java | 36 ++++++++++++++++++++++ .../me/shedaniel/rei/gui/widget/PanelWidget.java | 3 +- .../shedaniel/rei/gui/widget/RecipeBaseWidget.java | 6 +++- .../me/shedaniel/rei/impl/ConfigObjectImpl.java | 16 ++++++---- 5 files changed, 58 insertions(+), 8 deletions(-) create mode 100644 src/main/java/me/shedaniel/rei/gui/config/RecipeBorderType.java (limited to 'src/main/java') diff --git a/src/main/java/me/shedaniel/rei/api/ConfigObject.java b/src/main/java/me/shedaniel/rei/api/ConfigObject.java index 6e6490022..09566c873 100644 --- a/src/main/java/me/shedaniel/rei/api/ConfigObject.java +++ b/src/main/java/me/shedaniel/rei/api/ConfigObject.java @@ -25,6 +25,7 @@ package me.shedaniel.rei.api; import me.shedaniel.clothconfig2.api.ModifierKeyCode; import me.shedaniel.rei.gui.config.ItemListOrdering; +import me.shedaniel.rei.gui.config.RecipeBorderType; import me.shedaniel.rei.gui.config.RecipeScreenType; import me.shedaniel.rei.gui.config.SearchFieldLocation; import me.shedaniel.rei.impl.ConfigManagerImpl; @@ -89,8 +90,12 @@ public interface ConfigObject { boolean areClickableRecipeArrowsEnabled(); + @ApiStatus.ScheduledForRemoval + @Deprecated boolean isUsingLightGrayRecipeBorder(); + RecipeBorderType getRecipeBorderType(); + boolean doesVillagerScreenHavePermanentScrollBar(); boolean doesRegisterRecipesInAnotherThread(); diff --git a/src/main/java/me/shedaniel/rei/gui/config/RecipeBorderType.java b/src/main/java/me/shedaniel/rei/gui/config/RecipeBorderType.java new file mode 100644 index 000000000..32c3b96aa --- /dev/null +++ b/src/main/java/me/shedaniel/rei/gui/config/RecipeBorderType.java @@ -0,0 +1,36 @@ +package me.shedaniel.rei.gui.config; + +import net.minecraft.client.resource.language.I18n; + +import java.util.Locale; + +public enum RecipeBorderType { + DEFAULT(66), + LIGHTER(0), + NONE(0, false); + + private int offset; + private boolean render; + + RecipeBorderType(int offset) { + this(offset, true); + } + + RecipeBorderType(int offset, boolean render) { + this.offset = offset; + this.render = render; + } + + public int getYOffset() { + return offset; + } + + public boolean isRendering() { + return render; + } + + @Override + public String toString() { + return I18n.translate("config.roughlyenoughitems.recipeBorder." + name().toLowerCase(Locale.ROOT)); + } +} diff --git a/src/main/java/me/shedaniel/rei/gui/widget/PanelWidget.java b/src/main/java/me/shedaniel/rei/gui/widget/PanelWidget.java index 457d99519..8b6108d56 100644 --- a/src/main/java/me/shedaniel/rei/gui/widget/PanelWidget.java +++ b/src/main/java/me/shedaniel/rei/gui/widget/PanelWidget.java @@ -26,6 +26,7 @@ package me.shedaniel.rei.gui.widget; import com.mojang.blaze3d.systems.RenderSystem; import me.shedaniel.math.api.Rectangle; import me.shedaniel.rei.api.ConfigObject; +import me.shedaniel.rei.gui.config.RecipeBorderType; import me.shedaniel.rei.gui.config.RecipeScreenType; import me.shedaniel.rei.impl.ScreenHelper; import net.minecraft.util.Identifier; @@ -121,7 +122,7 @@ public class PanelWidget extends WidgetWithBounds { } protected int getYTextureOffset() { - return ConfigObject.getInstance().isUsingLightGrayRecipeBorder() ? 0 : 66; + return RecipeBorderType.DEFAULT.getYOffset(); } } 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 055e859c8..7d4af047a 100644 --- a/src/main/java/me/shedaniel/rei/gui/widget/RecipeBaseWidget.java +++ b/src/main/java/me/shedaniel/rei/gui/widget/RecipeBaseWidget.java @@ -34,7 +34,11 @@ public class RecipeBaseWidget extends PanelWidget { @Override protected int getYTextureOffset() { - return ConfigObject.getInstance().isUsingLightGrayRecipeBorder() ? 0 : 66; + return ConfigObject.getInstance().getRecipeBorderType().getYOffset(); } + @Override + protected boolean isRendering() { + return super.isRendering() && ConfigObject.getInstance().getRecipeBorderType().isRendering(); + } } diff --git a/src/main/java/me/shedaniel/rei/impl/ConfigObjectImpl.java b/src/main/java/me/shedaniel/rei/impl/ConfigObjectImpl.java index 3db0210fe..287042bc1 100644 --- a/src/main/java/me/shedaniel/rei/impl/ConfigObjectImpl.java +++ b/src/main/java/me/shedaniel/rei/impl/ConfigObjectImpl.java @@ -31,10 +31,7 @@ import me.shedaniel.clothconfig2.api.Modifier; import me.shedaniel.clothconfig2.api.ModifierKeyCode; import me.shedaniel.rei.api.ConfigObject; import me.shedaniel.rei.api.EntryStack; -import me.shedaniel.rei.gui.config.ItemListOrdering; -import me.shedaniel.rei.gui.config.ItemListOrderingConfig; -import me.shedaniel.rei.gui.config.RecipeScreenType; -import me.shedaniel.rei.gui.config.SearchFieldLocation; +import me.shedaniel.rei.gui.config.*; import net.minecraft.client.util.InputUtil; import org.jetbrains.annotations.ApiStatus; @@ -182,8 +179,15 @@ public class ConfigObjectImpl implements ConfigObject, ConfigData { } @Override + @ApiStatus.ScheduledForRemoval + @Deprecated public boolean isUsingLightGrayRecipeBorder() { - return appearance.lightGrayRecipeBorder; + return appearance.recipeBorder == RecipeBorderType.LIGHTER; + } + + @Override + public RecipeBorderType getRecipeBorderType() { + return appearance.recipeBorder; } @Override @@ -376,7 +380,7 @@ public class ConfigObjectImpl implements ConfigObject, ConfigData { @Comment("Declares the maximum amount of recipes displayed in a page if possible.") @ConfigEntry.BoundedDiscrete(min = 2, max = 99) private int maxRecipePerPage = 3; private boolean clickableRecipeArrows = true; - @Comment("Declares the appearance of recipe's border.") private boolean lightGrayRecipeBorder = false; + @Comment("Declares the appearance of recipe's border.") @UseEnumSelectorInstead private RecipeBorderType recipeBorder = RecipeBorderType.DEFAULT; @Comment("Declares whether REI should append mod names to item stacks.") private boolean appendModNames = true; @Comment("Declares how the scrollbar in villager screen should act.") private boolean villagerScreenPermanentScrollBar = false; @Comment("Declares whether entry list widget is scrolled.") private boolean scrollingEntryListWidget = false; -- cgit