diff --git a/build.gradle b/build.gradle index eed1bc0..16038e1 100644 --- a/build.gradle +++ b/build.gradle @@ -16,6 +16,8 @@ repositories { // Loom adds the essential maven repositories to download Minecraft and libraries from automatically. // See https://docs.gradle.org/current/userguide/declaring_repositories.html // for more information about repositories. + + maven { url "https://maven.shedaniel.me" } } fabricApi { @@ -32,6 +34,11 @@ dependencies { // Fabric API. This is technically optional, but you probably want it anyway. modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}" + + modCompileOnly "me.shedaniel:RoughlyEnoughItems-api-fabric:16.0.777" + modRuntimeOnly "me.shedaniel:RoughlyEnoughItems-fabric:16.0.777" + modApi "dev.architectury:architectury-fabric:13.0.8" + modApi "me.shedaniel.cloth:cloth-config-fabric:15.0.140" } diff --git a/gradle.properties b/gradle.properties index 131e80e..4f57117 100644 --- a/gradle.properties +++ b/gradle.properties @@ -13,6 +13,6 @@ loom_version=1.13-SNAPSHOT fabric_version=0.116.7+1.21.1 # Mod Properties -mod_version=1.1.0 +mod_version=1.2.0 maven_group=com.acethewildfire.acesbs archives_base_name=acesbs diff --git a/src/main/java/com/acethewildfire/acesbs/compat/AcesBSREIClient.java b/src/main/java/com/acethewildfire/acesbs/compat/AcesBSREIClient.java new file mode 100644 index 0000000..0fc1d0a --- /dev/null +++ b/src/main/java/com/acethewildfire/acesbs/compat/AcesBSREIClient.java @@ -0,0 +1,35 @@ +package com.acethewildfire.acesbs.compat; + +import com.acethewildfire.acesbs.block.ModBlocks; +import com.acethewildfire.acesbs.recipe.EntropicStabilizerRecipe; +import com.acethewildfire.acesbs.recipe.ModRecipies; +import com.acethewildfire.acesbs.screen.custom.EntropicStabilizerScreen; +import me.shedaniel.math.Rectangle; +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.screen.ScreenRegistry; +import me.shedaniel.rei.api.common.util.EntryStacks; + +import java.awt.*; + +public class AcesBSREIClient implements REIClientPlugin { + + @Override + public void registerCategories(CategoryRegistry registry) { + registry.add(new EntropicStabilizerCategory()); + + registry.addWorkstations(EntropicStabilizerCategory.ENTROPIC_STABILIZER, EntryStacks.of(ModBlocks.ENTROPIC_STABILIZER)); + } + + @Override + public void registerDisplays(DisplayRegistry registry) { + registry.registerRecipeFiller(EntropicStabilizerRecipe.class, ModRecipies.ENTROPIC_STABILIZER_TYPE, EntropicStabilizerDisplay::new); + } + + @Override + public void registerScreens(ScreenRegistry registry) { + registry.registerClickArea(screen -> new Rectangle(((screen.width - 176) / 2) + 78, + ((screen.height - 166) / 2) + 30, 20, 25 ), EntropicStabilizerScreen.class, EntropicStabilizerCategory.ENTROPIC_STABILIZER); + } +} diff --git a/src/main/java/com/acethewildfire/acesbs/compat/EntropicStabilizerCategory.java b/src/main/java/com/acethewildfire/acesbs/compat/EntropicStabilizerCategory.java new file mode 100644 index 0000000..fbe1513 --- /dev/null +++ b/src/main/java/com/acethewildfire/acesbs/compat/EntropicStabilizerCategory.java @@ -0,0 +1,60 @@ +package com.acethewildfire.acesbs.compat; + +import com.acethewildfire.acesbs.AcesBS; +import com.acethewildfire.acesbs.block.ModBlocks; +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.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.display.basic.BasicDisplay; +import me.shedaniel.rei.api.common.entry.EntryStack; +import me.shedaniel.rei.api.common.util.EntryStacks; +import net.minecraft.text.Text; +import net.minecraft.util.Identifier; + +import java.util.LinkedList; +import java.util.List; + +public class EntropicStabilizerCategory implements DisplayCategory { + public static final Identifier GUI_TEXTURE = + Identifier.of(AcesBS.MOD_ID, "textures/gui/entropic_stabilizer/entropic_stabilizer_gui_rei.png"); + + public static final CategoryIdentifier ENTROPIC_STABILIZER = + CategoryIdentifier.of(AcesBS.MOD_ID, "entropic_stabilizer"); + + @Override + public CategoryIdentifier getCategoryIdentifier() { + return ENTROPIC_STABILIZER; + } + + @Override + public Text getTitle() { + return Text.translatable("block.acesbs.entropic_stabilizer"); + } + + @Override + public Renderer getIcon() { + return EntryStacks.of(ModBlocks.ENTROPIC_STABILIZER.asItem().getDefaultStack()); + } + + @Override + public List setupDisplay(BasicDisplay display, Rectangle bounds) { + Point startPoint = new Point(bounds.getCenterX() - 87, bounds.getCenterY() - 41); + List widgets = new LinkedList<>(); + + widgets.add(Widgets.createTexturedWidget(GUI_TEXTURE, new Rectangle(startPoint.x, startPoint.y, 175, 82))); + + widgets.add(Widgets.createSlot(new Point(startPoint.x + 56, startPoint.y + 17)).entries(display.getInputEntries().get(0)).markInput()); + widgets.add(Widgets.createSlot(new Point(startPoint.x + 116, startPoint.y + 35)).entries(display.getOutputEntries().get(0)).markOutput()); + + return widgets; + } + + @Override + public int getDisplayHeight() { + return 90; + } +} diff --git a/src/main/java/com/acethewildfire/acesbs/compat/EntropicStabilizerDisplay.java b/src/main/java/com/acethewildfire/acesbs/compat/EntropicStabilizerDisplay.java new file mode 100644 index 0000000..e55e3d1 --- /dev/null +++ b/src/main/java/com/acethewildfire/acesbs/compat/EntropicStabilizerDisplay.java @@ -0,0 +1,34 @@ +package com.acethewildfire.acesbs.compat; + +import com.acethewildfire.acesbs.block.custom.EntropicStabilizer; +import com.acethewildfire.acesbs.recipe.EntropicStabilizerRecipe; +import me.shedaniel.rei.api.common.category.CategoryIdentifier; +import me.shedaniel.rei.api.common.display.basic.BasicDisplay; +import me.shedaniel.rei.api.common.entry.EntryIngredient; +import me.shedaniel.rei.api.common.entry.EntryStack; +import me.shedaniel.rei.api.common.registry.RecipeManagerContext; +import me.shedaniel.rei.api.common.util.EntryIngredients; +import me.shedaniel.rei.api.common.util.EntryStacks; +import net.minecraft.nbt.NbtCompound; +import net.minecraft.recipe.RecipeEntry; +import org.jetbrains.annotations.Nullable; + +import java.util.List; +import java.util.Optional; + +public class EntropicStabilizerDisplay extends BasicDisplay { + private RecipeEntry recipe; + private float xp; + private double cookTime; + + public EntropicStabilizerDisplay(RecipeEntry recipe){ + super( + List.of(EntryIngredients.ofIngredient(recipe.value().getIngredients().get(0))), + List.of(EntryIngredient.of(EntryStacks.of(recipe.value().getResult(null))))); + } + + @Override + public CategoryIdentifier getCategoryIdentifier() { + return EntropicStabilizerCategory.ENTROPIC_STABILIZER; + } +} diff --git a/src/main/java/com/acethewildfire/acesbs/recipe/EntropicStabilizerRecipe.java b/src/main/java/com/acethewildfire/acesbs/recipe/EntropicStabilizerRecipe.java index f3a8a02..5e35f4c 100644 --- a/src/main/java/com/acethewildfire/acesbs/recipe/EntropicStabilizerRecipe.java +++ b/src/main/java/com/acethewildfire/acesbs/recipe/EntropicStabilizerRecipe.java @@ -80,5 +80,6 @@ public record EntropicStabilizerRecipe(Ingredient inputItem, ItemStack output) i public PacketCodec packetCodec() { return STREAM_CODEC; } + } } diff --git a/src/main/resources/assets/acesbs/textures/gui/entropic_stabilizer/entropic_stabilizer_gui_rei.png b/src/main/resources/assets/acesbs/textures/gui/entropic_stabilizer/entropic_stabilizer_gui_rei.png new file mode 100644 index 0000000..d94ddc7 Binary files /dev/null and b/src/main/resources/assets/acesbs/textures/gui/entropic_stabilizer/entropic_stabilizer_gui_rei.png differ diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index d3b9803..9955348 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -24,6 +24,9 @@ ], "client": [ "com.acethewildfire.acesbs.AcesBSClient" + ], + "rei_client": [ + "com.acethewildfire.acesbs.compat.AcesBSREIClient" ] }, "mixins": [