diff options
| author | shedaniel <daniel@shedaniel.me> | 2021-02-05 21:55:26 +0800 |
|---|---|---|
| committer | shedaniel <daniel@shedaniel.me> | 2021-02-05 21:55:26 +0800 |
| commit | dc92d0a4d262b633e9f322def3e89ab1a05417ab (patch) | |
| tree | 75d51513b5d930f0456959c6034ba02e21cf12d5 /runtime/src/main/java/me/shedaniel/rei/impl | |
| parent | ea634e7ba29146d4ebc2c05b61257fa6c3b0642e (diff) | |
| download | RoughlyEnoughItems-dc92d0a4d262b633e9f322def3e89ab1a05417ab.tar.gz RoughlyEnoughItems-dc92d0a4d262b633e9f322def3e89ab1a05417ab.tar.bz2 RoughlyEnoughItems-dc92d0a4d262b633e9f322def3e89ab1a05417ab.zip | |
More
Signed-off-by: shedaniel <daniel@shedaniel.me>
Diffstat (limited to 'runtime/src/main/java/me/shedaniel/rei/impl')
29 files changed, 787 insertions, 82 deletions
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/AbstractEntryStack.java b/runtime/src/main/java/me/shedaniel/rei/impl/AbstractEntryStack.java index 2fb86d66a..d018a34f1 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/AbstractEntryStack.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/AbstractEntryStack.java @@ -33,7 +33,7 @@ import me.shedaniel.rei.api.ingredient.EntryStack; import me.shedaniel.rei.api.ingredient.entry.AbstractRenderer; import me.shedaniel.rei.api.ingredient.entry.ComparisonContext; import me.shedaniel.rei.api.ingredient.util.EntryStacks; -import me.shedaniel.rei.api.widgets.Tooltip; +import me.shedaniel.rei.api.gui.widgets.Tooltip; import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.Nullable; diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/Animator.java b/runtime/src/main/java/me/shedaniel/rei/impl/Animator.java index d5cf646e7..69d3f0a8f 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/Animator.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/Animator.java @@ -24,6 +24,7 @@ package me.shedaniel.rei.impl; import me.shedaniel.clothconfig2.api.ScrollingContainer; +import me.shedaniel.clothconfig2.impl.EasingMethod; import net.minecraft.Util; import org.jetbrains.annotations.ApiStatus; @@ -65,9 +66,9 @@ public final class Animator extends Number { public void update(double delta) { if (duration != 0) { if (amount < target) - this.amount = Math.min(ScrollingContainer.ease(amount, target + (target - amount), Math.min(((double) Util.getMillis() - start) / duration * delta * 3.0D, 1.0D), v -> v), target); + this.amount = Math.min(ScrollingContainer.ease(amount, target + (target - amount), Math.min(((double) Util.getMillis() - start) / duration * delta * 3.0D, 1.0D), EasingMethod.EasingMethodImpl.LINEAR), target); else if (amount > target) - this.amount = Math.max(ScrollingContainer.ease(amount, target - (amount - target), Math.min(((double) Util.getMillis() - start) / duration * delta * 3.0D, 1.0D), v -> v), target); + this.amount = Math.max(ScrollingContainer.ease(amount, target - (amount - target), Math.min(((double) Util.getMillis() - start) / duration * delta * 3.0D, 1.0D), EasingMethod.EasingMethodImpl.LINEAR), target); } } diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/ClientHelperImpl.java b/runtime/src/main/java/me/shedaniel/rei/impl/ClientHelperImpl.java index 5d3b91900..985096137 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/ClientHelperImpl.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/ClientHelperImpl.java @@ -32,12 +32,13 @@ import me.shedaniel.rei.api.*; import me.shedaniel.rei.api.ingredient.EntryStack; import me.shedaniel.rei.api.ingredient.util.EntryStacks; import me.shedaniel.rei.api.ingredient.entry.VanillaEntryTypes; -import me.shedaniel.rei.api.registry.category.DisplayCategory; +import me.shedaniel.rei.api.registry.display.Display; +import me.shedaniel.rei.api.registry.display.DisplayCategory; import me.shedaniel.rei.gui.PreRecipeViewingScreen; import me.shedaniel.rei.gui.RecipeScreen; import me.shedaniel.rei.gui.RecipeViewingScreen; import me.shedaniel.rei.gui.VillagerRecipeViewingScreen; -import me.shedaniel.rei.gui.config.RecipeScreenType; +import me.shedaniel.rei.api.gui.config.RecipeScreenType; import net.fabricmc.api.ClientModInitializer; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/ConfigManagerImpl.java b/runtime/src/main/java/me/shedaniel/rei/impl/ConfigManagerImpl.java index ce9372fd7..43e50d7b0 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/ConfigManagerImpl.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/ConfigManagerImpl.java @@ -56,9 +56,9 @@ import me.shedaniel.rei.api.favorites.FavoriteEntry; import me.shedaniel.rei.gui.ContainerScreenOverlay; import me.shedaniel.rei.gui.TransformingScreen; import me.shedaniel.rei.gui.WarningAndErrorScreen; -import me.shedaniel.rei.gui.config.RecipeScreenType; -import me.shedaniel.rei.gui.config.SyntaxHighlightingMode; -import me.shedaniel.rei.gui.config.entry.*; +import me.shedaniel.rei.api.gui.config.RecipeScreenType; +import me.shedaniel.rei.api.gui.config.SyntaxHighlightingMode; +import me.shedaniel.rei.api.gui.config.entry.*; import me.shedaniel.rei.gui.credits.CreditsScreen; import me.shedaniel.rei.impl.filtering.FilteringRule; import me.shedaniel.rei.impl.filtering.rules.ManualFilteringRule; diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/ConfigObjectImpl.java b/runtime/src/main/java/me/shedaniel/rei/impl/ConfigObjectImpl.java index 5765f81eb..fdfef10c9 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/ConfigObjectImpl.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/ConfigObjectImpl.java @@ -33,7 +33,7 @@ import me.shedaniel.clothconfig2.api.ModifierKeyCode; import me.shedaniel.rei.api.ConfigObject; import me.shedaniel.rei.api.ingredient.EntryStack; import me.shedaniel.rei.api.favorites.FavoriteEntry; -import me.shedaniel.rei.gui.config.*; +import me.shedaniel.rei.api.gui.config.*; import me.shedaniel.rei.impl.filtering.FilteringRule; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/DisplayBoundsRegistryImpl.java b/runtime/src/main/java/me/shedaniel/rei/impl/DisplayBoundsRegistryImpl.java index 05d8bc98b..df636a2c1 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/DisplayBoundsRegistryImpl.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/DisplayBoundsRegistryImpl.java @@ -30,8 +30,8 @@ import me.shedaniel.math.Rectangle; import me.shedaniel.rei.api.ExclusionZones; import me.shedaniel.rei.api.DisplayBoundsRegistry; import me.shedaniel.rei.api.OverlayDecider; -import me.shedaniel.rei.gui.config.DisplayPanelLocation; -import me.shedaniel.rei.utils.CollectionUtils; +import me.shedaniel.rei.api.gui.config.DisplayPanelLocation; +import me.shedaniel.rei.api.util.CollectionUtils; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.Minecraft; diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/EntryRegistryImpl.java b/runtime/src/main/java/me/shedaniel/rei/impl/EntryRegistryImpl.java index a9a5aa386..d5ff03c28 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/EntryRegistryImpl.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/EntryRegistryImpl.java @@ -33,7 +33,7 @@ import me.shedaniel.rei.api.ingredient.util.EntryStacks; import me.shedaniel.rei.impl.filtering.FilteringContextImpl; import me.shedaniel.rei.impl.filtering.FilteringContextType; import me.shedaniel.rei.impl.filtering.FilteringRule; -import me.shedaniel.rei.utils.CollectionUtils; +import me.shedaniel.rei.api.util.CollectionUtils; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.core.NonNullList; diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/ExclusionZonesImpl.java b/runtime/src/main/java/me/shedaniel/rei/impl/ExclusionZonesImpl.java index 6954b66ad..f9c12dea6 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/ExclusionZonesImpl.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/ExclusionZonesImpl.java @@ -27,7 +27,7 @@ import com.google.common.collect.Lists; import me.shedaniel.math.Rectangle; import me.shedaniel.rei.api.ExclusionZones; import me.shedaniel.rei.api.DisplayBoundsRegistry; -import me.shedaniel.rei.gui.config.DisplayPanelLocation; +import me.shedaniel.rei.api.gui.config.DisplayPanelLocation; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.Minecraft; diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/InternalWidgets.java b/runtime/src/main/java/me/shedaniel/rei/impl/InternalWidgets.java index 1f241c0fb..1c4834c05 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/InternalWidgets.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/InternalWidgets.java @@ -29,14 +29,16 @@ import it.unimi.dsi.fastutil.ints.IntList; import me.shedaniel.math.Rectangle; import me.shedaniel.math.impl.PointHelper; import me.shedaniel.rei.api.*; -import me.shedaniel.rei.api.registry.category.DisplayCategory; -import me.shedaniel.rei.api.widgets.Button; -import me.shedaniel.rei.api.widgets.Widgets; +import me.shedaniel.rei.api.registry.display.Display; +import me.shedaniel.rei.api.registry.display.DisplayCategory; +import me.shedaniel.rei.api.gui.widgets.Button; +import me.shedaniel.rei.api.gui.widgets.Widgets; +import me.shedaniel.rei.api.registry.display.TransferDisplayCategory; import me.shedaniel.rei.gui.toast.CopyRecipeIdentifierToast; import me.shedaniel.rei.gui.widget.LateRenderable; -import me.shedaniel.rei.gui.widget.Widget; -import me.shedaniel.rei.gui.widget.WidgetWithBounds; -import me.shedaniel.rei.utils.CollectionUtils; +import me.shedaniel.rei.api.gui.widgets.Widget; +import me.shedaniel.rei.api.gui.widgets.WidgetWithBounds; +import me.shedaniel.rei.api.util.CollectionUtils; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.ChatFormatting; diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/RecipeRegistryImpl.java b/runtime/src/main/java/me/shedaniel/rei/impl/RecipeRegistryImpl.java index e983bc535..ff94be58c 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/RecipeRegistryImpl.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/RecipeRegistryImpl.java @@ -33,10 +33,14 @@ import me.shedaniel.rei.api.ingredient.EntryIngredient; import me.shedaniel.rei.api.ingredient.EntryStack; import me.shedaniel.rei.api.ingredient.util.EntryStacks; import me.shedaniel.rei.api.plugins.REIPluginV0; -import me.shedaniel.rei.api.registry.category.DisplayCategory; +import me.shedaniel.rei.api.registry.CategoryRegistry; +import me.shedaniel.rei.api.registry.ParentReloadable; +import me.shedaniel.rei.api.registry.Reloadable; +import me.shedaniel.rei.api.registry.display.Display; +import me.shedaniel.rei.api.registry.display.DisplayCategory; import me.shedaniel.rei.api.subsets.SubsetsRegistry; +import me.shedaniel.rei.api.util.CollectionUtils; import me.shedaniel.rei.impl.subsets.SubsetsRegistryImpl; -import me.shedaniel.rei.utils.CollectionUtils; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.Util; @@ -58,14 +62,13 @@ import java.util.function.Consumer; import java.util.function.Function; import java.util.function.Predicate; import java.util.stream.Collectors; -import java.util.stream.Stream; @ApiStatus.Internal @Environment(EnvType.CLIENT) -public class RecipeRegistryImpl implements RecipeRegistry { - @SuppressWarnings("rawtypes") - private static final Comparator<Recipe> RECIPE_COMPARATOR = Comparator.comparing((Recipe o) -> o.getId().getNamespace()).thenComparing(o -> o.getId().getPath()); +public class RecipeRegistryImpl implements RecipeRegistry, ParentReloadable { + private static final Comparator<Recipe<?>> RECIPE_COMPARATOR = Comparator.comparing((Recipe<?> o) -> o.getId().getNamespace()).thenComparing(o -> o.getId().getPath()); + private final List<Reloadable> reloadables = new ArrayList<>(); private final List<FocusedStackProvider> focusedStackProviders = Lists.newArrayList(); private final List<AutoTransferHandler> autoTransferHandlers = Lists.newArrayList(); private final List<RecipeFunction<?>> recipeFunctions = Lists.newArrayList(); @@ -74,12 +77,15 @@ public class RecipeRegistryImpl implements RecipeRegistry { private final Map<ResourceLocation, List<Display>> recipeDisplays = Maps.newHashMap(); private final BiMap<DisplayCategory<?>, ResourceLocation> categories = HashBiMap.create(); private final Map<ResourceLocation, ButtonAreaSupplier> autoCraftAreaSupplierMap = Maps.newHashMap(); - private final Map<ResourceLocation, List<List<? extends EntryStack<?>>>> categoryWorkingStations = Maps.newHashMap(); private final List<DisplayVisibilityHandler> displayVisibilityHandlers = Lists.newArrayList(); private final List<LiveRecipeGenerator<Display>> liveRecipeGenerators = Lists.newArrayList(); private RecipeManager recipeManager; private boolean arePluginsLoading = false; + public RecipeRegistryImpl() { + reloadables.add(CategoryRegistry.getInstance()); + } + @Override public List<EntryStack<?>> findCraftableEntriesByItems(Iterable<? extends EntryStack<?>> inventoryItems) { List<EntryStack<?>> craftables = new ArrayList<>(); @@ -113,29 +119,6 @@ public class RecipeRegistryImpl implements RecipeRegistry { } @Override - public void registerCategory(DisplayCategory<?> category) { - categories.put(category, category.getIdentifier()); - recipeDisplays.put(category.getIdentifier(), Lists.newArrayList()); - categoryWorkingStations.put(category.getIdentifier(), Lists.newArrayList()); - } - - @SafeVarargs - @Override - public final void registerWorkingStations(ResourceLocation category, List<? extends EntryStack<?>>... workingStations) { - categoryWorkingStations.get(category).addAll(Arrays.asList(workingStations)); - } - - @Override - public void registerWorkingStations(ResourceLocation category, EntryStack<?>... workingStations) { - categoryWorkingStations.get(category).addAll(Stream.of(workingStations).map(Collections::singletonList).collect(Collectors.toList())); - } - - @Override - public List<List<? extends EntryStack<?>>> getWorkingStations(ResourceLocation category) { - return categoryWorkingStations.getOrDefault(category, Collections.emptyList()); - } - - @Override public void registerDisplay(Display display) { ResourceLocation identifier = Objects.requireNonNull(display.getRecipeCategory()); if (!recipeDisplays.containsKey(identifier)) @@ -347,6 +330,9 @@ public class RecipeRegistryImpl implements RecipeRegistry { MutablePair<Stopwatch, String> sectionData = new MutablePair<>(Stopwatch.createUnstarted(), ""); startSection(sectionData, "reset-data"); + for (Reloadable reloadable : reloadables) { + reloadable.resetData(); + } arePluginsLoading = true; ScreenHelper.clearLastRecipeScreenData(); recipeCount.setValue(0); @@ -355,7 +341,6 @@ public class RecipeRegistryImpl implements RecipeRegistry { this.categories.clear(); this.autoCraftAreaSupplierMap.clear(); this.screenClickAreas.clear(); - this.categoryWorkingStations.clear(); this.recipeFunctions.clear(); this.displayVisibilityHandlers.clear(); this.liveRecipeGenerators.clear(); diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/ScreenHelper.java b/runtime/src/main/java/me/shedaniel/rei/impl/ScreenHelper.java index 23dc8d9af..9cd5ea5f1 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/ScreenHelper.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/ScreenHelper.java @@ -33,14 +33,15 @@ import me.shedaniel.math.Rectangle; import me.shedaniel.math.api.Executor; import me.shedaniel.rei.RoughlyEnoughItemsState; import me.shedaniel.rei.api.*; +import me.shedaniel.rei.api.gui.widgets.TextField; import me.shedaniel.rei.api.ingredient.EntryStack; -import me.shedaniel.rei.api.widgets.Tooltip; +import me.shedaniel.rei.api.gui.widgets.Tooltip; import me.shedaniel.rei.gui.ContainerScreenOverlay; import me.shedaniel.rei.gui.OverlaySearchField; import me.shedaniel.rei.gui.RecipeScreen; import me.shedaniel.rei.gui.WarningAndErrorScreen; -import me.shedaniel.rei.gui.config.SearchFieldLocation; -import me.shedaniel.rei.gui.widget.TextFieldWidget; +import me.shedaniel.rei.api.gui.config.SearchFieldLocation; +import me.shedaniel.rei.impl.widgets.TextFieldWidget; import net.fabricmc.api.ClientModInitializer; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; @@ -94,7 +95,7 @@ public class ScreenHelper implements ClientModInitializer, REIHelper { @Override @Nullable - public TextFieldWidget getSearchTextField() { + public TextField getSearchTextField() { return searchField; } diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/SearchArgument.java b/runtime/src/main/java/me/shedaniel/rei/impl/SearchArgument.java index 9b5b531e2..469439552 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/SearchArgument.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/SearchArgument.java @@ -27,12 +27,12 @@ import com.google.common.base.MoreObjects; import com.google.common.collect.Lists; import me.shedaniel.math.Point; import me.shedaniel.rei.api.ingredient.EntryStack; -import me.shedaniel.rei.api.widgets.Tooltip; +import me.shedaniel.rei.api.gui.widgets.Tooltip; import me.shedaniel.rei.impl.search.AlwaysMatchingArgument; import me.shedaniel.rei.impl.search.Argument; import me.shedaniel.rei.impl.search.ArgumentsRegistry; import me.shedaniel.rei.impl.search.MatchStatus; -import me.shedaniel.rei.utils.CollectionUtils; +import me.shedaniel.rei.api.util.CollectionUtils; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.Minecraft; diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/entry/EmptyEntryDefinition.java b/runtime/src/main/java/me/shedaniel/rei/impl/entry/EmptyEntryDefinition.java index 85bcc4090..758fb738f 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/entry/EmptyEntryDefinition.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/entry/EmptyEntryDefinition.java @@ -29,9 +29,9 @@ import me.shedaniel.math.Point; import me.shedaniel.math.Rectangle; import me.shedaniel.rei.api.ingredient.EntryStack; import me.shedaniel.rei.api.ingredient.entry.*; -import me.shedaniel.rei.api.util.Renderer; -import me.shedaniel.rei.api.widgets.Tooltip; -import me.shedaniel.rei.utils.ImmutableLiteralText; +import me.shedaniel.rei.api.util.ImmutableLiteralText; +import me.shedaniel.rei.api.gui.Renderer; +import me.shedaniel.rei.api.gui.widgets.Tooltip; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/filtering/FilteringContextImpl.java b/runtime/src/main/java/me/shedaniel/rei/impl/filtering/FilteringContextImpl.java index 38e1ca6b3..a1636fcd4 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/filtering/FilteringContextImpl.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/filtering/FilteringContextImpl.java @@ -28,7 +28,7 @@ import com.google.common.collect.Maps; import com.google.common.collect.Sets; import me.shedaniel.rei.api.ingredient.EntryStack; import me.shedaniel.rei.impl.AmountIgnoredEntryStackWrapper; -import me.shedaniel.rei.utils.CollectionUtils; +import me.shedaniel.rei.api.util.CollectionUtils; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/filtering/FilteringResult.java b/runtime/src/main/java/me/shedaniel/rei/impl/filtering/FilteringResult.java index 6b7377dbf..8da303354 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/filtering/FilteringResult.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/filtering/FilteringResult.java @@ -26,7 +26,7 @@ package me.shedaniel.rei.impl.filtering; import com.google.common.collect.Lists; import me.shedaniel.rei.api.ingredient.EntryStack; import me.shedaniel.rei.impl.AmountIgnoredEntryStackWrapper; -import me.shedaniel.rei.utils.CollectionUtils; +import me.shedaniel.rei.api.util.CollectionUtils; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import org.jetbrains.annotations.ApiStatus; diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/filtering/FilteringRule.java b/runtime/src/main/java/me/shedaniel/rei/impl/filtering/FilteringRule.java index 36a39c62a..e508fd63d 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/filtering/FilteringRule.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/filtering/FilteringRule.java @@ -24,7 +24,7 @@ package me.shedaniel.rei.impl.filtering; import com.mojang.serialization.Lifecycle; -import me.shedaniel.rei.gui.config.entry.FilteringEntry; +import me.shedaniel.rei.api.gui.config.entry.FilteringEntry; import me.shedaniel.rei.impl.filtering.rules.ManualFilteringRule; import me.shedaniel.rei.impl.filtering.rules.SearchFilteringRule; import net.fabricmc.api.EnvType; diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/filtering/rules/ManualFilteringRule.java b/runtime/src/main/java/me/shedaniel/rei/impl/filtering/rules/ManualFilteringRule.java index 8f2974715..ebe957db3 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/filtering/rules/ManualFilteringRule.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/filtering/rules/ManualFilteringRule.java @@ -32,7 +32,7 @@ import me.shedaniel.rei.api.ingredient.util.EntryStacks; import me.shedaniel.rei.impl.filtering.AbstractFilteringRule; import me.shedaniel.rei.impl.filtering.FilteringContext; import me.shedaniel.rei.impl.filtering.FilteringResult; -import me.shedaniel.rei.utils.CollectionUtils; +import me.shedaniel.rei.api.util.CollectionUtils; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.TranslatableComponent; diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/filtering/rules/SearchFilteringRule.java b/runtime/src/main/java/me/shedaniel/rei/impl/filtering/rules/SearchFilteringRule.java index f4d393492..ed7abd4c6 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/filtering/rules/SearchFilteringRule.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/filtering/rules/SearchFilteringRule.java @@ -25,13 +25,13 @@ package me.shedaniel.rei.impl.filtering.rules; import com.google.common.collect.Lists; import me.shedaniel.rei.api.ingredient.EntryStack; -import me.shedaniel.rei.gui.config.entry.FilteringEntry; -import me.shedaniel.rei.gui.config.entry.FilteringRuleOptionsScreen; +import me.shedaniel.rei.api.gui.config.entry.FilteringEntry; +import me.shedaniel.rei.api.gui.config.entry.FilteringRuleOptionsScreen; import me.shedaniel.rei.impl.SearchArgument; import me.shedaniel.rei.impl.filtering.AbstractFilteringRule; import me.shedaniel.rei.impl.filtering.FilteringContext; import me.shedaniel.rei.impl.filtering.FilteringResult; -import me.shedaniel.rei.utils.CollectionUtils; +import me.shedaniel.rei.api.util.CollectionUtils; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.ChatFormatting; diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/registry/CategoryRegistryImpl.java b/runtime/src/main/java/me/shedaniel/rei/impl/registry/CategoryRegistryImpl.java new file mode 100644 index 000000000..2e4fb4fbb --- /dev/null +++ b/runtime/src/main/java/me/shedaniel/rei/impl/registry/CategoryRegistryImpl.java @@ -0,0 +1,73 @@ +package me.shedaniel.rei.impl.registry; + +import me.shedaniel.rei.api.ingredient.EntryIngredient; +import me.shedaniel.rei.api.registry.CategoryRegistry; +import me.shedaniel.rei.api.registry.Reloadable; +import me.shedaniel.rei.api.registry.display.Display; +import me.shedaniel.rei.api.registry.display.DisplayCategory; +import net.minecraft.resources.ResourceLocation; +import org.jetbrains.annotations.ApiStatus; + +import java.util.*; +import java.util.concurrent.ConcurrentHashMap; +import java.util.function.Consumer; + +@ApiStatus.Internal +public class CategoryRegistryImpl implements CategoryRegistry, Reloadable { + private final Map<ResourceLocation, Configuration<?>> categories = new ConcurrentHashMap<>(); + + @Override + public void resetData() { + this.categories.clear(); + } + + @Override + public <T extends Display> void register(DisplayCategory<T> category) { + this.categories.put(category.getIdentifier(), new Configuration<>(category)); + } + + @Override + public DisplayCategoryConfiguration<?> get(ResourceLocation category) { + return this.categories.get(category); + } + + @Override + public <T extends Display> DisplayCategoryConfiguration<T> get(ResourceLocation category, Class<T> displayClass) { + return null; + } + + @Override + public void configure(ResourceLocation category, Consumer<DisplayCategoryConfiguration<?>> action) { + + } + + @Override + public <T extends Display> void configure(ResourceLocation category, Class<T> displayClass, Consumer<DisplayCategoryConfiguration<T>> action) { + + } + + private static class Configuration<T extends Display> implements DisplayCategoryConfiguration<T> { + private final DisplayCategory<T> category; + private final List&l |
