cobble-lang 0.7.0

A modern, Python-like language for creating Minecraft Data Packs
Documentation
# Event System Example
import stdlib
from stdlib import event

# Global variables
tick_counter = 0
is_day = True

def on_load():
    """Initialize data pack when loaded"""
    /tellraw @a {"text":"=========================","color":"gold"}
    /tellraw @a {"text":"  Data Pack Loaded!","color":"green","bold":true}
    /tellraw @a {"text":"=========================","color":"gold"}

    # Initialize gamerules
    /gamerule advance_time false
    /gamerule advance_weather false
    /time set day

def on_tick():
    """Called every game tick (20 times per second)"""
    global tick_counter
    tick_counter = tick_counter + 1

    # Every second (20 ticks)
    if tick_counter >= 20:
        tick_counter = 0
        every_second()

    # Particle effects for all players
    # /execute as @a at @s run particle minecraft:happy_villager ~ ~2.5 ~ 0.3 0.3 0.3 0 1 force
    as @a at @s:
        /particle minecraft:happy_villager ~ ~2.5 ~ 0.3 0.3 0.3 0 1 force

    # Check for new players
    # /execute as @a[tag=!initialized] run function namespace:init_player
    as @a[tag=!initialized] at @s:
        # /function namespace:init_player
        init_player()

def every_second():
    """Called every second"""
    global is_day
    
    # Day/night cycle every 10 seconds
    if is_day:
        /time set night
        /tellraw @a {"text":"Night falls...","color":"blue","italic":true}
        is_day = False
    else:
        /time set day
        /tellraw @a {"text":"Day breaks!","color":"yellow","italic":true}
        is_day = True

def init_player():
    """Initialize new player"""
    /tag @s add initialized
    /tellraw @s {"text":"Welcome to the server!","color":"green","bold":true}
    /give @s minecraft:bread 16
    /give @s minecraft:torch 32
    /effect give @s minecraft:resistance 10 255 true
    /effect give @s minecraft:saturation 1 20 true

    # Spawn particles
    asat @s:
        /particle minecraft:totem_of_undying ~ ~1 ~ 0 0 0 1 100 force

def on_player_death():
    """Handle player death"""
    /tellraw @a [{"selector":"@s","color":"red"},{"text":" has died!","color":"gray"}]
    # /execute at @s run particle minecraft:soul ~ ~ ~ 0.5 1 0.5 0.1 50
    asat @s:
        /particle minecraft:soul ~ ~ ~ 0.5 1 0.5 0.1 50

def on_player_kill():
    """Handle player kill"""
    /tellraw @s {"text":"You got a kill!","color":"gold"}
    asat @s:
        /playsound minecraft:entity.experience_orb.pickup master @s ~ ~ ~ 1 1

# Register event handlers
stdlib.addEventListener(event.LOAD, on_load)
stdlib.addEventListener(event.TICK, on_tick)