diff --git a/datagen-plugin/pom.xml b/datagen-plugin/pom.xml index bf80e21..f8d5985 100644 --- a/datagen-plugin/pom.xml +++ b/datagen-plugin/pom.xml @@ -16,7 +16,7 @@ 1.0.0.0-SNAPSHOT UTF-8 - 8.5.11 + 8.5.12 4.0.0-alpha-3 @@ -59,7 +59,7 @@ org.apache.maven.plugins maven-plugin-plugin - 3.7.1 + 3.10.1 org.apache.maven.plugin-tools @@ -84,7 +84,7 @@ maven-compiler-plugin 3.10.1 - 17 + 21 UTF-8 @@ -185,7 +185,7 @@ org.yaml snakeyaml - 1.33 + 2.0 net.fabricmc @@ -195,7 +195,7 @@ org.jetbrains annotations - 23.1.0 + 24.0.1 it.unimi.dsi @@ -217,7 +217,7 @@ org.apache.maven.plugin-tools maven-plugin-annotations - 3.7.1 + 3.8.1 provided @@ -233,7 +233,7 @@ org.apache.logging.log4j log4j-core - 2.19.0 + 2.20.0 org.apache.commons @@ -243,7 +243,7 @@ org.apache.logging.log4j log4j-slf4j2-impl - 2.19.0 + 2.20.0 junit diff --git a/datagen-plugin/src/main/java/it/cavallium/datagen/plugin/classgen/GenDataSuperX.java b/datagen-plugin/src/main/java/it/cavallium/datagen/plugin/classgen/GenDataSuperX.java index 2f7b304..e27779f 100644 --- a/datagen-plugin/src/main/java/it/cavallium/datagen/plugin/classgen/GenDataSuperX.java +++ b/datagen-plugin/src/main/java/it/cavallium/datagen/plugin/classgen/GenDataSuperX.java @@ -3,6 +3,7 @@ package it.cavallium.datagen.plugin.classgen; import com.squareup.javapoet.ClassName; import com.squareup.javapoet.MethodSpec; import com.squareup.javapoet.ParameterSpec; +import com.squareup.javapoet.TypeName; import com.squareup.javapoet.TypeSpec; import it.cavallium.datagen.plugin.ClassGenerator; import it.cavallium.datagen.plugin.ComputedTypeSuper; @@ -36,6 +37,17 @@ public class GenDataSuperX extends ClassGenerator { classBuilder.addModifiers(Modifier.PUBLIC); + if (version.isCurrent()) { + classBuilder.addModifiers(Modifier.SEALED); + Stream superTypesThatExtendThisSuperType = dataModel.getSuperTypesComputed(version) + .filter(computedTypeSuper -> dataModel.getExtendsInterfaces(computedTypeSuper).anyMatch(typeSuper::equals)) + .map(computedTypeSuper -> computedTypeSuper.getJTypeName(basePackageName)); + Stream subTypes = typeSuper.subTypes().stream() + .map(subType -> subType.getJTypeName(basePackageName)); + Stream permittedSubclasses = Stream.concat(superTypesThatExtendThisSuperType, subTypes).distinct(); + classBuilder.addPermittedSubclasses(permittedSubclasses.toList()); + } + dataModel.getTypeSameVersions(typeSuper).forEach(v -> { var iTypeClass = ClassName.get(v.getPackage(basePackageName), "IBaseType"); classBuilder.addSuperinterface(iTypeClass); diff --git a/datagen/pom.xml b/datagen/pom.xml index 086485d..73f1a44 100644 --- a/datagen/pom.xml +++ b/datagen/pom.xml @@ -67,7 +67,7 @@ maven-compiler-plugin 3.8.1 - 17 + 21 UTF-8 @@ -159,7 +159,7 @@ - +