diff options
| author | shedaniel <daniel@shedaniel.me> | 2020-04-18 15:48:19 +0800 |
|---|---|---|
| committer | shedaniel <daniel@shedaniel.me> | 2020-04-18 15:48:19 +0800 |
| commit | 8e617f5a6c92a21be270ec190261d979deac965f (patch) | |
| tree | db564a02bd9a4d60cf5362d0ae239924ccd5d9c6 /src/main/java/me/shedaniel/rei/impl/FluidSupportProviderImpl.java | |
| parent | 8fc595cace9efb981009b7a9f1a3be1809895164 (diff) | |
| download | RoughlyEnoughItems-8e617f5a6c92a21be270ec190261d979deac965f.tar.gz RoughlyEnoughItems-8e617f5a6c92a21be270ec190261d979deac965f.tar.bz2 RoughlyEnoughItems-8e617f5a6c92a21be270ec190261d979deac965f.zip | |
Added FluidSupportProvider
Signed-off-by: shedaniel <daniel@shedaniel.me>
Diffstat (limited to 'src/main/java/me/shedaniel/rei/impl/FluidSupportProviderImpl.java')
| -rw-r--r-- | src/main/java/me/shedaniel/rei/impl/FluidSupportProviderImpl.java | 49 |
1 files changed, 49 insertions, 0 deletions
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<FluidProvider> 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(); + } +} |
