aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me/shedaniel/rei/api
diff options
context:
space:
mode:
authorDaniel She <shekwancheung0528@gmail.com>2019-05-10 00:20:16 +0800
committerGitHub <noreply@github.com>2019-05-10 00:20:16 +0800
commit67fc756047f34bdbb9f028e48fc725534b3beafc (patch)
tree670f0694b3313eaf712020a9d60dc34404725777 /src/main/java/me/shedaniel/rei/api
parent766b4837c2512cefa3188adc897605a83144f711 (diff)
parent467511401a783fc0a8d625947e69519da1c815e1 (diff)
downloadRoughlyEnoughItems-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')
-rw-r--r--src/main/java/me/shedaniel/rei/api/ClientHelper.java8
-rw-r--r--src/main/java/me/shedaniel/rei/api/RecipeCategory.java9
-rw-r--r--src/main/java/me/shedaniel/rei/api/Renderable.java52
-rw-r--r--src/main/java/me/shedaniel/rei/api/Renderer.java13
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;
+ }
+}