Executor.java 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. package me.shedaniel.math.api;
  2. import net.fabricmc.api.EnvType;
  3. import net.fabricmc.loader.api.FabricLoader;
  4. import java.util.Optional;
  5. import java.util.concurrent.Callable;
  6. import java.util.function.Supplier;
  7. public class Executor {
  8. private Executor() {}
  9. public static void run(Supplier<Runnable> runnableSupplier) {
  10. runnableSupplier.get().run();
  11. }
  12. public static void runIf(Supplier<Boolean> predicate, Supplier<Runnable> runnableSupplier) {
  13. if (predicate.get())
  14. runnableSupplier.get().run();
  15. }
  16. public static void runIfEnv(EnvType env, Supplier<Runnable> runnableSupplier) {
  17. if (FabricLoader.getInstance().getEnvironmentType() == env)
  18. runnableSupplier.get().run();
  19. }
  20. public static <T> T call(Supplier<Callable<T>> runnableSupplier) {
  21. try {
  22. return runnableSupplier.get().call();
  23. } catch (Exception e) {
  24. throw new RuntimeException(e);
  25. }
  26. }
  27. public static <T> Optional<T> callIf(Supplier<Boolean> predicate, Supplier<Callable<T>> runnableSupplier) {
  28. if (predicate.get())
  29. try {
  30. return Optional.of(runnableSupplier.get().call());
  31. } catch (Exception e) {
  32. throw new RuntimeException(e);
  33. }
  34. return Optional.empty();
  35. }
  36. public static <T> Optional<T> callIfEnv(EnvType env, Supplier<Callable<T>> runnableSupplier) {
  37. if (FabricLoader.getInstance().getEnvironmentType() == env)
  38. try {
  39. return Optional.of(runnableSupplier.get().call());
  40. } catch (Exception e) {
  41. throw new RuntimeException(e);
  42. }
  43. return Optional.empty();
  44. }
  45. }