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 @@
-
+