npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

redscript-mc

v3.0.2

Published

A high-level programming language that compiles to Minecraft datapacks

Readme

RedScript

编译到 Minecraft 数据包的类型化语言

写干净的代码,生成原版数据包。无需 Mod。

npm CI Tests VSCode

English · 文档 · 在线编辑器


为什么用 RedScript?

Minecraft 数据包很强大,但写起来很痛苦:

# 原版:检查玩家分数 >= 100 并给奖励
execute as @a[scores={points=100..}] run scoreboard players add @s rewards 1
execute as @a[scores={points=100..}] run scoreboard players set @s points 0
execute as @a[scores={points=100..}] run give @s minecraft:diamond 1
execute as @a[scores={points=100..}] run tellraw @s {"text":"领取成功!"}
// RedScript:同样的逻辑,更易读
@tick fn check_rewards() {
    foreach (p in @a) {
        if (scoreboard_get(p, #points) >= 100) {
            scoreboard_add(p, #rewards, 1);
            scoreboard_set(p, #points, 0);
            give(p, "minecraft:diamond", 1);
            tell(p, "领取成功!");
        }
    }
}

快速开始

在线体验(无需安装)

→ redscript-ide.pages.dev — 写代码,下载数据包。

安装 CLI

npm install -g redscript-mc

Hello World

// hello.mcrs
@load fn init() {
    say("Hello from RedScript!");
}

@tick fn game_loop() {
    foreach (p in @a[tag=playing]) {
        effect(p, "minecraft:speed", 1, 0, true);
    }
}
redscript build hello.mcrs -o ./my-datapack

my-datapack/ 放到世界的 datapacks/ 文件夹,运行 /reload。完成。


功能特性

语言

| 特性 | 示例 | |------|------| | 变量 | let x: int = 42; | | 函数 | fn damage(target: selector, amount: int) { ... } | | 控制流 | if, else, for, while, foreach, match | | 结构体 | struct Player { score: int, alive: bool } | | 枚举 | enum State { Lobby, Playing, Ended } | | Option 类型 | let item: Option<int> = Some(5); | | Result 类型 | let r: Result<int, string> = Ok(42); | | 格式字符串 | say(f"分数: {points}"); | | 模块 | import math; math::sin(45); |

Minecraft 集成

// 游戏事件装饰器
@tick fn every_tick() { }
@tick(rate=20) fn every_second() { }
@load fn on_datapack_load() { }
@on(PlayerJoin) fn welcome(p: Player) { }

// 实体选择器自然使用
foreach (zombie in @e[type=zombie, distance=..10]) {
    kill(zombie);
}

// execute 子命令
foreach (p in @a) at @s positioned ~ ~2 ~ {
    particle("minecraft:flame", ~0, ~0, ~0, 0.1, 0.1, 0.1, 0.01, 10);
}

// 协程分散计算(跨 tick 执行)
@coroutine(batch=100)
fn process_all() {
    for (let i = 0; i < 10000; i = i + 1) {
        // 不会卡顿 — 每 tick 只执行 100 次迭代
    }
}

工具链

  • 15 个优化 pass — 死代码消除、常量折叠、内联等
  • LSP — 悬停文档、跳转定义、自动补全、诊断
  • VSCode 扩展 — 完整语法高亮和代码片段
  • 50 个标准库模块 — 数学、向量、寻路、粒子等

CLI 命令

redscript build <file>     # 带优化编译
redscript compile <file>   # 不带优化编译
redscript check <file>     # 仅类型检查
redscript fmt <file>       # 格式化代码
redscript lint <file>      # 静态分析
redscript test <file>      # 运行 @test 函数
redscript watch <dir>      # 监听模式,热重载
redscript docs [module]    # 打开标准库文档

标准库

50 个模块,覆盖数学、数据结构、游戏系统和 MC 特定功能:

import math;        // sin, cos, sqrt, pow, abs
import vec;         // 2D/3D 向量, dot, cross, normalize
import random;      // LCG/PCG 随机数生成器
import pathfind;    // A* 寻路
import particles;   // 粒子辅助
import inventory;   // 物品栏操作
import scheduler;   // 延迟执行
import ecs;         // 实体组件系统
// ... 还有 42 个

完整列表:标准库文档


示例

| 文件 | 描述 | |------|------| | loops-demo.mcrs | 所有循环结构 | | showcase.mcrs | 完整功能展示 |

更多示例在 examples/ 目录。


文档


链接


MIT License · bkmashiro