aboutsummaryrefslogtreecommitdiff
path: root/api/src/main/java/me/shedaniel
diff options
context:
space:
mode:
authorshedaniel <daniel@shedaniel.me>2021-03-26 18:49:04 +0800
committershedaniel <daniel@shedaniel.me>2021-03-26 18:49:04 +0800
commit659027baa60c56b5aeab38d4f7c676c37857ec68 (patch)
tree3f2e80521f4c999505eea7dd54503eccc9ec42a9 /api/src/main/java/me/shedaniel
parent02d1d95dd54285cc1237d1b5016401274a5ae5f0 (diff)
downloadRoughlyEnoughItems-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')
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/client/entry/renderer/EntryRenderer.java4
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/client/gui/Renderer.java4
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/WidgetHolder.java23
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/common/entry/EntryStack.java18
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/common/entry/type/EntryDefinition.java10
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/common/transfer/info/MenuInfo.java2
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/common/transfer/info/MenuInfoRegistry.java4
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/common/transfer/info/simple/RecipeBookGridMenuInfo.java11
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();