mirror of
https://git.huckle.dev/Huckles-Minecraft-Archive/PCK-Studio.git
synced 2026-09-27 11:40:46 +00:00
Last big feature for this build
-Improved Color Editor -Fixed Add Display ID in the LOC Editor -Added a Rename Display ID in the LOC Editor
This commit is contained in:
@@ -14,10 +14,11 @@ namespace PckStudio.Classes
|
||||
byte[] data;
|
||||
List<byte> extradata = new List<byte>();
|
||||
public List<object[]> entries = new List<object[]>();
|
||||
public List<object[]> waterEntries = new List<object[]>();
|
||||
public void Open(byte[] filePath)
|
||||
{
|
||||
data = filePath;
|
||||
COL.Open(this, entries, data, extradata);
|
||||
COL.Open(this, entries, waterEntries, data, extradata);
|
||||
foreach (object[] obj in entries)
|
||||
{
|
||||
Console.WriteLine(obj[0].ToString() + " - #" + obj[1]);
|
||||
@@ -29,11 +30,17 @@ namespace PckStudio.Classes
|
||||
SaveData.AddRange(new byte[] { 0x00, 0x00, 0x00, 0x01 });
|
||||
Console.WriteLine(entries.Count);
|
||||
List<byte> ItemAmmount = new List<byte>();
|
||||
List<byte> WaterItemAmmount = new List<byte>();
|
||||
ItemAmmount.AddRange(BitConverter.GetBytes(entries.Count));
|
||||
WaterItemAmmount.AddRange(BitConverter.GetBytes(waterEntries.Count / 3));
|
||||
ItemAmmount.Reverse();
|
||||
WaterItemAmmount.Reverse();
|
||||
byte[] ItemNum = ItemAmmount.ToArray();
|
||||
byte[] WaterItemNum = WaterItemAmmount.ToArray();
|
||||
ItemNum.Reverse();
|
||||
WaterItemNum.Reverse();
|
||||
Console.WriteLine(BitConverter.ToString(ItemNum));
|
||||
Console.WriteLine(BitConverter.ToString(WaterItemNum));
|
||||
SaveData.AddRange(ItemNum);
|
||||
foreach (object[] obj in entries)
|
||||
{
|
||||
@@ -45,12 +52,25 @@ namespace PckStudio.Classes
|
||||
SaveData.Add(data[SaveData.Count]);
|
||||
SaveData.AddRange(StringToByteArrayFastest(obj[1].ToString()));
|
||||
}
|
||||
SaveData.AddRange(extradata);
|
||||
SaveData.AddRange(WaterItemNum);
|
||||
foreach (object[] obj in waterEntries)
|
||||
{
|
||||
//Console.WriteLine(obj[0] + " - #" + obj[1]);
|
||||
string name = obj[0].ToString();
|
||||
if (!name.EndsWith("(Underwater)") && !name.EndsWith("(Fog)"))
|
||||
{
|
||||
byte[] NameLength = (BitConverter.GetBytes(obj[0].ToString().Length));
|
||||
SaveData.Add(NameLength[1]);
|
||||
SaveData.Add(NameLength[0]);
|
||||
SaveData.AddRange(Encoding.ASCII.GetBytes(obj[0].ToString()));
|
||||
}
|
||||
SaveData.AddRange(StringToByteArrayFastest(obj[1].ToString()));
|
||||
}
|
||||
return SaveData.ToArray();
|
||||
//File.WriteAllBytes(Path.GetDirectoryName(filePath) + "\\coloursSaved.col", SaveData.ToArray());
|
||||
}
|
||||
}
|
||||
public static void Open(COLFile This, List<object[]> entries, byte[] data, List<byte> extradata)
|
||||
public static void Open(COLFile This, List<object[]> entries, List<object[]> waterEntries, byte[] data, List<byte> extradata)
|
||||
{
|
||||
List<byte> MaxEntArrTemp = new List<byte>();
|
||||
MaxEntArrTemp.AddRange(data.Skip(4).Take(4));
|
||||
@@ -79,6 +99,40 @@ namespace PckStudio.Classes
|
||||
Console.WriteLine(data.Length);
|
||||
Console.WriteLine(data.Length - LeftAt);
|
||||
extradata.AddRange(data.Skip(LeftAt).Take((data.Length) - LeftAt).ToArray());
|
||||
try
|
||||
{
|
||||
List<byte> MaxEntArrTempB = new List<byte>();
|
||||
MaxEntArrTempB.AddRange(extradata.Skip(-1).Take(4));
|
||||
MaxEntArrTempB.Reverse();
|
||||
int MaxEntriesB = BitConverter.ToInt32(MaxEntArrTempB.ToArray(), 0);
|
||||
int LeftAtB = 4;
|
||||
Console.WriteLine("MaxEntries (Extra Data) - " + MaxEntriesB);
|
||||
for (int j = 0; j < MaxEntriesB; j++)
|
||||
{
|
||||
List<byte> ItemNameLength = new List<byte>();
|
||||
ItemNameLength.AddRange(extradata.Skip(LeftAtB).Take(2));
|
||||
ItemNameLength.Reverse();
|
||||
int EntryLength = BitConverter.ToInt16(ItemNameLength.ToArray(), 0);
|
||||
//Console.WriteLine(EntryLength);
|
||||
|
||||
byte[] ItemName = (extradata.Skip(LeftAtB + 2).Take(EntryLength).ToArray());
|
||||
byte[] ItemHex = (extradata.Skip(LeftAtB + 2 + EntryLength).Take(4).ToArray());
|
||||
byte[] ItemHexB = (extradata.Skip(LeftAtB + 6 + EntryLength).Take(4).ToArray());
|
||||
byte[] ItemHexC = (extradata.Skip(LeftAtB + 10 + EntryLength).Take(4).ToArray());
|
||||
|
||||
object[] outentry = { System.Text.Encoding.Default.GetString(ItemName), BitConverter.ToString(ItemHex).Replace("-", "") };
|
||||
object[] outentryB = { System.Text.Encoding.Default.GetString(ItemName) + " (Underwater)", BitConverter.ToString(ItemHexB).Replace("-", "") };
|
||||
object[] outentryC = { System.Text.Encoding.Default.GetString(ItemName) + " (Fog)", BitConverter.ToString(ItemHexC).Replace("-", "") };
|
||||
waterEntries.Add(outentry);
|
||||
waterEntries.Add(outentryB);
|
||||
waterEntries.Add(outentryC);
|
||||
LeftAtB = LeftAtB + 14 + EntryLength;
|
||||
}
|
||||
}
|
||||
catch(Exception e)
|
||||
{
|
||||
Console.WriteLine(e.Message);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user