var fs = require('fs');
const profilePath = require('os').homedir();
exports.profilePath = profilePath;
var minetestPath = profilePath + "/minetest"; // TODO: differs from .minetest if not RUN_IN_PLACE
exports.minetestPath = function() {
return minetestPath;
}
const myName = "minetestinfo.js";
var skinsPath = "";
exports.skinsPath = function () {
return skinsPath;
}
var selectableSkinFileNames = [];
exports.selectableSkinFileNames = function() {
return selectableSkinFileNames;
}
exports.players = function(isLoggedIn) {
return []; // TODO: implement this
}
exports.setSkin = function(userName, skinFileName) {
var indirectName = "player_" + userName + ".skin";
var indirectPath = exports.skinsPath() + "/" + indirectName;
//if (skinName.endsWith('.png')) {
//console.log("WARNING: skinName should not specify extension--removing .png");
//skinName = skinName.substring(0, skinName.length-4);
//}
//var skinFileName = skinName + ".png";
fs.writeFile(indirectPath, skinFileName, function(err, data) {
if (err) {
msg = err.message;
console.log(err);
// res.write(msg + "
")
}
else {
// res.write("Before the skin is applied, The minetestserver instance must be restarted.
")
msg = "Successfully wrote " + skinFileName;
console.log(msg + " to " + indirectPath + ".");
// res.write(msg + "
")
}
// res.end(ending);
});
}
exports.regeneratePaths = function () {
skinsPath = minetestPath + "/games/Bucket_Game/mods/codercore/coderskins/textures";
if (fs.existsSync( minetestPath + "/games/ENLIVEN")) {
skinsPath = minetestPath + "/games/ENLIVEN/mods/codercore/coderskins/textures";
}
console.log("[" + myName + "] skinsPath: \"" + skinsPath + "\"");
var publicPath = __dirname + "/public";
var publicSkinsPath = publicPath + "/skins";
if (!fs.existsSync(publicPath)) {
fs.mkdirSync(publicPath, 0744);
}
if (!fs.existsSync(publicSkinsPath)) {
fs.mkdirSync(publicSkinsPath, 0744);
fs.readdir(skinsPath, (err, files) => {
selectableSkinFileNames = [];
files.forEach(file => {
if (file.startsWith("skin_") && file.endsWith(".png")) {
var srcPath = skinsPath + '/' + file;
var dstPath = publicSkinsPath + '/' + file;
console.log("copying '" + srcPath + "' to '" + dstPath + "'");
fs.copyFile(srcPath, dstPath, fs.constants.COPYFILE_EXCL, (err) => {
if (err) throw err;
selectableSkinFileNames.push(file);
// console.log('source.txt was copied to destination.txt');
});
}
else {
console.log("not a skin: " + file)
}
// console.log(file);
});
});
}
else {
fs.readdir(publicSkinsPath, (err, files) => {
selectableSkinFileNames = [];
files.forEach(file => {
if (file.startsWith("skin_") && file.endsWith(".png")) {
selectableSkinFileNames.push(file);
// console.log("detected existing " + file);
}
else {
console.log("bad skin: " + file)
}
// console.log(file);
});
});
}
}
var thisMinetest = "/tank/local/owner/minetest";
if (fs.existsSync(thisMinetest)) {
minetestPath = thisMinetest;
}
exports.regeneratePaths();