Skip to content

Commit cee582d

Browse files
Lulu13022002Machine-Maker
authored andcommitted
support parameterized type for generated tag keys
1 parent 594c7e9 commit cee582d

File tree

1 file changed

+13
-1
lines changed

1 file changed

+13
-1
lines changed

paper-generator/src/main/java/io/papermc/generator/types/registry/GeneratedTagKeyType.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
package io.papermc.generator.types.registry;
22

3+
import com.squareup.javapoet.ClassName;
34
import com.squareup.javapoet.FieldSpec;
45
import com.squareup.javapoet.JavaFile;
56
import com.squareup.javapoet.MethodSpec;
67
import com.squareup.javapoet.ParameterSpec;
78
import com.squareup.javapoet.ParameterizedTypeName;
89
import com.squareup.javapoet.TypeName;
910
import com.squareup.javapoet.TypeSpec;
11+
import com.squareup.javapoet.WildcardTypeName;
1012
import io.papermc.generator.Main;
1113
import io.papermc.generator.registry.RegistryEntry;
1214
import io.papermc.generator.types.SimpleGenerator;
@@ -67,7 +69,17 @@ private TypeSpec.Builder keyHolderType() {
6769

6870
@Override
6971
protected TypeSpec getTypeSpec() {
70-
TypeName tagKeyType = ParameterizedTypeName.get(TagKey.class, this.entry.apiClass());
72+
final TypeName apiType;
73+
if (this.entry.genericArgCount() > 0) {
74+
final TypeName[] args = new TypeName[this.entry.genericArgCount()];
75+
for (int i = 0; i < args.length; i++) {
76+
args[i] = WildcardTypeName.subtypeOf(Object.class);
77+
}
78+
apiType = ParameterizedTypeName.get(ClassName.get(this.entry.apiClass()), args);
79+
} else {
80+
apiType = ClassName.get(this.entry.apiClass());
81+
}
82+
TypeName tagKeyType = ParameterizedTypeName.get(ClassName.get(TagKey.class), apiType);
7183

7284
TypeSpec.Builder typeBuilder = this.keyHolderType();
7385
MethodSpec.Builder createMethod = this.createMethod(tagKeyType);

0 commit comments

Comments
 (0)