aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/client/registry/display/visibility/DisplayVisibilityPredicate.java3
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/client/registry/screen/FocusedStackProvider.java4
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/common/entry/type/EntryTypeBridge.java4
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/common/fluid/FluidSupportProvider.java5
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/common/util/EntryStacks.java15
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/common/DefaultPlugin.java6
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/registry/display/DisplayRegistryImpl.java8
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/registry/screen/ScreenRegistryImpl.java21
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/common/compat/LBASupportPlugin.java8
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/common/fluid/FluidSupportProviderImpl.java14
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/plugin/client/DefaultClientRuntimePlugin.java6
11 files changed, 44 insertions, 50 deletions
diff --git a/api/src/main/java/me/shedaniel/rei/api/client/registry/display/visibility/DisplayVisibilityPredicate.java b/api/src/main/java/me/shedaniel/rei/api/client/registry/display/visibility/DisplayVisibilityPredicate.java
index 16a13c04c..e9368fb75 100644
--- a/api/src/main/java/me/shedaniel/rei/api/client/registry/display/visibility/DisplayVisibilityPredicate.java
+++ b/api/src/main/java/me/shedaniel/rei/api/client/registry/display/visibility/DisplayVisibilityPredicate.java
@@ -23,6 +23,7 @@
package me.shedaniel.rei.api.client.registry.display.visibility;
+import dev.architectury.event.EventResult;
import me.shedaniel.rei.api.client.registry.display.DisplayCategory;
import me.shedaniel.rei.api.common.display.Display;
import net.fabricmc.api.EnvType;
@@ -50,7 +51,7 @@ public interface DisplayVisibilityPredicate extends Comparable<DisplayVisibility
* @param display the display of the recipe
* @return the visibility
*/
- InteractionResult handleDisplay(DisplayCategory<?> category, Display display);
+ EventResult handleDisplay(DisplayCategory<?> category, Display display);
@Override
default int compareTo(DisplayVisibilityPredicate o) {
diff --git a/api/src/main/java/me/shedaniel/rei/api/client/registry/screen/FocusedStackProvider.java b/api/src/main/java/me/shedaniel/rei/api/client/registry/screen/FocusedStackProvider.java
index 9c115593e..7eb47bfeb 100644
--- a/api/src/main/java/me/shedaniel/rei/api/client/registry/screen/FocusedStackProvider.java
+++ b/api/src/main/java/me/shedaniel/rei/api/client/registry/screen/FocusedStackProvider.java
@@ -23,12 +23,12 @@
package me.shedaniel.rei.api.client.registry.screen;
+import dev.architectury.event.CompoundEventResult;
import me.shedaniel.math.Point;
import me.shedaniel.rei.api.common.entry.EntryStack;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.client.gui.screens.Screen;
-import net.minecraft.world.InteractionResultHolder;
@FunctionalInterface
@Environment(EnvType.CLIENT)
@@ -40,7 +40,7 @@ public interface FocusedStackProvider extends Comparable<FocusedStackProvider> {
return 0d;
}
- InteractionResultHolder<EntryStack<?>> provide(Screen screen, Point mouse);
+ CompoundEventResult<EntryStack<?>> provide(Screen screen, Point mouse);
@Override
default int compareTo(FocusedStackProvider o) {
diff --git a/api/src/main/java/me/shedaniel/rei/api/common/entry/type/EntryTypeBridge.java b/api/src/main/java/me/shedaniel/rei/api/common/entry/type/EntryTypeBridge.java
index 7f81fc181..fcbf6e3db 100644
--- a/api/src/main/java/me/shedaniel/rei/api/common/entry/type/EntryTypeBridge.java
+++ b/api/src/main/java/me/shedaniel/rei/api/common/entry/type/EntryTypeBridge.java
@@ -23,8 +23,8 @@
package me.shedaniel.rei.api.common.entry.type;
+import dev.architectury.event.CompoundEventResult;
import me.shedaniel.rei.api.common.entry.EntryStack;
-import net.minecraft.world.InteractionResultHolder;
import java.util.stream.Stream;
@@ -37,5 +37,5 @@ import java.util.stream.Stream;
*/
@FunctionalInterface
public interface EntryTypeBridge<A, B> {
- InteractionResultHolder<Stream<EntryStack<B>>> bridge(EntryStack<A> object);
+ CompoundEventResult<Stream<EntryStack<B>>> bridge(EntryStack<A> object);
}
diff --git a/api/src/main/java/me/shedaniel/rei/api/common/fluid/FluidSupportProvider.java b/api/src/main/java/me/shedaniel/rei/api/common/fluid/FluidSupportProvider.java
index 0cea4cc0d..bc9ca90d8 100644
--- a/api/src/main/java/me/shedaniel/rei/api/common/fluid/FluidSupportProvider.java
+++ b/api/src/main/java/me/shedaniel/rei/api/common/fluid/FluidSupportProvider.java
@@ -23,14 +23,13 @@
package me.shedaniel.rei.api.common.fluid;
+import dev.architectury.event.CompoundEventResult;
import dev.architectury.fluid.FluidStack;
import me.shedaniel.rei.api.common.entry.EntryStack;
import me.shedaniel.rei.api.common.plugins.PluginManager;
import me.shedaniel.rei.api.common.plugins.REIPlugin;
import me.shedaniel.rei.api.common.registry.Reloadable;
-import net.minecraft.world.InteractionResultHolder;
import net.minecraft.world.item.ItemStack;
-import org.jetbrains.annotations.Nullable;
import java.util.List;
import java.util.Optional;
@@ -50,6 +49,6 @@ public interface FluidSupportProvider extends Reloadable<REIPlugin<?>>, List<Flu
@FunctionalInterface
interface Provider {
- InteractionResultHolder<@Nullable Stream<EntryStack<FluidStack>>> itemToFluid(EntryStack<? extends ItemStack> stack);
+ CompoundEventResult<Stream<EntryStack<FluidStack>>> itemToFluid(EntryStack<? extends ItemStack> stack);
}
}
diff --git a/api/src/main/java/me/shedaniel/rei/api/common/util/EntryStacks.java b/api/src/main/java/me/shedaniel/rei/api/common/util/EntryStacks.java
index 02459b8e8..8b421e151 100644
--- a/api/src/main/java/me/shedaniel/rei/api/common/util/EntryStacks.java
+++ b/api/src/main/java/me/shedaniel/rei/api/common/util/EntryStacks.java
@@ -23,6 +23,7 @@
package me.shedaniel.rei.api.common.util;
+import dev.architectury.event.CompoundEventResult;
import dev.architectury.fluid.FluidStack;
import me.shedaniel.rei.api.common.entry.EntryStack;
import me.shedaniel.rei.api.common.entry.comparison.ComparisonContext;
@@ -30,8 +31,6 @@ import me.shedaniel.rei.api.common.entry.type.EntryType;
import me.shedaniel.rei.api.common.entry.type.EntryTypeBridge;
import me.shedaniel.rei.api.common.entry.type.EntryTypeRegistry;
import me.shedaniel.rei.api.common.entry.type.VanillaEntryTypes;
-import net.minecraft.world.InteractionResult;
-import net.minecraft.world.InteractionResultHolder;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.ItemLike;
import net.minecraft.world.level.material.Fluid;
@@ -84,9 +83,9 @@ public final class EntryStacks {
return left.getDefinition().equals(left.getValue(), right.<A>castValue(), context);
}
for (EntryTypeBridge<A, B> bridge : EntryTypeRegistry.getInstance().getBridgesFor(leftType, rightType)) {
- InteractionResultHolder<Stream<EntryStack<B>>> holder = bridge.bridge(left);
- if (holder.getResult() == InteractionResult.SUCCESS) {
- Iterator<EntryStack<B>> iterator = holder.getObject().iterator();
+ CompoundEventResult<Stream<EntryStack<B>>> holder = bridge.bridge(left);
+ if (holder.isTrue()) {
+ Iterator<EntryStack<B>> iterator = holder.object().iterator();
while (iterator.hasNext()) {
EntryStack<B> next = iterator.next();
if (next.getDefinition().equals(next.getValue(), right.getValue(), context)) {
@@ -96,9 +95,9 @@ public final class EntryStacks {
}
}
for (EntryTypeBridge<B, A> bridge : EntryTypeRegistry.getInstance().getBridgesFor(rightType, leftType)) {
- InteractionResultHolder<Stream<EntryStack<A>>> holder = bridge.bridge(right);
- if (holder.getResult() == InteractionResult.SUCCESS) {
- Iterator<EntryStack<A>> iterator = holder.getObject().iterator();
+ CompoundEventResult<Stream<EntryStack<A>>> holder = bridge.bridge(right);
+ if (holder.isTrue()) {
+ Iterator<EntryStack<A>> iterator = holder.object().iterator();
while (iterator.hasNext()) {
EntryStack<A> next = iterator.next();
if (next.getDefinition().equals(next.getValue(), left.getValue(), context)) {
diff --git a/default-plugin/src/main/java/me/shedaniel/rei/plugin/common/DefaultPlugin.java b/default-plugin/src/main/java/me/shedaniel/rei/plugin/common/DefaultPlugin.java
index 48778e497..55cb3f4d1 100644
--- a/default-plugin/src/main/java/me/shedaniel/rei/plugin/common/DefaultPlugin.java
+++ b/default-plugin/src/main/java/me/shedaniel/rei/plugin/common/DefaultPlugin.java
@@ -23,6 +23,7 @@
package me.shedaniel.rei.plugin.common;
+import dev.architectury.event.CompoundEventResult;
import dev.architectury.hooks.fluid.FluidStackHooks;
import dev.architectury.injectables.annotations.ExpectPlatform;
import dev.architectury.injectables.annotations.PlatformOnly;
@@ -50,7 +51,6 @@ import me.shedaniel.rei.plugin.common.displays.crafting.DefaultCraftingDisplay;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.nbt.ListTag;
import net.minecraft.nbt.Tag;
-import net.minecraft.world.InteractionResultHolder;
import net.minecraft.world.inventory.*;
import net.minecraft.world.item.BucketItem;
import net.minecraft.world.item.ItemStack;
@@ -87,10 +87,10 @@ public class DefaultPlugin implements BuiltinPlugin, REIServerPlugin {
if (stack.getItem() instanceof BucketItem) {
Fluid fluid = ((BucketItem) stack.getItem()).content;
if (fluid != null) {
- return InteractionResultHolder.success(Stream.of(EntryStacks.of(fluid, FluidStackHooks.bucketAmount())));
+ return CompoundEventResult.interruptTrue(Stream.of(EntryStacks.of(fluid, FluidStackHooks.bucketAmount())));
}
}
- return InteractionResultHolder.pass(null);
+ return CompoundEventResult.pass();
});
if (Platform.isForge()) {
registerForgeFluidSupport(support);
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/registry/display/DisplayRegistryImpl.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/registry/display/DisplayRegistryImpl.java
index 6459963bc..fb5186dc1 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/client/registry/display/DisplayRegistryImpl.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/registry/display/DisplayRegistryImpl.java
@@ -23,6 +23,7 @@
package me.shedaniel.rei.impl.client.registry.display;
+import dev.architectury.event.EventResult;
import me.shedaniel.rei.RoughlyEnoughItemsCore;
import me.shedaniel.rei.api.client.plugins.REIClientPlugin;
import me.shedaniel.rei.api.client.registry.category.CategoryRegistry;
@@ -33,7 +34,6 @@ import me.shedaniel.rei.api.client.registry.display.visibility.DisplayVisibility
import me.shedaniel.rei.api.common.category.CategoryIdentifier;
import me.shedaniel.rei.api.common.display.Display;
import me.shedaniel.rei.impl.common.registry.RecipeManagerContextImpl;
-import net.minecraft.world.InteractionResult;
import net.minecraft.world.item.crafting.Recipe;
import org.apache.commons.lang3.mutable.MutableInt;
@@ -114,9 +114,9 @@ public class DisplayRegistryImpl extends RecipeManagerContextImpl<REIClientPlugi
DisplayCategory<Display> category = (DisplayCategory<Display>) CategoryRegistry.getInstance().get(display.getCategoryIdentifier()).getCategory();
for (DisplayVisibilityPredicate predicate : visibilityPredicates) {
try {
- InteractionResult result = predicate.handleDisplay(category, display);
- if (result != InteractionResult.PASS) {
- return result == InteractionResult.SUCCESS;
+ EventResult result = predicate.handleDisplay(category, display);
+ if (result.interruptsFurtherEvaluation()) {
+ return result.isEmpty() || result.isTrue();
}
} catch (Throwable throwable) {
RoughlyEnoughItemsCore.LOGGER.error("Failed to check if the recipe is visible!", throwable);
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/registry/screen/ScreenRegistryImpl.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/registry/screen/ScreenRegistryImpl.java
index 72aae4b0a..0577de76e 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/client/registry/screen/ScreenRegistryImpl.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/registry/screen/ScreenRegistryImpl.java
@@ -26,6 +26,7 @@ package me.shedaniel.rei.impl.client.registry.screen;
import com.google.common.collect.HashMultimap;
import com.google.common.collect.Multimap;
import com.mojang.blaze3d.platform.Window;
+import dev.architectury.event.CompoundEventResult;
import me.shedaniel.math.Point;
import me.shedaniel.math.Rectangle;
import me.shedaniel.rei.api.client.gui.config.DisplayPanelLocation;
@@ -46,7 +47,6 @@ import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.screens.Screen;
import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen;
import net.minecraft.world.InteractionResult;
-import net.minecraft.world.InteractionResultHolder;
import net.minecraft.world.inventory.AbstractContainerMenu;
import org.apache.commons.lang3.mutable.Mutable;
import org.apache.commons.lang3.mutable.MutableObject;
@@ -128,12 +128,12 @@ public class ScreenRegistryImpl implements ScreenRegistry {
@Override
public <T extends Screen> EntryStack<?> getFocusedStack(T screen, Point mouse) {
for (FocusedStackProvider provider : focusedStackProviders) {
- InteractionResultHolder<EntryStack<?>> result = Objects.requireNonNull(provider.provide(screen, mouse));
- if (result.getResult() == InteractionResult.SUCCESS) {
- if (result != null && !result.getObject().isEmpty())
- return result.getObject();
+ CompoundEventResult<EntryStack<?>> result = Objects.requireNonNull(provider.provide(screen, mouse));
+ if (result.isTrue()) {
+ if (result != null && !result.object().isEmpty())
+ return result.object();
return null;
- } else if (result.getResult() == InteractionResult.FAIL)
+ } else if (result.isFalse())
return null;
}
@@ -249,13 +249,12 @@ public class ScreenRegistryImpl implements ScreenRegistry {
});
registerFocusedStack(new FocusedStackProvider() {
@Override
- public InteractionResultHolder<EntryStack<?>> provide(Screen screen, Point mouse) {
- if (screen instanceof AbstractContainerScreen) {
- AbstractContainerScreen<?> containerScreen = (AbstractContainerScreen<?>) screen;
+ public CompoundEventResult<EntryStack<?>> provide(Screen screen, Point mouse) {
+ if (screen instanceof AbstractContainerScreen<?> containerScreen) {
if (containerScreen.hoveredSlot != null && !containerScreen.hoveredSlot.getItem().isEmpty())
- return InteractionResultHolder.success(EntryStacks.of(containerScreen.hoveredSlot.getItem()));
+ return CompoundEventResult.interruptTrue(EntryStacks.of(containerScreen.hoveredSlot.getItem()));
}
- return InteractionResultHolder.pass(EntryStack.empty());
+ return CompoundEventResult.pass();
}
@Override
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/common/compat/LBASupportPlugin.java b/runtime/src/main/java/me/shedaniel/rei/impl/common/compat/LBASupportPlugin.java
index eba988a5d..fac34a62b 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/common/compat/LBASupportPlugin.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/common/compat/LBASupportPlugin.java
@@ -26,13 +26,11 @@ package me.shedaniel.rei.impl.common.compat;
import alexiil.mc.lib.attributes.fluid.FluidAttributes;
import alexiil.mc.lib.attributes.fluid.GroupedFluidInvView;
import alexiil.mc.lib.attributes.fluid.amount.FluidAmount;
+import dev.architectury.event.CompoundEventResult;
import dev.architectury.hooks.fluid.FluidStackHooks;
import me.shedaniel.rei.api.common.fluid.FluidSupportProvider;
import me.shedaniel.rei.api.common.plugins.REIServerPlugin;
import me.shedaniel.rei.api.common.util.EntryStacks;
-import net.minecraft.world.InteractionResultHolder;
-
-import java.util.stream.Stream;
public class LBASupportPlugin implements REIServerPlugin {
@Override
@@ -40,13 +38,13 @@ public class LBASupportPlugin implements REIServerPlugin {
support.register(entry -> {
GroupedFluidInvView view = FluidAttributes.GROUPED_INV_VIEW.get(entry.getValue());
if (view.getStoredFluids().size() > 0)
- return InteractionResultHolder.success(view.getStoredFluids().stream()
+ return CompoundEventResult.interruptTrue(view.getStoredFluids().stream()
.filter(fluidKey -> !fluidKey.isEmpty() && fluidKey.getRawFluid() != null)
.map(fluidKey -> {
FluidAmount amount = view.getAmount_F(fluidKey);
return EntryStacks.of(fluidKey.getRawFluid(), amount.mul(FluidStackHooks.bucketAmount()).asLong(1));
}));
- return InteractionResultHolder.pass(Stream.empty());
+ return CompoundEventResult.pass();
});
}
}
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/common/fluid/FluidSupportProviderImpl.java b/runtime/src/main/java/me/shedaniel/rei/impl/common/fluid/FluidSupportProviderImpl.java
index 4ed074f25..00ae2d0c4 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/common/fluid/FluidSupportProviderImpl.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/common/fluid/FluidSupportProviderImpl.java
@@ -25,12 +25,11 @@ package me.shedaniel.rei.impl.common.fluid;
import com.google.common.collect.ForwardingList;
import com.google.common.collect.Lists;
+import dev.architectury.event.CompoundEventResult;
import dev.architectury.fluid.FluidStack;
import me.shedaniel.rei.api.common.entry.EntryStack;
import me.shedaniel.rei.api.common.fluid.FluidSupportProvider;
import me.shedaniel.rei.api.common.plugins.REIPlugin;
-import net.minecraft.world.InteractionResult;
-import net.minecraft.world.InteractionResultHolder;
import net.minecraft.world.item.ItemStack;
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.Nullable;
@@ -65,12 +64,11 @@ public class FluidSupportProviderImpl extends ForwardingList<FluidSupportProvide
public Optional<Stream<EntryStack<FluidStack>>> itemToFluids(EntryStack<? extends ItemStack> stack) {
if (stack.isEmpty()) return Optional.empty();
for (Provider provider : providers) {
- InteractionResultHolder<@Nullable Stream<EntryStack<FluidStack>>> resultHolder = Objects.requireNonNull(provider.itemToFluid(stack));
- Stream<EntryStack<FluidStack>> stream = resultHolder.getObject();
- if (stream != null) {
- if (resultHolder.getResult().consumesAction()) {
- return Optional.of(stream);
- } else if (resultHolder.getResult() == InteractionResult.FAIL) {
+ CompoundEventResult<@Nullable Stream<EntryStack<FluidStack>>> resultHolder = Objects.requireNonNull(provider.itemToFluid(stack));
+ if (resultHolder.interruptsFurtherEvaluation()) {
+ if (resultHolder.isTrue()) {
+ return Optional.of(resultHolder.object());
+ } else {
return Optional.empty();
}
}
diff --git a/runtime/src/main/java/me/shedaniel/rei/plugin/client/DefaultClientRuntimePlugin.java b/runtime/src/main/java/me/shedaniel/rei/plugin/client/DefaultClientRuntimePlugin.java
index ee03470e0..397fcb04e 100644
--- a/runtime/src/main/java/me/shedaniel/rei/plugin/client/DefaultClientRuntimePlugin.java
+++ b/runtime/src/main/java/me/shedaniel/rei/plugin/client/DefaultClientRuntimePlugin.java
@@ -25,6 +25,7 @@ package me.shedaniel.rei.plugin.client;
import com.mojang.blaze3d.systems.RenderSystem;
import com.mojang.blaze3d.vertex.PoseStack;
+import dev.architectury.event.CompoundEventResult;
import dev.architectury.fluid.FluidStack;
import me.shedaniel.math.Point;
import me.shedaniel.math.Rectangle;
@@ -67,7 +68,6 @@ import net.minecraft.nbt.CompoundTag;
import net.minecraft.network.chat.TextComponent;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.InteractionResult;
-import net.minecraft.world.InteractionResultHolder;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
import org.jetbrains.annotations.ApiStatus;
@@ -91,9 +91,9 @@ public class DefaultClientRuntimePlugin implements REIClientPlugin {
registry.registerBridge(VanillaEntryTypes.ITEM, VanillaEntryTypes.FLUID, input -> {
Optional<Stream<EntryStack<FluidStack>>> stream = FluidSupportProvider.getInstance().itemToFluids(input);
if (!stream.isPresent()) {
- return InteractionResultHolder.pass(Stream.empty());
+ return CompoundEventResult.pass();
}
- return InteractionResultHolder.success(stream.get());
+ return CompoundEventResult.interruptTrue(stream.get());
});
}