This commit is contained in:
APEX FIGHT
2025-12-22 14:33:45 -05:00
parent 6316873115
commit 5972b37123
323 changed files with 49717 additions and 1 deletions

15
generation/README.md Normal file
View 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

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,3 @@
[LocalizedFileNames]
coffeeseeditem.png=@coffeeseeditem,0
coffeebeanitem.png=@coffeebeanitem,0

18
generation/clean.sh Normal file
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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"
}
}

View File

@@ -0,0 +1,3 @@
[LocalizedFileNames]
coffeeseeditem.png=@coffeeseeditem,0
coffeebeanitem.png=@coffeebeanitem,0