diff options
| author | shedaniel <daniel@shedaniel.me> | 2020-02-10 00:52:27 +0800 |
|---|---|---|
| committer | shedaniel <daniel@shedaniel.me> | 2020-02-10 00:52:27 +0800 |
| commit | 9913c6c8063ec611413e7d07f079fc79c7851d50 (patch) | |
| tree | 75379fa712ef3152cefff2c721762e30ea2dc1be | |
| parent | d65102adc1c9bbdfdf37e0700fa06838108dc41f (diff) | |
| download | RoughlyEnoughItems-9913c6c8063ec611413e7d07f079fc79c7851d50.tar.gz RoughlyEnoughItems-9913c6c8063ec611413e7d07f079fc79c7851d50.tar.bz2 RoughlyEnoughItems-9913c6c8063ec611413e7d07f079fc79c7851d50.zip | |
Improved EntryListWidget
Signed-off-by: shedaniel <daniel@shedaniel.me>
7 files changed, 43 insertions, 16 deletions
diff --git a/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java b/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java index f007f5008..04f5e9bbf 100644 --- a/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java +++ b/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java @@ -219,8 +219,13 @@ public class RoughlyEnoughItemsCore implements ClientModInitializer { loadTestPlugins(); } + @ApiStatus.Internal + public static boolean isDebugModeEnabled() { + return System.getProperty("rei.test", "false").equals("true"); + } + private void loadTestPlugins() { - if (System.getProperty("rei.test", "false").equals("true")) { + if (isDebugModeEnabled()) { registerPlugin(new REITestPlugin()); } } diff --git a/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java b/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java index c23d382b0..54568aa1c 100644 --- a/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java +++ b/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java @@ -130,7 +130,7 @@ public class ContainerScreenOverlay extends WidgetWithBounds { ENTRY_LIST_WIDGET.previousPage(); if (ENTRY_LIST_WIDGET.getPage() < 0) ENTRY_LIST_WIDGET.setPage(ENTRY_LIST_WIDGET.getTotalPages() - 1); - ENTRY_LIST_WIDGET.updateSearch(ScreenHelper.getSearchField().getText()); + ENTRY_LIST_WIDGET.updateEntriesPosition(); } @Override @@ -144,7 +144,7 @@ public class ContainerScreenOverlay extends WidgetWithBounds { ENTRY_LIST_WIDGET.nextPage(); if (ENTRY_LIST_WIDGET.getPage() >= ENTRY_LIST_WIDGET.getTotalPages()) ENTRY_LIST_WIDGET.setPage(0); - ENTRY_LIST_WIDGET.updateSearch(ScreenHelper.getSearchField().getText()); + ENTRY_LIST_WIDGET.updateEntriesPosition(); } @Override @@ -265,7 +265,7 @@ public class ContainerScreenOverlay extends WidgetWithBounds { public void onLabelClicked() { MinecraftClient.getInstance().getSoundManager().play(PositionedSoundInstance.master(SoundEvents.UI_BUTTON_CLICK, 1.0F)); ENTRY_LIST_WIDGET.setPage(0); - ENTRY_LIST_WIDGET.updateSearch(ScreenHelper.getSearchField().getText()); + ENTRY_LIST_WIDGET.updateEntriesPosition(); } @Override diff --git a/src/main/java/me/shedaniel/rei/gui/widget/EntryWidget.java b/src/main/java/me/shedaniel/rei/gui/widget/EntryWidget.java index 395896e51..7ff453dc0 100644 --- a/src/main/java/me/shedaniel/rei/gui/widget/EntryWidget.java +++ b/src/main/java/me/shedaniel/rei/gui/widget/EntryWidget.java @@ -239,8 +239,10 @@ public class EntryWidget extends WidgetWithBounds { ConfigManager.getInstance().getFavorites().remove(entry); else if (!CollectionUtils.anyMatchEqualsAll(ConfigManager.getInstance().getFavorites(), entry)) ConfigManager.getInstance().getFavorites().add(entry); - ContainerScreenOverlay.getEntryListWidget().updateSearch(ScreenHelper.getSearchField().getText()); ConfigManager.getInstance().saveConfig(); + FavoritesListWidget favoritesListWidget = ContainerScreenOverlay.getFavoritesListWidget(); + if (favoritesListWidget != null) + favoritesListWidget.updateSearch(ContainerScreenOverlay.getEntryListWidget(), ScreenHelper.getSearchField().getText()); minecraft.getSoundManager().play(PositionedSoundInstance.master(SoundEvents.UI_BUTTON_CLICK, 1.0F)); return true; } diff --git a/src/main/java/me/shedaniel/rei/gui/widget/FavoritesListWidget.java b/src/main/java/me/shedaniel/rei/gui/widget/FavoritesListWidget.java index 957c76c52..17d961d06 100644 --- a/src/main/java/me/shedaniel/rei/gui/widget/FavoritesListWidget.java +++ b/src/main/java/me/shedaniel/rei/gui/widget/FavoritesListWidget.java @@ -235,7 +235,7 @@ public class FavoritesListWidget extends WidgetWithBounds { List<EntryStack> workingItems = checkCraftable ? RecipeHelper.getInstance().findCraftableEntriesByItems(CollectionUtils.map(ScreenHelper.inventoryStacks, EntryStack::create)) : null; for (EntryStack stack : ConfigManager.getInstance().getFavorites()) { if (listWidget.canLastSearchTermsBeAppliedTo(stack)) { - if (workingItems != null && CollectionUtils.findFirstOrNullEquals(workingItems, stack) == null) + if (checkCraftable && CollectionUtils.findFirstOrNullEquals(workingItems, stack) == null) continue; list.add(stack.copy().setting(EntryStack.Settings.RENDER_COUNTS, EntryStack.Settings.FALSE).setting(EntryStack.Settings.Item.RENDER_ENCHANTMENT_GLINT, RENDER_ENCHANTMENT_GLINT)); } @@ -253,7 +253,7 @@ public class FavoritesListWidget extends WidgetWithBounds { boolean checkCraftable = ConfigManager.getInstance().isCraftableOnlyEnabled() && !ScreenHelper.inventoryStacks.isEmpty(); List<EntryStack> workingItems = checkCraftable ? RecipeHelper.getInstance().findCraftableEntriesByItems(CollectionUtils.map(ScreenHelper.inventoryStacks, EntryStack::create)) : null; for (EntryStack stack : ConfigManager.getInstance().getFavorites()) { - if (workingItems != null && CollectionUtils.findFirstOrNullEquals(workingItems, stack) == null) + if (checkCraftable && CollectionUtils.findFirstOrNullEquals(workingItems, stack) == null) continue; list.add(stack.copy().setting(EntryStack.Settings.RENDER_COUNTS, EntryStack.Settings.FALSE).setting(EntryStack.Settings.Item.RENDER_ENCHANTMENT_GLINT, RENDER_ENCHANTMENT_GLINT)); } diff --git a/src/main/java/me/shedaniel/rei/impl/ConfigManagerImpl.java b/src/main/java/me/shedaniel/rei/impl/ConfigManagerImpl.java index b85502626..cdd4d486b 100644 --- a/src/main/java/me/shedaniel/rei/impl/ConfigManagerImpl.java +++ b/src/main/java/me/shedaniel/rei/impl/ConfigManagerImpl.java @@ -45,7 +45,6 @@ import net.minecraft.client.gui.widget.ButtonWidget; import net.minecraft.client.resource.language.I18n; import net.minecraft.client.util.InputUtil; import net.minecraft.client.util.Window; -import net.minecraft.text.LiteralText; import net.minecraft.util.math.MathHelper; import org.jetbrains.annotations.ApiStatus; @@ -179,6 +178,8 @@ public class ConfigManagerImpl implements ConfigManager { @Override public void saveConfig() { + if (getFavorites() != null) + getFavorites().removeIf(EntryStack::isEmpty); ((me.sargunvohra.mcmods.autoconfig1u.ConfigManager<ConfigObjectImpl>) AutoConfig.getConfigHolder(ConfigObjectImpl.class)).save(); } diff --git a/src/main/java/me/shedaniel/rei/impl/SearchArgument.java b/src/main/java/me/shedaniel/rei/impl/SearchArgument.java index 97b640861..e3ebd48aa 100644 --- a/src/main/java/me/shedaniel/rei/impl/SearchArgument.java +++ b/src/main/java/me/shedaniel/rei/impl/SearchArgument.java @@ -47,7 +47,6 @@ public class SearchArgument { this.include = include; } - @ApiStatus.Internal public static String tryGetEntryStackName(EntryStack stack) { if (stack.getType() == EntryStack.Type.ITEM) return tryGetItemStackName(stack.getItemStack()); @@ -56,7 +55,14 @@ public class SearchArgument { return ""; } - @ApiStatus.Internal + public static String tryGetEntryStackNameNoFormatting(EntryStack stack) { + if (stack.getType() == EntryStack.Type.ITEM) + return tryGetItemStackNameNoFormatting(stack.getItemStack()); + else if (stack.getType() == EntryStack.Type.FLUID) + return tryGetFluidName(stack.getFluid()); + return ""; + } + public static String tryGetEntryStackTooltip(EntryStack stack) { QueuedTooltip tooltip = stack.getTooltip(0, 0); if (tooltip != null) @@ -64,7 +70,6 @@ public class SearchArgument { return ""; } - @ApiStatus.Internal public static String tryGetFluidName(Fluid fluid) { Identifier id = Registry.FLUID.getId(fluid); if (I18n.hasTranslation("block." + id.toString().replaceFirst(":", "."))) @@ -72,7 +77,6 @@ public class SearchArgument { return CollectionUtils.mapAndJoinToString(id.getPath().split("_"), StringUtils::capitalize, " "); } - @ApiStatus.Internal public static List<String> tryGetItemStackToolTip(ItemStack itemStack, boolean careAboutAdvanced) { if (!searchBlacklisted.contains(itemStack.getItem())) try { @@ -84,7 +88,6 @@ public class SearchArgument { return Collections.singletonList(tryGetItemStackName(itemStack)); } - @ApiStatus.Internal public static String tryGetItemStackName(ItemStack stack) { if (!searchBlacklisted.contains(stack.getItem())) try { @@ -101,6 +104,22 @@ public class SearchArgument { return "ERROR"; } + public static String tryGetItemStackNameNoFormatting(ItemStack stack) { + if (!searchBlacklisted.contains(stack.getItem())) + try { + return stack.getName().asString(); + } catch (Throwable e) { + e.printStackTrace(); + searchBlacklisted.add(stack.getItem()); + } + try { + return I18n.translate("item." + Registry.ITEM.getId(stack.getItem()).toString().replace(":", ".")); + } catch (Throwable e) { + e.printStackTrace(); + } + return "ERROR"; + } + public Function<String, Boolean> getFunction(boolean include) { return include ? INCLUDE : NOT_INCLUDE; } @@ -130,7 +149,6 @@ public class SearchArgument { ALWAYS } - @ApiStatus.Internal public static class SearchArguments { public static final SearchArguments ALWAYS = new SearchArguments(new SearchArgument[]{SearchArgument.ALWAYS}); private SearchArgument[] arguments; diff --git a/src/main/java/me/shedaniel/rei/tests/plugin/REITestPlugin.java b/src/main/java/me/shedaniel/rei/tests/plugin/REITestPlugin.java index 24d35e4d7..643952573 100644 --- a/src/main/java/me/shedaniel/rei/tests/plugin/REITestPlugin.java +++ b/src/main/java/me/shedaniel/rei/tests/plugin/REITestPlugin.java @@ -35,12 +35,13 @@ public class REITestPlugin implements REIPluginV0 { @Override public void registerEntries(EntryRegistry entryRegistry) { + int times = 100; for (Item item : Registry.ITEM) { - for (int i = 0; i < 5; i++) + for (int i = 0; i < times; i++) entryRegistry.queueRegisterEntryAfter(EntryStack.create(item), Collections.singleton(transformStack(EntryStack.create(item)))); try { for (ItemStack stack : entryRegistry.appendStacksForItem(item)) { - for (int i = 0; i < 15; i++) + for (int i = 0; i < times; i++) entryRegistry.registerEntry(transformStack(EntryStack.create(stack))); } } catch (Exception ignored) { |
