Custom Blocks หรือ "บล็อกที่สร้างเอง" เป็นวิธีที่ยอดเยี่ยมในการเพิ่มเนื้อหาใหม่ๆ ให้กับเกม ในบทเรียนนี้ เราจะมาลองสร้าง "Die Block" (บล็อกลูกเต๋า) ซึ่งมีความพิเศษคือ แต่ละด้านของลูกเต๋าจะมีลวดลายไม่เหมือนกัน (เลข 1-6) และเมื่อถือในมือจะเปลี่ยนเป็นสีแดง!
สิ่งที่คุณต้องเตรียม
- ความเข้าใจเรื่อง Resource Pack และ Behavior Pack (จากบทเรียนก่อนหน้า)
- โปรแกรมแต่งรูป (เช่น Paint หรือ Photoshop) เพื่อทำ Texture ขนาด 16x16
โครงสร้างไฟล์ของคุณควรจะเป็นแบบนี้:
ส่วนที่ 1: Behavior Pack
เริ่มจากสร้างโฟลเดอร์สำหรับ Behavior Pack ใน development_behavior_packs ตั้งชื่อว่า
custom_block_behavior_pack
1. สร้างไฟล์ Manifest
สร้างไฟล์ manifest.json และใส่โค้ดนี้:
{ "format_version": 2, "header": { "description": "Behavior Pack สำหรับบล็อกลูกเต๋า", "name": "Die Block BP", "uuid": "<UUID ที่ 1>", "version": [1, 0, 0], "min_engine_version": [1, 21, 80] }, "modules": [ { "description": "Die Block BP", "type": "data", "uuid": "<UUID ที่ 2>", "version": [1, 0, 0] } ] }
2. สร้างไฟล์นิยามบล็อก (Block JSON)
สร้างโฟลเดอร์ blocks ขึ้นมา แล้วข้างในสร้างไฟล์ชื่อ die.json
ไฟล์นี้จะเป็นตัวกำหนดคุณสมบัติทั้งหมดของบล็อกเราครับ
ให้ก๊อปปี้โค้ดด้านล่างนี้ไปใส่ (โค้ดนี้กำหนดรูปร่างและลายพื้นผิวของแต่ละด้าน):
{ "format_version": "1.21.80", "minecraft:block": { "description": { "identifier": "demo:die" }, "components": { "minecraft:geometry": "minecraft:geometry.full_block", "minecraft:material_instances": { "north": { "texture": "die_3" }, "south": { "texture": "die_4" }, "east": { "texture": "die_2" }, "west": { "texture": "die_5" }, "up": { "texture": "die_1" }, "down": { "texture": "die_6" } }, "minecraft:item_visual": { "geometry": "minecraft:geometry.full_block", "material_instances": { "*": { "texture": "die_red", "render_method": "opaque" } } } } } }
*สังเกตว่าเรากำหนด Texture ให้แต่ละทิศไม่เหมือนกัน และใช้
die_red เวลาถือไอเทม
ส่วนที่ 2: Resource Pack
สร้างโฟลเดอร์ custom_block_resource_pack ใน development_resource_packs
1. สร้างไฟล์ Manifest
สร้างไฟล์ manifest.json และใส่โค้ดนี้:
{ "format_version": 2, "header": { "description": "Resource Pack สำหรับบล็อกลูกเต๋า", "name": "Die Block RP", "uuid": "<UUID ที่ 1>", "version": [1, 0, 0], "min_engine_version": [1, 21, 80] }, "modules": [ { "description": "Die Block RP", "type": "resources", "uuid": "<UUID ที่ 2>", "version": [1, 0, 0] } ] }
2. เตรียมรูปภาพ Textures
คุณต้องสร้างรูปภาพขนาด 16x16 พิกเซล จำนวน 7 รูป ดังนี้:
die_1.pngถึงdie_6.png(รูปหน้าลูกเต๋าเลข 1-6)die_red.png(รูปลูกเต๋าสีแดง สำหรับตอนถือ)
(สำหรับบทเรียนนี้คุณสามารถบันทึกรูปตัวอย่างได้ครับ)
นำรูปทั้งหมดไปวางไว้ที่: custom_block_resource_pack
/textures/blocks
3. กำหนดชื่อ Terrain Texture
สร้างไฟล์ textures/terrain_texture.json เพื่อบอกเกมว่าชื่อ "die_1" คือไฟล์ไหน
ก๊อปปี้โค้ดนี้ไปวาง:
{ "resource_pack_name": "custom_block_resource_pack", "texture_name": "atlas.terrain", "padding": 8, "num_mip_levels": 4, "texture_data": { "die_1": { "textures": "textures/blocks/die_1" }, "die_2": { "textures": "textures/blocks/die_2" }, "die_3": { "textures": "textures/blocks/die_3" }, "die_4": { "textures": "textures/blocks/die_4" }, "die_5": { "textures": "textures/blocks/die_5" }, "die_6": { "textures": "textures/blocks/die_6" }, "die_red": { "textures": "textures/blocks/die_red" } } }
4. กำหนดเสียงให้บล็อก Blocks.json
สร้างไฟล์ชื่อ blocks.json ในโฟลเดอร์หลักของ Resource Pack
(custom_block_resource_pack)
เพื่อกำหนดเสียงเวลาวางหรือทุบบล็อก ในที่นี้เราจะให้มันเสียงเหมือน "หิน" (Stone)
{ "format_version": "1.21.40", "demo:die": { "sound": "stone" } }
5. การตั้งชื่อ
สร้างไฟล์ texts/en_US.lang แล้วใส่ข้อความนี้:
tile.demo:die.name=Die Block
ทดสอบในเกม
เข้าเกม Minecraft สร้างโลกใหม่ (อย่าลืมเปิด Cheat และเปิดใช้งานทั้ง Resource และ Behavior Packs) จากนั้นพิมพ์คำสั่งเพื่อเสกบล็อกออกมา:
/give @s demo:die
คุณจะได้ลูกเต๋าสีแดงมาถือในมือ แต่พอมันวางลงไป มันจะกลายเป็นลูกเต๋าปกติที่มีเลข 1-6 รอบด้าน!
ปัญหาที่พบบ่อย
ถ้าหา Resource Pack หรือ Behavior Pack ไม่เจอ:
- ไฟล์ Manifest: คุณมีไฟล์ manifest ครบถ้วนแล้วหรือยัง?
- การตั้งค่าโลก: คุณได้สร้างโลกโดยเปิดใช้งาน Cheats Enabled แล้วหรือยัง?
- เวอร์ชั่นเกม: คุณกำลังใช้ Minecraft: Bedrock Edition เวอร์ชั่น 1.19.20 หรือใหม่กว่าหรือไม่?
ถ้าพิมพ์หา demo:die ไม่เจอในเกม:
- รูปแบบไฟล์: ตรวจสอบว่าไฟล์ใน Behavior Pack ของคุณเขียนรูปแบบ JSON ถูกต้องหรือไม่?
ถ้า Texture (รูปภาพ) โหลดไม่ถูกต้อง:
- ชื่อไฟล์: ตรวจสอบว่าชื่อไฟล์รูปภาพและข้อมูลในไฟล์
terrain_texture.jsonตรงกับตัวอย่างใน custom_block_resource_pack หรือไม่?
ผลลัพธ์ที่ควรเป็น:
ทีนี้ลองวางบล็อกตรงไหนก็ได้ที่คุณต้องการ ลูกเต๋าจะเป็น สีแดง
เมื่อถือในมือหรืออยู่ในช่องเก็บของ (Hotbar)
เพราะเราตั้งค่า carried_textures ให้ใช้บล็อกสีแดงไว้
แต่เมื่อวางลงไปบนพื้น ด้านต่างๆ จะกลายเป็นลูกเต๋าหลากสีตามที่เรากำหนด
และเมื่อเดินเหยียบบนบล็อกก็จะมีเสียงเหมือน หิน (Stone) ครับ