aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/de/hysky/skyblocker/compatibility/emi
diff options
context:
space:
mode:
authormsg-programs <msgdoesstuff@gmail.com>2023-10-10 19:15:52 +0200
committermsg-programs <msgdoesstuff@gmail.com>2023-10-10 19:15:52 +0200
commitc1cc4ea51f84281336e6ca23bdd01e281d5fb4a3 (patch)
tree7082b35b68a915a18d1e1df171fae700bacd77e0 /src/main/java/de/hysky/skyblocker/compatibility/emi
parent87983958dcebd98f73c6971a5ea82c80871a12af (diff)
parenta373db64a319c263b2b4c1d07084fa18bd12353b (diff)
downloadSkyblocker-c1cc4ea51f84281336e6ca23bdd01e281d5fb4a3.tar.gz
Skyblocker-c1cc4ea51f84281336e6ca23bdd01e281d5fb4a3.tar.bz2
Skyblocker-c1cc4ea51f84281336e6ca23bdd01e281d5fb4a3.zip
Merge branch 'master' of https://github.com/SkyblockerMod/Skyblocker into beeper-creams
# Conflicts: # src/main/java/de/hysky/skyblocker/SkyblockerMod.java # src/main/java/de/hysky/skyblocker/skyblock/dungeon/CreeperBeams.java Pull updates from upstream and NOT get a heart attack
Diffstat (limited to 'src/main/java/de/hysky/skyblocker/compatibility/emi')
-rw-r--r--src/main/java/de/hysky/skyblocker/compatibility/emi/SkyblockEmiRecipe.java38
-rw-r--r--src/main/java/de/hysky/skyblocker/compatibility/emi/SkyblockerEMIPlugin.java29
2 files changed, 67 insertions, 0 deletions
diff --git a/src/main/java/de/hysky/skyblocker/compatibility/emi/SkyblockEmiRecipe.java b/src/main/java/de/hysky/skyblocker/compatibility/emi/SkyblockEmiRecipe.java
new file mode 100644
index 00000000..5875327d
--- /dev/null
+++ b/src/main/java/de/hysky/skyblocker/compatibility/emi/SkyblockEmiRecipe.java
@@ -0,0 +1,38 @@
+package de.hysky.skyblocker.compatibility.emi;
+
+import de.hysky.skyblocker.skyblock.itemlist.ItemRegistry;
+import de.hysky.skyblocker.skyblock.itemlist.SkyblockCraftingRecipe;
+import dev.emi.emi.api.recipe.EmiCraftingRecipe;
+import dev.emi.emi.api.recipe.EmiRecipeCategory;
+import dev.emi.emi.api.stack.Comparison;
+import dev.emi.emi.api.stack.EmiIngredient;
+import dev.emi.emi.api.stack.EmiStack;
+import dev.emi.emi.api.widget.WidgetHolder;
+import net.minecraft.client.MinecraftClient;
+import net.minecraft.text.Text;
+import net.minecraft.util.Identifier;
+
+public class SkyblockEmiRecipe extends EmiCraftingRecipe {
+ private final String craftText;
+
+ public SkyblockEmiRecipe(SkyblockCraftingRecipe recipe) {
+ super(recipe.getGrid().stream().map(EmiStack::of).map(EmiIngredient.class::cast).toList(), EmiStack.of(recipe.getResult()).comparison(Comparison.compareNbt()), Identifier.of("skyblock", ItemRegistry.getInternalName(recipe.getResult()).toLowerCase().replace(';', '_')));
+ this.craftText = recipe.getCraftText();
+ }
+
+ @Override
+ public EmiRecipeCategory getCategory() {
+ return SkyblockerEMIPlugin.SKYBLOCK;
+ }
+
+ @Override
+ public int getDisplayHeight() {
+ return super.getDisplayHeight() + (craftText.isEmpty() ? 0 : 10);
+ }
+
+ @Override
+ public void addWidgets(WidgetHolder widgets) {
+ super.addWidgets(widgets);
+ widgets.addText(Text.of(craftText), 59 - MinecraftClient.getInstance().textRenderer.getWidth(craftText) / 2, 55, 0xFFFFFF, true);
+ }
+}
diff --git a/src/main/java/de/hysky/skyblocker/compatibility/emi/SkyblockerEMIPlugin.java b/src/main/java/de/hysky/skyblocker/compatibility/emi/SkyblockerEMIPlugin.java
new file mode 100644
index 00000000..c6147016
--- /dev/null
+++ b/src/main/java/de/hysky/skyblocker/compatibility/emi/SkyblockerEMIPlugin.java
@@ -0,0 +1,29 @@
+package de.hysky.skyblocker.compatibility.emi;
+
+import de.hysky.skyblocker.SkyblockerMod;
+import de.hysky.skyblocker.skyblock.itemlist.ItemRegistry;
+import de.hysky.skyblocker.utils.ItemUtils;
+import dev.emi.emi.api.EmiPlugin;
+import dev.emi.emi.api.EmiRegistry;
+import dev.emi.emi.api.recipe.EmiRecipeCategory;
+import dev.emi.emi.api.render.EmiTexture;
+import dev.emi.emi.api.stack.EmiStack;
+import net.minecraft.item.Items;
+import net.minecraft.util.Identifier;
+
+/**
+ * EMI integration
+ */
+public class SkyblockerEMIPlugin implements EmiPlugin {
+ public static final Identifier SIMPLIFIED_TEXTURES = new Identifier("emi", "textures/gui/widgets.png");
+ // TODO: Custom simplified texture for Skyblock
+ public static final EmiRecipeCategory SKYBLOCK = new EmiRecipeCategory(new Identifier(SkyblockerMod.NAMESPACE, "skyblock"), EmiStack.of(ItemUtils.getSkyblockerStack()), new EmiTexture(SIMPLIFIED_TEXTURES, 240, 240, 16, 16));
+
+ @Override
+ public void register(EmiRegistry registry) {
+ ItemRegistry.getItemsStream().map(EmiStack::of).forEach(registry::addEmiStack);
+ registry.addCategory(SKYBLOCK);
+ registry.addWorkstation(SKYBLOCK, EmiStack.of(Items.CRAFTING_TABLE));
+ ItemRegistry.getRecipesStream().map(SkyblockEmiRecipe::new).forEach(registry::addRecipe);
+ }
+}