mirror of
https://github.com/neoStudiosLCE/neoLegacy.git
synced 2026-05-21 22:55:04 +00:00
chore: add LCRE banner, SWF/ARC tools, ignore build artifacts
Replace README banner with LCRE-banner.png. Add SWF inspection and ARC archive tools. Ignore compiled .class, .swf intermediates, and staging directory in tools/.
This commit is contained in:
BIN
.github/LCRE-banner.png
vendored
Normal file
BIN
.github/LCRE-banner.png
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 496 KiB |
5
.gitignore
vendored
5
.gitignore
vendored
@@ -415,3 +415,8 @@ build/
|
||||
tmp*/
|
||||
_server_asset_probe/
|
||||
server-data/
|
||||
|
||||
# Tools build artifacts and intermediates
|
||||
tools/*.class
|
||||
tools/*.swf
|
||||
tools/staging/
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||

|
||||

|
||||
# MinecraftConsoles (Legacy Console Revelations Edition)
|
||||
|
||||
If you have any questions regarding this fork, this is my Fluxer server (similar to a Discord server):
|
||||
|
||||
12
tools/CheckSetImage.java
Normal file
12
tools/CheckSetImage.java
Normal file
@@ -0,0 +1,12 @@
|
||||
import com.jpexs.decompiler.flash.tags.*;
|
||||
import java.lang.reflect.*;
|
||||
|
||||
public class CheckSetImage {
|
||||
public static void main(String[] args) {
|
||||
for (Method m : DefineBitsLossless2Tag.class.getMethods()) {
|
||||
if (m.getName().contains("mage") || m.getName().contains("itmap") || m.getName().contains("set")) {
|
||||
System.out.println(m.getReturnType().getSimpleName() + " " + m.getName() + "(" + java.util.Arrays.toString(m.getParameterTypes()) + ")");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
46
tools/DumpSwfDetail.java
Normal file
46
tools/DumpSwfDetail.java
Normal file
@@ -0,0 +1,46 @@
|
||||
import com.jpexs.decompiler.flash.SWF;
|
||||
import com.jpexs.decompiler.flash.tags.*;
|
||||
import com.jpexs.decompiler.flash.tags.base.*;
|
||||
import com.jpexs.decompiler.flash.types.*;
|
||||
import java.io.*;
|
||||
import java.lang.reflect.*;
|
||||
import java.util.*;
|
||||
|
||||
public class DumpSwfDetail {
|
||||
public static void main(String[] args) throws Exception {
|
||||
String path = args[0];
|
||||
SWF swf = new SWF(new FileInputStream(path), false);
|
||||
|
||||
System.out.println("SWF: " + path);
|
||||
System.out.println("Frame size: " + swf.displayRect);
|
||||
System.out.println("Frame rate: " + swf.frameRate);
|
||||
System.out.println();
|
||||
|
||||
for (Tag tag : swf.getTags()) {
|
||||
System.out.println(tag.getClass().getSimpleName() + " - " + tag);
|
||||
|
||||
if (tag instanceof ImportAssets2Tag) {
|
||||
ImportAssets2Tag imp = (ImportAssets2Tag) tag;
|
||||
System.out.println(" URL: " + imp.url);
|
||||
// Dump all fields via reflection
|
||||
for (Field f : imp.getClass().getFields()) {
|
||||
try {
|
||||
System.out.println(" field " + f.getName() + " = " + f.get(imp));
|
||||
} catch (Exception e) {}
|
||||
}
|
||||
}
|
||||
|
||||
if (tag instanceof DefineBitsLossless2Tag) {
|
||||
DefineBitsLossless2Tag bmp = (DefineBitsLossless2Tag) tag;
|
||||
System.out.println(" Bitmap: id=" + bmp.characterID + " " + bmp.bitmapWidth + "x" + bmp.bitmapHeight);
|
||||
}
|
||||
|
||||
if (tag instanceof SymbolClassTag) {
|
||||
SymbolClassTag sym = (SymbolClassTag) tag;
|
||||
for (int i = 0; i < sym.tags.size(); i++) {
|
||||
System.out.println(" Symbol: id=" + sym.tags.get(i) + " name=" + sym.names.get(i));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
63
tools/FindLogoBitmap.java
Normal file
63
tools/FindLogoBitmap.java
Normal file
@@ -0,0 +1,63 @@
|
||||
import com.jpexs.decompiler.flash.SWF;
|
||||
import com.jpexs.decompiler.flash.tags.*;
|
||||
import com.jpexs.decompiler.flash.tags.base.*;
|
||||
import java.io.*;
|
||||
import java.util.*;
|
||||
|
||||
public class FindLogoBitmap {
|
||||
public static void main(String[] args) throws Exception {
|
||||
SWF swf = new SWF(new FileInputStream(args[0]), false);
|
||||
|
||||
// Find MenuTitle symbol
|
||||
Map<Integer, String> symbolMap = new HashMap<>();
|
||||
for (Tag tag : swf.getTags()) {
|
||||
if (tag instanceof SymbolClassTag) {
|
||||
SymbolClassTag sym = (SymbolClassTag) tag;
|
||||
for (int i = 0; i < sym.tags.size(); i++) {
|
||||
symbolMap.put(sym.tags.get(i), sym.names.get(i));
|
||||
if (sym.names.get(i).contains("Title") || sym.names.get(i).contains("Logo")) {
|
||||
System.out.println("Symbol: id=" + sym.tags.get(i) + " name=" + sym.names.get(i));
|
||||
}
|
||||
}
|
||||
}
|
||||
if (tag instanceof ExportAssetsTag) {
|
||||
ExportAssetsTag exp = (ExportAssetsTag) tag;
|
||||
for (int i = 0; i < exp.tags.size(); i++) {
|
||||
if (exp.names.get(i).contains("Title") || exp.names.get(i).contains("Logo")) {
|
||||
System.out.println("Export: id=" + exp.tags.get(i) + " name=" + exp.names.get(i));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Find all bitmaps
|
||||
System.out.println("\n=== Bitmaps ===");
|
||||
for (Tag tag : swf.getTags()) {
|
||||
if (tag instanceof DefineBitsLossless2Tag) {
|
||||
DefineBitsLossless2Tag bmp = (DefineBitsLossless2Tag) tag;
|
||||
String sym = symbolMap.getOrDefault(bmp.characterID, "");
|
||||
System.out.println("Lossless2: id=" + bmp.characterID + " " + bmp.bitmapWidth + "x" + bmp.bitmapHeight + " sym=" + sym);
|
||||
}
|
||||
if (tag instanceof DefineBitsJPEG2Tag) {
|
||||
DefineBitsJPEG2Tag jpg = (DefineBitsJPEG2Tag) tag;
|
||||
String sym = symbolMap.getOrDefault(jpg.characterID, "");
|
||||
System.out.println("JPEG2: id=" + jpg.characterID + " sym=" + sym);
|
||||
}
|
||||
if (tag instanceof DefineBitsJPEG3Tag) {
|
||||
DefineBitsJPEG3Tag jpg = (DefineBitsJPEG3Tag) tag;
|
||||
String sym = symbolMap.getOrDefault(jpg.characterID, "");
|
||||
System.out.println("JPEG3: id=" + jpg.characterID + " sym=" + sym);
|
||||
}
|
||||
if (tag instanceof DefineBitsTag) {
|
||||
DefineBitsTag bmp = (DefineBitsTag) tag;
|
||||
String sym = symbolMap.getOrDefault(bmp.characterID, "");
|
||||
System.out.println("Bits: id=" + bmp.characterID + " sym=" + sym);
|
||||
}
|
||||
if (tag instanceof DefineBitsLosslessTag) {
|
||||
DefineBitsLosslessTag bmp = (DefineBitsLosslessTag) tag;
|
||||
String sym = symbolMap.getOrDefault(bmp.characterID, "");
|
||||
System.out.println("Lossless: id=" + bmp.characterID + " " + bmp.bitmapWidth + "x" + bmp.bitmapHeight + " sym=" + sym);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
33
tools/FindMenuTitle.java
Normal file
33
tools/FindMenuTitle.java
Normal file
@@ -0,0 +1,33 @@
|
||||
import com.jpexs.decompiler.flash.SWF;
|
||||
import com.jpexs.decompiler.flash.tags.*;
|
||||
import com.jpexs.decompiler.flash.tags.base.*;
|
||||
import java.io.*;
|
||||
|
||||
public class FindMenuTitle {
|
||||
public static void main(String[] args) throws Exception {
|
||||
String path = args[0];
|
||||
System.out.println("Scanning: " + path);
|
||||
SWF swf = new SWF(new FileInputStream(path), false);
|
||||
|
||||
for (Tag tag : swf.getTags()) {
|
||||
if (tag instanceof SymbolClassTag) {
|
||||
SymbolClassTag sym = (SymbolClassTag) tag;
|
||||
for (int i = 0; i < sym.tags.size(); i++) {
|
||||
String name = sym.names.get(i);
|
||||
if (name.contains("Menu") || name.contains("Logo") || name.contains("Title")) {
|
||||
System.out.println(" Symbol: id=" + sym.tags.get(i) + " name=" + name);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (tag instanceof ExportAssetsTag) {
|
||||
ExportAssetsTag exp = (ExportAssetsTag) tag;
|
||||
for (int i = 0; i < exp.tags.size(); i++) {
|
||||
String name = exp.names.get(i);
|
||||
if (name.contains("Menu") || name.contains("Logo") || name.contains("Title")) {
|
||||
System.out.println(" Export: id=" + exp.tags.get(i) + " name=" + name);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
37
tools/FindMenuTitleAll.java
Normal file
37
tools/FindMenuTitleAll.java
Normal file
@@ -0,0 +1,37 @@
|
||||
import com.jpexs.decompiler.flash.SWF;
|
||||
import com.jpexs.decompiler.flash.tags.*;
|
||||
import com.jpexs.decompiler.flash.tags.base.*;
|
||||
import java.io.*;
|
||||
|
||||
public class FindMenuTitleAll {
|
||||
public static void main(String[] args) throws Exception {
|
||||
String[] files = {"skinHD.swf", "skinHDGraphics.swf", "skinHDWin.swf", "skinHDInGame.swf", "skinHDLabels.swf", "skinHDHud.swf", "skinHDGraphicsInGame.swf", "skinHDGraphicsLabels.swf", "skinHDGraphicsHud.swf", "skin.swf", "skinGraphics.swf", "skinWin.swf"};
|
||||
String base = "C:/Users/revela/Documents/Minecraft/itsRevela/Minecraft.Client/Common/Media/";
|
||||
|
||||
for (String file : files) {
|
||||
try {
|
||||
SWF swf = new SWF(new FileInputStream(base + file), false);
|
||||
for (Tag tag : swf.getTags()) {
|
||||
if (tag instanceof SymbolClassTag) {
|
||||
SymbolClassTag sym = (SymbolClassTag) tag;
|
||||
for (int i = 0; i < sym.tags.size(); i++) {
|
||||
if (sym.names.get(i).contains("Title") || sym.names.get(i).contains("MenuTitle")) {
|
||||
System.out.println(file + " -> Symbol: id=" + sym.tags.get(i) + " name=" + sym.names.get(i));
|
||||
}
|
||||
}
|
||||
}
|
||||
if (tag instanceof ExportAssetsTag) {
|
||||
ExportAssetsTag exp = (ExportAssetsTag) tag;
|
||||
for (int i = 0; i < exp.tags.size(); i++) {
|
||||
if (exp.names.get(i).contains("Title") || exp.names.get(i).contains("MenuTitle")) {
|
||||
System.out.println(file + " -> Export: id=" + exp.tags.get(i) + " name=" + exp.names.get(i));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
System.err.println("Error reading " + file + ": " + e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
19
tools/ListArc.java
Normal file
19
tools/ListArc.java
Normal file
@@ -0,0 +1,19 @@
|
||||
import java.io.*;
|
||||
import java.nio.file.*;
|
||||
|
||||
public class ListArc {
|
||||
public static void main(String[] args) throws Exception {
|
||||
DataInputStream dis = new DataInputStream(new FileInputStream(args[0]));
|
||||
int numFiles = dis.readInt();
|
||||
System.out.println("Files: " + numFiles);
|
||||
for (int i = 0; i < numFiles; i++) {
|
||||
String name = dis.readUTF();
|
||||
int offset = dis.readInt();
|
||||
int size = dis.readInt();
|
||||
if (name.contains("ogo") || name.contains("skin") || name.contains("Menu") || name.contains("platform")) {
|
||||
System.out.println(" >>> " + name + " offset=" + offset + " size=" + size);
|
||||
}
|
||||
}
|
||||
dis.close();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user