diff options
author | lantice3720 <65650884+lantice3720@users.noreply.github.com> | 2023-05-18 01:25:41 +0900 |
---|---|---|
committer | lantice3720 <65650884+lantice3720@users.noreply.github.com> | 2023-05-18 01:25:41 +0900 |
commit | 506a4b1e80a16846b5404d1ae47a23afcf6b784e (patch) | |
tree | 8a6ce910d7294ec1e3cfc11af12f20476c562f37 /src/main/java/me/xmrvizzy/skyblocker/skyblock/rei | |
parent | 1f98f045e18fbb99471de36b488762a315e00cf3 (diff) | |
download | Skyblocker-506a4b1e80a16846b5404d1ae47a23afcf6b784e.tar.gz Skyblocker-506a4b1e80a16846b5404d1ae47a23afcf6b784e.tar.bz2 Skyblocker-506a4b1e80a16846b5404d1ae47a23afcf6b784e.zip |
Added crafting requirement text, fixed dependency
Diffstat (limited to 'src/main/java/me/xmrvizzy/skyblocker/skyblock/rei')
4 files changed, 86 insertions, 13 deletions
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/rei/SkyblockCategory.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/rei/SkyblockCategory.java index 737adfa8..a52abeaa 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/rei/SkyblockCategory.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/rei/SkyblockCategory.java @@ -1,15 +1,27 @@ 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.client.MinecraftClient; import net.minecraft.item.ItemStack; import net.minecraft.nbt.StringNbtReader; import net.minecraft.text.Text; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; import java.util.Locale; /** @@ -39,4 +51,49 @@ public class SkyblockCategory implements DisplayCategory<SkyblockCraftingDisplay 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 index aee78990..5820780c 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/rei/SkyblockCraftingDisplay.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/rei/SkyblockCraftingDisplay.java @@ -1,18 +1,39 @@ 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 me.shedaniel.rei.plugin.common.displays.crafting.DefaultCustomDisplay; -import net.minecraft.recipe.Recipe; -import org.jetbrains.annotations.Nullable; import java.util.List; /** * Skyblock Crafting Recipe display class for REI */ -public class SkyblockCraftingDisplay extends DefaultCustomDisplay { - public SkyblockCraftingDisplay(@Nullable Recipe<?> possibleRecipe, List<EntryIngredient> input, List<EntryIngredient> output) { - super(possibleRecipe, input, output); +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 index 7d10f202..fd3f56ee 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/rei/SkyblockCraftingDisplayGenerator.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/rei/SkyblockCraftingDisplayGenerator.java @@ -60,7 +60,7 @@ public class SkyblockCraftingDisplayGenerator implements DynamicDisplayGenerator } outputs.add(EntryIngredient.of(EntryStacks.of(recipe.getResult()))); - displays.add(new SkyblockCraftingDisplay(null, inputs, outputs)); + 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 index fee71765..9d428a24 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/rei/SkyblockerREIClientPlugin.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/rei/SkyblockerREIClientPlugin.java @@ -29,12 +29,7 @@ public class SkyblockerREIClientPlugin implements REIClientPlugin { @Override public void registerDisplays(DisplayRegistry displayRegistry) { - - ViewSearchBuilder builder = ViewSearchBuilder.builder(); - builder.addCategory(SKYBLOCK); - displayRegistry.registerDisplayGenerator(SKYBLOCK, new SkyblockCraftingDisplayGenerator()); - } @Override |