Skip to content

Commit ab8d472

Browse files
committed
优化了MNI的注册逻辑
1 parent 2992200 commit ab8d472

38 files changed

+523
-416
lines changed

.idea/encodings.xml

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.mclib

Lines changed: 1 addition & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -4,51 +4,7 @@
44
"id":"default",
55
"functions":[
66
{
7-
"id":"generateSequenceFor",
8-
"normalParams":[
9-
10-
],
11-
"returnType":"void",
12-
"isAbstract":false,
13-
"tags":[
14-
15-
]
16-
},
17-
{
18-
"id":"_for_7f20e3fa-440c-4610-93e5-68d9961970f9",
19-
"normalParams":[
20-
21-
],
22-
"returnType":"void",
23-
"isAbstract":false,
24-
"tags":[
25-
26-
]
27-
},
28-
{
29-
"id":"_for_loop_8ae8a0fe-449b-49ae-97cb-ec1a2751e85d",
30-
"normalParams":[
31-
32-
],
33-
"returnType":"void",
34-
"isAbstract":false,
35-
"tags":[
36-
37-
]
38-
},
39-
{
40-
"id":"expression_8ab728bf-b02a-4a8b-8443-391cd9b62182",
41-
"normalParams":[
42-
43-
],
44-
"returnType":"void",
45-
"isAbstract":false,
46-
"tags":[
47-
48-
]
49-
},
50-
{
51-
"id":"_forblock_671a526c-cac2-4fdd-8eb1-a8db3ab42369",
7+
"id":"hello",
528
"normalParams":[
539

5410
],

mcfpp/sys/.mclib

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,7 @@
55
"functions":[
66
{
77
"id":"print",
8-
"dataClass":"top.mcfpp.lang.System",
9-
"javaMethodName":"print",
8+
"javaMethod":"top.mcfpp.mni.System#print(top.mcfpp.lang.MCInt)",
109
"normalParams":[
1110
{
1211
"id":"i",
@@ -22,12 +21,11 @@
2221
},
2322
{
2423
"id":"print",
25-
"dataClass":"top.mcfpp.lang.System",
26-
"javaMethodName":"print",
24+
"javaMethod":"top.mcfpp.mni.System#print(top.mcfpp.lang.MCString)",
2725
"normalParams":[
2826
{
29-
"id":"a",
30-
"type":"any",
27+
"id":"s",
28+
"type":"string",
3129
"isStatic":false
3230
}
3331
],
@@ -38,13 +36,12 @@
3836
]
3937
},
4038
{
41-
"id":"insert",
42-
"dataClass":"top.mcfpp.lang.System",
43-
"javaMethodName":"insert",
39+
"id":"print",
40+
"javaMethod":"top.mcfpp.mni.System#print(top.mcfpp.lang.Var)",
4441
"normalParams":[
4542
{
46-
"id":"i",
47-
"type":"string",
43+
"id":"a",
44+
"type":"any",
4845
"isStatic":false
4946
}
5047
],

mcfpp/sys/sys.mcfpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1-
func print(int i) = top.mcfpp.lang.System.print;
2-
func print(any a) = top.mcfpp.lang.System.print;
3-
func insert(string i) = top.mcfpp.lang.System.insert;
1+
func print(int i) = top.mcfpp.mni.System.print;
2+
func print(string s) = top.mcfpp.mni.System.print;
3+
func print(any a) = top.mcfpp.mni.System.print;
4+
#func insert(string i) = top.mcfpp.mni.System.insert;

src/main/antlr/mcfppParser.g4

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -230,6 +230,10 @@ fieldDeclarationExpression
230230

231231
fieldModifier : CONST|DYNAMIC|IMPORT;
232232

233+
javaMethodParams
234+
: '(' type (',' type)* ')'
235+
;
236+
233237
functionParams
234238
: readOnlyParams? normalParams
235239
;
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package top.mcfpp.annotations;
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.METHOD})
9+
@Retention(RetentionPolicy.RUNTIME)
10+
public @interface MNIRegister {
11+
12+
String[] readOnlyParams() default {};
13+
String[] normalParams() default {};
14+
15+
String caller() default "void";
16+
String returnType() default "void";
17+
18+
}

src/main/java/top/mcfpp/lang/BaseMNIMethodContainer.java renamed to src/main/java/top/mcfpp/mni/BaseMNIMethodContainer.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
1-
package top.mcfpp.lang;
1+
package top.mcfpp.mni;
22

33
import kotlin.jvm.functions.Function4;
44
import org.jetbrains.annotations.NotNull;
5+
import top.mcfpp.lang.CanSelectMember;
6+
import top.mcfpp.lang.Var;
57
import top.mcfpp.model.function.MNIMethodContainer;
68
import top.mcfpp.util.ValueWrapper;
79

src/main/java/top/mcfpp/lang/MCAnyData.java renamed to src/main/java/top/mcfpp/mni/MCAnyData.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
1-
package top.mcfpp.lang;
1+
package top.mcfpp.mni;
22

33
import kotlin.jvm.functions.Function4;
44
import org.jetbrains.annotations.NotNull;
5+
import top.mcfpp.lang.CanSelectMember;
6+
import top.mcfpp.lang.JavaVar;
7+
import top.mcfpp.lang.Var;
58
import top.mcfpp.model.function.Function;
69
import top.mcfpp.model.function.MNIMethodContainer;
710
import top.mcfpp.util.ValueWrapper;

src/main/java/top/mcfpp/lang/MCIntData.java renamed to src/main/java/top/mcfpp/mni/MCIntData.java

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,12 @@
1-
package top.mcfpp.lang;
1+
package top.mcfpp.mni;
22

33
import kotlin.jvm.functions.Function4;
44
import org.jetbrains.annotations.NotNull;
5+
import top.mcfpp.annotations.MNIRegister;
6+
import top.mcfpp.lang.CanSelectMember;
7+
import top.mcfpp.lang.JavaVar;
8+
import top.mcfpp.lang.MCInt;
9+
import top.mcfpp.lang.Var;
510
import top.mcfpp.model.function.Function;
611
import top.mcfpp.model.function.MNIMethodContainer;
712
import top.mcfpp.util.ValueWrapper;
@@ -22,7 +27,18 @@ public class MCIntData extends MNIMethodContainer {
2227
methods.put("qwq", (vars, vars2, canSelectMember, varValueWrapper) -> {
2328
return null;
2429
});
30+
}
31+
32+
@MNIRegister(caller = "int")
33+
public void test(MCInt caller) {
34+
Function.Companion.addCommand("say " + caller);
35+
}
2536

37+
@MNIRegister(normalParams = {"int i"}, caller = "int", returnType = "JavaVar")
38+
public void qwq(MCInt i, MCInt caller, ValueWrapper<JavaVar> re){
39+
re.setValue(new JavaVar(caller, "qwq"));
40+
Function.Companion.addCommand("say i=" + i);
41+
Function.Companion.addCommand("say this=" + caller);
2642
}
2743

2844
@NotNull

src/main/java/top/mcfpp/lang/NBTDictionaryData.java renamed to src/main/java/top/mcfpp/mni/NBTDictionaryData.java

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,4 @@
1-
package top.mcfpp.lang;
2-
3-
import kotlin.jvm.functions.Function4;
4-
import org.jetbrains.annotations.NotNull;
5-
import top.mcfpp.model.function.MNIMethodContainer;
6-
import top.mcfpp.util.ValueWrapper;
7-
8-
import java.util.HashMap;
1+
package top.mcfpp.mni;
92

103
public class NBTDictionaryData extends BaseMNIMethodContainer {
114

0 commit comments

Comments
 (0)