mirror of
https://git.huckle.dev/Huckles-Minecraft-Archive/PCK-Studio.git
synced 2026-06-16 18:02:05 +00:00
Initial commit
This commit is contained in:
129
CSM Visualiser/Form1.cs
Normal file
129
CSM Visualiser/Form1.cs
Normal file
@@ -0,0 +1,129 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using MoreLinq.Extensions;
|
||||
using MoreLinq;
|
||||
using System.Linq;
|
||||
using System.IO;
|
||||
|
||||
namespace CSM_Visualiser
|
||||
{
|
||||
public partial class Form1 : Form
|
||||
{
|
||||
public Form1()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
string intro = "{\n \"format_version\": \"1.12.0\",\n \"minecraft:geometry\": [\n {\n \"description\": {\n \"identifier\": \"geometry.steve\",\n \"texture_width\": 64,\n \"texture_height\": 64,\n \"visible_bounds_width\": 3,\n \"visible_bounds_height\": 3,\n \"visible_bounds_offset\": [0, 0, 0]\n },\n \"bones\": [";
|
||||
string outro = "\n ]\n }\n ]\n}";
|
||||
private void Form1_Load(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private void button1_Click(object sender, EventArgs e)
|
||||
{
|
||||
OpenFileDialog openFileDialog = new OpenFileDialog();
|
||||
openFileDialog.Filter = "Custom Skin Model File | *.CSM";
|
||||
openFileDialog.Title = "Select Custom Skin Model File";
|
||||
if(openFileDialog.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
System.IO.File.WriteAllText(openFileDialog.FileName + ".json", intro);
|
||||
string data = System.IO.File.ReadAllText(openFileDialog.FileName);
|
||||
int splitnum = 11;
|
||||
var dat0 = stringfunctions.SplitBy(data, '\n', splitnum);
|
||||
|
||||
foreach (string str in dat0)
|
||||
{
|
||||
// MessageBox.Show(str.ToString());
|
||||
string[] data1 = str.ToString().Split('\n');
|
||||
string name = data1[0];
|
||||
string parent = data1[1];
|
||||
string name2 = data1[2];
|
||||
int PosX = int.Parse(data1[3])*3;
|
||||
int PosY = int.Parse(data1[4]) + 32;
|
||||
int PosZ = int.Parse(data1[5])*3;
|
||||
int SizeX = int.Parse(data1[6]);
|
||||
int SizeY = int.Parse(data1[7]);
|
||||
int SizeZ = int.Parse(data1[8]);
|
||||
int UVx = int.Parse(data1[9]);
|
||||
int UVy = int.Parse(data1[10]);
|
||||
int UVx2 = UVx + 32;
|
||||
string entry = "\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"" + name + "\"\x2C\n\t\t\t\t\t\"pivot\": [0, 24, 0],\n\t\t\t\t\t\"cubes\": [\n\t\t\t\t\t\t{\"origin\": [" + PosX + ", " + PosY + ", " + PosZ + "], \"size\": [" + SizeX + ", " + SizeY + ", " + SizeZ + "], \"uv\": [" + UVx + ", " + UVy + "]},\n\t\t\t\t\t\t{\"origin\": [" + PosX + ", " + PosY + ", " + PosZ + "], \"size\": [" + SizeX + ", " + SizeY + ", " + SizeZ + "], \"inflate\": 0.5, \"uv\": [" + UVx2 + ", " + UVy + "]}\n\t\t\t\t\t]\n\t\t\t\t},";
|
||||
System.IO.File.AppendAllText(openFileDialog.FileName + ".json", entry.Replace("\n\"\x2C", "\"\x2C"));
|
||||
}
|
||||
System.IO.FileStream fs = new System.IO.FileStream(openFileDialog.FileName + ".json", System.IO.FileMode.Open, System.IO.FileAccess.ReadWrite);
|
||||
fs.SetLength(fs.Length - 1);
|
||||
fs.Close();
|
||||
System.IO.File.AppendAllText(openFileDialog.FileName + ".json", outro);
|
||||
MessageBox.Show("\x4D\x65\x73\x73\x61\x67\x65\x42\x6F\x78\x2E\x53\x68\x6F\x77\x28\x29\x3B");
|
||||
}
|
||||
}
|
||||
|
||||
private void button2_Click(object sender, EventArgs e)
|
||||
{
|
||||
OpenFileDialog openFileDialog = new OpenFileDialog();
|
||||
openFileDialog.Filter = "Custom Skin Model File | *.txt";
|
||||
openFileDialog.Title = "Select Custom Skin Model File";
|
||||
openFileDialog.Multiselect = true;
|
||||
if (openFileDialog.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
foreach (string url in openFileDialog.FileNames)
|
||||
{
|
||||
StreamWriter sw = new StreamWriter(url + ".CSM");
|
||||
sw.Write("");
|
||||
sw.Close();
|
||||
string data = System.IO.File.ReadAllText(url);
|
||||
int splitnum = 11;
|
||||
string[] data0 = data.Split('\n');
|
||||
|
||||
foreach (string str in data0)
|
||||
{
|
||||
if (str.StartsWith("BOX"))
|
||||
{
|
||||
string[] data1 = str.ToString().Split(' ');
|
||||
string name = data1[0];
|
||||
string PosX = (data1[1]);
|
||||
string PosY = (data1[2]);
|
||||
string PosZ = (data1[3]);
|
||||
string SizeX = (data1[4]);
|
||||
string SizeY = (data1[5]);
|
||||
string SizeZ = (data1[6]);
|
||||
string UVx = (data1[7]);
|
||||
string UVy = (data1[8]);
|
||||
string entry = name + "\n" + name + "\n" + name + "\n" + PosX + "\n" + PosY + "\n" + PosZ + "\n" + SizeX + "\n" + SizeY + "\n" + SizeZ + "\n" + UVx + "\n" + UVy + "\n";
|
||||
System.IO.File.AppendAllText(url + ".CSM", entry.Replace("BOX:", ""));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
static class stringfunctions
|
||||
{
|
||||
public static IEnumerable<string> SplitBy(string input, char separator, int n)
|
||||
{
|
||||
int lastindex = 0;
|
||||
int curr = 0;
|
||||
|
||||
while (curr < input.Length)
|
||||
{
|
||||
int count = 0;
|
||||
while (curr < input.Length && count < n)
|
||||
{
|
||||
if (input[curr++] == separator) count++;
|
||||
}
|
||||
yield return input.Substring(lastindex, curr - lastindex - (curr < input.Length ? 1 : 0));
|
||||
lastindex = curr;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user