Skip to content

Commit 5826b29

Browse files
committed
config生成器实现(草稿)
1 parent 968216d commit 5826b29

28 files changed

+673
-119
lines changed

build.gradle

+8-10
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
plugins {
22
id 'java-library'
33
id 'maven-publish'
4-
id 'net.neoforged.moddev' version '1.0.20'
4+
id 'net.neoforged.moddev' version '2.0.42-beta'
55
}
66

77
tasks.named('wrapper', Wrapper).configure {
@@ -30,6 +30,7 @@ java.toolchain.languageVersion = JavaLanguageVersion.of(21)
3030

3131
neoForge {
3232
version = project.neo_version
33+
neoFormVersion = "${minecraft_version}-${neo_form_version}"
3334

3435
parchment {
3536
mappingsVersion = project.parchment_mappings_version
@@ -39,7 +40,6 @@ neoForge {
3940
runs {
4041
client {
4142
client()
42-
4343
systemProperty 'neoforge.enabledGameTestNamespaces', project.mod_id
4444
}
4545

@@ -145,11 +145,9 @@ if (!jijg.isEmpty()) {
145145
}
146146
}
147147

148-
idea {
149-
module {
150-
downloadSources = true
151-
downloadJavadoc = true
152-
}
153-
}
154-
155-
runClient.dependsOn(runData)
148+
//idea {
149+
// module {
150+
// downloadSources = true
151+
// downloadJavadoc = true
152+
// }
153+
//}

gradle.properties

+1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ parchment_mappings_version=2024.07.28
1010
minecraft_version=1.21.1
1111
minecraft_version_range=[1.21.1, 1.22)
1212
neo_version=21.1.69
13+
neo_form_version=20240808.144430
1314
neo_version_range=[21.1.0,)
1415
loader_version_range=[4,)
1516

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package org.polaris_bear.annotation;
2+
3+
import java.lang.annotation.ElementType;
4+
import java.lang.annotation.Retention;
5+
import java.lang.annotation.RetentionPolicy;
6+
import java.lang.annotation.Target;
7+
8+
@Target(ElementType.TYPE)
9+
@Retention(RetentionPolicy.SOURCE)
10+
public @interface AutoConfig {
11+
enum Type {
12+
COMMON,
13+
CLIENT,
14+
SERVER,
15+
STARTUP
16+
}
17+
Type value() default Type.COMMON;
18+
String modid();
19+
}

processor/annotation/src/main/java/org/polaris_bear/annotation/AutoInfo.java

-9
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package org.polaris_bear.annotation.config;
2+
3+
import java.lang.annotation.ElementType;
4+
import java.lang.annotation.Retention;
5+
import java.lang.annotation.RetentionPolicy;
6+
import java.lang.annotation.Target;
7+
8+
@Target(ElementType.FIELD)
9+
@Retention(RetentionPolicy.SOURCE)
10+
public @interface Define {
11+
String value();
12+
boolean defaultValue();
13+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package org.polaris_bear.annotation.config;
2+
3+
import java.lang.annotation.ElementType;
4+
import java.lang.annotation.Retention;
5+
import java.lang.annotation.RetentionPolicy;
6+
import java.lang.annotation.Target;
7+
8+
@Retention(RetentionPolicy.SOURCE)
9+
@Target(ElementType.FIELD)
10+
public @interface DefineDoubleRange {
11+
String value();
12+
double defaultValue();
13+
double min();
14+
double max();
15+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package org.polaris_bear.annotation.config;
2+
3+
import java.lang.annotation.ElementType;
4+
import java.lang.annotation.Retention;
5+
import java.lang.annotation.RetentionPolicy;
6+
import java.lang.annotation.Target;
7+
8+
@Target(ElementType.FIELD)
9+
@Retention(RetentionPolicy.SOURCE)
10+
public @interface DefineEnum {
11+
String value();
12+
String defaultValue();
13+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package org.polaris_bear.annotation.config;
2+
3+
import java.lang.annotation.ElementType;
4+
import java.lang.annotation.Retention;
5+
import java.lang.annotation.RetentionPolicy;
6+
import java.lang.annotation.Target;
7+
8+
@Retention(RetentionPolicy.SOURCE)
9+
@Target(ElementType.FIELD)
10+
public @interface DefineIntRange {
11+
String value();
12+
int defaultValue();
13+
int min();
14+
int max();
15+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package org.polaris_bear.annotation.config;
2+
3+
import java.lang.annotation.ElementType;
4+
import java.lang.annotation.Retention;
5+
import java.lang.annotation.RetentionPolicy;
6+
import java.lang.annotation.Target;
7+
8+
@Retention(RetentionPolicy.SOURCE)
9+
@Target(ElementType.FIELD)
10+
public @interface DefineLongRange {
11+
String value();
12+
long defaultValue();
13+
long min();
14+
long max();
15+
}

processor/build.gradle

+2
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ repositories {
88

99
dependencies {
1010
implementation(project(":annotation"))
11+
compileOnly 'org.projectlombok:lombok:1.18.34'
12+
annotationProcessor 'org.projectlombok:lombok:1.18.34'
1113
implementation 'com.google.auto.service:auto-service:1.1.1'
1214
annotationProcessor 'com.google.auto.service:auto-service:1.1.1'
1315
implementation 'com.squareup:javapoet:1.13.0'
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package org.polaris_bear.ext;
2+
3+
import org.polaris_bear.annotation.AutoConfig;
4+
5+
import javax.annotation.processing.ProcessingEnvironment;
6+
import javax.lang.model.element.Element;
7+
import javax.lang.model.element.ElementKind;
8+
import javax.lang.model.element.TypeElement;
9+
import javax.tools.JavaFileObject;
10+
import java.io.IOException;
11+
import java.io.Writer;
12+
13+
public class ClassProcessor extends IProcessor<TypeElement> {
14+
public ClassProcessor(Element element, ProcessingEnvironment env) {
15+
super(element, env);
16+
}
17+
18+
@Override
19+
public TypeElement check(Element e) {
20+
if (e.getKind() == ElementKind.CLASS)
21+
return (TypeElement) e;
22+
return null;
23+
}
24+
25+
@Override
26+
public void processor() {
27+
28+
}
29+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package org.polaris_bear.ext;
2+
3+
import javax.annotation.processing.ProcessingEnvironment;
4+
import javax.lang.model.element.Element;
5+
import javax.lang.model.element.ElementKind;
6+
import javax.lang.model.element.VariableElement;
7+
8+
public class FieldProcessor extends IProcessor<VariableElement> {
9+
public FieldProcessor(Element element, ProcessingEnvironment env) {
10+
super(element, env);
11+
}
12+
13+
@Override
14+
public VariableElement check(Element e) {
15+
if (e.getKind() == ElementKind.FIELD)
16+
return (VariableElement) e;
17+
return null;
18+
}
19+
20+
@Override
21+
public void processor() {
22+
23+
}
24+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package org.polaris_bear.ext;
2+
3+
import com.google.common.collect.Maps;
4+
import lombok.Getter;
5+
import lombok.experimental.Delegate;
6+
7+
import javax.annotation.processing.*;
8+
import javax.lang.model.element.*;
9+
import java.util.ArrayList;
10+
import java.util.List;
11+
12+
@Getter
13+
public abstract class IProcessor<T extends Element> {
14+
15+
16+
final T check;
17+
public final List<IProcessor<?>> PROCESSORS = new ArrayList<>();
18+
19+
@Delegate
20+
final ProcessingEnvironment env;
21+
public IProcessor(Element element, ProcessingEnvironment env) {
22+
check = check(element);
23+
this.env = env;
24+
}
25+
26+
public void add(Maps.EntryTransformer<Element, ProcessingEnvironment, IProcessor<?>> processor, Element e) {
27+
PROCESSORS.add(processor.transformEntry(e, env));
28+
}
29+
30+
public void run() {
31+
if (check != null) {
32+
processor();
33+
}
34+
for (IProcessor<?> processor : PROCESSORS) {
35+
processor.run();
36+
}
37+
}
38+
39+
public abstract T check(Element e);
40+
public abstract void processor();
41+
42+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package org.polaris_bear.ext;
2+
3+
import javax.annotation.processing.Filer;
4+
import javax.annotation.processing.ProcessingEnvironment;
5+
import javax.lang.model.element.Element;
6+
import javax.lang.model.element.ElementKind;
7+
import javax.lang.model.element.PackageElement;
8+
import javax.tools.JavaFileObject;
9+
import java.io.IOException;
10+
import java.io.Writer;
11+
12+
public class PackageProcessor extends IProcessor<PackageElement> {
13+
14+
15+
public PackageProcessor(Element element, ProcessingEnvironment env) {
16+
super(element, env);
17+
}
18+
19+
@Override
20+
public PackageElement check(Element e) {
21+
if (e.getKind() == ElementKind.PACKAGE)
22+
return (PackageElement) e;
23+
return null;
24+
}
25+
26+
@Override
27+
public void processor() {
28+
writePackageInfo(getCheck());
29+
}
30+
31+
public void writePackageInfo(PackageElement packageElement) {
32+
try {
33+
JavaFileObject fileObject = getFiler().createSourceFile(packageElement.getQualifiedName().toString() + ".package-info");
34+
35+
try(Writer writer = fileObject.openWriter()) {
36+
writer.write("@ParametersAreNonnullByDefault\n");
37+
writer.write("@FieldsAreNonnullByDefault\n");
38+
writer.write("@MethodsReturnNonnullByDefault\n");
39+
writer.write("package " + packageElement.getQualifiedName().toString() + ";\n");
40+
writer.write("import net.minecraft.FieldsAreNonnullByDefault;\n");
41+
writer.write("import net.minecraft.MethodsReturnNonnullByDefault;\n");
42+
writer.write("import javax.annotation.ParametersAreNonnullByDefault;\n");
43+
}
44+
} catch (IOException ignored) {}
45+
}
46+
}

0 commit comments

Comments
 (0)