diff options
| author | shedaniel <daniel@shedaniel.me> | 2021-06-02 15:55:21 +0800 |
|---|---|---|
| committer | shedaniel <daniel@shedaniel.me> | 2021-06-02 15:55:21 +0800 |
| commit | a39d028f5e3c26939c28efdddab281c7c91c3822 (patch) | |
| tree | 52258abc0f9b35e633798780e6d6e99090ff3309 | |
| parent | 6cfb14f181892d055e557fae4716749ff508ffbc (diff) | |
| download | RoughlyEnoughItems-a39d028f5e3c26939c28efdddab281c7c91c3822.tar.gz RoughlyEnoughItems-a39d028f5e3c26939c28efdddab281c7c91c3822.tar.bz2 RoughlyEnoughItems-a39d028f5e3c26939c28efdddab281c7c91c3822.zip | |
InteractionResultHolder -> CompoundEventResult
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()); }); } |
