Cursor UI
แนวคิดแบบเข้าใจง่าย
เมนู Minecraft ปกติเป็นหน้าต่างหีบ แต่ CradGacha สร้างเมนูจาก โฮโลแกรมที่ลอยในโลก และให้ผู้เล่นมี เคอร์เซอร์เมาส์เสมือน ที่ขยับด้วยเมาส์ เหมือน UI บนเดสก์ท็อปเป๊ะ ผู้เล่นชี้ไปที่ปุ่มแล้วคลิก
เพื่อให้รู้สึกถูกต้อง ปลั๊กอินจะ แช่กล้องไว้: ตอนเปิดเมนู วิวของผู้เล่นจะล็อกนิ่ง (เมนูจะได้ไม่สั่น) ขณะที่เมาส์ยังขยับเคอร์เซอร์ได้ การแช่นี้ใช้ packetevents จึงต้องมี packetevents
ศัพท์สำคัญ
| ศัพท์ | ความหมาย |
|---|---|
| เคอร์เซอร์เสมือน | ตัวชี้เล็ก ๆ ที่คุณขยับด้วยเมาส์ ไม่ใช่เป้ากลางจอ vanilla แต่เป็น display entity ที่ปลั๊กอินขยับให้ |
| พื้นที่คลิกได้ | สี่เหลี่ยมล่องหน (hitbox) ที่ผูกกับปุ่ม เมื่อเคอร์เซอร์อยู่ในนั้น = "hover" ปุ่มนั้น |
| Hover | เคอร์เซอร์อยู่บนปุ่ม ปุ่มจะเรืองแสงและมีเสียงติ๊ก |
| Click | คลิกซ้าย/ขวาขณะ hover แอ็กชันของปุ่มจะทำงาน (เลือกตู้/เปิด ฯลฯ) |
| Spectator freeze | เทคนิคล็อกกล้องที่ทำให้วิวนิ่งขณะเมาส์ขยับเคอร์เซอร์ |
คลิกเกิดขึ้นยังไง (เบื้องหลัง)
- เมาส์หมุนหัวคุณ ปลั๊กอินอ่านการหมุนนั้นแล้วขยับเคอร์เซอร์
- ทุก tick มันเช็คว่าเคอร์เซอร์อยู่ในพื้นที่คลิกได้อันไหน
- เมื่อคุณคลิก มันรันแอ็กชันของพื้นที่ที่กำลัง hover
คุณไม่ต้องตั้งค่าอะไรเลย — มันทำงานเอง เลย์เอาต์ (ตำแหน่งปุ่ม) อยู่ใน theme.yml ส่วน ความรู้สึก (ความไว ขอบเขต) อยู่ใน cursor.yml (ดู การตั้งค่า)
ปรับความรู้สึก (cursor.yml)
sensitivity-x: 0.3 # เพิ่มถ้าเคอร์เซอร์ขยับซ้าย-ขวาช้า
sensitivity-y: 0.22
bounds: { min-x: -2.8, max-x: 2.8, min-y: -1.6, max-y: 1.8 } # ระยะที่เคอร์เซอร์ไปได้
smoothing: 0.7 # 1.0 = ทันที/ดิบ, ต่ำลง = ลื่นขึ้น- เคอร์เซอร์ช้า / ไปไม่ถึงขอบ? เพิ่ม
sensitivity-xและ/หรือขยายbounds - เคอร์เซอร์กระตุก? ลด
sensitivityหรือลดsmoothing
ทำไมทุกอย่างสว่าง (ไม่มีโมเดลมืด)
ไอเทมและข้อความในเมนูอาจดูมืดถ้าปล่อยให้แสงในโลกมีผล CradGacha จึงตั้ง display ทุกตัว ให้ สว่างเต็ม 15/15 ในโค้ด ปุ่มและโมเดลรางวัลจึงดูคมเสมอ ไม่ว่าเวลาในเกมหรือผู้เล่นยืนตรงไหน เป็นอัตโนมัติ ไม่มีค่าให้ตั้ง
theme.yml ใน 1 นาที
theme.yml ควบคุม ว่าอะไรอยู่ตรงไหน และ ใช้รูป/ข้อความอะไร คุณย้ายปุ่ม เปลี่ยนข้อความ สลับรูป หรือเพิ่ม element ของคุณเองได้ — โดยไม่ต้องแตะโค้ด หลังแก้รัน /gacha reload
elements:
btn_x10:
type: glyph # glyph (รูป) | text | item
value: g_open_x10 # ชื่อรูป/glyph
x: 1.85 # ซ้าย(-)/ขวา(+)
y: -1.0 # ล่าง(-)/บน(+)
scale: 0.425
action: open_count # คลิกแล้วทำอะไร
param: "{crate}:10" # เปิด 10 ใบของตู้ที่เลือก
hitbox: { w: 0.42, h: 0.16 }ดู reference เต็มที่ THEME-REFERENCE.md ในรากของ repo
ข้อจำกัด (เฉพาะฝั่งเซิร์ฟ)
มาจากการทำ cursor UI บนเซิร์ฟล้วน (ไม่มี client mod):
- เคอร์เซอร์อาจไปไม่ถึง ขอบจอซ้าย/ขวา สุด (การนั่งบนจุดกล้องจำกัดมุมหันหัว) บรรเทาด้วยการเพิ่ม
sensitivity-x/ ขยายbounds - อาจมี ดีเลย์เล็กน้อย (เซิร์ฟอัปเดต 20 ครั้ง/วิ เทียบกับ 60fps ของ client)
- เป้ากลางจอ vanilla ซ่อนจากฝั่งเซิร์ฟไม่ได้ — ทำ
crosshair.pngโปร่งใสใน resource pack ถ้าอยากให้หาย
ถัดไป: หน้าผลรางวัล →