メモ帳++でMinecraftクラスフォルダを開いています。しかし、開くと、Nul、DC1、SO、SOH、FF、STXなどのボックスがたくさん表示されます。ガイドでは、クラスファイルが正常に開くことがわかりますが、何が間違っているのでしょうか。
3 に答える
コンパイルされたJavaクラスを編集しようとしています。
テキストファイルではないため、テキストエディタで編集することはできません。あなたは.java
ファイルが欲しいのですが、Minecraftがオープンソースだとは思いません。
ガイドをもう一度確認してください。ガイドがあなたを導くことを意図していた道から外れた可能性があります。
ファイルがまだコンパイルされている場合、ファイルのソースを表示することはできません。クラスファイルをJavaファイルに逆コンパイルする必要があります。その後、メモ帳/日食でファイルを読み取ることができます。人々がminecraftソースを逆コンパイルするために作成したプログラムがあります。あなたはそれを編集することができます、それはmcpと呼ばれます
http://mcp.ocean-labs.de/index.php/MCP_Releases
これをダウンロードして、意図したとおりに続行すると、コードを自由に編集できます
クラスファイルをそのまま開きたい場合は、任意のバイナリエディタを使用してください。ghexは良いものです。できるよ:
ghex MyClass.class
javapは、Javaクラスファイルを分解するための組み込みツールです。次に例を示します。
javap -v MyClass.class
これにより、クラス、そのバイトコード、さらにはクラスが実行していることについての説明についての多くの情報が提供されます。
Javaクラスファイルの逆コンパイルのためのもう1つの優れたツールは、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]
);
}
}
CFR出力:
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]);
}
}