แก้ปัญหา (Troubleshooting)
ขั้นแรกของเกือบทุกปัญหา: รัน
/gacha doctorมันตรวจ packetevents, ItemsAdder, glyph, Vault, ตู้ของคุณ และ resource pack แล้วบอกว่าอะไรผิด
เมนูขึ้นเป็นบล็อกหินสีเทา และ/หรือ ข้อความดิบ (i_token:1, 1, 10)
นี่คือ ปัญหาภาพที่พบบ่อยที่สุด และมีสาเหตุเดียว: asset ของ UI ยังไม่ถูกโหลดสำหรับ item provider ที่คุณใช้ พื้นหลังเมนู ปุ่ม และเคอร์เซอร์ เป็นไอเทม-โมเดล + font glyph ที่มากับ pack ของ CradGacha เมื่อหาไม่เจอ ไอเทม-โมเดลจะ fallback เป็นบล็อกหิน และ glyph จะแสดงเป็น id ดิบ (i_token:1, 1, 10)
ไล่ตามลำดับนี้:
- ไม่มี ItemsAdder / Nexo / Oraxen เลย? ใช้ โหมด vanilla — เอา
pack/vanillaไปวางเป็น resource pack ของเซิร์ฟตามปกติ แล้วตั้งui.item-provider: vanilla(ตัวpack/vanilla/CradGachaตั้งให้แล้ว) เมนูจะ แสดงผลครบ โดยไม่ต้องมี item-provider plugin เลย (ต้อง MC 1.21.4+ และผู้เล่นต้องกดรับ pack) ถ้าตั้งautoไว้ ระบบจะเลือก vanilla ให้เองเมื่อไม่มีทั้ง 3 ตัว - ติดตั้ง pack ให้ตรง provider — เอา pack ที่ตรงกับ item plugin ของคุณ (
pack/itemsadder,pack/nexoหรือpack/oraxen) วางลงในโฟลเดอร์ที่ถูกต้อง (ดู การติดตั้ง) แล้ว rebuild/reload: ItemsAdder ใช้/iazip+/iareload, หรือ reload pack ของ Nexo / Oraxen - ชี้ config ไปที่ provider ที่ถูก — ใน
config.ymlตั้งui.item-providerเป็น provider ของคุณ (itemsadder/nexo/oraxen) หรือปล่อยautoไฟล์theme.yml/cursor.ymlอ้างภาพเป็นprovider:<ชื่อ>(หรือ id ตรงๆnexo:/oraxen:/crad_gacha:) — prefix ต้องตรงกับปลั๊กอินที่ใช้จริง ถ้าใช้ Nexo แต่ config เขียนoraxen:จะเจออาการนี้พอดี - ให้ client รับ resource pack — ผู้เล่นต้องกดรับ resource pack ของเซิร์ฟ (ไม่แน่ใจให้ relog) แล้วรัน
/gacha doctorดูบรรทัด "resource pack" - อัปเดต pack เก่า — ถ้า banner กับการ์ดขึ้นปกติ แต่ พื้นหลัง เป็นหิน แปลว่า pack ของคุณเก่ากว่า tile
menu_background/bg_1..6— ติดตั้ง pack ปัจจุบันจากpack/ใหม่
TIP
ในเวอร์ชันปัจจุบัน ภาพ UI ที่ resolve ไม่ได้จะถูก ซ่อน (เห็นพาเนลดำด้านหลังแทน) ไม่กลายเป็นกำแพงหินแล้ว ดังนั้นถ้าเมนูยังเป็นหินเทาทั้งหมด แปลว่าคุณใช้ jar เวอร์ชันเก่า ด้วย — อัปเดตปลั๊กอินด้วย ส่วน glyph ยังต้องติดตั้ง pack ถึงจะแสดงผลได้
glyph เป็นกล่อง (□ / tofu) — ปุ่ม, pity bar, ไอคอนเงิน
ภาพขึ้นแต่ glyph เป็นกล่องว่าง = font ไม่ตรงกับที่ client โหลด:
- 2 pack ตีกัน (vanilla + provider) ถ้าใช้ vanilla mode แต่ยังมี provider (Nexo/IA/Oraxen) ที่ส่ง pack ของตัวเองมาด้วย ทั้งคู่มี
assets/minecraft/font/default.json→ ของ provider (ที่ไม่มี glyph เรา) ชนะ → tofu เวอร์ชันปัจจุบันย้าย glyph vanilla ไป font แยกcrad_gacha:defaultที่ provider ทับไม่ได้ — อัปเดตปลั๊กอิน แล้วรัน/gacha setupใหม่ - client ไม่รับ pack / ค้างของเก่า ให้ผู้เล่นกดรับ pack (relog) และถ้าแก้ pack hash เปลี่ยน ต้อง relog ให้โหลดใหม่
- แก้เองแล้ว font ผิด namespace glyph อยู่ที่
crad_gacha:defaultอย่าย้ายไปminecraft:defaultเวลามี provider
พื้นหลังเป็นม่วง-ดำ (magenta) ลายตาราง
คือ missing-texture ของ vanilla — texture ของโมเดลไม่อยู่ใน atlas ตั้งแต่ MC 1.19.3 texture ของ item-model ต้องอยู่ในโฟลเดอร์ที่ atlas สแกน vanilla pack วาง texture โมเดลไว้ที่ textures/item/ (source item ครอบให้) แล้วอ้างเป็น crad_gacha:item/<ชื่อ> ถ้าคุณทำ pack เองโดยวาง texture ที่ root ให้ย้ายไป textures/item/ + แก้ ref ในโมเดล หรือ generate ใหม่ด้วย pack/_generate/genpacks.py (ไม่กระทบ ItemsAdder/Nexo/Oraxen — พวกนั้นสร้าง atlas เอง)
Nexo ขึ้น "Texture … has bad resolution-ratio"
เป็น warning INFO ไม่มีปัญหา: texture UI บางตัวไม่ใช่ power-of-two ซึ่งกระทบแค่ mipmap (มองไกล/เล็ก) เมนู ระยะใกล้ไม่เป็นไร ขึ้นเพราะ provider กำลังประมวลผล texture เรา ถ้า fallback เป็น vanilla เพราะ provider incompatible /gacha setup จะ ลบ copy ของ provider ที่ไม่ใช้ทิ้ง เอง warning ก็หาย ไม่งั้นลบ plugins/<Provider>/{items,glyphs}/crad_gacha.yml กับ plugins/<Provider>/pack/assets/crad_gacha/ แล้ว reload provider นั้น หรือปล่อยไว้ก็ได้
ไอเทม Nexo/Oraxen resolve ไม่ได้บน MC เก่า (เมนูเป็นหินบน 1.21.4/1.21.7)
ถ้า console ขึ้น NoClassDefFoundError (เช่น io/papermc/paper/datacomponent/item/Weapon) ตอน CradGacha resolve ไอเทม UI แปลว่า item-provider ของคุณถูก build มาสำหรับ MC ที่ใหม่กว่าเซิร์ฟ ตัวอย่าง Nexo 1.23+ ใช้ component minecraft:weapon ที่มีเฉพาะ 1.21.5+ ดังนั้นบน 1.21.4 พอ build ไอเทม Nexo จะ throw และภาพ UI ทุกตัวว่างเปล่า (เมนูเป็นหิน) — เป็นปัญหา provider↔เวอร์ชัน MC ไม่ใช่บั๊กของ CradGacha
แก้ได้ (เลือกอย่างใดอย่างหนึ่ง):
- อัปเดตเซิร์ฟ ให้ตรงเวอร์ชันที่ provider ต้องการ (Nexo 1.23+ → 1.21.5+)
- ใช้ provider เวอร์ชันที่ build มาสำหรับ MC ของคุณ (Nexo/Oraxen เก่าที่ตรงกับ 1.21.4)
- สลับไปโหมด vanilla —
ui.item-provider: vanilla+ ใช้pack/vanillaเป็น resource pack ไม่ต้องมี Nexo/Oraxen และใช้ได้บน 1.21.4+ เลยข้ามปัญหานี้ไปได้เลย
/gacha doctor จะรายงานเรื่องนี้ และ console บรรทัด Nexo lookup '…' failed: your Nexo version is built for a NEWER Minecraft… จะบอกสาเหตุตรงๆ
ปลั๊กอินไม่โหลด
- ดู console ว่ามี error สีแดงตอนเปิดไหม
- เช็คว่าใช้ Paper 1.21+ (ไม่ใช่ Spigot/Bukkit) และ Java 21+
- เช็คว่า jar อยู่ใน
plugins/และ รีสตาร์ทเต็ม (ไม่ใช่/reload)
คำสั่งใช้ไม่ได้
- คำสั่งแอดมิน (
reload,doctor,token) ต้องมีสิทธิ์cradgacha.admin— เป็นopหรือให้สิทธิ์ (ดู สิทธิ์) - กด Tab หลัง
/gachaเพื่อดูว่ามีอะไรให้ใช้บ้าง
dependency หาย
/gacha doctorจะขึ้น ✗ สีแดงข้างสิ่งที่ขาด- packetevents จำเป็นต่อเมนูเคอร์เซอร์ ถ้าไม่มีเมนูจะเปิดไม่ถูกต้อง
- ItemsAdder ให้รูปภาพ ถ้าไม่มีเมนูจะเป็นกล่อง (□)
- Vault ต้องมีเฉพาะตู้ค่าเปิดแบบ
MONEY
คลิกไม่ติด / ผู้เล่นถูกเตะในเมนู (anticheat)
ถ้าคลิกไม่ติดหลังเปิดตู้ — หรือผู้เล่นหลุด — แสดงว่า anticheat จับ packet ที่เมนูเคอร์เซอร์ใช้ ใน console จะเห็นบรรทัดแบบ Grim » <player> failed PacketOrderB (x20) pre-attack ไต่ขึ้นเรื่อยๆ จนถูกเตะ
CradGacha จะ grant สิทธิ์ยกเว้นชั่วคราวระหว่างอยู่ในเมนู เช็คว่า node ยกเว้นของ anticheat คุณอยู่ใน cursor.yml:
anticheat-exempt-permissions:
- grim.exempt # GrimAC (ค่าเริ่มต้น)
# - <node-ยกเว้นของ-anticheat-คุณ>สิทธิ์เหล่านี้ถูก grant เฉพาะ ตอนเปิดเมนู และเอาออกเมื่อปิด · ถ้า anticheat ใช้ node อื่น เพิ่มตรงนี้ (แล้ว /gacha reload) · grim.exempt ของ GrimAC ใส่ให้เป็นค่าเริ่มต้นแล้ว
ผู้เล่นคนอื่นหลุดตอนมีคนเปิดกาชา
packetevents เก่าเกินไปสำหรับเวอร์ชัน Minecraft ของคุณ · บน MC 1.21.9+ packetevents ก่อน 1.21.9 จะ encode packet ร่างจำลอง (body double) ที่ส่งให้ผู้เล่นข้างๆ ผิด → client ของเขาตัดการเชื่อมต่อทันทีที่มีคนเปิดเมนู
- อัปเป็น packetevents 2.13.0+ (ให้ตรงเวอร์ชันเซิร์ฟ) แล้ว restart + ทดสอบใหม่
- แก้ชั่วคราวได้ด้วย
cursor.body-double: falseในcursor.ymlแต่การอัป packetevents คือการแก้จริง
เส้นดำระหว่าง tile ของพื้นหลัง
ผู้เล่นบางคนเห็นเส้นดำบางๆ ระหว่างรูปพื้นหลังแบบ tile · ผู้เล่นเหล่านั้นใช้ client เก่าต่อผ่าน ViaVersion/ViaBackwards — client เขา render sprite item-display เล็กกว่านิดหน่อยเลยเกิดช่องว่าง
- ตั้ง
background.tiles.overlapในtheme.ymlเป็น1.06(ลอง1.08ถ้ายังมีเส้นบางๆ) · มันขยายเฉพาะรูป tile · spacing เท่าเดิม ผู้เล่นที่ client ตรงเวอร์ชันไม่ได้รับผลกระทบ · แล้ว/gacha reload
มีก้อนหิน/บล็อกลอยกลางเมนู
เป็นได้ 2 สาเหตุ:
- banner ของตู้ชี้ไปไอเทมที่ไม่มี · ถ้า
crates.<id>.banner.item(หรือ icon ของรางวัล) ใช้ id/namespace ที่ pack ไม่มี (เช่นชื่อเก่าcrad_gacha:หรือ prefixoraxen:ทั้งที่ใช้ Nexo) client จะไม่มี model เลยขึ้น บล็อก fallback · แก้ id + prefix (nexo:/oraxen:/itemsadder) ให้ตรง pack แล้ว/gacha reload - บล็อกโลกจริงโผล่ทะลุพื้นหลัง · เพิ่ม
clear-area.forward-distance(เช่น16) ให้เคลียร์กรวยหน้ากล้องด้วย
เมนูเป็นกล่องสี่เหลี่ยม (□) / รูปไม่ขึ้น
แปลว่า resource pack หรือ glyph ยังไม่พร้อม:
- รัน
/gacha doctor— ดูบรรทัด "glyphs registered" และ "resource pack" - ใน ItemsAdder รัน
/iazipแล้ว/iareloadเพื่อ (re)build pack - เช็คว่าผู้เล่น ยอมรับ resource pack ของเซิร์ฟแล้ว (ไม่แน่ใจให้เข้าใหม่)
- เช็คว่า id ของ glyph/รูปใน
theme.ymlตรงกับที่ลงทะเบียนใน ItemsAdder
โมเดล/รูปมืด
ไม่ควรมืด — ปลั๊กอินตั้งความสว่างเต็ม (15/15) ถ้ายังดูแปลก มักเป็นที่ resource pack / โมเดล ItemsAdder เอง (เช่น texture มี shading ติดมา หรือไม่ได้ตั้ง emissive ในโมเดล) ให้ export โมเดล/ texture ใหม่ใน ItemsAdder
รางวัลไม่ออก
- เปิด
crates.ymlเช็คว่าตู้มีrewards:และตู้enabled: true - รางวัลแต่ละชิ้นต้องมี
materialหรือcommandsดู console ว่ามีคำเตือน "Skipping reward" ไหม - ถ้ากระเป๋าเต็ม ไอเทมจะดรอปที่เท้า (มองหาที่พื้น)
- รางวัลที่สุ่มแล้วเก็บใน
pending.ymlถ้าหลุด/ดับ จะได้ตอนเข้าใหม่
ไม่หักเงิน
- ค่าเปิด
MONEYต้องมี Vault + ปลั๊กอินเศรษฐกิจ (เช่น EssentialsX Economy) รัน/gacha doctor - ถ้าปลั๊กอินเศรษฐกิจโหลดหลัง CradGacha ปกติจะตรวจเจอเอง ถ้าไม่ ให้
/gacha reload - ผู้เล่นอาจแค่เงินไม่พอ จะได้ข้อความ "not enough money"
สิทธิ์ไม่ทำงาน
- เช็คว่า node คือ
cradgacha.adminเป๊ะ - ถ้าใช้ LuckPerms:
/lp user <name> permission check cradgacha.admin - operator มีโดยค่าเริ่มต้น แต่ปลั๊กอินสิทธิ์อาจ override ค่าเริ่มต้นได้
เคอร์เซอร์ไปไม่ถึงขอบจอ
เป็นข้อจำกัดฝั่งเซิร์ฟที่รู้กัน (ดู Cursor UI) ใน cursor.yml:
- เพิ่ม
sensitivity-x(เช่น0.3→0.5) - ขยาย
bounds.min-x/max-x - รัน
/gacha reload
ผู้เล่นค้าง spectator / กล้องเพี้ยน
ปลั๊กอินจะคืน gamemode และกล้องเมื่อปิดเมนู และมีไฟล์กู้คืน (gamemode-recovery.yml) ที่ซ่อม คนที่ค้าง spectator หลังเซิร์ฟดับ ถ้ามีคนค้าง:
- ให้เข้าเกมใหม่ (การกู้คืนทำงานตอน join) หรือตั้ง gamemode ด้วยมือ
- เช็คว่า packetevents ติดตั้งและเวอร์ชันใหม่ (2.13.0+ บน MC 1.21.9+)
ร้าน Spark ขึ้นว่ารางวัล "is misconfigured"
spark item ตัวนั้น resolve ไม่ได้ · แต่ละ spark.items ต้อง อ้างอิง ด้วย reward: "<ชื่อรางวัลที่มีอยู่>"หรือ นิยามในตัวเองด้วย name: + item: หรือ commands: · ดู ตู้กาชา → Duplicate & Spark (การจับคู่ชื่อจะตัดโค้ดสี/ตัวพิมพ์/ช่องว่าง เปลี่ยนชื่อแล้วจึงไม่พังการอ้างอิง)
เว็บ GitHub Pages ไม่ขึ้น
- ที่ repo CradGacha-docs ตั้ง Settings → Pages → Source เป็น GitHub Actions ดู เผยแพร่ (GitHub Pages)
- ดูแท็บ Actions ว่ามี run "Deploy Docs (VitePress)" ที่ล้มเหลวไหม แล้วอ่าน log
- หลังเปิดใช้งาน push ขึ้น
main(หรือกด Run workflow) เพื่อ trigger build ครั้งแรก - URL ของเว็บคือ
https://<ชื่อผู้ใช้>.github.io/CradGacha-docs/
ถัดไป: คำถามที่พบบ่อย →