diff options
| author | Daniel She <shekwancheung0528@gmail.com> | 2019-05-10 00:20:16 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-05-10 00:20:16 +0800 |
| commit | 67fc756047f34bdbb9f028e48fc725534b3beafc (patch) | |
| tree | 670f0694b3313eaf712020a9d60dc34404725777 /src/main/java/me/shedaniel/rei/api | |
| parent | 766b4837c2512cefa3188adc897605a83144f711 (diff) | |
| parent | 467511401a783fc0a8d625947e69519da1c815e1 (diff) | |
| download | RoughlyEnoughItems-67fc756047f34bdbb9f028e48fc725534b3beafc.tar.gz RoughlyEnoughItems-67fc756047f34bdbb9f028e48fc725534b3beafc.tar.bz2 RoughlyEnoughItems-67fc756047f34bdbb9f028e48fc725534b3beafc.zip | |
Merge pull request #86 from shedaniel/1.14-dev
REi v2.9 (WIP)
Diffstat (limited to 'src/main/java/me/shedaniel/rei/api')
4 files changed, 82 insertions, 0 deletions
diff --git a/src/main/java/me/shedaniel/rei/api/ClientHelper.java b/src/main/java/me/shedaniel/rei/api/ClientHelper.java index 86c234872..d4648bbaa 100644 --- a/src/main/java/me/shedaniel/rei/api/ClientHelper.java +++ b/src/main/java/me/shedaniel/rei/api/ClientHelper.java @@ -5,8 +5,10 @@ import net.fabricmc.api.ClientModInitializer; import net.fabricmc.fabric.api.client.keybinding.FabricKeyBinding; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.util.Identifier; import java.util.List; +import java.util.Map; public interface ClientHelper extends ClientModInitializer { static ClientHelper getInstance() { @@ -19,6 +21,8 @@ public interface ClientHelper extends ClientModInitializer { List<ItemStack> getInventoryItemsTypes(); + void openRecipeViewingScreen(Map<RecipeCategory, List<RecipeDisplay>> map); + void registerFabricKeyBinds(); boolean tryCheatingStack(ItemStack stack); @@ -33,6 +37,10 @@ public interface ClientHelper extends ClientModInitializer { String getFormattedModFromItem(Item item); + String getFormattedModFromIdentifier(Identifier identifier); + + String getModFromIdentifier(Identifier identifier); + FabricKeyBinding getRecipeKeyBinding(); FabricKeyBinding getUsageKeyBinding(); diff --git a/src/main/java/me/shedaniel/rei/api/RecipeCategory.java b/src/main/java/me/shedaniel/rei/api/RecipeCategory.java index 80b7aa167..8304fde90 100644 --- a/src/main/java/me/shedaniel/rei/api/RecipeCategory.java +++ b/src/main/java/me/shedaniel/rei/api/RecipeCategory.java @@ -1,6 +1,7 @@ package me.shedaniel.rei.api; import me.shedaniel.rei.gui.RecipeViewingScreen; +import me.shedaniel.rei.gui.renderables.RecipeRenderer; import me.shedaniel.rei.gui.widget.CategoryBaseWidget; import me.shedaniel.rei.gui.widget.RecipeBaseWidget; import me.shedaniel.rei.gui.widget.Widget; @@ -20,8 +21,16 @@ public interface RecipeCategory<T extends RecipeDisplay> { ItemStack getCategoryIcon(); + default Renderer getIcon() { + return Renderable.fromItemStackSupplier(this::getCategoryIcon); + } + String getCategoryName(); + default RecipeRenderer getSimpleRenderer(T recipe) { + return Renderable.fromRecipe(recipe::getInput, recipe::getOutput); + } + default List<Widget> setupDisplay(Supplier<T> recipeDisplaySupplier, Rectangle bounds) { return Collections.singletonList(new RecipeBaseWidget(bounds)); } diff --git a/src/main/java/me/shedaniel/rei/api/Renderable.java b/src/main/java/me/shedaniel/rei/api/Renderable.java new file mode 100644 index 000000000..9059af798 --- /dev/null +++ b/src/main/java/me/shedaniel/rei/api/Renderable.java @@ -0,0 +1,52 @@ +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.item.ItemStack; +import net.minecraft.util.math.MathHelper; + +import java.util.List; +import java.util.function.Supplier; + +public interface Renderable { + + static ItemStackRenderer fromItemStackSupplier(Supplier<ItemStack> supplier) { + return new ItemStackRenderer() { + @Override + public ItemStack getItemStack() { + return supplier.get(); + } + }; + } + + static ItemStackRenderer fromItemStack(ItemStack stack) { + return new ItemStackRenderer() { + @Override + public ItemStack getItemStack() { + return stack; + } + }; + } + + static EmptyRenderer empty() { + return EmptyRenderer.INSTANCE; + } + + static SimpleRecipeRenderer fromRecipe(Supplier<List<List<ItemStack>>> input, Supplier<List<ItemStack>> output) { + return new SimpleRecipeRenderer(input, output); + } + + 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)); + } + }; + } + + void render(int x, int y, double mouseX, double mouseY, float delta); +} diff --git a/src/main/java/me/shedaniel/rei/api/Renderer.java b/src/main/java/me/shedaniel/rei/api/Renderer.java new file mode 100644 index 000000000..569285d84 --- /dev/null +++ b/src/main/java/me/shedaniel/rei/api/Renderer.java @@ -0,0 +1,13 @@ +package me.shedaniel.rei.api; + +import net.minecraft.client.gui.DrawableHelper; + +public abstract class Renderer extends DrawableHelper implements Renderable { + public int getBlitOffset() { + return this.blitOffset; + } + + public void setBlitOffset(int offset) { + this.blitOffset = offset; + } +} |
