init
This commit is contained in:
15
generation/README.md
Normal file
15
generation/README.md
Normal file
@@ -0,0 +1,15 @@
|
||||
# this directory is for generating assets used in the modpack
|
||||
|
||||
to generate assets, one must extract the textures from the mods:
|
||||
pamhc2crops-1.20-1.0.3.jar
|
||||
pamhc2foodcore-1.20.4-1.0.5.jar
|
||||
pamhc2foodextended-1.20.4-1.0.1.jar
|
||||
pamhc2trees-1.20-1.0.2.jar
|
||||
|
||||
|
||||
following that, they must move them into the respective asset folders
|
||||
then they can run the ./clean.sh script in a linux or msys2/cygwin/etc system
|
||||
you also need to `npm i` and stuff, like download nodejs
|
||||
|
||||
|
||||
you also may have to run the first generation (`node gen0`) to structure some data from the "allfoods.json" file
|
||||
1309
generation/allfoods.json
Normal file
1309
generation/allfoods.json
Normal file
File diff suppressed because it is too large
Load Diff
3
generation/assets/pamhc2crops/textures/item/desktop.ini
Normal file
3
generation/assets/pamhc2crops/textures/item/desktop.ini
Normal file
@@ -0,0 +1,3 @@
|
||||
[LocalizedFileNames]
|
||||
coffeeseeditem.png=@coffeeseeditem,0
|
||||
coffeebeanitem.png=@coffeebeanitem,0
|
||||
18
generation/clean.sh
Normal file
18
generation/clean.sh
Normal file
@@ -0,0 +1,18 @@
|
||||
cd generated
|
||||
rm -rf 0 1 2 3 4
|
||||
mkdir 0
|
||||
mkdir 1
|
||||
mkdir 2
|
||||
mkdir 3
|
||||
mkdir 4
|
||||
|
||||
cd ..
|
||||
|
||||
node gen1
|
||||
echo gen 1 done
|
||||
node gen2
|
||||
echo gen 2 done
|
||||
node gen3
|
||||
echo gen 3 done
|
||||
node gen4
|
||||
echo gen 4 done
|
||||
22
generation/gen0.js
Normal file
22
generation/gen0.js
Normal file
@@ -0,0 +1,22 @@
|
||||
let fs = require('fs');
|
||||
const pergen = 9;
|
||||
var foods = JSON.parse(fs.readFileSync('allfoods.json', 'utf-8')).foods;
|
||||
|
||||
//map of food string to texture(path)
|
||||
var compositeData = [];
|
||||
var group = 0;
|
||||
var iter = 0;
|
||||
compositeData[group] = {};
|
||||
foods.forEach((ele,idx,arr) => {
|
||||
let splitstr = ele.split(":");
|
||||
let path = "assets/" + splitstr[0] + "/textures/item/" + splitstr[1] + ".png";
|
||||
compositeData[group][ele] = path;
|
||||
iter++;
|
||||
if (iter == pergen) {
|
||||
iter = 0;
|
||||
group++;
|
||||
compositeData[group] = {};
|
||||
}
|
||||
});
|
||||
|
||||
fs.writeFileSync("generated/0.json", JSON.stringify(compositeData));
|
||||
97
generation/gen1.js
Normal file
97
generation/gen1.js
Normal file
@@ -0,0 +1,97 @@
|
||||
let fs = require('fs');
|
||||
let proc = require('child_process');
|
||||
const pergen = 5;
|
||||
const generation = "1";
|
||||
var foods = JSON.parse(fs.readFileSync('generated/0.json', 'utf-8'));
|
||||
var names = []; //list of names to prevent dupes
|
||||
//map of food string to texture(path)
|
||||
var compositeData = [];
|
||||
var recipes = [];
|
||||
var group = 0;
|
||||
var iter = 0;
|
||||
compositeData[group] = {};
|
||||
foods.forEach((ele,idx,arr) => {
|
||||
let name = getName(ele);
|
||||
|
||||
let path = "generated/" + generation + "/" + name.split(":")[1] + ".png";
|
||||
genImage(ele, path);
|
||||
|
||||
|
||||
|
||||
compositeData[group][name] = path;
|
||||
iter++;
|
||||
if (iter == pergen) {
|
||||
iter = 0;
|
||||
group++;
|
||||
compositeData[group] = {};
|
||||
}
|
||||
genItem(path, name);
|
||||
genRecipes(ele, name);
|
||||
|
||||
});
|
||||
|
||||
|
||||
//obj of previous gen images, path to save new image to
|
||||
function genImage(obj, path){
|
||||
var command = ""
|
||||
var first = true; //wheter we are on image 1 or image 2 in smush
|
||||
for (let f in obj) { //p is path to one image
|
||||
let p = obj[f];
|
||||
|
||||
if (first) {
|
||||
command += "magick " + p;
|
||||
first = false;
|
||||
|
||||
} else {
|
||||
command += " " + p + " -background transparent -gravity east " + randSign() + "smush .1 PNG:- | magick PNG:-"
|
||||
}
|
||||
|
||||
}
|
||||
command += " " + path;
|
||||
command = command.replaceAll('\n', "");
|
||||
//console.log("\n\n Command:" + command);
|
||||
proc.execSync(command);
|
||||
}
|
||||
|
||||
|
||||
function randSign(){
|
||||
if (Math.round(Math.random()) == 1){
|
||||
return "+";
|
||||
} else return "-";
|
||||
|
||||
}
|
||||
// name and path to photo
|
||||
function genItem(path, name){
|
||||
//manual conversion
|
||||
}
|
||||
function genRecipes(obj, name){
|
||||
let foods = Object.keys(obj);
|
||||
let recipe = {
|
||||
amount: 1,
|
||||
output: name,
|
||||
inputs: foods
|
||||
}
|
||||
recipes.push(recipe);
|
||||
}
|
||||
function getName(obj){
|
||||
let name = "kubejs:";
|
||||
|
||||
let foods = Object.keys(obj);
|
||||
|
||||
foods.forEach((ele,idx,arr) =>{
|
||||
//add first 3 letters of previous name to next name
|
||||
name += ele.split(':')[1].slice(0, 3);
|
||||
})
|
||||
|
||||
while (names.find((f) => f==name)){
|
||||
|
||||
name += "1"; //prevent duplicate entries
|
||||
|
||||
}
|
||||
names.push(name);
|
||||
|
||||
return name;
|
||||
|
||||
}
|
||||
//fs.writeFileSync("generated/"+ generation +".json", JSON.stringify(compositeData));
|
||||
fs.writeFileSync("generated/recipe"+ generation + ".json", JSON.stringify(recipes));
|
||||
95
generation/gen2.js
Normal file
95
generation/gen2.js
Normal file
@@ -0,0 +1,95 @@
|
||||
let fs = require('fs');
|
||||
let proc = require('child_process');
|
||||
const pergen = 7;
|
||||
const generation = "2";
|
||||
var foods = JSON.parse(fs.readFileSync('generated/1.json', 'utf-8'));
|
||||
var names = []; //list of names to prevent dupes
|
||||
//map of food string to texture(path)
|
||||
var compositeData = [];
|
||||
var recipes = [];
|
||||
var group = 0;
|
||||
var iter = 0;
|
||||
compositeData[group] = {};
|
||||
foods.forEach((ele,idx,arr) => {
|
||||
let name = getName(ele);
|
||||
|
||||
let path = "generated/" + generation + "/" + name.split(":")[1] + ".png";
|
||||
genImage(ele, path);
|
||||
|
||||
|
||||
|
||||
compositeData[group][name] = path;
|
||||
iter++;
|
||||
if (iter == pergen) {
|
||||
iter = 0;
|
||||
group++;
|
||||
compositeData[group] = {};
|
||||
}
|
||||
genRecipes(ele, name);
|
||||
});
|
||||
|
||||
|
||||
//obj of previous gen images, path to save new image to
|
||||
function genImage(obj, path){
|
||||
var command = ""
|
||||
var first = true; //wheter we are on image 1 or image 2 in smush
|
||||
for (let f in obj) { //p is path to one image
|
||||
let p = obj[f];
|
||||
|
||||
if (first) {
|
||||
command += "magick " + p;
|
||||
first = false;
|
||||
|
||||
} else {
|
||||
command += " " + p + " -background transparent -gravity east " + randSign() + "smush .1 PNG:- | magick PNG:-"
|
||||
}
|
||||
|
||||
}
|
||||
command += " " + path;
|
||||
command = command.replaceAll('\n', "");
|
||||
//console.log("\n\n Command:" + command);
|
||||
|
||||
try {
|
||||
proc.execSync(command);
|
||||
} catch (error) {
|
||||
console.log("\n\n\n"+error);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
function genRecipes(obj, name){
|
||||
let foods = Object.keys(obj);
|
||||
let recipe = {
|
||||
amount: 1,
|
||||
output: name,
|
||||
inputs: foods
|
||||
}
|
||||
recipes.push(recipe);
|
||||
}
|
||||
function randSign(){
|
||||
if (Math.round(Math.random()) == 1){
|
||||
return "+";
|
||||
} else return "-";
|
||||
|
||||
}
|
||||
function getName(obj){
|
||||
let name = "kubejs:";
|
||||
|
||||
let foods = Object.keys(obj);
|
||||
|
||||
foods.forEach((ele,idx,arr) =>{
|
||||
//add first 3 letters of previous name to next name
|
||||
name += ele.split(':')[1].slice(0, 3);
|
||||
})
|
||||
while (names.find((f) => f==name)){
|
||||
|
||||
name += "1"; //prevent duplicate entries
|
||||
|
||||
}
|
||||
names.push(name);
|
||||
return name;
|
||||
|
||||
}
|
||||
//fs.writeFileSync("generated/"+ generation +".json", JSON.stringify(compositeData));
|
||||
fs.writeFileSync("generated/recipe"+ generation + ".json", JSON.stringify(recipes));
|
||||
88
generation/gen3.js
Normal file
88
generation/gen3.js
Normal file
@@ -0,0 +1,88 @@
|
||||
let fs = require('fs');
|
||||
let proc = require('child_process');
|
||||
const pergen = 9;
|
||||
const generation = "3";
|
||||
var foods = JSON.parse(fs.readFileSync('generated/2.json', 'utf-8'));
|
||||
var names = []; //list of names to prevent dupes
|
||||
//map of food string to texture(path)
|
||||
var compositeData = [];
|
||||
var recipes = [];
|
||||
var group = 0;
|
||||
var iter = 0;
|
||||
compositeData[group] = {};
|
||||
foods.forEach((ele,idx,arr) => {
|
||||
let name = getName(ele);
|
||||
|
||||
let path = "generated/" + generation + "/" + name.split(":")[1] + ".png";
|
||||
genImage(ele, path);
|
||||
|
||||
|
||||
|
||||
compositeData[group][name] = path;
|
||||
iter++;
|
||||
if (iter == pergen) {
|
||||
iter = 0;
|
||||
group++;
|
||||
compositeData[group] = {};
|
||||
}
|
||||
genRecipes(ele, name);
|
||||
});
|
||||
|
||||
function genRecipes(obj, name){
|
||||
let foods = Object.keys(obj);
|
||||
let recipe = {
|
||||
amount: 1,
|
||||
output: name,
|
||||
inputs: foods
|
||||
}
|
||||
recipes.push(recipe);
|
||||
}
|
||||
//obj of previous gen images, path to save new image to
|
||||
function genImage(obj, path){
|
||||
var command = ""
|
||||
var first = true; //wheter we are on image 1 or image 2 in smush
|
||||
for (let f in obj) { //p is path to one image
|
||||
let p = obj[f];
|
||||
|
||||
if (first) {
|
||||
command += "magick " + p;
|
||||
first = false;
|
||||
|
||||
} else {
|
||||
command += " " + p + " -background transparent -gravity east " + randSign() + "smush .1 PNG:- | magick PNG:-"
|
||||
}
|
||||
|
||||
}
|
||||
command += " " + path;
|
||||
command = command.replaceAll('\n', "");
|
||||
//console.log("\n\n Command:" + command);
|
||||
proc.execSync(command);
|
||||
}
|
||||
|
||||
|
||||
function randSign(){
|
||||
if (Math.round(Math.random()) == 1){
|
||||
return "+";
|
||||
} else return "-";
|
||||
|
||||
}
|
||||
function getName(obj){
|
||||
let name = "kubejs:";
|
||||
|
||||
let foods = Object.keys(obj);
|
||||
|
||||
foods.forEach((ele,idx,arr) =>{
|
||||
//add first 3 letters of previous name to next name
|
||||
name += ele.split(':')[1].slice(0, 3);
|
||||
})
|
||||
while (names.find((f) => f==name)){
|
||||
|
||||
name += "1"; //prevent duplicate entries
|
||||
|
||||
}
|
||||
names.push(name);
|
||||
return name;
|
||||
|
||||
}
|
||||
//fs.writeFileSync("generated/"+ generation +".json", JSON.stringify(compositeData));
|
||||
fs.writeFileSync("generated/recipe"+ generation + ".json", JSON.stringify(recipes));
|
||||
89
generation/gen4.js
Normal file
89
generation/gen4.js
Normal file
@@ -0,0 +1,89 @@
|
||||
let fs = require('fs');
|
||||
let proc = require('child_process');
|
||||
const pergen = 9;
|
||||
const generation = "4";
|
||||
var foods = JSON.parse(fs.readFileSync('generated/3.json', 'utf-8'));
|
||||
var names = []; //list of names to prevent dupes
|
||||
//map of food string to texture(path)
|
||||
var compositeData = [];
|
||||
var recipes = [];
|
||||
var group = 0;
|
||||
var iter = 0;
|
||||
compositeData[group] = {};
|
||||
foods.forEach((ele,idx,arr) => {
|
||||
let name = getName(ele);
|
||||
|
||||
let path = "generated/" + generation + "/" + name.split(":")[1] + ".png";
|
||||
genImage(ele, path);
|
||||
|
||||
|
||||
|
||||
compositeData[group][name] = path;
|
||||
iter++;
|
||||
if (iter == pergen) {
|
||||
iter = 0;
|
||||
group++;
|
||||
compositeData[group] = {};
|
||||
}
|
||||
genRecipes(ele,name);
|
||||
});
|
||||
|
||||
|
||||
//obj of previous gen images, path to save new image to
|
||||
function genImage(obj, path){
|
||||
var command = ""
|
||||
var first = true; //wheter we are on image 1 or image 2 in smush
|
||||
for (let f in obj) { //p is path to one image
|
||||
let p = obj[f];
|
||||
|
||||
if (first) {
|
||||
command += "magick " + p;
|
||||
first = false;
|
||||
|
||||
} else {
|
||||
command += " " + p + " -background transparent -gravity east " + randSign() + "smush .1 PNG:- | magick PNG:-"
|
||||
}
|
||||
|
||||
}
|
||||
command += " " + path;
|
||||
command = command.replaceAll('\n', "");
|
||||
//console.log("\n\n Command:" + command);
|
||||
proc.execSync(command);
|
||||
}
|
||||
|
||||
|
||||
function randSign(){
|
||||
if (Math.round(Math.random()) == 1){
|
||||
return "+";
|
||||
} else return "-";
|
||||
|
||||
}
|
||||
function genRecipes(obj, name){
|
||||
let foods = Object.keys(obj);
|
||||
let recipe = {
|
||||
amount: 1,
|
||||
output: name,
|
||||
inputs: foods
|
||||
}
|
||||
recipes.push(recipe);
|
||||
}
|
||||
function getName(obj){
|
||||
let name = "kubejs:";
|
||||
|
||||
let foods = Object.keys(obj);
|
||||
|
||||
foods.forEach((ele,idx,arr) =>{
|
||||
//add first 3 letters of previous name to next name
|
||||
name += ele.split(':')[1].slice(0, 3);
|
||||
})
|
||||
while (names.find((f) => f==name)){
|
||||
|
||||
name += "1"; //prevent duplicate entries
|
||||
|
||||
}
|
||||
names.push(name);
|
||||
return name;
|
||||
|
||||
}
|
||||
fs.writeFileSync("generated/recipe"+ generation + ".json", JSON.stringify(recipes));
|
||||
//fs.writeFileSync("generated/"+ generation +".json", JSON.stringify(compositeData));
|
||||
13
generation/package-lock.json
generated
Normal file
13
generation/package-lock.json
generated
Normal file
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"name": "pamimg",
|
||||
"version": "1.0.0",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "pamimg",
|
||||
"version": "1.0.0",
|
||||
"license": "ISC"
|
||||
}
|
||||
}
|
||||
}
|
||||
12
generation/package.json
Normal file
12
generation/package.json
Normal file
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"name": "pamimg",
|
||||
"version": "1.0.0",
|
||||
"description": "",
|
||||
"license": "ISC",
|
||||
"author": "",
|
||||
"type": "commonjs",
|
||||
"main": "main.js",
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1"
|
||||
}
|
||||
}
|
||||
3
generation/pamhc2crops/textures/item/desktop.ini
Normal file
3
generation/pamhc2crops/textures/item/desktop.ini
Normal file
@@ -0,0 +1,3 @@
|
||||
[LocalizedFileNames]
|
||||
coffeeseeditem.png=@coffeeseeditem,0
|
||||
coffeebeanitem.png=@coffeebeanitem,0
|
||||
Reference in New Issue
Block a user