diff options
author | Kevin <92656833+kevinthegreat1@users.noreply.github.com> | 2023-09-06 21:08:50 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-09-06 21:08:50 -0400 |
commit | 9c7bf54123f366ad90bfafe81e973b731fd6b5b3 (patch) | |
tree | 026571fa642e251746e4f6ba77e7882e3f5b33ac /src/main/java/me/xmrvizzy/skyblocker/skyblock | |
parent | 3f2f7794556c1b8310dc7d4715d5247c02aa9fa8 (diff) | |
download | Skyblocker-9c7bf54123f366ad90bfafe81e973b731fd6b5b3.tar.gz Skyblocker-9c7bf54123f366ad90bfafe81e973b731fd6b5b3.tar.bz2 Skyblocker-9c7bf54123f366ad90bfafe81e973b731fd6b5b3.zip |
Emi integration (#278)
Add EMI integration
Diffstat (limited to 'src/main/java/me/xmrvizzy/skyblocker/skyblock')
5 files changed, 7 insertions, 245 deletions
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/itemlist/ItemRegistry.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/itemlist/ItemRegistry.java index dc63e351..a4b566e8 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/itemlist/ItemRegistry.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/itemlist/ItemRegistry.java @@ -16,6 +16,7 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.stream.Stream; public class ItemRegistry { protected static final Path ITEM_LIST_DIR = NEURepo.LOCAL_REPO_DIR.resolve("items"); @@ -105,8 +106,12 @@ public class ItemRegistry { return result; } - public static List<SkyblockCraftingRecipe> getRecipes() { - return recipes; + public static Stream<SkyblockCraftingRecipe> getRecipesStream() { + return recipes.stream(); + } + + public static Stream<ItemStack> getRecipeResultsStream() { + return recipes.stream().map(SkyblockCraftingRecipe::getResult); } /** diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/rei/SkyblockCategory.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/rei/SkyblockCategory.java deleted file mode 100644 index 3b402dc9..00000000 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/rei/SkyblockCategory.java +++ /dev/null @@ -1,97 +0,0 @@ -package me.xmrvizzy.skyblocker.skyblock.rei; - -import com.google.common.collect.Lists; -import com.mojang.brigadier.exceptions.CommandSyntaxException; -import me.shedaniel.math.Point; -import me.shedaniel.math.Rectangle; -import me.shedaniel.rei.api.client.gui.Renderer; -import me.shedaniel.rei.api.client.gui.widgets.Label; -import me.shedaniel.rei.api.client.gui.widgets.Slot; -import me.shedaniel.rei.api.client.gui.widgets.Widget; -import me.shedaniel.rei.api.client.gui.widgets.Widgets; -import me.shedaniel.rei.api.client.registry.display.DisplayCategory; -import me.shedaniel.rei.api.common.category.CategoryIdentifier; -import me.shedaniel.rei.api.common.entry.EntryIngredient; -import me.shedaniel.rei.api.common.util.EntryStacks; -import me.xmrvizzy.skyblocker.config.SkyblockerConfig; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.StringNbtReader; -import net.minecraft.text.Text; - -import java.util.ArrayList; -import java.util.List; -import java.util.Locale; - -/** - * Skyblock recipe category class for REI - */ -public class SkyblockCategory implements DisplayCategory<SkyblockCraftingDisplay> { - @Override - public CategoryIdentifier<SkyblockCraftingDisplay> getCategoryIdentifier() { - return SkyblockerREIClientPlugin.SKYBLOCK; - } - - @Override - public Text getTitle() { - return Text.translatable("key.categories.skyblocker"); - } - - @Override - public Renderer getIcon() { - // TODO separate icon from quickNav - SkyblockerConfig.ItemData iconItem = SkyblockerConfig.get().quickNav.button7.item; - String nbtString = "{id:\"minecraft:" + iconItem.itemName.toLowerCase(Locale.ROOT) + "\",Count:1"; - if (iconItem.nbt.length() > 2) nbtString += "," + iconItem.nbt; - nbtString += "}"; - try { - return EntryStacks.of(ItemStack.fromNbt(StringNbtReader.parse(nbtString))); - } catch (CommandSyntaxException e) { - throw new RuntimeException(e); - } - } - - @Override - public int getDisplayHeight() { - return 73; - } - - /** - * Draws display for SkyblockCraftingDisplay - * - * @param display the display - * @param bounds the bounds of the display, configurable with overriding the width, height methods. - */ - @Override - public List<Widget> setupDisplay(SkyblockCraftingDisplay display, Rectangle bounds) { - List<Widget> out = new ArrayList<>(); - out.add(Widgets.createRecipeBase(bounds)); - - Point startPoint; - if (!display.getCraftText().isEmpty() && display.getCraftText() != null) { - startPoint = new Point(bounds.getCenterX() - 58, bounds.getCenterY() - 31); - } - else { - startPoint = new Point(bounds.getCenterX() - 58, bounds.getCenterY() - 26); - } - Point resultPoint = new Point(startPoint.x + 95, startPoint.y + 19); - out.add(Widgets.createArrow(new Point(startPoint.x + 60, startPoint.y + 18))); - out.add(Widgets.createResultSlotBackground(resultPoint)); - - // Generate Slots - List<EntryIngredient> input = display.getInputEntries(); - List<Slot> slots = Lists.newArrayList(); - for (int y = 0; y < 3; y++) - for (int x = 0; x < 3; x++) - slots.add(Widgets.createSlot(new Point(startPoint.x + 1 + x * 18, startPoint.y + 1 + y * 18)).markInput()); - for (int i = 0; i < input.size(); i++) { - slots.get(i).entries(input.get(i)).markInput(); - } - out.addAll(slots); - out.add(Widgets.createSlot(resultPoint).entries(display.getOutputEntries().get(0)).disableBackground().markOutput()); - - // Add craftingText Label - Label craftTextLabel = Widgets.createLabel(new Point(bounds.getCenterX(), startPoint.y + 55), Text.of(display.getCraftText())); - out.add(craftTextLabel); - return out; - } -} diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/rei/SkyblockCraftingDisplay.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/rei/SkyblockCraftingDisplay.java deleted file mode 100644 index 5820780c..00000000 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/rei/SkyblockCraftingDisplay.java +++ /dev/null @@ -1,39 +0,0 @@ -package me.xmrvizzy.skyblocker.skyblock.rei; - - -import me.shedaniel.rei.api.common.category.CategoryIdentifier; -import me.shedaniel.rei.api.common.display.SimpleGridMenuDisplay; -import me.shedaniel.rei.api.common.display.basic.BasicDisplay; -import me.shedaniel.rei.api.common.entry.EntryIngredient; - -import java.util.List; - -/** - * Skyblock Crafting Recipe display class for REI - */ -public class SkyblockCraftingDisplay extends BasicDisplay implements SimpleGridMenuDisplay { - - private final String craftText; - public SkyblockCraftingDisplay(List<EntryIngredient> input, List<EntryIngredient> output, String craftText) { - super(input, output); - this.craftText = craftText; - } - public String getCraftText() { - return craftText; - } - - @Override - public int getWidth() { - return 3; - } - - @Override - public int getHeight() { - return 3; - } - - @Override - public CategoryIdentifier<?> getCategoryIdentifier() { - return SkyblockerREIClientPlugin.SKYBLOCK; - } -}
\ No newline at end of file diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/rei/SkyblockCraftingDisplayGenerator.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/rei/SkyblockCraftingDisplayGenerator.java deleted file mode 100644 index fd3f56ee..00000000 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/rei/SkyblockCraftingDisplayGenerator.java +++ /dev/null @@ -1,67 +0,0 @@ -package me.xmrvizzy.skyblocker.skyblock.rei; - -import me.shedaniel.rei.api.client.registry.display.DynamicDisplayGenerator; -import me.shedaniel.rei.api.common.entry.EntryIngredient; -import me.shedaniel.rei.api.common.entry.EntryStack; -import me.shedaniel.rei.api.common.util.EntryStacks; -import me.xmrvizzy.skyblocker.skyblock.itemlist.ItemRegistry; -import me.xmrvizzy.skyblocker.skyblock.itemlist.SkyblockCraftingRecipe; -import net.minecraft.item.ItemStack; - -import java.util.ArrayList; -import java.util.List; -import java.util.Optional; - -public class SkyblockCraftingDisplayGenerator implements DynamicDisplayGenerator<SkyblockCraftingDisplay> { - - @Override - public Optional<List<SkyblockCraftingDisplay>> getRecipeFor(EntryStack<?> entry) { - if (!(entry.getValue() instanceof ItemStack)) return Optional.empty(); - EntryStack<ItemStack> inputItem = EntryStacks.of((ItemStack) entry.getValue()); - List<SkyblockCraftingRecipe> filteredRecipes = ItemRegistry.getRecipes() - .stream() - .filter(recipe -> ItemRegistry.getInternalName(recipe.getResult()).equals(ItemRegistry.getInternalName(inputItem.getValue()))) - .toList(); - - return Optional.of(generateDisplays(filteredRecipes)); - } - - @Override - public Optional<List<SkyblockCraftingDisplay>> getUsageFor(EntryStack<?> entry) { - if (!(entry.getValue() instanceof ItemStack)) return Optional.empty(); - EntryStack<ItemStack> inputItem = EntryStacks.of((ItemStack) entry.getValue()); - List<SkyblockCraftingRecipe> filteredRecipes = ItemRegistry.getRecipes() - .stream() - .filter(recipe -> { - for (ItemStack item : recipe.getGrid()) { - if(!ItemRegistry.getInternalName(item).equals("") && ItemRegistry.getInternalName(item).equals(ItemRegistry.getInternalName(inputItem.getValue()))) - return true; - } - return false; - }) - .toList(); - return Optional.of(generateDisplays(filteredRecipes)); - } - - /** - * Generate Displays from a list of recipes - */ - private List<SkyblockCraftingDisplay> generateDisplays(List<SkyblockCraftingRecipe> recipes) { - List<SkyblockCraftingDisplay> displays = new ArrayList<>(); - for (SkyblockCraftingRecipe recipe : recipes) { - List<EntryIngredient> inputs = new ArrayList<>(); - List<EntryIngredient> outputs = new ArrayList<>(); - - ArrayList<EntryStack<ItemStack>> inputEntryStacks = new ArrayList<>(); - recipe.getGrid().forEach((item) -> inputEntryStacks.add(EntryStacks.of(item))); - - for (EntryStack<ItemStack> entryStack : inputEntryStacks) { - inputs.add(EntryIngredient.of(entryStack)); - } - outputs.add(EntryIngredient.of(EntryStacks.of(recipe.getResult()))); - - displays.add(new SkyblockCraftingDisplay(inputs, outputs, recipe.getCraftText())); - } - return displays; - } -} diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/rei/SkyblockerREIClientPlugin.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/rei/SkyblockerREIClientPlugin.java deleted file mode 100644 index 5f43ca0e..00000000 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/rei/SkyblockerREIClientPlugin.java +++ /dev/null @@ -1,40 +0,0 @@ -package me.xmrvizzy.skyblocker.skyblock.rei; - -import me.shedaniel.rei.api.client.plugins.REIClientPlugin; -import me.shedaniel.rei.api.client.registry.category.CategoryRegistry; -import me.shedaniel.rei.api.client.registry.display.DisplayRegistry; -import me.shedaniel.rei.api.client.registry.entry.EntryRegistry; -import me.shedaniel.rei.api.common.category.CategoryIdentifier; -import me.shedaniel.rei.api.common.entry.EntryStack; -import me.shedaniel.rei.api.common.util.EntryStacks; -import me.xmrvizzy.skyblocker.SkyblockerMod; -import me.xmrvizzy.skyblocker.skyblock.itemlist.ItemRegistry; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; - -import java.util.ArrayList; - -/** - * REI integration - */ -public class SkyblockerREIClientPlugin implements REIClientPlugin { - public static final CategoryIdentifier<SkyblockCraftingDisplay> SKYBLOCK = CategoryIdentifier.of(SkyblockerMod.NAMESPACE, "skyblock"); - - @Override - public void registerCategories(CategoryRegistry categoryRegistry) { - categoryRegistry.addWorkstations(SKYBLOCK, EntryStacks.of(Items.CRAFTING_TABLE)); - categoryRegistry.add(new SkyblockCategory()); - } - - @Override - public void registerDisplays(DisplayRegistry displayRegistry) { - displayRegistry.registerDisplayGenerator(SKYBLOCK, new SkyblockCraftingDisplayGenerator()); - } - - @Override - public void registerEntries(EntryRegistry entryRegistry) { - ArrayList<EntryStack<ItemStack>> entries = new ArrayList<>(); - ItemRegistry.getRecipes().forEach(recipe -> entries.add(EntryStacks.of(recipe.getResult()))); - entryRegistry.addEntries(entries); - } -} |