Skip to content

Commit 49fbebd

Browse files
Add type descriptions for Create data components
1 parent b8b0560 commit 49fbebd

1 file changed

Lines changed: 26 additions & 0 deletions

File tree

src/main/java/dev/latvian/mods/kubejs/create/KubeJSCreatePlugin.java

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package dev.latvian.mods.kubejs.create;
22

3+
import com.simibubi.create.AllDataComponents;
34
import com.simibubi.create.Create;
45
import com.simibubi.create.content.processing.recipe.ProcessingOutput;
56
import dev.latvian.mods.kubejs.create.events.BoilerHeaterHandlerEvent;
@@ -17,10 +18,16 @@
1718
import dev.latvian.mods.kubejs.recipe.schema.RecipeSchemaRegistry;
1819
import dev.latvian.mods.kubejs.registry.BuilderTypeRegistry;
1920
import dev.latvian.mods.kubejs.script.BindingRegistry;
21+
import dev.latvian.mods.kubejs.script.DataComponentTypeInfoRegistry;
2022
import dev.latvian.mods.kubejs.script.ScriptType;
2123
import dev.latvian.mods.kubejs.script.TypeWrapperRegistry;
24+
import dev.latvian.mods.rhino.type.TypeInfo;
25+
import net.minecraft.core.component.DataComponentType;
2226
import net.minecraft.core.registries.Registries;
2327

28+
import java.lang.reflect.Modifier;
29+
import java.lang.reflect.ParameterizedType;
30+
2431
public class KubeJSCreatePlugin implements KubeJSPlugin {
2532
@Override
2633
public void afterInit() {
@@ -77,4 +84,23 @@ public void registerRecipeComponents(RecipeComponentTypeRegistry registry) {
7784
registry.register(CreateRecipeComponents.SIZED_FLUID_INGREDIENT);
7885
registry.register(CreateRecipeComponents.HEAT_CONDITION);
7986
}
87+
88+
@Override
89+
public void registerDataComponentTypeDescriptions(DataComponentTypeInfoRegistry registry) {
90+
try {
91+
for (var field : AllDataComponents.class.getDeclaredFields()) {
92+
if (field.getType() == DataComponentType.class
93+
&& Modifier.isPublic(field.getModifiers())
94+
&& Modifier.isStatic(field.getModifiers())
95+
&& field.getGenericType() instanceof ParameterizedType t
96+
) {
97+
var key = (DataComponentType) field.get(null);
98+
var typeInfo = TypeInfo.of(t.getActualTypeArguments()[0]);
99+
registry.register(key, typeInfo);
100+
}
101+
}
102+
} catch (Exception ex) {
103+
ex.printStackTrace();
104+
}
105+
}
80106
}

0 commit comments

Comments
 (0)