88import com .github .ethanicuss .astraladditions .compat .rei .transmute .TransmuteDisplay ;
99import com .github .ethanicuss .astraladditions .compat .rei .vacuum .VacuumCategory ;
1010import com .github .ethanicuss .astraladditions .compat .rei .vacuum .VacuumDisplay ;
11+ import com .github .ethanicuss .astraladditions .compat .rei .yttr .centrifuging .CentrifugeCategory ;
12+ import com .github .ethanicuss .astraladditions .compat .rei .yttr .centrifuging .CentrifugeDisplay ;
13+ import com .github .ethanicuss .astraladditions .compat .rei .yttr .pistonsmashing .PistonSmashingCategory ;
14+ import com .github .ethanicuss .astraladditions .compat .rei .yttr .pistonsmashing .PistonSmashingDisplay ;
15+ import com .github .ethanicuss .astraladditions .compat .rei .yttr .shattering .ShatteringCategory ;
16+ import com .github .ethanicuss .astraladditions .compat .rei .yttr .shattering .ShatteringDisplay ;
17+ import com .github .ethanicuss .astraladditions .compat .rei .yttr .soaking .SoakingCategory ;
18+ import com .github .ethanicuss .astraladditions .compat .rei .yttr .soaking .SoakingDisplay ;
19+ import com .github .ethanicuss .astraladditions .compat .rei .yttr .voidfiltering .VoidFilteringCategory ;
20+ import com .github .ethanicuss .astraladditions .compat .rei .yttr .voidfiltering .VoidFilteringDisplay ;
1121import com .github .ethanicuss .astraladditions .fluids .ModFluids ;
1222import com .github .ethanicuss .astraladditions .recipes .DesizerRecipe ;
1323import com .github .ethanicuss .astraladditions .recipes .TransmuteRecipe ;
1424import com .github .ethanicuss .astraladditions .registry .ChromaticVacuumRecipe ;
1525import com .github .ethanicuss .astraladditions .registry .ModBlocks ;
1626import com .github .ethanicuss .astraladditions .registry .ModItems ;
27+ import com .unascribed .yttr .init .YEnchantments ;
28+ import com .unascribed .yttr .init .YItems ;
29+ import com .unascribed .yttr .init .YRecipeTypes ;
1730import me .shedaniel .rei .api .client .plugins .REIClientPlugin ;
1831import me .shedaniel .rei .api .client .registry .category .CategoryRegistry ;
1932import me .shedaniel .rei .api .client .registry .display .DisplayRegistry ;
2033import me .shedaniel .rei .api .client .registry .screen .ScreenRegistry ;
2134import me .shedaniel .rei .api .common .category .CategoryIdentifier ;
2235import me .shedaniel .rei .api .common .util .EntryStacks ;
2336import net .minecraft .client .MinecraftClient ;
37+ import net .minecraft .enchantment .EnchantmentHelper ;
38+ import net .minecraft .item .ItemStack ;
39+ import net .minecraft .item .Items ;
40+ import net .minecraft .nbt .NbtCompound ;
41+ import net .minecraft .nbt .NbtList ;
42+ import net .minecraft .nbt .NbtString ;
2443import net .minecraft .recipe .RecipeManager ;
44+ import net .minecraft .recipe .RecipeType ;
45+ import net .minecraft .text .Style ;
46+ import net .minecraft .text .Text ;
47+ import net .minecraft .text .TranslatableText ;
48+ import net .minecraft .util .Formatting ;
2549import net .minecraft .util .Identifier ;
2650
2751import java .util .List ;
52+ import java .util .Map ;
2853
2954public class AstralAdditionsREIClientPlugin implements REIClientPlugin {
30- public static final CategoryIdentifier <DesizerDisplay > DESIZER = CategoryIdentifier .of (new Identifier (AstralAdditions .MOD_ID , "desizer" ));
55+ public static final CategoryIdentifier <DesizerDisplay > DESIZER = CategoryIdentifier .of (new Identifier (AstralAdditions .MOD_ID , "desizer" ));
3156
32- public static final CategoryIdentifier <TransmuteDisplay > TRANSMUTE = CategoryIdentifier .of (new Identifier (AstralAdditions .MOD_ID , "transmute" ));
57+ public static final CategoryIdentifier <TransmuteDisplay > TRANSMUTE = CategoryIdentifier .of (new Identifier (AstralAdditions .MOD_ID , "transmute" ));
3358
34- public static final CategoryIdentifier <VacuumDisplay > VACUUM = CategoryIdentifier .of (new Identifier (AstralAdditions .MOD_ID , "vacuum" ));
59+ public static final CategoryIdentifier <VacuumDisplay > VACUUM = CategoryIdentifier .of (new Identifier (AstralAdditions .MOD_ID , "vacuum" ));
3560
36- @ Override
37- public void registerCategories (CategoryRegistry registry ) {
38- registry .add (new DesizerCategory ());
39- registry .addWorkstations (DESIZER , EntryStacks .of (ModBlocks .DESIZER_CONTROLLER ));
61+ //* YTTR
62+ public static final CategoryIdentifier <CentrifugeDisplay > CENTRIFUGE = CategoryIdentifier .of (new Identifier (AstralAdditions .MOD_ID , "centrifuge" ));
63+ public static final CategoryIdentifier <PistonSmashingDisplay > PISTON_SMASHING = CategoryIdentifier .of (new Identifier (AstralAdditions .MOD_ID , "piston_smashing" ));
64+ public static final CategoryIdentifier <SoakingDisplay > SOAKING = CategoryIdentifier .of (new Identifier (AstralAdditions .MOD_ID , "soaking" ));
65+ public static final CategoryIdentifier <VoidFilteringDisplay > VOID_FILTERING = CategoryIdentifier .of (new Identifier (AstralAdditions .MOD_ID , "void_filtering" ));
66+ public static final CategoryIdentifier <ShatteringDisplay > SHATTERING = CategoryIdentifier .of (new Identifier (AstralAdditions .MOD_ID , "shattering" ));
4067
41- registry .add (new TransmuteCategory ());
42- registry .addWorkstations (TRANSMUTE , EntryStacks .of (ModFluids .SHIMMER_BUCKET ));
68+ @ Override
69+ public void registerCategories (CategoryRegistry registry ) {
70+ registry .add (new DesizerCategory ());
71+ registry .addWorkstations (DESIZER , EntryStacks .of (ModBlocks .DESIZER_CONTROLLER ));
4372
44- registry .add (new VacuumCategory ());
45- registry .addWorkstations (VACUUM , EntryStacks .of (ModItems . CHROMATIC_VACUUM ));
73+ registry .add (new TransmuteCategory ());
74+ registry .addWorkstations (TRANSMUTE , EntryStacks .of (ModFluids . SHIMMER_BUCKET ));
4675
47- }
76+ registry .add (new VacuumCategory ());
77+ registry .addWorkstations (VACUUM , EntryStacks .of (ModItems .CHROMATIC_VACUUM ));
4878
49- @ Override
50- public void registerDisplays ( DisplayRegistry registry ) {
51- RecipeManager recipeManager = MinecraftClient . getInstance (). world . getRecipeManager ( );
79+ //* YTTR
80+ registry . add ( new CentrifugeCategory ());
81+ registry . addWorkstations ( CENTRIFUGE , EntryStacks . of ( YItems . CENTRIFUGE ) );
5282
53- List <DesizerDisplay > desizerRecipes = recipeManager .listAllOfType (DesizerRecipe .Type .INSTANCE ).stream ().map (DesizerDisplay ::of ).toList ();
54- desizerRecipes .forEach (registry ::add );
83+ registry .add (new PistonSmashingCategory ());
84+ registry .addWorkstations (PISTON_SMASHING , EntryStacks .of (Items .PISTON ));
85+ registry .addWorkstations (PISTON_SMASHING , EntryStacks .of (Items .STICKY_PISTON ));
5586
56- List <TransmuteDisplay > transmuteRecipes = recipeManager .listAllOfType (TransmuteRecipe .Type .INSTANCE ).stream ().map (TransmuteDisplay ::of ).toList ();
57- transmuteRecipes .forEach (registry ::add );
87+ registry .add (new SoakingCategory ());
5888
59- List < VacuumDisplay > vacuumRecipes = recipeManager . listAllOfType ( ChromaticVacuumRecipe . Type . INSTANCE ). stream (). map ( VacuumDisplay :: of ). toList ( );
60- vacuumRecipes . forEach ( registry :: add );
89+ registry . add ( new VoidFilteringCategory () );
90+ registry . addWorkstations ( VOID_FILTERING , EntryStacks . of ( YItems . VOID_FILTER ) );
6191
62- }
6392
64- @ Override
65- public void registerScreens (ScreenRegistry registry ) {
66- REIClientPlugin .super .registerScreens (registry );
67- }
68- }
93+ registry .add (new ShatteringCategory ());
94+ ItemStack shatteringBook = new ItemStack (Items .ENCHANTED_BOOK );
95+ EnchantmentHelper .set (Map .of (YEnchantments .SHATTERING_CURSE , 1 ), shatteringBook );
96+
97+ NbtList lore = new NbtList ();
98+ lore .add (NbtString .of (Text .Serializer .toJson (
99+ new TranslatableText ("category.astraladditions.shattering.workstations" ).setStyle (Style .EMPTY .withItalic (false ).withColor (Formatting .YELLOW ))
100+ )));
101+ NbtCompound displayTag = shatteringBook .getOrCreateSubNbt ("display" );
102+ displayTag .put ("Lore" , lore );
103+
104+ registry .addWorkstations (SHATTERING , EntryStacks .of (shatteringBook ));
105+
106+ }
107+
108+ @ Override
109+ public void registerDisplays (DisplayRegistry registry ) {
110+ RecipeManager recipeManager = MinecraftClient .getInstance ().world .getRecipeManager ();
111+
112+ List <DesizerDisplay > desizerRecipes = recipeManager .listAllOfType (DesizerRecipe .Type .INSTANCE ).stream ().map (DesizerDisplay ::of ).toList ();
113+ desizerRecipes .forEach (registry ::add );
114+
115+ List <TransmuteDisplay > transmuteRecipes = recipeManager .listAllOfType (TransmuteRecipe .Type .INSTANCE ).stream ().map (TransmuteDisplay ::of ).toList ();
116+ transmuteRecipes .forEach (registry ::add );
117+
118+ List <VacuumDisplay > vacuumRecipes = recipeManager .listAllOfType (ChromaticVacuumRecipe .Type .INSTANCE ).stream ().map (VacuumDisplay ::of ).toList ();
119+ vacuumRecipes .forEach (registry ::add );
120+
121+ //* YTTR
122+ List <CentrifugeDisplay > centrifugeRecipes = recipeManager .listAllOfType (YRecipeTypes .CENTRIFUGING ).stream ().map (CentrifugeDisplay ::of ).toList ();
123+ centrifugeRecipes .forEach (registry ::add );
124+
125+ List <PistonSmashingDisplay > pistonSmashingRecipes = recipeManager .listAllOfType (YRecipeTypes .PISTON_SMASHING ).stream ().map (PistonSmashingDisplay ::of ).toList ();
126+ pistonSmashingRecipes .forEach (registry ::add );
127+
128+ List <SoakingDisplay > soakingRecipes = recipeManager .listAllOfType (YRecipeTypes .SOAKING ).stream ().map (SoakingDisplay ::of ).toList ();
129+ soakingRecipes .forEach (registry ::add );
130+
131+ List <VoidFilteringDisplay > voidFilteringRecipe = recipeManager .listAllOfType (YRecipeTypes .VOID_FILTERING ).stream ().map (VoidFilteringDisplay ::of ).toList ();
132+ voidFilteringRecipe .forEach (registry ::add );
133+
134+ //Shattering stuff
135+ List <ShatteringDisplay > shatteringRecipes = recipeManager .listAllOfType (YRecipeTypes .SHATTERING ).stream ()
136+ .map (ShatteringDisplay ::of )
137+ .toList ();
138+ shatteringRecipes .forEach (registry ::add );
139+
140+ List <ShatteringDisplay > shatteringstonecuttingRecipes = recipeManager .listAllOfType (RecipeType .STONECUTTING ).stream ()
141+ .filter (r -> r .getOutput ().getCount () == 1 && !r .getIngredients ().isEmpty ())
142+ .map (ShatteringDisplay ::of )
143+ .toList ();
144+ shatteringstonecuttingRecipes .forEach (registry ::add );
145+
146+ List <ShatteringDisplay > shatteringoneByOneCraftingRecipes = recipeManager .listAllOfType (RecipeType .CRAFTING ).stream ()
147+ .filter (r -> r .fits (1 , 1 ) && !r .getIngredients ().isEmpty ())
148+ .map (ShatteringDisplay ::of )
149+ .toList ();
150+ shatteringoneByOneCraftingRecipes .forEach (registry ::add );
151+ }
152+
153+
154+ @ Override
155+ public void registerScreens (ScreenRegistry registry ) {
156+ REIClientPlugin .super .registerScreens (registry );
157+ }
158+ }
0 commit comments