4

我正在用 notepad++ 打开一个 minecraft 类文件夹。但是每当我打开它时,它只有一堆框,上面写着 Nul、DC1、SO、SOH、FF、STX 等……在指南上,我看到类文件打开得很好,我做错了什么?

4

3 回答 3

2

如果仍然编译,则无法查看文件的源代码,您必须将类文件反编译为 java 文件,然后您可以使用记事本/eclipse 读取文件,人们制作了一个程序来反编译 minecraft 源代码所以你可以编辑它,它叫做 mcp

http://mcp.ocean-labs.de/index.php/MCP_Releases

只需下载并按照您的意图继续,然后您可以自由编辑代码

于 2012-08-09T00:02:13.203 回答
2

您正在尝试编辑已编译的Java 类。

它不是文本文件,因此您无法使用文本编辑器对其进行编辑。你想要一个.java文件,我不相信 Minecraft 是开源的。

再次检查您的指南,您可能已经偏离了他们打算引导您的路径。

于 2012-02-05T07:37:05.020 回答
0

如果要按原样打开类文件,请使用任何二进制编辑器。ghex 是一个不错的选择。你可以做:

ghex MyClass.class

javap 是一个内置的反汇编 java 类文件的工具。这是一个例子:

javap -v MyClass.class

这将为您提供有关您的类、它的字节码甚至是它正在做什么的解释的大量信息

另一个用于反编译 java 类文件的好工具是 CFR:http ://www.benf.org/other/cfr/ 示例:

java -jar cfr.jar MyClass.class

资源:

import java.math.BigInteger;
import java.util.stream.Stream;

public class MyClass {

    public static void main(String[] args) {
        System.out.println(
                Stream.iterate(
                        new BigInteger[]{BigInteger.ZERO, BigInteger.ONE},
                        n -> new BigInteger[]{n[1], n[0].add(n[1])}
                )
                .limit(1001)
                .skip(1000)
                .findFirst()
                .get()[1]
        );
    }
}

病死率输出:

import java.io.PrintStream;
import java.math.BigInteger;
import java.util.Optional;
import java.util.stream.Stream;

public class MyClass {
    public static void main(String[] arrstring) {
        System.out.println(Stream.iterate(new BigInteger[]{BigInteger.ZERO, BigInteger.ONE}, arrbigInteger -> new BigInteger[]{arrbigInteger[1], arrbigInteger[0].add(arrbigInteger[1])}).limit(1001L).skip(1000L).findFirst().get()[1]);
    }
}
于 2018-07-29T00:07:54.457 回答