Thanks for making this! I've been using Beet/Bolt for quite some time now and have been loving it. Having tutorials and showcases of what it can do and how it can help makes it a lot more approachable to newcomers! You said you were not sure what "pipeline" does, so I'll try to explain it how I understand it. "pipeline" and "require" are both spots that register plugins. "require" runs before the data pack itself is loaded and "pipeline" runs after the pack is loaded. Here "bolt" is used in "require" to register .bolt files and how they are handled and "mecha" is used in "pipeline" to parse the mcfunction stuff and allow for shortened syntax. Also, you can import .bolt files in mcfunction files as well and you can define new functions and advancements and everything inside of regular .mcfunction files as well but yea, it does always create at least the function itself. Good video! 🥳
Thanks for the explanation and for the kind words! That makes a lot more sense. And yeah maybe I should’ve been a bit more clear about how mcfunction files can do all that stuff too haha, I just personally prefer doing it all in .bolt
Woah, this is really sick! Me and my team have been using our own compiler similar to this for creating multiple functions inside files and such, but nothing as complex as this! We might need to switch to using this system now that I've found this video! Thanks for sharing!
I know right! Especially if the community surrounding beet grows, having a lot of people all building libraries for others to use could absolutely skyrocket the potential of datapacks.
I was actually just about to start trying to make something like this myself, but thank goodness I found bolt right before I got into it and saved myself loads of time of trying to make a precompiler from scratch
I was able to make a simple transpiler as a plugin for sublime text which would parse and write the proper .mcfunction files on save of a .mcfunctab file
Amazing ! Very consize and clear ! Bolt ressources are so rare, it makes this video pure gold ✨️ Although I understood most of this already, I would instant watch anything that covers how you are using bolt in more details ! It's such a versatile tool that it's helpful to see pratical examples. ✨️🔥✨️
There’s a bolt plugin, I believe you can just search for it but if not you can probably find info on it in the discord. It’s not super fleshed out but it has some bare minimum stuff
Very well explained! Now heres a question: does bolt support strings & string manipulation, as well as text component generation? (I'm working on my own thing like bolt that does this but im curious as to whether bolt does it too lol)
Bolt doesn't really have anything like this built-in, but you could definitely make a bolt library to pack that kind of functionality into an easy-to-use syntax.
There are probably ways to do that but is there also a shorthand syntax for reactionary data packs that aren't "static" function but that update variables (scoreboards) on the fly ? Cause while that loop thing and stuff are amazing for some things it wouldn't work that well if the loop would need to be "dynamically" aborted with a stop condition. Edit: I guess there are ways for these things to work you just didn't have any on the spot code examples for them. 👌
Yeah this is an important distinction that bolt does stuff at compile time, not run time, so you can’t use python variables to make things dynamic. Though it does allow you to package the functionality it’d take to make something dynamic into a single function that can take a python variable. When you start really digging into the possibilities there’s a lot you can do
@bigpapigaming1126 So if I want or need scoreboard stuff for dynamic/relative inputs then I'll need to do that myself or is there maybe a plugin to do something like that automatically as well ?
Unfortunately bolt is just for datapacks. You could try looking into precompilers for Java, but I think in a lot of cases that wouldn’t be as necessary. Bolt is particularly useful because datapacks are particularly difficult to code in
@@bigpapigaming1126 The funny part is I would say that Data packs themselves aren't that bad, but especially for people that started getting used to more powerful proper coding languages and that want to use those techniques it requires weird workarounds or atypical and possibly even intuitive ways to achieve things. But for people that don't have that baggage and/or more advanced goals I think data packs will likely be easier to learn than some other programming languages since they likely already messed with the commands in-game. But yeah the code required to do complex stuff is insane with data packs. But also did I understand the end of the video correctly that beet/bolt can essentially even import python libraries 👀.
another great piece of pre-compiling that I have personally used is JMC, its not as powerfull because you don't get an entire programming language, but its still really nice for example here's how you'd iterate over string arrays ```js Hardcode.repeatLists( [ "[index1]", "[index2]" ], ()=>{ say "[index1] - [index2]"; }, [ ["a1", "b1", "c1", "d1"], ["a2", "b2", "c2", "d2"] ] ); ```
I haven’t used JMC before, but I’ve heard of it. So it’s basically like JavaScript-ish code that compiles into commands, right? If so that’s really cool!
I quit developing datapacks because it was so tedious. This is a game changer.
Was genuinely on the verge myself until I found this. It's saved me so so much hassle
Thanks for making this! I've been using Beet/Bolt for quite some time now and have been loving it. Having tutorials and showcases of what it can do and how it can help makes it a lot more approachable to newcomers!
You said you were not sure what "pipeline" does, so I'll try to explain it how I understand it.
"pipeline" and "require" are both spots that register plugins. "require" runs before the data pack itself is loaded and "pipeline" runs after the pack is loaded. Here "bolt" is used in "require" to register .bolt files and how they are handled and "mecha" is used in "pipeline" to parse the mcfunction stuff and allow for shortened syntax.
Also, you can import .bolt files in mcfunction files as well and you can define new functions and advancements and everything inside of regular .mcfunction files as well but yea, it does always create at least the function itself.
Good video! 🥳
Thanks for the explanation and for the kind words! That makes a lot more sense. And yeah maybe I should’ve been a bit more clear about how mcfunction files can do all that stuff too haha, I just personally prefer doing it all in .bolt
I'll definitely save this somewhere, Beet seems so much more userfriendly than normal mcfunctions. Thanks!
this is very cool!! reminds me of how MinecraftPi and mcpi got me into coding!!! ❤
calling the source directory "zerk" is very cursed
lol I had a teacher that always called it that and I guess it just kinda imprinted itself on my mind. It’s really fun to say so I think it just stuck
@@bigpapigaming1126 I thought it was a jerma joke
I've heard a lot of crazy ways to pronounce computer stuff, but this is the first time I've heard this one!
Woah, this is really sick! Me and my team have been using our own compiler similar to this for creating multiple functions inside files and such, but nothing as complex as this! We might need to switch to using this system now that I've found this video! Thanks for sharing!
Yeah, it really is an amazing tool! I’m glad you found the video helpful!
Also, respect for the Big _____ Gaming name format 🤝
@@bigpapigaming1126 LOL, we like good naming conventions!
The goat has retuned from his slumber
The potential for this is insane :0
I know right! Especially if the community surrounding beet grows, having a lot of people all building libraries for others to use could absolutely skyrocket the potential of datapacks.
This is so good! I tried last year to create something like this, but quickly realized it would be too much. So excited to start using this!
I was actually just about to start trying to make something like this myself, but thank goodness I found bolt right before I got into it and saved myself loads of time of trying to make a precompiler from scratch
@@bigpapigaming1126 yeah, literally! I already have been using python to manually generate mcfunction files, so this is just a step better!
I was able to make a simple transpiler as a plugin for sublime text which would parse and write the proper .mcfunction files on save of a .mcfunctab file
i love this so much
your a real one for making this tutorial
this is actually so sick wtf
Amazing ! Very consize and clear !
Bolt ressources are so rare, it makes this video pure gold ✨️
Although I understood most of this already, I would instant watch anything that covers how you are using bolt in more details ! It's such a versatile tool that it's helpful to see pratical examples. ✨️🔥✨️
Thank you so much, I’m definitely hoping to make more in the future! Hoping to do a particle effect guide next :)
@@bigpapigaming1126 Can't wait !
Thank you so much for sharing this! I can’t wait to try it out!
You’re welcome, I’m glad you found it useful! Hope you can make some cool stuff with it :D
This is sick
what vs-code plugin are your using to auto complete?
There’s a bolt plugin, I believe you can just search for it but if not you can probably find info on it in the discord. It’s not super fleshed out but it has some bare minimum stuff
Very well explained!
Now heres a question: does bolt support strings & string manipulation, as well as text component generation? (I'm working on my own thing like bolt that does this but im curious as to whether bolt does it too lol)
Bolt doesn't really have anything like this built-in, but you could definitely make a bolt library to pack that kind of functionality into an easy-to-use syntax.
is this python for MINECRAFT? why does minecraft have the best fucking community support out of like all the communities ive seen.
Amazing video! Btw how do you get the little icons by the file names
There are probably ways to do that but is there also a shorthand syntax for reactionary data packs that aren't "static" function but that update variables (scoreboards) on the fly ?
Cause while that loop thing and stuff are amazing for some things it wouldn't work that well if the loop would need to be "dynamically" aborted with a stop condition.
Edit: I guess there are ways for these things to work you just didn't have any on the spot code examples for them. 👌
Yeah this is an important distinction that bolt does stuff at compile time, not run time, so you can’t use python variables to make things dynamic. Though it does allow you to package the functionality it’d take to make something dynamic into a single function that can take a python variable. When you start really digging into the possibilities there’s a lot you can do
@bigpapigaming1126 So if I want or need scoreboard stuff for dynamic/relative inputs then I'll need to do that myself or is there maybe a plugin to do something like that automatically as well ?
No way it finally happened
There’s no more excuses now
@@bigpapigaming1126uuh university busy busy :(
can we have this for mods
Unfortunately bolt is just for datapacks. You could try looking into precompilers for Java, but I think in a lot of cases that wouldn’t be as necessary. Bolt is particularly useful because datapacks are particularly difficult to code in
@@bigpapigaming1126
The funny part is I would say that Data packs themselves aren't that bad, but especially for people that started getting used to more powerful proper coding languages and that want to use those techniques it requires weird workarounds or atypical and possibly even intuitive ways to achieve things. But for people that don't have that baggage and/or more advanced goals I think data packs will likely be easier to learn than some other programming languages since they likely already messed with the commands in-game.
But yeah the code required to do complex stuff is insane with data packs.
But also did I understand the end of the video correctly that beet/bolt can essentially even import python libraries 👀.
We already have KubeJS! The capabilities are limited though.
that is so cured to mix python amd mc functions
It is lol, but it’s sooo dang useful
what did the cows do to you 😭
Hey now I gave them a cat to say I’m sorry
Zerk is driving me insane 😅
beet or bolt
Beet’s the actual precompiler, bolt is a plugin for beet that makes all the stuff shown in the video possible
First!!111!!!!1111!!!!||||!!!111
king
src is an abreviation for "source", please stop saying circ...
Said this to another comment already, but ya it’s a habit I picked up from a professor of mine lol. It’s just fun to say so I’m sticking with it
another great piece of pre-compiling that I have personally used is JMC, its not as powerfull because you don't get an entire programming language, but its still really nice
for example here's how you'd iterate over string arrays
```js
Hardcode.repeatLists(
[
"[index1]",
"[index2]"
],
()=>{
say "[index1] - [index2]";
},
[
["a1", "b1", "c1", "d1"],
["a2", "b2", "c2", "d2"]
]
);
```
I haven’t used JMC before, but I’ve heard of it. So it’s basically like JavaScript-ish code that compiles into commands, right? If so that’s really cool!