From 44663e8b3e7a6258b4fd2e185b375449af3feb6c Mon Sep 17 00:00:00 2001 From: Vos Date: Sun, 1 Feb 2026 00:32:40 -0600 Subject: [PATCH] Entangler Recipe stuff --- .../recipes/misc/entropic_entangler.json | 32 +++++++++ .../recipes/misc/entropic_eviscerator.json | 32 +++++++++ .../recipes/misc/entropic_stabilizer.json | 32 +++++++++ .../acesbs/recipe/entropic_entangler.json | 27 ++++++++ .../acesbs/recipe/entropic_eviscerator.json | 24 +++++++ .../acesbs/recipe/entropic_stabilizer.json | 24 +++++++ .../java/com/acethewildfire/acesbs/TODO.txt | 29 ++++---- .../acesbs/compat/AcesBSREIClient.java | 10 +++ .../compat/EntropicEntanglerCategory.java | 63 ++++++++++++++++++ .../compat/EntropicEntanglerDisplay.java | 28 ++++++++ .../acesbs/datagen/ModRecipeProvider.java | 31 +++++++++ .../entropic_entangler_gui.png | Bin 1674 -> 1674 bytes .../entropic_entangler_gui_rei.png | Bin 805 -> 1375 bytes .../bricked_up_from_entropic_entangler.json | 13 ++++ ...infernal_beef_from_entropic_entangler.json | 13 ++++ 15 files changed, 343 insertions(+), 15 deletions(-) create mode 100644 src/main/generated/data/acesbs/advancement/recipes/misc/entropic_entangler.json create mode 100644 src/main/generated/data/acesbs/advancement/recipes/misc/entropic_eviscerator.json create mode 100644 src/main/generated/data/acesbs/advancement/recipes/misc/entropic_stabilizer.json create mode 100644 src/main/generated/data/acesbs/recipe/entropic_entangler.json create mode 100644 src/main/generated/data/acesbs/recipe/entropic_eviscerator.json create mode 100644 src/main/generated/data/acesbs/recipe/entropic_stabilizer.json create mode 100644 src/main/java/com/acethewildfire/acesbs/compat/EntropicEntanglerCategory.java create mode 100644 src/main/java/com/acethewildfire/acesbs/compat/EntropicEntanglerDisplay.java create mode 100644 src/main/resources/data/acesbs/recipe/bricked_up_from_entropic_entangler.json create mode 100644 src/main/resources/data/acesbs/recipe/infernal_beef_from_entropic_entangler.json diff --git a/src/main/generated/data/acesbs/advancement/recipes/misc/entropic_entangler.json b/src/main/generated/data/acesbs/advancement/recipes/misc/entropic_entangler.json new file mode 100644 index 0000000..fb3b98c --- /dev/null +++ b/src/main/generated/data/acesbs/advancement/recipes/misc/entropic_entangler.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_raw_entropy": { + "conditions": { + "items": [ + { + "items": "acesbs:raw_entropy" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "acesbs:entropic_entangler" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_raw_entropy" + ] + ], + "rewards": { + "recipes": [ + "acesbs:entropic_entangler" + ] + } +} \ No newline at end of file diff --git a/src/main/generated/data/acesbs/advancement/recipes/misc/entropic_eviscerator.json b/src/main/generated/data/acesbs/advancement/recipes/misc/entropic_eviscerator.json new file mode 100644 index 0000000..f526d00 --- /dev/null +++ b/src/main/generated/data/acesbs/advancement/recipes/misc/entropic_eviscerator.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_stonecutter": { + "conditions": { + "items": [ + { + "items": "minecraft:stonecutter" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "acesbs:entropic_eviscerator" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_stonecutter" + ] + ], + "rewards": { + "recipes": [ + "acesbs:entropic_eviscerator" + ] + } +} \ No newline at end of file diff --git a/src/main/generated/data/acesbs/advancement/recipes/misc/entropic_stabilizer.json b/src/main/generated/data/acesbs/advancement/recipes/misc/entropic_stabilizer.json new file mode 100644 index 0000000..ba09a01 --- /dev/null +++ b/src/main/generated/data/acesbs/advancement/recipes/misc/entropic_stabilizer.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_raw_entropy": { + "conditions": { + "items": [ + { + "items": "acesbs:raw_entropy" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "acesbs:entropic_stabilizer" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_the_recipe", + "has_raw_entropy" + ] + ], + "rewards": { + "recipes": [ + "acesbs:entropic_stabilizer" + ] + } +} \ No newline at end of file diff --git a/src/main/generated/data/acesbs/recipe/entropic_entangler.json b/src/main/generated/data/acesbs/recipe/entropic_entangler.json new file mode 100644 index 0000000..7ad66c2 --- /dev/null +++ b/src/main/generated/data/acesbs/recipe/entropic_entangler.json @@ -0,0 +1,27 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "B": { + "item": "minecraft:bucket" + }, + "G": { + "item": "minecraft:gold_block" + }, + "I": { + "item": "minecraft:iron_ingot" + }, + "S": { + "item": "acesbs:stable_entropy" + } + }, + "pattern": [ + "ISI", + "BGB", + "ISI" + ], + "result": { + "count": 1, + "id": "acesbs:entropic_entangler" + } +} \ No newline at end of file diff --git a/src/main/generated/data/acesbs/recipe/entropic_eviscerator.json b/src/main/generated/data/acesbs/recipe/entropic_eviscerator.json new file mode 100644 index 0000000..a3ffd3c --- /dev/null +++ b/src/main/generated/data/acesbs/recipe/entropic_eviscerator.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "E": { + "item": "acesbs:stable_entropy" + }, + "I": { + "item": "minecraft:iron_ingot" + }, + "S": { + "item": "minecraft:stonecutter" + } + }, + "pattern": [ + "III", + "SES", + "III" + ], + "result": { + "count": 1, + "id": "acesbs:entropic_eviscerator" + } +} \ No newline at end of file diff --git a/src/main/generated/data/acesbs/recipe/entropic_stabilizer.json b/src/main/generated/data/acesbs/recipe/entropic_stabilizer.json new file mode 100644 index 0000000..e9750a4 --- /dev/null +++ b/src/main/generated/data/acesbs/recipe/entropic_stabilizer.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "B": { + "item": "minecraft:blue_ice" + }, + "I": { + "item": "minecraft:iron_ingot" + }, + "R": { + "item": "acesbs:raw_entropy" + } + }, + "pattern": [ + "IRI", + "IBI", + "III" + ], + "result": { + "count": 1, + "id": "acesbs:entropic_stabilizer" + } +} \ No newline at end of file diff --git a/src/main/java/com/acethewildfire/acesbs/TODO.txt b/src/main/java/com/acethewildfire/acesbs/TODO.txt index e47c343..3fdc465 100644 --- a/src/main/java/com/acethewildfire/acesbs/TODO.txt +++ b/src/main/java/com/acethewildfire/acesbs/TODO.txt @@ -2,7 +2,7 @@ Resources X Infernal Ashes - Raw End-tropy - Stable End-tropy -O Prisma Steel (Stable Entropy + Iron) (Needs recipe) +X Prisma Steel (Stable Entropy + Iron) (Needs recipe) - Chaos Silver (Stable Entropy + Gold) - Fractal Diamond (Stable Entropy + Diamond) - Ashen Steel (Ashes + Iron) @@ -11,15 +11,14 @@ O Prisma Steel (Stable Entropy + Iron) (Needs recipe) - Endtropium (Stable End-tropy + Netherite) - Faerie Shard (Amethyst + Stable Entropy) - Hyper Sugar (Stable Entropy + Sugar) -- Triangle (We are not sure what it does)() Food - Aquarium Gravel (CT:Prismarine shards + crystals) -- Bricked Up (Brick + End-tropy) - - Holy SFX + slow levitate up - - Stomach grumble - - Fart reverb and shoot into sky -- Infernal Beef (Mob/Ashes + Cooked Beef) +X Bricked Up (Brick + End-tropy) + X Holy SFX + slow levitate up + X Stomach grumble + X Fart reverb and shoot into sky +X Infernal Beef (Mob/Ashes + Cooked Beef) - Hyper Stimulants (Hyper Sugar) - Narcan (Stimulants + Entropic Eviscerator) X Tobacco @@ -37,7 +36,6 @@ X Beserker Pauldron (Special: Skeleton hurt sound) - Fireskip Boots (Infernal Fire effect on water) - Sov's Plate Carrier - (Headlamp Armors using Everburn Gold) -- Eternal Armor (Binding and mending) - Honse armour (maybe). Potions @@ -62,12 +60,11 @@ Weapons - Big Iron (Bow?) - Thot Begon - Ahab's Harpoon -- Soul Crusher (Removes Eternal Armor) -- Combustable Lemon +X Combustable Lemon Blocks X Deep Slate Entropy Ore -- Block of Infernal Ashes +X Block of Infernal Ashes X End-tropy Ore X (Rename) Block of Raw Entropy - Block of Raw End-tropy @@ -77,14 +74,16 @@ X (Rename) Block of Raw Entropy - Crystalized Entropy (Stained Glass version of Stable Entropy) Workstations -- Entropic Eviscerator (Extracts ores from stones) -- Entropic Stabilizer (For making Stable Entropy) -- Entropic Entangler (For Metals and Stones) +X Entropic Eviscerator (Extracts ores from stones) + X 2 stone cutters, 6 iron +X Entropic Stabilizer (For making Stable Entropy) + X 7 iron, 1 raw entropy, 1 blue ice +X Entropic Entangler (For Metals and Stones) + X 2 stable entropy, 4 iron, 2 bucket, gold block Mobs X Fren (Stable Entropy on a Creeper) - Burning Wizard (Infernal Ashes on a Witch) -- Wildfire Iskat (Infernal Ashes on a tamed cat) - Rat Bastard (Stable Entropy on a cat) - Pet rock (Stable Entropy on a stone block) - Swearing skeleton (Stable Entropy on skeleton). diff --git a/src/main/java/com/acethewildfire/acesbs/compat/AcesBSREIClient.java b/src/main/java/com/acethewildfire/acesbs/compat/AcesBSREIClient.java index 34c332d..b117b5c 100644 --- a/src/main/java/com/acethewildfire/acesbs/compat/AcesBSREIClient.java +++ b/src/main/java/com/acethewildfire/acesbs/compat/AcesBSREIClient.java @@ -1,9 +1,11 @@ package com.acethewildfire.acesbs.compat; import com.acethewildfire.acesbs.block.ModBlocks; +import com.acethewildfire.acesbs.recipe.EntropicEntanglerRecipe; import com.acethewildfire.acesbs.recipe.EntropicEvisceratorRecipe; import com.acethewildfire.acesbs.recipe.EntropicStabilizerRecipe; import com.acethewildfire.acesbs.recipe.ModRecipies; +import com.acethewildfire.acesbs.screen.custom.EntropicEntanglerScreen; import com.acethewildfire.acesbs.screen.custom.EntropicEvisceratorScreen; import com.acethewildfire.acesbs.screen.custom.EntropicStabilizerScreen; import me.shedaniel.math.Rectangle; @@ -22,12 +24,16 @@ public class AcesBSREIClient implements REIClientPlugin { registry.add(new EntropicEvisceratorCategory()); registry.addWorkstations(EntropicEvisceratorCategory.ENTROPIC_EVISCERATOR, EntryStacks.of(ModBlocks.ENTROPIC_EVISCERATOR)); + + registry.add(new EntropicEntanglerCategory()); + registry.addWorkstations(EntropicEntanglerCategory.ENTROPIC_ENTANGLER, EntryStacks.of(ModBlocks.ENTROPIC_ENTANGLER)); } @Override public void registerDisplays(DisplayRegistry registry) { registry.registerRecipeFiller(EntropicStabilizerRecipe.class, ModRecipies.ENTROPIC_STABILIZER_TYPE, EntropicStabilizerDisplay::new); registry.registerRecipeFiller(EntropicEvisceratorRecipe.class, ModRecipies.ENTROPIC_EVISCERATOR_TYPE, EntropicEvisceratorDisplay::new); + registry.registerRecipeFiller(EntropicEntanglerRecipe.class, ModRecipies.ENTROPIC_ENTANGLER_TYPE, EntropicEntanglerDisplay::new); } @Override @@ -36,5 +42,9 @@ public class AcesBSREIClient implements REIClientPlugin { ((screen.height - 166) / 2) + 30, 20, 25 ), EntropicStabilizerScreen.class, EntropicStabilizerCategory.ENTROPIC_STABILIZER); registry.registerClickArea(screen -> new Rectangle(((screen.width - 176) / 2) + 78, ((screen.height - 166) / 2) + 30, 20, 25 ), EntropicEvisceratorScreen.class, EntropicEvisceratorCategory.ENTROPIC_EVISCERATOR); + registry.registerClickArea(screen -> new Rectangle(((screen.width - 176) / 2) + 53, + ((screen.height - 166) / 2) + 25, 37, 9 ), EntropicEntanglerScreen.class, EntropicEntanglerCategory.ENTROPIC_ENTANGLER); + registry.registerClickArea(screen -> new Rectangle(((screen.width - 176) / 2) + 90, + ((screen.height - 166) / 2) + 52, 37, 9 ), EntropicEntanglerScreen.class, EntropicEntanglerCategory.ENTROPIC_ENTANGLER); } } diff --git a/src/main/java/com/acethewildfire/acesbs/compat/EntropicEntanglerCategory.java b/src/main/java/com/acethewildfire/acesbs/compat/EntropicEntanglerCategory.java new file mode 100644 index 0000000..dbe3a00 --- /dev/null +++ b/src/main/java/com/acethewildfire/acesbs/compat/EntropicEntanglerCategory.java @@ -0,0 +1,63 @@ +package com.acethewildfire.acesbs.compat; + +import com.acethewildfire.acesbs.AcesBS; +import com.acethewildfire.acesbs.block.ModBlocks; +import com.acethewildfire.acesbs.item.ModItems; +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.EntryIngredient; +import me.shedaniel.rei.api.common.util.EntryStacks; +import net.minecraft.item.Items; +import net.minecraft.text.Text; +import net.minecraft.util.Identifier; + +import java.util.LinkedList; +import java.util.List; + +public class EntropicEntanglerCategory implements DisplayCategory { + public static final Identifier GUI_TEXTURE = + Identifier.of(AcesBS.MOD_ID, "textures/gui/entropic_entangler/entropic_entangler_gui_rei.png"); + + public static final CategoryIdentifier ENTROPIC_ENTANGLER = + CategoryIdentifier.of(AcesBS.MOD_ID, "entropic_entangler"); + + @Override + public CategoryIdentifier getCategoryIdentifier() { + return ENTROPIC_ENTANGLER; + } + + @Override + public Text getTitle() { + return Text.translatable("block.acesbs.entropic_entangler"); + } + + @Override + public Renderer getIcon() { + return EntryStacks.of(ModBlocks.ENTROPIC_ENTANGLER.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 + 44, startPoint.y + 35)).entries(display.getInputEntries().get(0)).markInput()); + widgets.add(Widgets.createSlot(new Point(startPoint.x + 116, startPoint.y + 35)).entries(display.getInputEntries().get(1)).markInput()); + widgets.add(Widgets.createSlot(new Point(startPoint.x + 80, 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/EntropicEntanglerDisplay.java b/src/main/java/com/acethewildfire/acesbs/compat/EntropicEntanglerDisplay.java new file mode 100644 index 0000000..40b799a --- /dev/null +++ b/src/main/java/com/acethewildfire/acesbs/compat/EntropicEntanglerDisplay.java @@ -0,0 +1,28 @@ +package com.acethewildfire.acesbs.compat; + +import com.acethewildfire.acesbs.recipe.EntropicEntanglerRecipe; +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.util.EntryIngredients; +import me.shedaniel.rei.api.common.util.EntryStacks; +import net.minecraft.recipe.RecipeEntry; + +import java.util.List; + +public class EntropicEntanglerDisplay extends BasicDisplay { + private RecipeEntry recipe; + private float xp; + private double cookTime; + + public EntropicEntanglerDisplay(RecipeEntry recipe){ + super( + List.of(EntryIngredients.ofIngredient(recipe.value().getIngredients().get(0)), EntryIngredients.ofIngredient(recipe.value().getIngredients().get(1))), + List.of(EntryIngredient.of(EntryStacks.of(recipe.value().getResult(null))))); + } + + @Override + public CategoryIdentifier getCategoryIdentifier() { + return EntropicEntanglerCategory.ENTROPIC_ENTANGLER; + } +} diff --git a/src/main/java/com/acethewildfire/acesbs/datagen/ModRecipeProvider.java b/src/main/java/com/acethewildfire/acesbs/datagen/ModRecipeProvider.java index 54553c2..4719bb2 100644 --- a/src/main/java/com/acethewildfire/acesbs/datagen/ModRecipeProvider.java +++ b/src/main/java/com/acethewildfire/acesbs/datagen/ModRecipeProvider.java @@ -69,6 +69,37 @@ public class ModRecipeProvider extends FabricRecipeProvider { .criterion(hasItem(ModItems.STABLE_ENTROPY), conditionsFromItem(ModItems.STABLE_ENTROPY)) .offerTo(recipeExporter, Identifier.of(AcesBS.MOD_ID, "crystal_entropy_from_stable_and_glass")); + ShapedRecipeJsonBuilder.create(RecipeCategory.MISC, ModBlocks.ENTROPIC_STABILIZER, 1) + .pattern("IRI") + .pattern("IBI") + .pattern("III") + .input('I', Items.IRON_INGOT) + .input('R', ModItems.RAW_ENTROPY) + .input('B', Blocks.BLUE_ICE) + .criterion(hasItem(ModItems.RAW_ENTROPY), conditionsFromItem(ModItems.RAW_ENTROPY)) + .offerTo(recipeExporter); + + ShapedRecipeJsonBuilder.create(RecipeCategory.MISC, ModBlocks.ENTROPIC_EVISCERATOR, 1) + .pattern("III") + .pattern("SES") + .pattern("III") + .input('I', Items.IRON_INGOT) + .input('S', Blocks.STONECUTTER) + .input('E', ModItems.STABLE_ENTROPY) + .criterion(hasItem(Blocks.STONECUTTER), conditionsFromItem(Blocks.STONECUTTER)) + .offerTo(recipeExporter); + + ShapedRecipeJsonBuilder.create(RecipeCategory.MISC, ModBlocks.ENTROPIC_ENTANGLER, 1) + .pattern("ISI") + .pattern("BGB") + .pattern("ISI") + .input('I', Items.IRON_INGOT) + .input('S', ModItems.STABLE_ENTROPY) + .input('B', Items.BUCKET) + .input('G', Blocks.GOLD_BLOCK) + .criterion(hasItem(ModItems.RAW_ENTROPY), conditionsFromItem(ModItems.RAW_ENTROPY)) + .offerTo(recipeExporter); + ShapedRecipeJsonBuilder.create(RecipeCategory.DECORATIONS, ModBlocks.CRYSTAL_ENTROPY_PANE, 16) .pattern("###") .pattern("###") diff --git a/src/main/resources/assets/acesbs/textures/gui/entropic_entangler/entropic_entangler_gui.png b/src/main/resources/assets/acesbs/textures/gui/entropic_entangler/entropic_entangler_gui.png index a2789c398790a52da26d2d0d2e9881269d66b5d9..51a14f1259bce761973cbb92dbe251baa369b261 100644 GIT binary patch delta 18 ZcmeC;?c$x#&CVvGvOfG}`Nl~fy delta 18 acmeC;?c$x#&Ca4OQ?Tp7_KlN%umS)*&j*_dOO`P7de%dWMir zDgKiO6hp}rjCUgQJh%TT$f7NkL|{y2Y<`MncX!u`b&Mx~uNeaH^5sjj!c^Pd-j0Zf zot+&gfiau_Y<>`v@c|){0tQx=C#Q%MlO&Tmp>A=H})vegBIWFTQ!K z*=&w23_m-b?~P-U*$n!jpi10xW*JO16fJuMS&S)HKYin`$?%l%9=l1q?L`3ZD z?2OhhE&-<3>gwuO8*q}Fe|2@W(3>9tD4bfY7Aq?&6N|v;XRfTQM6Fiy3!#{Q11Riu zR;d(=i;FQkI~%WFy}Ey~OM)+B^X%EPSXfx_%fJa>QWh2#Vtsx6;@*MRc^VkKcABQK zzP@hr;{-4bk|c?>wY4}rJdC})y{{thyC;InL3#T0X)G-*#mtP(BLLHL?3$U0Mxzn6 zS}hI_599Ug*WYa5U%g%Vm!3R%5=%=_FVj7K>lN~KaM-`(9cx$u{s07@Gh8)k#TaAVN%xIBTmDWRZi7n5-Uos)n94j5qa Z{sH9MOkR_1*7g7Z002ovPDHLkV1i*E?M(mx delta 452 zcmV;#0XzQR3Z({+i+=+SD~S%w)&Kwkdr3q=RCwC$+}&-1Fcg5%>nc;lYurVUya$6Y zN61+83AM>X)Cj89aL!|*HqsUTu=_)aFH1lliV^HP$Yoiqe>%BnOA&#cd|3SSW}as| z)*W{M4*|H}@20}PHjZONL`>6UC$Pf~z~To100aOK06+i$0h2lb4kDl*msf8N!?5`S zGBaweha8^yaOeQ67w8tPwL|}tk@?^Vlg|Pie+U2|0KhMJ`82U|NGhh-S4~f8Lc&gKmg9D*6Lv% zI066y00;me0Du4h0ssgAAOL^>z`MqAG=v>pBBGR1mU*5H7f!kZDA()NH0Z`OO%V~r uB(`}T;9?|ndhG&}p#-LrumlAc{Jl>qv2*#{AfulE0000