Stevertus / mcscript

A programming language for Minecraft Vanilla
https://mcscript.stevertus.com
MIT License
233 stars 16 forks source link

Support for Function arguments #23

Open WilliamRagstad opened 4 years ago

WilliamRagstad commented 4 years ago

There is a poly-fill trick for supporting arguments to functions using the new /data get storage [name] [path]. Format example:

mcscriptfunctions
|___ [function name]
        |___ [meta data]
        |___ [arguments]
               |___ [0]
               |___ [1]
               |___ ...
               |___ [N]

This will allow for real-time function calls if you create a macro that generates commands similar to the following code: (simulating using C#)

void callToFunction(string name, object[] args) {
   string r = "/data modify storage MCScriptFunctions " + name + ".arguments set value [";
   for(int i = 0; i < args.length; i++) r += args[i];
   r += "]\n"
   r += "/function " + name;
}

This could probably be optimized in many ways regarding to recursion etc (can be solved by storing arguments in temp variables), but this is the overall picture.

Heath123 commented 4 years ago

Sadly mcscript isn't really maintained or updated any more...

Stevertus commented 3 years ago

This is a great idea, but as @Heath123 mentioned I am not adding new features to mcscript anymore, because the work required to rearrange everything is too much. I could see this in my modular approach objD though.