diff options
Diffstat (limited to 'src/main/java/me/shedaniel/rei/api/Renderer.java')
| -rw-r--r-- | src/main/java/me/shedaniel/rei/api/Renderer.java | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/src/main/java/me/shedaniel/rei/api/Renderer.java b/src/main/java/me/shedaniel/rei/api/Renderer.java index d3ddab934..43d4c55b3 100644 --- a/src/main/java/me/shedaniel/rei/api/Renderer.java +++ b/src/main/java/me/shedaniel/rei/api/Renderer.java @@ -5,10 +5,74 @@ package me.shedaniel.rei.api; +import me.shedaniel.rei.gui.renderables.EmptyRenderer; +import me.shedaniel.rei.gui.renderables.ItemStackRenderer; +import me.shedaniel.rei.gui.renderables.SimpleRecipeRenderer; import net.minecraft.client.gui.DrawableHelper; +import net.minecraft.item.ItemStack; +import net.minecraft.util.math.MathHelper; + +import java.util.List; +import java.util.function.Supplier; public abstract class Renderer extends DrawableHelper { /** + * Gets an item stack renderer by an item stack supplier + * + * @param supplier the supplier for getting the item stack + * @return the item stack renderer + */ + public static ItemStackRenderer fromItemStackSupplier(Supplier<ItemStack> supplier) { + return new ItemStackRenderer() { + @Override + public ItemStack getItemStack() { + return supplier.get(); + } + }; + } + + /** + * Gets an item stack renderer by an item stack + * + * @param stack the item stack to be displayed + * @return the item stack renderer + */ + public static ItemStackRenderer fromItemStack(ItemStack stack) { + return fromItemStackSupplier(() -> stack); + } + + /** + * Gets an empty renderer + * + * @return an empty renderer + */ + public static EmptyRenderer empty() { + return EmptyRenderer.INSTANCE; + } + + /** + * Gets a simple recipe renderer from inputs and outputs + * + * @param input the list of input items + * @param output the list of output items + * @return the recipe renderer + */ + public static SimpleRecipeRenderer fromRecipe(Supplier<List<List<ItemStack>>> input, Supplier<List<ItemStack>> output) { + return new SimpleRecipeRenderer(input, output); + } + + public static ItemStackRenderer fromItemStacks(List<ItemStack> stacks) { + return new ItemStackRenderer() { + @Override + public ItemStack getItemStack() { + if (stacks.isEmpty()) + return ItemStack.EMPTY; + return stacks.get(MathHelper.floor((System.currentTimeMillis() / 500 % (double) stacks.size()) / 1f)); + } + }; + } + + /** * Gets the current blit offset * * @return the blit offset @@ -36,4 +100,5 @@ public abstract class Renderer extends DrawableHelper { * @param delta the delta */ public abstract void render(int x, int y, double mouseX, double mouseY, float delta); + } |
