diff --git a/gulp/mod.js b/gulp/mod.js new file mode 100644 index 00000000..ccbd942b --- /dev/null +++ b/gulp/mod.js @@ -0,0 +1,3 @@ +module.exports = function (source, map) { + return source + `\nexport let $s=(n,v)=>eval(n+"="+v)`; +}; diff --git a/gulp/webpack.config.js b/gulp/webpack.config.js index 7db0bf0b..3c07d7cc 100644 --- a/gulp/webpack.config.js +++ b/gulp/webpack.config.js @@ -93,6 +93,9 @@ module.exports = ({ watch = false, standalone = false, chineseVersion = false, w end: "typehints:end", }, }, + { + loader: path.resolve(__dirname, "mod.js"), + }, ], }, { diff --git a/src/js/mods/modloader.js b/src/js/mods/modloader.js index 48911abd..ed5368b2 100644 --- a/src/js/mods/modloader.js +++ b/src/js/mods/modloader.js @@ -66,24 +66,27 @@ export class ModLoader { // @ts-ignore const module = modules(key); for (const member in module) { - if (member === "default") { + if (member === "default" || member === "$s") { + // Setter continue; } if (exports[member]) { throw new Error("Duplicate export of " + member); } + Object.defineProperty(exports, member, { get() { return module[member]; }, set(v) { - module[member] = v; + module["$s"](member, v); }, }); } }); window.shapez = exports; + console.log(shapez); } }