11package org .modsauce .otyacraftenginerenewed .data ;
22
33import dev .architectury .platform .Mod ;
4+ import java .nio .file .Path ;
5+ import java .util .Collection ;
6+ import java .util .List ;
7+ import java .util .concurrent .CompletableFuture ;
8+ import java .util .concurrent .atomic .AtomicReference ;
9+ import java .util .function .BiFunction ;
410import net .minecraft .core .HolderLookup ;
511import net .minecraft .core .RegistrySetBuilder ;
612import net .minecraft .data .DataGenerator ;
1824import org .jetbrains .annotations .NotNull ;
1925import org .modsauce .otyacraftenginerenewed .data .provider .*;
2026
21- import java .nio .file .Path ;
22- import java .util .Collection ;
23- import java .util .List ;
24- import java .util .concurrent .CompletableFuture ;
25- import java .util .concurrent .atomic .AtomicReference ;
26- import java .util .function .BiFunction ;
27-
2827public interface CrossDataGeneratorAccess {
29- @ NotNull DataGenerator getVanillaGenerator ();
30-
31- <T extends DataProvider > T addProvider (@ NotNull DataProvider .Factory <T > factory );
32-
33- <T extends DataProvider > T addProvider (@ NotNull BiFunction <PackOutput , CompletableFuture <HolderLookup .Provider >, T > dataProviderSupplier );
34-
35- default <T extends DataProviderWrapper <?>> T addProviderWrapper (@ NotNull DataProviderWrapper .GeneratorAccessedFactory <T > factory ) {
36- return addProviderWrapper (packOutput -> factory .create (packOutput , CrossDataGeneratorAccess .this ));
28+ @ NotNull
29+ DataGenerator getVanillaGenerator ();
30+
31+ <T extends DataProvider > T addProvider (
32+ @ NotNull DataProvider .Factory <T > factory
33+ );
34+
35+ <T extends DataProvider > T addProvider (
36+ @ NotNull BiFunction <
37+ PackOutput ,
38+ CompletableFuture <HolderLookup .Provider >,
39+ T
40+ > dataProviderSupplier
41+ );
42+
43+ default <T extends DataProviderWrapper <?>> T addProviderWrapper (
44+ @ NotNull DataProviderWrapper .GeneratorAccessedFactory <T > factory
45+ ) {
46+ return addProviderWrapper (packOutput ->
47+ factory .create (packOutput , CrossDataGeneratorAccess .this )
48+ );
3749 }
3850
39- default <T extends DataProviderWrapper <?>> T addProviderWrapper (@ NotNull DataProviderWrapper .Factory <T > factory ) {
51+ default <T extends DataProviderWrapper <?>> T addProviderWrapper (
52+ @ NotNull DataProviderWrapper .Factory <T > factory
53+ ) {
4054 AtomicReference <T > providerWrapper = new AtomicReference <>();
4155
4256 addProvider (packOutput -> {
@@ -47,11 +61,18 @@ default <T extends DataProviderWrapper<?>> T addProviderWrapper(@NotNull DataPro
4761 return providerWrapper .get ();
4862 }
4963
50- default <T extends DataProviderWrapper <?>> T addProviderWrapper (@ NotNull DataProviderWrapper .LookupGeneratorAccessedFactory <T > factory ) {
51- return addProviderWrapper ((DataProviderWrapper .LookupFactory <T >) (packOutput , lookup ) -> factory .create (packOutput , lookup , CrossDataGeneratorAccess .this ));
64+ default <T extends DataProviderWrapper <?>> T addProviderWrapper (
65+ @ NotNull DataProviderWrapper .LookupGeneratorAccessedFactory <T > factory
66+ ) {
67+ return addProviderWrapper (
68+ (DataProviderWrapper .LookupFactory <T >) (packOutput , lookup ) ->
69+ factory .create (packOutput , lookup , CrossDataGeneratorAccess .this )
70+ );
5271 }
5372
54- default <T extends DataProviderWrapper <?>> T addProviderWrapper (@ NotNull DataProviderWrapper .LookupFactory <T > factory ) {
73+ default <T extends DataProviderWrapper <?>> T addProviderWrapper (
74+ @ NotNull DataProviderWrapper .LookupFactory <T > factory
75+ ) {
5576 AtomicReference <T > providerWrapper = new AtomicReference <>();
5677
5778 addProvider ((packOutput , lookup ) -> {
@@ -64,31 +85,113 @@ default <T extends DataProviderWrapper<?>> T addProviderWrapper(@NotNull DataPro
6485
6586 Mod getMod ();
6687
67- RecipeProvider createRecipeProvider (PackOutput packOutput , RecipeProviderWrapper recipeProviderWrapper );
68-
69- TagsProvider <Item > createItemTagProvider (PackOutput packOutput , CompletableFuture <HolderLookup .Provider > lookup , ItemTagProviderWrapper itemTagProviderWrapper , @ NotNull BlockTagProviderWrapper blockTagProviderWrapper );
70-
71- TagsProvider <Fluid > createFluidTagProvider (PackOutput packOutput , CompletableFuture <HolderLookup .Provider > lookup , FluidTagProviderWrapper fluidTagProviderWrapper );
72-
73- TagsProvider <Block > createBlockTagProvider (PackOutput packOutput , CompletableFuture <HolderLookup .Provider > lookup , BlockTagProviderWrapper blockTagProviderWrapper );
74-
75- TagsProvider <PoiType > createPoiTypeTagProvider (PackOutput packOutput , CompletableFuture <HolderLookup .Provider > lookup , PoiTypeTagProviderWrapper poiTypeTagProviderWrapper );
76-
77- TagsProvider <DamageType > createDamageTypeTagProvider (PackOutput packOutput , CompletableFuture <HolderLookup .Provider > lookup , DamageTypeTagsProviderWrapper damageTypeTagsProviderWrapper );
88+ // New 1.21.1 methods with registry lookup
89+ RecipeProvider createRecipeProvider (
90+ PackOutput packOutput ,
91+ CompletableFuture <HolderLookup .Provider > lookup ,
92+ RecipeProviderWrapper recipeProviderWrapper
93+ );
94+
95+ // Backward compatibility methods
96+ default RecipeProvider createRecipeProvider (
97+ PackOutput packOutput ,
98+ RecipeProviderWrapper recipeProviderWrapper
99+ ) {
100+ // For backward compatibility, use null lookup - implementations should handle this
101+ return createRecipeProvider (packOutput , null , recipeProviderWrapper );
102+ }
78103
79- TagsProvider <Biome > createBiomeTagProvider (PackOutput packOutput , CompletableFuture <HolderLookup .Provider > lookup , BiomeTagsProviderWrapper biomeTagsProviderWrapper );
104+ TagsProvider <Item > createItemTagProvider (
105+ PackOutput packOutput ,
106+ CompletableFuture <HolderLookup .Provider > lookup ,
107+ ItemTagProviderWrapper itemTagProviderWrapper ,
108+ @ NotNull BlockTagProviderWrapper blockTagProviderWrapper
109+ );
110+
111+ TagsProvider <Fluid > createFluidTagProvider (
112+ PackOutput packOutput ,
113+ CompletableFuture <HolderLookup .Provider > lookup ,
114+ FluidTagProviderWrapper fluidTagProviderWrapper
115+ );
116+
117+ TagsProvider <Block > createBlockTagProvider (
118+ PackOutput packOutput ,
119+ CompletableFuture <HolderLookup .Provider > lookup ,
120+ BlockTagProviderWrapper blockTagProviderWrapper
121+ );
122+
123+ TagsProvider <PoiType > createPoiTypeTagProvider (
124+ PackOutput packOutput ,
125+ CompletableFuture <HolderLookup .Provider > lookup ,
126+ PoiTypeTagProviderWrapper poiTypeTagProviderWrapper
127+ );
128+
129+ TagsProvider <DamageType > createDamageTypeTagProvider (
130+ PackOutput packOutput ,
131+ CompletableFuture <HolderLookup .Provider > lookup ,
132+ DamageTypeTagsProviderWrapper damageTypeTagsProviderWrapper
133+ );
134+
135+ TagsProvider <Biome > createBiomeTagProvider (
136+ PackOutput packOutput ,
137+ CompletableFuture <HolderLookup .Provider > lookup ,
138+ BiomeTagsProviderWrapper biomeTagsProviderWrapper
139+ );
80140
81141 DataProvider createBasicProvider (BasicProviderWrapper basicProviderWrapper );
82142
83- DataProvider createBlockLootTableProvider (PackOutput packOutput , BlockLootTableProviderWrapper blockLootTableProviderWrapper );
84-
85- DataProvider createAdvancementProvider (PackOutput packOutput , AdvancementProviderWrapper advancementProviderWrapper , List <AdvancementSubProviderWrapper > subProviderWrappers );
86-
87- DataProvider createItemModelProvider (PackOutput packOutput , ItemModelProviderWrapper itemModelProviderWrapper );
143+ DataProvider createBlockLootTableProvider (
144+ PackOutput packOutput ,
145+ CompletableFuture <HolderLookup .Provider > lookup ,
146+ BlockLootTableProviderWrapper blockLootTableProviderWrapper
147+ );
148+
149+ default DataProvider createBlockLootTableProvider (
150+ PackOutput packOutput ,
151+ BlockLootTableProviderWrapper blockLootTableProviderWrapper
152+ ) {
153+ return createBlockLootTableProvider (
154+ packOutput ,
155+ null ,
156+ blockLootTableProviderWrapper
157+ );
158+ }
88159
89- DataProvider createBlockStateAndModelProvider (PackOutput packOutput , BlockStateAndModelProviderWrapper blockStateAndModelProviderWrapper );
160+ DataProvider createAdvancementProvider (
161+ PackOutput packOutput ,
162+ CompletableFuture <HolderLookup .Provider > lookup ,
163+ AdvancementProviderWrapper advancementProviderWrapper ,
164+ List <AdvancementSubProviderWrapper > subProviderWrappers
165+ );
166+
167+ default DataProvider createAdvancementProvider (
168+ PackOutput packOutput ,
169+ AdvancementProviderWrapper advancementProviderWrapper ,
170+ List <AdvancementSubProviderWrapper > subProviderWrappers
171+ ) {
172+ return createAdvancementProvider (
173+ packOutput ,
174+ null ,
175+ advancementProviderWrapper ,
176+ subProviderWrappers
177+ );
178+ }
90179
91- RegistriesDatapackGenerator createRegistriesDatapackGenerator (PackOutput packOutput , CompletableFuture <HolderLookup .Provider > lookup , RegistrySetBuilder registrySetBuilder );
180+ DataProvider createItemModelProvider (
181+ PackOutput packOutput ,
182+ ItemModelProviderWrapper itemModelProviderWrapper
183+ );
184+
185+ DataProvider createBlockStateAndModelProvider (
186+ PackOutput packOutput ,
187+ BlockStateAndModelProviderWrapper blockStateAndModelProviderWrapper
188+ );
189+
190+ RegistriesDatapackGenerator createRegistriesDatapackGenerator (
191+ PackOutput packOutput ,
192+ CompletableFuture <HolderLookup .Provider > lookup ,
193+ RegistrySetBuilder registrySetBuilder
194+ );
92195
93196 Collection <Path > getResourceInputFolders ();
94197
0 commit comments