UHCRun คือ Add-on ระบบ Ultra Hardcore ที่พัฒนาบน Minecraft Bedrock Script API
ครอบคลุมตั้งแต่ระบบทีม, World Border แบบ dynamic, การติดตาม kill/death, ไปจนถึง NPC Leaderboard ภายใน world
ออกแบบมาสำหรับการแข่งขันแบบ multiplayer รองรับผู้เล่น 20–30 คนต่อ session
- ⚔️ ระบบทีม — รองรับ 9 ทีม, เข้าร่วมผ่าน Compass menu, บันทึกข้อมูลถาวรด้วย DynamicProperty
- 🗺️ World Border แบบ dynamic — Shrink แบบ smooth lerp ผ่าน checkpoint (500 → 2), render particle, fog และ damage เมื่อออกนอก border
- 📊 ระบบติดตาม Kill/Death — จัดเก็บสถิติรายผู้เล่นและรายทีมลง Scoreboard และ DynamicProperty
- 🏆 NPC Leaderboard — แสดงอันดับ Top Players, Top Teams และ Top Deaths ภายใน world
- 🔔 ระบบ Announcer — First Blood, Multi Kill (สูงสุด ACE), Kill Streak
- 🪓 Plugins เสริม — AutoSmelt, Axe mechanics, CPS counter, Enchant, Fishing HoD, Knockback
- 🎮 Admin Panel — UI สำหรับจัดการทีม, teleport, ตรวจสอบสถิติ และ debug ข้อมูล
- ⚡ ปรับแต่งประสิทธิภาพ — Tick-cached player list, dirty-flag scoreboard update, grouped particle rendering
- Minecraft Bedrock Edition
1.26.3 @minecraft/server1.26.0@minecraft/server-ui- Behavior Pack ที่เปิดใช้งาน Script API
git clone https://github.com/SolightzZ/UhcRun26.git- คัดลอกโฟลเดอร์ behavior pack ไปไว้ใน
behavior_packs/ของ world - เปิดใช้งาน pack ใน World Settings → Add-Ons → Behavior Packs
- เปิดใช้งาน Beta APIs ใน Experiments
| คำสั่ง | คำอธิบาย |
|---|---|
/addon:uhcsetup |
โหลด structure, ตั้งค่า gamerule, จัดสรร kit ให้ผู้เล่นทุกคน |
/addon:uhcstart |
เริ่มเกม — กระจายทีม, เปิด border, เริ่ม countdown |
/addon:uhcreset |
Reset ทั้งหมด — ลบข้อมูลทีม, สถิติ, tag และ scoreboard |
/addon:uhcend |
สิ้นสุดเกมและส่งผู้เล่นกลับ lobby |
/addon:tpa |
เมนู teleport สำหรับ Spectator และ Admin |
| การกระทำ | วิธีการ |
|---|---|
| เปิดเมนูหลัก | ใช้ Compass |
| เข้าร่วม / ออกจากทีม | Compass → Team |
| Admin panel | Compass → Admin (ต้องมี tag admin) |
| Refresh leaderboard | Sneak + interact กับ NPC |
แก้ไขค่าได้โดยตรงในไฟล์ source:
system/border.js
const CHECKPOINTS = [500, 450, 400, 350, 300, 250, 200, 150, 100, 80, 50, 25, 16, 10, 5, 2];
const FIRST_SHRINK_DELAY = 300; // ticks ก่อน shrink ครั้งแรก
const BORDER_RENDER = { VIEW_DISTANCE: 35, PARTICLE_Y: 100 };Manager/TeamManager.js
const TEAMS = [ /* เพิ่ม/ลบทีมได้ที่นี่ */ ];
const CONFIG = { adminTag: "admin", comPass: "uhc" };📦 UHCRun
├── main.js Entry point — import ทุก module
├── system/
│ └── border.js World border, shrink state machine, damage, particle render
├── Manager/
│ ├── TeamManager.js ระบบทีม, kill/death tracking, scoreboard, cache
│ └── Leaderboard.js NPC leaderboard rendering
├── customCommand/
│ ├── command.js Custom command registry
│ └── function.js Command handlers (setup, start, reset, end)
└── plugin/
├── axe.js Custom axe mechanics
├── AutoSmelt.js Auto-smelt เมื่อขุด
├── anticheat_cps.js Anti-cheat CPS detection
├── blockInteractGuard.js ป้องกันการ interact block
├── enchant.js Enchant tweaks
├── fishing_hod.js Fishing HoD mechanic
├── Knockback.js Custom knockback
├── plateKnockback.js Pressure plate knockback
├── projectile_hit_souns.js เสียงเมื่อถูกกระสุน
├── tnt_instant.js TNT จุดระเบิดทันที
└── Util.js Utility functions
system.runInterval (ทุก 20 ticks)
│
├── refreshPlayerCaches() world.getPlayers() → allPlayersCache / uhcPlayersCache
│
├── WorldTick(uhcPlayers)
│ ├── eventBorders() ตรวจสอบ checkpoint timer → applyBorderShrink()
│ ├── updateSmoothBorder() lerp borderRadius → syncWorldBorderGeometry()
│ ├── updateScore() อัปเดต scoreboard เฉพาะ line ที่เปลี่ยนแปลง (dirty-flag)
│ └── BorderTick()
│ ├── handleBorderDamage() ทุก 2 ticks — fog + applyDamage
│ └── renderBorderAABB() ทุก 4 ticks — grouped particle spawn
│
└── PlayersTick(allPlayers)
├── handleGameStart() tick 1–26 เท่านั้น
└── displayGameStart() action bar countdown
| เครื่องมือ | วัตถุประสงค์ |
|---|---|
@minecraft/server 1.26.0 |
Core API — entity, world, event, scoreboard |
@minecraft/server-ui |
ActionFormData menu |
| JavaScript (ESM) | ภาษาที่ใช้ในการพัฒนา |
| DynamicProperty | จัดเก็บข้อมูลทีมและสถิติแบบถาวร |
| Scoreboard | ติดตาม kill แบบ real-time และ leaderboard |
| ส่วนประกอบ | สเปค |
|---|---|
| CPU | Intel Core i5 Gen 11 |
| RAM | 16GB DDR4-3200 |
| Storage | SSD NVMe |
| จำนวนผู้เล่นที่รองรับ | 20–30 คนต่อ session |
| ส่วนประกอบ | สเปค |
|---|---|
| CPU | Intel Core i5-13420H |
| RAM | 32GB DDR5-5200 |
| Storage | SSD NVMe Samsung 512GB |
| GPU | NVIDIA GeForce RTX 4050 Laptop GPU |
1. Setup /addon:uhcsetup → เตรียมระบบเกม โหลดแผนที่ จัดของเริ่มต้น และตั้งค่ากฎของเกม
2. Lobby ผู้เล่นเข้าไปเลือกทีมผ่านเข็มทิศ (Compass)
3. Start /addon:uhcstart → กระจายผู้เล่นแต่ละทีมไปเกิดในแผนที่ และเปิดขอบเขตโลก (500 บล็อก)
4. Shrink ขอบเขตโลกจะค่อย ๆ เล็กลงอัตโนมัติจาก 500 เหลือ 2 บล็อก
5. Combat ระบบนับการฆ่า การตาย และตารางคะแนนจะแสดงผลแบบทันที
6. End /addon:uhcend → ประกาศทีมผู้ชนะ และพาผู้เล่นกลับไปที่ล็อบบี้
7. Reset /addon:uhcreset → ล้างข้อมูลเกมทั้งหมด เพื่อเตรียมเริ่มเกมรอบใหม่
- จำเป็นต้องเปิดใช้งาน Beta APIs ใน Experiments — เป็น requirement ของ Script API
- NPC Leaderboard ต้อง refresh ด้วยตนเอง (Sneak + interact) ไม่รองรับการ update แบบ real-time
- Script API ของ Bedrock ไม่รองรับ persistent world data นอกจาก DynamicProperty — ข้อมูลอาจสูญหายหาก pack ถูก reload ระหว่างเกม
- รองรับสูงสุด 9 ทีม ตามข้อจำกัดของ UI และ scoreboard design
- ระบบทีม 9 ทีม พร้อม Compass menu
- World Border แบบ dynamic shrink ผ่าน checkpoint
- Kill/Death tracking ลง Scoreboard และ DynamicProperty
- NPC Leaderboard (Top Players, Top Teams, Top Deaths)
- Announcer: First Blood, Multi Kill, Kill Streak
- Plugin suite: AutoSmelt, Axe, CPS Anticheat, Enchant, Fishing HoD, Knockback, TNT Instant
- Admin Panel ผ่าน Compass
โปรเจกต์นี้เปิดรับข้อเสนอแนะและรายงานข้อผิดพลาดผ่าน GitHub Issues
หากพบปัญหาหรือต้องการเสนอ feature ใหม่ สามารถเปิด issue ได้เลย
SolightzZ
Minecraft Bedrock Script API Developer
MIT License — ดูรายละเอียดได้ที่ LICENSE