123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164 |
- /*
- * Roughly Enough Items by Danielshe.
- * Licensed under the MIT License.
- */
- package me.shedaniel.rei.api;
- import it.unimi.dsi.fastutil.ints.IntArrayList;
- import it.unimi.dsi.fastutil.ints.IntList;
- import me.shedaniel.rei.gui.ContainerScreenOverlay;
- import me.shedaniel.rei.impl.ScreenHelper;
- import net.minecraft.client.MinecraftClient;
- import net.minecraft.client.gui.screen.ingame.AbstractContainerScreen;
- import net.minecraft.container.Container;
- import java.util.function.Supplier;
- public interface AutoTransferHandler {
-
- default double getPriority() {
- return 0d;
- }
-
- Result handle(Context context);
-
- public interface Result {
- static Result createSuccessful() {
- return new ResultImpl();
- }
-
- static Result createNotApplicable() {
- return new ResultImpl(false);
- }
-
- static Result createFailed(String errorKey) {
- return new ResultImpl(errorKey, new IntArrayList(), 1744764928);
- }
-
- static Result createFailedCustomButtonColor(String errorKey, int color) {
- return new ResultImpl(errorKey, new IntArrayList(), color);
- }
-
- static Result createFailed(String errorKey, IntList redSlots) {
- return new ResultImpl(errorKey, redSlots, 1744764928);
- }
-
- static Result createFailedCustomButtonColor(String errorKey, IntList redSlots, int color) {
- return new ResultImpl(errorKey, redSlots, color);
- }
-
- int getColor();
-
- boolean isSuccessful();
-
- boolean isApplicable();
-
- String getErrorKey();
-
- IntList getIntegers();
- }
-
- public interface Context {
- static Context create(boolean actuallyCrafting, AbstractContainerScreen<?> containerScreen, RecipeDisplay recipeDisplay) {
- return new ContextImpl(actuallyCrafting, containerScreen, () -> recipeDisplay);
- }
-
- default MinecraftClient getMinecraft() {
- return MinecraftClient.getInstance();
- }
-
- boolean isActuallyCrafting();
-
- AbstractContainerScreen<?> getContainerScreen();
-
- RecipeDisplay getRecipe();
-
- default Container getContainer() {
- return getContainerScreen().getContainer();
- }
-
- default ContainerScreenOverlay getOverlay() {
- return ScreenHelper.getLastOverlay();
- }
- }
-
- public final class ResultImpl implements Result {
- private boolean successful, applicable;
- private String errorKey;
- private IntList integers = new IntArrayList();
- private int color;
-
- private ResultImpl() {
- this.successful = true;
- this.applicable = true;
- }
-
- public ResultImpl(boolean applicable) {
- this.successful = false;
- this.applicable = applicable;
- }
-
- public ResultImpl(String errorKey, IntList integers, int color) {
- this.successful = false;
- this.applicable = true;
- this.errorKey = errorKey;
- if (integers != null)
- this.integers = integers;
- this.color = color;
- }
-
- @Override
- public int getColor() {
- return color;
- }
-
- @Override
- public boolean isSuccessful() {
- return successful;
- }
-
- @Override
- public boolean isApplicable() {
- return applicable;
- }
-
- @Override
- public String getErrorKey() {
- return errorKey;
- }
-
- @Override
- public IntList getIntegers() {
- return integers;
- }
- }
-
- public final class ContextImpl implements Context {
- boolean actuallyCrafting;
- AbstractContainerScreen<?> containerScreen;
- Supplier<RecipeDisplay> recipeDisplaySupplier;
-
- private ContextImpl(boolean actuallyCrafting, AbstractContainerScreen<?> containerScreen, Supplier<RecipeDisplay> recipeDisplaySupplier) {
- this.actuallyCrafting = actuallyCrafting;
- this.containerScreen = containerScreen;
- this.recipeDisplaySupplier = recipeDisplaySupplier;
- }
-
- @Override
- public boolean isActuallyCrafting() {
- return actuallyCrafting;
- }
-
- @Override
- public AbstractContainerScreen<?> getContainerScreen() {
- return containerScreen;
- }
-
- @Override
- public RecipeDisplay getRecipe() {
- return recipeDisplaySupplier.get();
- }
- }
-
- }
|