Skip to content

Commit

Permalink
fix: #6 头颅无owner的情况
Browse files Browse the repository at this point in the history
  • Loading branch information
0XPYEX0 committed Aug 31, 2024
1 parent f12cd2f commit 0d26efb
Show file tree
Hide file tree
Showing 5 changed files with 23 additions and 9 deletions.
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ plugins {
}

group = 'me.xpyex'
version = '1.0.10'
version = '1.0.11'
def pluginPackage = 'me.xpyex.plugin.CnUsername'.toLowerCase()
def modulePackage = 'me.xpyex.module.CnUsername'.toLowerCase()

Expand Down
2 changes: 1 addition & 1 deletion src/main/java/me/xpyex/module/cnusername/CnUsername.java
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ public byte[] transform(ClassLoader loader, String className, Class<?> classBein
Logging.info("开始修改类 " + className);
try {
ClassReader reader = new ClassReader(classFileBuffer);
ClassWriter writer = new ClassWriter(reader, 0);
ClassWriter writer = new ClassWriter(reader, ClassWriter.COMPUTE_FRAMES);
ClassVisitor visitor;
switch (className) {
case ClassVisitorAllowedCharacters.CLASS_PATH:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,18 +21,32 @@ public MethodVisitor visitMethod(int access, String name, String descriptor, Str
// 寻找 static boolean isValidPlayerName(String name) 方法并覆写
Logging.info("正在修改 " + getClassName() + " 类中的 " + name + "(String) 方法");
visitor.visitCode();

// if (string.isEmpty()) { return true; }
// Label0
Label label0 = new Label();
visitor.visitLabel(label0);
visitor.visitVarInsn(Opcodes.ALOAD, 0);
visitor.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "java/lang/String", "isEmpty", "()Z", false);
Label label1 = new Label();
visitor.visitJumpInsn(Opcodes.IFEQ, label1);
visitor.visitInsn(Opcodes.ICONST_1);
visitor.visitInsn(Opcodes.IRETURN);

// Label1
visitor.visitLabel(label1);
visitor.visitLdcInsn(getPattern());
visitor.visitMethodInsn(Opcodes.INVOKESTATIC, "java/util/regex/Pattern", "compile", "(Ljava/lang/String;)Ljava/util/regex/Pattern;", false);
visitor.visitVarInsn(Opcodes.ALOAD, 0);
visitor.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "java/util/regex/Pattern", "matcher", "(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;", false);
visitor.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "java/util/regex/Matcher", "matches", "()Z", false);
visitor.visitInsn(Opcodes.IRETURN);
Label label1 = new Label();
visitor.visitLabel(label1);
visitor.visitLocalVariable("name", "Ljava/lang/String;", null, label0, label1, 0);
visitor.visitMaxs(2, 1);

// Label2
Label label2 = new Label();
visitor.visitLabel(label2);
visitor.visitLocalVariable("name", "Ljava/lang/String;", null, label1, label2, 0);
visitor.visitMaxs(0, 0);
visitor.visitEnd();
return null;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ public void onLoad() {
ClassReader reader = new ClassReader(Bukkit.class.getClassLoader().getResourceAsStream(ClassVisitorStringUtil.CLASS_PATH + ".class"));
String className = reader.getClassName().replace("/", ".");
Logging.info("开始修改类 " + className);
ClassWriter classWriter = new ClassWriter(reader, 0);
ClassWriter classWriter = new ClassWriter(reader, ClassWriter.COMPUTE_FRAMES);
ClassVisitor classVisitor = new ClassVisitorStringUtil(className, classWriter, readPluginPattern());
reader.accept(classVisitor, 0);
loadClass(className, classWriter.toByteArray());
Expand Down Expand Up @@ -79,7 +79,7 @@ public void onLoad() {
}
String className = classReader.getClassName().replace("/", ".");
Logging.info("开始修改类 " + className);
ClassWriter classWriter = new ClassWriter(classReader, 0);
ClassWriter classWriter = new ClassWriter(classReader, ClassWriter.COMPUTE_FRAMES);
ClassVisitor classVisitor = new ClassVisitorLoginListener(className, classWriter, readPluginPattern());
classReader.accept(classVisitor, 0);
loadClass(className, classWriter.toByteArray());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ public void onEnable() {
ClassReader classReader = new ClassReader(ProxyServer.class.getClassLoader().getResourceAsStream(ClassVisitorAllowedCharacters.CLASS_PATH + ".class"));
String className = classReader.getClassName().replace("/", ".");
Logging.info("开始修改类 " + className);
ClassWriter classWriter = new ClassWriter(classReader, 0);
ClassWriter classWriter = new ClassWriter(classReader, ClassWriter.COMPUTE_FRAMES);
ClassVisitor classVisitor = new ClassVisitorAllowedCharacters(className, classWriter, readPluginPattern());
classReader.accept(classVisitor, 0);
loadClass(className, classWriter.toByteArray());
Expand Down

0 comments on commit 0d26efb

Please sign in to comment.