From 8e617f5a6c92a21be270ec190261d979deac965f Mon Sep 17 00:00:00 2001 From: shedaniel Date: Sat, 18 Apr 2020 15:48:19 +0800 Subject: Added FluidSupportProvider Signed-off-by: shedaniel --- .../rei/impl/FluidSupportProviderImpl.java | 49 ++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 src/main/java/me/shedaniel/rei/impl/FluidSupportProviderImpl.java (limited to 'src/main/java/me/shedaniel/rei/impl/FluidSupportProviderImpl.java') diff --git a/src/main/java/me/shedaniel/rei/impl/FluidSupportProviderImpl.java b/src/main/java/me/shedaniel/rei/impl/FluidSupportProviderImpl.java new file mode 100644 index 000000000..dede539c0 --- /dev/null +++ b/src/main/java/me/shedaniel/rei/impl/FluidSupportProviderImpl.java @@ -0,0 +1,49 @@ +package me.shedaniel.rei.impl; + +import com.google.common.collect.Lists; +import me.shedaniel.rei.api.EntryStack; +import me.shedaniel.rei.api.fluid.FluidSupportProvider; +import org.jetbrains.annotations.ApiStatus; +import org.jetbrains.annotations.NotNull; + +import java.util.List; +import java.util.Objects; + +@ApiStatus.Experimental +@ApiStatus.Internal +public class FluidSupportProviderImpl implements FluidSupportProvider { + private final List providers = Lists.newArrayList(); + + public void reset() { + providers.clear(); + } + + @Override + public void registerFluidProvider(@NotNull FluidProvider provider) { + providers.add(Objects.requireNonNull(provider, "Registered provider is null!")); + } + + @Override + public @NotNull EntryStack fluidToItem(@NotNull EntryStack fluidStack) { + if (fluidStack.isEmpty()) return EntryStack.empty(); + if (fluidStack.getType() != EntryStack.Type.FLUID) + throw new IllegalArgumentException("EntryStack must be fluid!"); + for (FluidProvider provider : providers) { + EntryStack stack = Objects.requireNonNull(provider.fluidToItem(fluidStack), provider.getClass() + " is creating null objects for fluidToItem!"); + if (!stack.isEmpty()) return stack; + } + return EntryStack.empty(); + } + + @Override + public @NotNull EntryStack itemToFluid(@NotNull EntryStack itemStack) { + if (itemStack.isEmpty()) return EntryStack.empty(); + if (itemStack.getType() != EntryStack.Type.ITEM) + throw new IllegalArgumentException("EntryStack must be item!"); + for (FluidProvider provider : providers) { + EntryStack stack = Objects.requireNonNull(provider.itemToFluid(itemStack), provider.getClass() + " is creating null objects for itemToFluid!"); + if (!stack.isEmpty()) return stack; + } + return EntryStack.empty(); + } +} -- cgit