def scoreboard(ctx: Context, opts: ScoreboardOptions): """Plugin that adds generated scoreboards to the data pack.""" if scoreboard_data := ctx.meta.get("generate_scoreboard"): commands = [ f"scoreboard objectives add {name} {criterion}" for name, criterion in scoreboard_data.items() ] ctx.generate(opts.function, Function(commands, prepend_tags=list(opts.tags))) scoreboard_data.clear()
def handle_content(ctx: Context, node: TreeNode[str], function: Function, n: int): if node.root: ctx.generate(Function([f"function {node.parent}"], tags=["minecraft:tick"])) function.lines.append(f"scoreboard players add #index temp 1") if node.partition(n): function.lines.append( f"execute if score #index temp matches {node.range} run function {node.children}" ) else: function.lines.append( f"execute if score #index temp matches {node.range} run say {node.value}" )
def plugin1(ctx: Context): ctx.require(plugin2) for i in range(5): with ctx.generate[f"part{i}"].push(): loop = ctx.generate( "{short_hash}", render=Function(source_path=ctx.directory / "main.mcfunction"), hash=i, count=i + 1, ) ctx.generate("init", render=Function(["function {{ loop }}"]), loop=loop)
def beet_default(ctx: Context): ctx.require("beet.contrib.inline_function_tag") ctx.generate(render=Function(["say {{ 6 * 7 }}"])) ctx.generate("foo", render=Function(source_path="foo.mcfunction"), message="hello") ctx.require(plugin1) with ctx.override(generate_namespace="other"): ctx.generate["thing"]( render=Function( ['#!include "foo.mcfunction"'], tags=[ctx.generate(FunctionTag())], ), message="world", )
def beet_default(ctx: Context): for i in range(5): key = ctx.generate(Function(["say hello"])) ctx.generate["foo"](Function([f"function {key}"])) with ctx.override(generate_namespace="demo"): ctx.generate(Function(["say demo"])) with ctx.override(generate_prefix="thing"): ctx.generate(Function(["say thing"])) with ctx.override(generate_path="other:{namespace}/"): for j in range(3): ctx.generate["foo"]("{incr}_{hash}", Function([f"say {i}{j}"])) with ctx.override(generate_path="{namespace}:generated/"): key = ctx.generate("{short_hash}", Function([f"say {i}"])) with ctx.generate["a"].push(): ctx.generate["b"](Function(["say c", f"function {key}"])) with ctx.override(generate_path="creeper{incr}:"): ctx.generate("boom", Function(["say boom"])) ctx.generate["nested"]( "{hash}", Function(["say hello"]), hash=f"something/other thing, {i} blah", ) tag1 = ctx.generate.id("foo") obj1 = ctx.generate.hash("foo") ctx.generate(Function([f"scoreboard players set @s[tag={tag1}] {obj1} 1"])) generate = ctx.generate["hello"] tag2 = generate.id("foo") obj2 = generate.hash("foo") generate(Function([f"scoreboard players set @s[tag={tag2}] {obj2} 1"]))
def plugin5(ctx: Context, opts: JsonDict): ctx.generate(Function([f"say {opts}"]))
def plugin4(ctx: Context, opts: PluginOptions): ctx.generate("plugin4_{incr}", Function(opts.commands))
def plugin2(ctx: Context, opts: JsonDict): ctx.generate("plugin2_{incr}", Function(opts["commands"]))