diff options
| author | shedaniel <daniel@shedaniel.me> | 2021-03-26 18:49:04 +0800 |
|---|---|---|
| committer | shedaniel <daniel@shedaniel.me> | 2021-03-26 18:49:04 +0800 |
| commit | 659027baa60c56b5aeab38d4f7c676c37857ec68 (patch) | |
| tree | 3f2e80521f4c999505eea7dd54503eccc9ec42a9 /api/src/main/java/me/shedaniel | |
| parent | 02d1d95dd54285cc1237d1b5016401274a5ae5f0 (diff) | |
| download | RoughlyEnoughItems-659027baa60c56b5aeab38d4f7c676c37857ec68.tar.gz RoughlyEnoughItems-659027baa60c56b5aeab38d4f7c676c37857ec68.tar.bz2 RoughlyEnoughItems-659027baa60c56b5aeab38d4f7c676c37857ec68.zip | |
Improve Search Argument Matching
Signed-off-by: shedaniel <daniel@shedaniel.me>
Diffstat (limited to 'api/src/main/java/me/shedaniel')
8 files changed, 57 insertions, 19 deletions
diff --git a/api/src/main/java/me/shedaniel/rei/api/client/entry/renderer/EntryRenderer.java b/api/src/main/java/me/shedaniel/rei/api/client/entry/renderer/EntryRenderer.java index 14cbcaa04..9ee60c5f8 100644 --- a/api/src/main/java/me/shedaniel/rei/api/client/entry/renderer/EntryRenderer.java +++ b/api/src/main/java/me/shedaniel/rei/api/client/entry/renderer/EntryRenderer.java @@ -29,6 +29,8 @@ import me.shedaniel.math.Rectangle; import me.shedaniel.rei.api.client.gui.widgets.Tooltip; import me.shedaniel.rei.api.common.entry.EntryStack; import me.shedaniel.rei.impl.ClientInternals; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.Nullable; @@ -37,9 +39,11 @@ public interface EntryRenderer<T> { return ClientInternals.getEmptyEntryRenderer(); } + @Environment(EnvType.CLIENT) void render(EntryStack<T> entry, PoseStack matrices, Rectangle bounds, int mouseX, int mouseY, float delta); @Nullable + @Environment(EnvType.CLIENT) Tooltip getTooltip(EntryStack<T> entry, Point mouse); @ApiStatus.NonExtendable diff --git a/api/src/main/java/me/shedaniel/rei/api/client/gui/Renderer.java b/api/src/main/java/me/shedaniel/rei/api/client/gui/Renderer.java index 09ab18617..22fe2fcb0 100644 --- a/api/src/main/java/me/shedaniel/rei/api/client/gui/Renderer.java +++ b/api/src/main/java/me/shedaniel/rei/api/client/gui/Renderer.java @@ -27,12 +27,16 @@ import com.mojang.blaze3d.vertex.PoseStack; import me.shedaniel.math.Point; import me.shedaniel.math.Rectangle; import me.shedaniel.rei.api.client.gui.widgets.Tooltip; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; import org.jetbrains.annotations.Nullable; public interface Renderer { + @Environment(EnvType.CLIENT) void render(PoseStack matrices, Rectangle bounds, int mouseX, int mouseY, float delta); @Nullable + @Environment(EnvType.CLIENT) default Tooltip getTooltip(Point mouse) { return null; } diff --git a/api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/WidgetHolder.java b/api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/WidgetHolder.java index 74d66a18a..ef0d90312 100644 --- a/api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/WidgetHolder.java +++ b/api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/WidgetHolder.java @@ -1,3 +1,26 @@ +/* + * This file is licensed under the MIT License, part of Roughly Enough Items. + * Copyright (c) 2018, 2019, 2020 shedaniel + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + package me.shedaniel.rei.api.client.gui.widgets; import net.minecraft.client.gui.components.events.GuiEventListener; diff --git a/api/src/main/java/me/shedaniel/rei/api/common/entry/EntryStack.java b/api/src/main/java/me/shedaniel/rei/api/common/entry/EntryStack.java index d251f8a14..07cbe62f7 100644 --- a/api/src/main/java/me/shedaniel/rei/api/common/entry/EntryStack.java +++ b/api/src/main/java/me/shedaniel/rei/api/common/entry/EntryStack.java @@ -27,9 +27,11 @@ import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.mojang.serialization.Dynamic; import com.mojang.serialization.JsonOps; +import me.shedaniel.math.Point; +import me.shedaniel.rei.api.client.config.ConfigObject; +import me.shedaniel.rei.api.client.entry.renderer.EntryRenderer; import me.shedaniel.rei.api.client.gui.Renderer; import me.shedaniel.rei.api.client.gui.widgets.Tooltip; -import me.shedaniel.rei.api.client.entry.renderer.EntryRenderer; import me.shedaniel.rei.api.common.entry.comparison.ComparisonContext; import me.shedaniel.rei.api.common.entry.type.EntryDefinition; import me.shedaniel.rei.api.common.entry.type.EntryType; @@ -122,6 +124,16 @@ public interface EntryStack<T> extends TextRepresentable, Renderer { throw new UnsupportedOperationException(getType().getId() + " does not support serialization!"); } + @Nullable + @Environment(EnvType.CLIENT) + Tooltip getTooltip(Point mouse, boolean appendModName); + + @Override + @Nullable + default Tooltip getTooltip(Point mouse) { + return getTooltip(mouse, ConfigObject.getInstance().shouldAppendModNames()); + } + EntryDefinition<T> getDefinition(); default EntryType<T> getType() { @@ -132,6 +144,7 @@ public interface EntryStack<T> extends TextRepresentable, Renderer { return getDefinition().getValueType(); } + @Environment(EnvType.CLIENT) default EntryRenderer<T> getRenderer() { EntryRenderer<?> renderer = get(Settings.RENDER).apply(this); return renderer == null ? EntryRenderer.empty() : renderer.cast(); @@ -144,7 +157,6 @@ public interface EntryStack<T> extends TextRepresentable, Renderer { EntryStack<T> copy(); - @ApiStatus.Internal default EntryStack<T> rewrap() { return copy(); } @@ -187,8 +199,10 @@ public interface EntryStack<T> extends TextRepresentable, Renderer { public static final Supplier<Boolean> TRUE = () -> true; public static final Supplier<Boolean> FALSE = () -> false; + @Environment(EnvType.CLIENT) public static final Function<EntryStack<?>, EntryRenderer<?>> DEFAULT_RENDERER = stack -> stack.getDefinition().getRenderer(); public static final BiFunction<EntryStack<?>, Tooltip, Tooltip> DEFAULT_TOOLTIP_PROCESSOR = (stack, tooltip) -> tooltip; + @Environment(EnvType.CLIENT) public static final Settings<Function<EntryStack<?>, EntryRenderer<?>>> RENDER = new Settings<>(DEFAULT_RENDERER); @Deprecated public static final Settings<BiFunction<EntryStack<?>, Tooltip, Tooltip>> TOOLTIP_PROCESSOR = new Settings<>(DEFAULT_TOOLTIP_PROCESSOR); diff --git a/api/src/main/java/me/shedaniel/rei/api/common/entry/type/EntryDefinition.java b/api/src/main/java/me/shedaniel/rei/api/common/entry/type/EntryDefinition.java index 146fbc1a8..f08480de1 100644 --- a/api/src/main/java/me/shedaniel/rei/api/common/entry/type/EntryDefinition.java +++ b/api/src/main/java/me/shedaniel/rei/api/common/entry/type/EntryDefinition.java @@ -24,8 +24,8 @@ package me.shedaniel.rei.api.common.entry.type; import me.shedaniel.rei.api.client.entry.renderer.EntryRenderer; -import me.shedaniel.rei.api.common.entry.EntryStack; import me.shedaniel.rei.api.common.entry.EntrySerializer; +import me.shedaniel.rei.api.common.entry.EntryStack; import me.shedaniel.rei.api.common.entry.comparison.ComparisonContext; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; @@ -36,6 +36,11 @@ import org.jetbrains.annotations.Nullable; import java.util.Collection; +/** + * A definition of an {@link EntryType}, an interface to provide information from an object type. + * + * @param <T> the type of entry + */ public interface EntryDefinition<T> { Class<T> getValueType(); @@ -44,7 +49,8 @@ public interface EntryDefinition<T> { @Environment(EnvType.CLIENT) EntryRenderer<T> getRenderer(); - @Nullable ResourceLocation getIdentifier(EntryStack<T> entry, T value); + @Nullable + ResourceLocation getIdentifier(EntryStack<T> entry, T value); boolean isEmpty(EntryStack<T> entry, T value); diff --git a/api/src/main/java/me/shedaniel/rei/api/common/transfer/info/MenuInfo.java b/api/src/main/java/me/shedaniel/rei/api/common/transfer/info/MenuInfo.java index 0a7560a8f..bdb54adbb 100644 --- a/api/src/main/java/me/shedaniel/rei/api/common/transfer/info/MenuInfo.java +++ b/api/src/main/java/me/shedaniel/rei/api/common/transfer/info/MenuInfo.java @@ -49,8 +49,6 @@ import java.util.List; * @see me.shedaniel.rei.api.common.transfer.info.simple.SimpleGridMenuInfo */ public interface MenuInfo<T extends AbstractContainerMenu, D extends Display> { - Class<? extends T> getMenuClass(); - default RecipeFinderPopulator<T, D> getRecipeFinderPopulator() { return (context, recipeFinder) -> { for (StackAccessor inventoryStack : getInventoryStacks(context)) { diff --git a/api/src/main/java/me/shedaniel/rei/api/common/transfer/info/MenuInfoRegistry.java b/api/src/main/java/me/shedaniel/rei/api/common/transfer/info/MenuInfoRegistry.java index ce4c2065e..4248a198f 100644 --- a/api/src/main/java/me/shedaniel/rei/api/common/transfer/info/MenuInfoRegistry.java +++ b/api/src/main/java/me/shedaniel/rei/api/common/transfer/info/MenuInfoRegistry.java @@ -40,9 +40,9 @@ public interface MenuInfoRegistry extends Reloadable<REIServerPlugin> { return PluginManager.getServerInstance().get(MenuInfoRegistry.class); } - <D extends Display> void register(CategoryIdentifier<D> category, MenuInfo<?, D> menuInfo); + <C extends AbstractContainerMenu, D extends Display> void register(CategoryIdentifier<D> category, Class<C> menuClass, MenuInfo<C, D> menuInfo); <D extends Display> void registerGeneric(Predicate<CategoryIdentifier<?>> categoryPredicate, MenuInfo<?, D> menuInfo); - <T extends AbstractContainerMenu, D extends Display> MenuInfo<T, D> get(CategoryIdentifier<D> category, Class<T> menuClass); + <C extends AbstractContainerMenu, D extends Display> MenuInfo<C, D> get(CategoryIdentifier<D> category, Class<C> menuClass); } diff --git a/api/src/main/java/me/shedaniel/rei/api/common/transfer/info/simple/RecipeBookGridMenuInfo.java b/api/src/main/java/me/shedaniel/rei/api/common/transfer/info/simple/RecipeBookGridMenuInfo.java index a513c649a..f1a4bb84a 100644 --- a/api/src/main/java/me/shedaniel/rei/api/common/transfer/info/simple/RecipeBookGridMenuInfo.java +++ b/api/src/main/java/me/shedaniel/rei/api/common/transfer/info/simple/RecipeBookGridMenuInfo.java @@ -29,17 +29,6 @@ import net.minecraft.world.inventory.RecipeBookMenu; import net.minecraft.world.item.ItemStack; public class RecipeBookGridMenuInfo<T extends RecipeBookMenu<?>, D extends SimpleMenuDisplay> implements SimpleGridMenuInfo<T, D> { - private final Class<? extends RecipeBookMenu<?>> menuClass; - - public RecipeBookGridMenuInfo(Class<T> menuClass) { - this.menuClass = menuClass; - } - - @Override - public Class<? extends T> getMenuClass() { - return (Class<? extends T>) menuClass; - } - @Override public int getCraftingResultSlotIndex(T menu) { return menu.getResultSlotIndex(); |
