การแก้กฎเกมใน level.dat

รองรับ Minecraft Bedrock Edition และ Java Edition — รวมถึงซอฟต์แวร์เซิร์ฟเวอร์ทุกแบบของทั้งสองรุ่น ไม่ว่าจะเป็นที่นิยมหรือเฉพาะทาง: Vanilla, Paper, Spigot, Purpur, Folia, Fabric, Forge, NeoForge, Mohist, Sponge, Bedrock Dedicated Server, PocketMine-MP, Nukkit, PowerNukkitX, Cloudburst, Dragonfly, Endstone, LeviLamina และอื่น ๆ ดูรายการทั้งหมด.

กฎเกมเก็บอยู่ใน level.dat จึงเปลี่ยนได้โดยไม่ต้องโหลดโลกหรือเปิดใช้สูตรโกง เหมาะเมื่อโลกเปิดไม่ได้ ปิดสูตรโกงไว้ หรือกำลังเตรียมสำเนาโลกก่อนให้ผู้เล่นเข้า Java เก็บกฎเป็นสตริงใน Compound GameRules ส่วน Bedrock เก็บแต่ละกฎเป็นแท็ก byte ตัวพิมพ์เล็กแยกกันที่ราก

keepInventorydoDaylightCyclemobGriefingcommandBlockOutputrandomTickSpeed

วาง level.dat ที่นี่

level.dat · .nbt · .mcstructure · .schem · .schematic · .dat · ข้อมูลชังก์ที่แยกออกมา

Java: Compound GameRules ที่เก็บสตริง

ใน Java Edition ตำแหน่ง Data → GameRules มี TAG_String หนึ่งแท็กต่อหนึ่งกฎ ใช้ชื่อเดียวกับคำสั่ง /gamerule ทุกตัวอักษร และเขียนค่าเป็นข้อความ ได้แก่ "true", "false" หรือตัวเลข กฎที่โลกไม่เคยตั้งจะไม่มีแท็กและใช้ค่าเริ่มต้น การเพิ่มแท็กด้วยชื่อที่ถูกต้องและค่าสตริงให้ผลเหมือนการใช้คำสั่ง

กฎค่าผล
keepInventory"true"เก็บไอเทมไว้เมื่อตาย
doDaylightCycle"false"หยุดการเปลี่ยนแปลงของเวลา
doWeatherCycle"false"หยุดการเปลี่ยนแปลงของสภาพอากาศ
mobGriefing"false"ไม่ให้ creeper และ enderman เปลี่ยนบล็อก
doMobSpawning"false"หยุดการเกิด mob ตามธรรมชาติ
doFireTick"false"ไฟหยุดลุกลาม
commandBlockOutput"false"ไม่ให้ command block ส่งข้อความรบกวนในแชต
randomTickSpeed"3"อัตราการเติบโตของพืชและการลามของไฟ
playersSleepingPercentage"50"สัดส่วนผู้เล่นที่ต้องนอนเพื่อข้ามคืน
spawnRadius"10"ขอบเขตพื้นที่เกิด

ตัวพิมพ์เล็กและใหญ่มีผล keepinventory ในไฟล์ Java ไม่ใช่แท็กเดียวกับ keepInventory และเกมจะละเว้น

Bedrock: แท็ก byte ตัวพิมพ์เล็กแยกกัน

Bedrock ไม่รวมกฎไว้เป็นกลุ่ม แต่ละกฎเป็น TAG_Byte ที่รากของ level.dat ใช้ชื่อตัวพิมพ์เล็กและเก็บค่า 1 หรือ 0 ได้แก่ keepinventory, domobspawning, domobloot, dodaylightcycle, doweathercycle, mobgriefing, firedamage, falldamage, drowningdamage, pvp, showcoordinates, commandblockoutput, sendcommandfeedback, naturalregeneration, tntexplodes, respawnblocksexplode, showdeathmessages, doimmediaterespawn ส่วนกฎตัวเลข เช่น randomtickspeed และ functioncommandlimit ใช้ TAG_Int

หากต้องตั้งกฎที่ยังไม่มี ให้เพิ่มแท็กด้วยชนิดที่ถูกต้อง คือ Byte สำหรับค่าที่เปิดหรือปิด และ Int สำหรับตัวเลข กฎที่เก็บด้วยชนิดผิดจะถูกละเว้นหรือทำให้โหลดไม่ได้

กรณีที่แก้ไฟล์ได้ดีกว่าใช้คำสั่ง

  • ปิดสูตรโกงไว้ และไม่ต้องการเปิดแล้วปิดอีกครั้งเพื่อใช้คำสั่งเดียว
  • โลกโหลดไม่ได้ คุณสามารถตั้งกฎ เช่น doImmediateRespawn ก่อนผู้เล่นเข้าครั้งแรก
  • กำลังเตรียมโลกต้นแบบ สำหรับคัดลอกไปยังหลายเซิร์ฟเวอร์ และต้องการให้กฎติดไปกับสำเนา
  • ปลั๊กอินเปลี่ยนกฎ และคุณต้องการดูค่าที่เก็บจริงแทนค่าที่คำสั่งรายงาน
  • แก้หลายค่า การตั้งกฎจำนวนมากในหลายโลกทำในไฟล์ได้เร็วกว่าในแชต

หยุดเซิร์ฟเวอร์ก่อนเช่นเดียวกับการแก้ level.dat ทุกครั้ง โลกที่กำลังทำงานจะเขียนไฟล์ใหม่เมื่อบันทึกและทำให้ค่าที่แก้หายไป

คำถามที่พบบ่อย

ทำไมกฎเกมใน Java จึงเก็บเป็นสตริง

Java เก็บกฎเกมทุกชนิดเป็นสตริง รวมทั้งค่าบูลีนและตัวเลข ให้เขียน "true" ไม่ใช่ byte ค่า 1

ทำไม Bedrock จึงเก็บเป็น byte

Bedrock เก็บกฎแบบเปิดหรือปิดเป็นแท็ก byte ที่ราก และเก็บกฎตัวเลขเป็น int โดยไม่มี Compound GameRules

กฎหนึ่งไม่มีอยู่ในไฟล์เลย

หมายความว่ากฎนั้นใช้ค่าเริ่มต้น ให้เพิ่มแท็กด้วยชื่อที่ตรงทุกตัวอักษรและชนิดที่ถูกต้อง แล้วโลกจะใช้ค่าของคุณ

กฎเกมถูกคัดลอกไปพร้อมโฟลเดอร์โลกหรือไม่

ใช่ กฎอยู่ใน level.dat โลกที่คัดลอกจึงรับกฎไปพร้อมกับชื่อโลกเดิมที่ยังค้างอยู่

เครื่องมือที่เกี่ยวข้อง