Skip to content
This repository was archived by the owner on Apr 21, 2024. It is now read-only.

Commit eae526a

Browse files
committed
feat: 废弃 Mixin, 改用 ASM
1 parent be4d580 commit eae526a

File tree

5 files changed

+63
-27
lines changed

5 files changed

+63
-27
lines changed

build.gradle

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -146,11 +146,10 @@ dependencies {
146146
//shadow "org.apache.commons:commons-text:1.11.0"
147147
shadow "org.apache.commons:commons-lang3:3.14.0"
148148

149-
// shadow "org.spongepowered:mixin:0.8.5"
150-
shadow(annotationProcessor("net.fabricmc:sponge-mixin:0.13.0+mixin.0.8.5"))
151149
shadow "com.google.guava:guava:33.0.0-jre"
152-
shadow "com.google.code.gson:gson:2.10.1"
153-
shadow(annotationProcessor("io.github.llamalad7:mixinextras-common:0.3.5"))
150+
shadow "org.ow2.asm:asm-commons:9.6"
151+
shadow "org.ow2.asm:asm-tree:9.6"
152+
shadow "org.ow2.asm:asm-util:9.6"
154153

155154
// Tests
156155
annotationProcessor(testImplementation("org.projectlombok:lombok:1.18.30"))

src/main/java/xyz/mrcraftteammc/grasslauncher/extension/Extension.java

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,6 @@
77
import xyz.mrcraftteammc.grasslauncher.common.GrassLauncher;
88
import xyz.mrcraftteammc.grasslauncher.extension.exception.ExtensionException;
99

10-
import java.util.ArrayList;
11-
import java.util.List;
12-
1310
@Getter
1411
@AllArgsConstructor
1512
public abstract class Extension {
@@ -23,10 +20,6 @@ public void onEnabled() throws ExtensionException {
2320
public void onDisabled() throws ExtensionException {
2421
}
2522

26-
public String[] getMixinConfigs() {
27-
return null;
28-
}
29-
3023
public Logger getLogger() {
3124
return LoggerFactory.getLogger(String.format("GrassLauncher Extension | %s", this.id));
3225
}

src/main/java/xyz/mrcraftteammc/grasslauncher/extension/ExtensionLoader.java

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import com.fasterxml.jackson.dataformat.yaml.YAMLMapper;
44
import org.slf4j.Logger;
55
import org.slf4j.LoggerFactory;
6-
import org.spongepowered.asm.mixin.Mixins;
76
import xyz.mrcraftteammc.grasslauncher.common.CommonConstants;
87
import xyz.mrcraftteammc.grasslauncher.common.DefaultExtension;
98
import xyz.mrcraftteammc.grasslauncher.extension.annotations.ExtensionInstance;
@@ -90,16 +89,6 @@ public void loadExtensions() {
9089
logger.warn("No Extensions!");
9190
}
9291

93-
logger.info("Pre-Load Extensions Mixin...");
94-
95-
this.extensionList.forEach(extension -> {
96-
if (extension.getMixinConfigs() != null) {
97-
Mixins.addConfigurations();
98-
return;
99-
}
100-
logger.warn(String.format("No Mixin found in Extension `%s`.", extension.getId()));
101-
});
102-
10392
logger.info("Loading Extensions...");
10493

10594
this.extensionList.forEach(Extension::onLoad);

src/main/java/xyz/mrcraftteammc/grasslauncher/main/Main.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,10 @@
11
package xyz.mrcraftteammc.grasslauncher.main;
22

3-
import com.llamalad7.mixinextras.MixinExtrasBootstrap;
4-
import org.spongepowered.asm.launch.MixinBootstrap;
53
import xyz.mrcraftteammc.grasslauncher.common.GrassLauncher;
64
import xyz.mrcraftteammc.grasslauncher.extension.ExtensionLoader;
75

86
public class Main {
97
public static void main(String[] args) {
10-
MixinBootstrap.init();
11-
MixinExtrasBootstrap.init();
12-
138
ExtensionLoader loader;
149
try {
1510
loader = new ExtensionLoader();
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
package xyz.mrcraftteammc.asm
2+
3+
import org.junit.jupiter.api.Test
4+
import org.objectweb.asm.ClassReader
5+
import org.objectweb.asm.ClassVisitor
6+
import org.objectweb.asm.ClassWriter
7+
import org.objectweb.asm.FieldVisitor
8+
import org.objectweb.asm.MethodVisitor
9+
import xyz.mrcraftteammc.grasslauncher.common.annotation.TestOnly
10+
11+
import static org.objectweb.asm.Opcodes.ASM9
12+
13+
class ASMTest {
14+
@Test
15+
void classVisit() {
16+
MyClassVisitor visitor = new MyClassVisitor()
17+
ClassReader reader = new ClassReader(ASMTest.TestClass.class.getName())
18+
reader.accept(visitor, 0)
19+
}
20+
21+
@TestOnly
22+
class TestClass {
23+
int x = 114
24+
int y = 514
25+
26+
void add() {
27+
println x+y
28+
}
29+
}
30+
31+
class MyClassVisitor extends ClassVisitor {
32+
MyClassVisitor() {
33+
super(ASM9)
34+
}
35+
36+
@Override
37+
void visit(int version, int access, String name, String signature, String superName, String[] interfaces) {
38+
System.out.println(name + " extends " + superName + " {")
39+
super.visit(version, access, name, signature, superName, interfaces)
40+
}
41+
42+
@Override
43+
FieldVisitor visitField(int access, String name, String desc, String signature, Object value) {
44+
System.out.println(desc + " " + name)
45+
return super.visitField(access, name, desc, signature, value)
46+
}
47+
48+
@Override
49+
MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) {
50+
System.out.println(name + " " + desc)
51+
return super.visitMethod(access, name, desc, signature, exceptions)
52+
}
53+
54+
@Override
55+
void visitEnd() {
56+
System.out.println("}")
57+
super.visitEnd()
58+
}
59+
}
60+
}

0 commit comments

Comments
 (0)