Bỏ qua để đến nội dung

Paper global

Phần 3.5.2Kiểm chứng 2026-07-22

Chunk loading, item validation, block update và packet limiter toàn máy chủ.

Trước khi đọc
  • Dùng Paper hoặc fork tương thích
Hoàn thành khi bạn có thể
  • Cấu hình giới hạn packet
  • Đánh giá rủi ro của thiết đặt global
5 đề mục15 hình7 đoạn mã~8 phút đọcXem nguyên tác ↗
Trở về Thiết đặt hiệu năng
Tùy chỉnh cách đọc
Trong trang này4 đề mục
  1. paper-global.yml/chunk-loading-advanced
  2. paper-global.yml/item-validation.book
  3. paper-global.yml/block-updates.disable-noteblock-updates
  4. paper-global.yml/packet-limiter

Vẫn đang quằn quại giữa đống file .yml của Paper đó hả:-@? Để mình "khai sáng" cho cái tư duy này một chút, chứ để đằng ấy tự mò chắc tới mùa quýt sang năm vẫn chưa xong cái máy chủ bất ổn này mất :D
Nếu ở đằng trước, paper-world-defaults.yml là Khuôn mẫu cho đám đệ tử của từng thế giới world/ world_nether/ world_the_end học theo, thì paper-global.yml chính là Nóc nhà của cả hệ thống ❕ Thằng này chính là Tổng Tư Lệnh, quản lý những thứ mang tính chất vĩ mô, ảnh hưởng đến toàn bộ cái máy chủ từ đầu đến cuối mà không phân biệt World nào cả. Những thiết lập ở đây một khi đã chỉnh là áp dụng cho cả server, không có chuyện "con yêu con ghét" giữa các thế giới đâu nha❕

paper-global.yml/chunk-loading-advanced

Mã:
chunk-loading-advanced:
  auto-config-send-distance: true
  player-max-concurrent-chunk-generates: 3
  player-max-concurrent-chunk-loads: 9
chunk-loading-basic:
  player-max-chunk-generate-rate: -1.0
  player-max-chunk-load-rate: 75 - 85.0
  player-max-chunk-send-rate: 50 - 65.0
chunk-system:
  io-threads: 2 hoặc 40% CPU Threads bạn có
  worker-threads: 3 hoặc 55% CPU Threads bạn có
Đằng ấy cứ tưởng tượng việc tải khu vực mới tựa như như việc order trà sữa vậy, máy chủ là quán, còn người chơi là khách. Nếu khách đặt quá nhanh mà quán làm không kịp thì "toang" là cái chắc :( .ᐟ player-max-concurrent-chunk-generates + player-max-chunk-generate-rate == tạo mới Chunk (generation), đây là một trong những vấn đề cực hình của quản trị viên khi thiết đặt này tiêu tốn một lượng vô cùng lớn tài nguyên CPU chỉ để máy chủ vừa chạy vừa "vắt óc" suy nghĩ xem địa hình tiếp theo trông thế nào.
1784115966874.webp

Nếu người chơi bay vèo vèo bằng Elytra vào vùng đất mới chưa có ai đi vô, máy chủ sẽ khóc thét :(( Quản trị viên nên rước trước Chunky / Chunksmith để tạo sẵn (Pre-generate) toàn bộ bản đồ thường xuyên có thần dân cư trú, trước khi mở cửa máy chủ. Khi đó, thần dân bay qua giống như việc lấy dữ liệu từ ổ cứng ra thôi, nhẹ nhàng hơn hẳn. Vài viễn cảnh và hướng giải quyết đối với tốc độ tải thế giới:
1776634683611.webp
  1. Bắt bệnh cho đường truyền và phần cứng ⤷ Nếu đã Pre-gen mà vẫn lag, thì khả năng cao là do những thiết đặt trở về trước của máy chủ có vấn đề:
    ˚˖ ᵎᵎ Anti-Xray:
    Như mình đã nói tại paper-world-default.ymlengine-mode 2 làm dữ liệu phình to ra, thử thay đổi sang mode-1 hoặc mode-3 xem có mượt hơn không nhé.

    ˚˖ ᵎᵎ Netty Threads:
    Nếu dùng /spark health --thread * mà thấy mấy cái luồng Netty đỏ lừ, hãy cân nhắc tăng netty-threads trong spigot.yml (nhưng chỉ khi CPU đằng ấy còn dư sức thôi nhá) .ᐟ

    ˚˖ ᵎᵎ Disk I/O: Nếu dùng ổ cứng HDD thời "đồ đá" hoặc nhà cung cấp host rẻ tiền bị giới hạn tốc độ ghi, thì việc tải chunk sẽ chậm như rùa bò ạ❕
  2. Hung thần Elytra
    Mấy bạn trẻ bây giờ thích bay cao bay xa bằng Elytra và pháo hoa, làm máy chủ phải gửi hàng nghìn chunks một lúc. Cách xử lý thì có phần hơi suc' vat^. tí, bạn có thể tham khảo cách máy chủ mình đang áp dụng:

    Thiết lập nền kinh tế elytra: biến Elytra thành vật phẩm kinh tế quý hiếm, tăng giá trị cho những người chơi đã bỏ công sức săn lùng elytra trong End, ví dụ như:
Mã:
'8':
material: ELYTRA
        buy: 2888888 # Giá trị ngang ngửa 36 tiếng chơi liên tục của người chơi
        stock-limit-global: 3
        dynamic-pricing:
          enabled: true
          side: BUY
          min-price: 2888888
          max-price: 8888888
        breakpoints:
          - threshold-global-bought-percent: 0.3
            buy-price: 5555555
          - threshold-global-bought-percent: 0.7
            buy-price: 8888888
        refill-stock: true
        displaylore:
          - "&7Hàng giới hạn &f3 cái/tuần&7."
          - "&7Khi có người mua, kho toàn cầu sẽ giảm."
restock-cron: "0 40 4 ? * SUN"

➜ Không Giữ kho đồ - keep_Inventory tại các khu vực The End.
➜ Sử dụng Plugin/Datapack thay đổi cơ chế sản sinh địa hình hoặc Elytra của khu vực The End :-B

➜˚˖ ᵎᵎ purpur.yml/world-settings.default.gameplay-mechanics.elytra thiết đặt như sau:
Mã:
elytra:
        damage-per-second: 1.8
        damage-multiplied-by-speed: 0.7
        damage-per-boost:
          firework: 1.9
          trident: 1.8
        kinetic-damage: true
damage-per-second + damage-multiplied-by-speed + damage-per-boost giúp im lặng giảm độ bền của vật phẩm Elytra khi sử dụng, theo cách không một thần dân nào để ý được.

➜˚˖ ᵎᵎ Nếu máy chủ bạn có cài LagFixer, thì có thêm modules như AbilityLimiter.yml giúp giảm tốc độ + mất thêm độ bền Elytra khi bay trong không gian:
Mã:
AbilityLimiter:
  enabled: true
  worlds:
    - '*'
  values:
    elytra_boost:
      cooldown: 0.5
      speed_multiplier: 0.75
      additional_durability_loss: 1
    trident_riptide:
      cooldown: 1
      speed_multiplier: 0.85
      additional_durability_loss: 5

3. Khi người chơi Bedrock bị văng thường xuyên hoặc Ping cao Đôi khi không phải do máy chủ, mà do... máy quá yếu:
  • Client "cùi bắp": Paper gửi chunks nhanh đến mức máy người chơi không xử lý kịp, bảo tụi nó giảm view-distance xuống hoặc cài mấy cái mod tối ưu hiệu năng ạ. Cực kỳ khuyến khích Fabulously Optimized hoặc Thong Nhat Optimized

4. Phương pháp "Binary Search" cho Plugin/Datapack
Dò xem Plugins/Datapack nào ảnh hưởng tới cách máy chủ vận hành, chia đôi danh sách plugin ra. Chạy thử 1 nửa. Nếu hết lag thì lỗi nằm ở nửa kia. Tiếp tục chia đôi nửa bị lỗi cho đến khi tìm ra "kẻ phản diện".ᐟ

Đừng bao giờ nghe ba cái hướng dẫn tào lao trên mạng rồi chỉnh thông số linh tinh. Nếu không hiểu mình đang làm gì, tốt nhất hãy giữ nguyên mặc định hoặc lên kênh #paper-help tại PaperMC mà hỏi các bậc tiền bối nhé <3

paper-global.yml/item-validation.book

Mã:
item-validation:
  book:
    author: 256
    page: 8192
    title: 256
  book-size:
    page-max: 100
    total-multiplier: 2.0
  display-name: 256
  lore-line: 512
  resolve-selectors-in-books: false
Đây là phần siêu dễ bị lợi dụng để nhân bản đồ, cũng hay ảnh hưởng tới Datapack nhất. Các thông số trên sẽ bảo vệ máy chủ bạn khỏi BookDupe, hoặc cần thiết thì triển ngay PacketBooks plugin cho tiện việc sao lưu dữ liệu từng quyển sách của người chơi.

paper-global.yml/block-updates.disable-noteblock-updates

Đề xuất: false
Đây là tùy chỉnh tắt đi tính năng cập nhật nốt nhạc của khối NoteBlock, Note Block sẽ trở nên "điếc" hoàn toàn với thế giới xung quanh. 100% làm hỏng máy Farm người chơi khi quản trị viên bật tính năng này, bù lại những plugins chuyên tạo gói tài nguyên như Nexo / Craft-Engine sẽ sử dụng được 1024 trạng thái của NoteBlock để tạo ra những vật phẩm/khối tùy chỉnh đa dạng.
premade-png.673076

paper-global.yml/packet-limiter

Giải thích rõ hơn từng khái niệm tại: https://minecraft.wiki/w/Java_Edition_protocol/Packets

Mã:
Dành cho bản <1.21.x
packet-limiter:
  all-packets:
    action: KICK
    interval: 7.0
    max-packet-rate: 500.0 # Giảm từ 3000 xuống 500. (500 là mức an toàn được PaperMC khuyến nghị).
    kick-message: <red><lang:disconnect.exceeded_packet_rate>
  overrides:
    ServerboundCommandSuggestionPacket:
      action: DROP
      interval: 1.0
      max-packet-rate: 30.0 # Nâng nhẹ lên 30 để người chơi gõ phím nhanh không bị khựng gợi ý chat.
    ServerboundPlaceRecipePacket:
      action: DROP
      interval: 4.0 # Đổi chu kỳ đo lường về 4 giây để xử lý linh hoạt hơn.
      max-packet-rate: 18.0 # Cho phép 18 lần click sách chế tạo/giây. Hack thường spam hàng trăm lần/s mới gây lag + chơi tay nhanh.
Cái packet-limiter này chính là lớp giáp đầu tiên bảo vệ máy chủ khỏi mấy thanh niên thích dùng bản hack để gửi hàng triệu yêu cầu - packets tí hon về máy chủ trong một giây nhằm làm sập hệ thống Exploit/DoS. Dễ hiểu, cơ chế này hoạt động như một cái máy lọc: Bạn đặt ra một hạn ngạch, ví dụ 500 packets trong mỗi 7 giây. Nếu người chơi nào vượt quá ngưỡng này, máy chủ sẽ thực hiện hành động chính là KICK để tống cổ kẻ tình nghi ra khỏi máy chủ ngay lập tức trước khi kịp làm nghẽn CPU❕ Điểm đáng nói nằm ở chỗ overrides. Minecraft có một số thao tác đặc biệt như ServerboundPlaceRecipePacke , khi người chơi nhấn từng vật phẩm bàn chế tạo một cách siêu nhanh, sẽ rất dễ thành ra spam để gây Lag toàn bộ cư dân khác. Việc tách riêng hệ thống này ra để kiểm soát chặt hơn, giúp quản trị viên chặn đứng các bản hack "Recipe Crash" mà không làm ảnh hưởng đến trải nghiệm của những người chơi chân chính khác .ᐟ
Mã:
> Máy chủ mình
packet-limiter:
  kick-message: <red><lang:disconnect.exceeded_packet_rate>
  limits:
    all:
      action: KICK
      interval: 7.0
      max-packet-rate: 500.0
    ServerboundCommandSuggestionPacket:
      action: DROP
      interval: 1.0
      max-packet-rate: 30.0
    ServerboundPlaceRecipePacket:
      action: DROP
      interval: 4.0
      max-packet-rate: 18.0
Lớp giáp thứ hai, có thể kể đến các Plugins như LPX hoặc AnarchyExploitFixes / ExploitFixer bảo vệ toàn diện máy chủ bạn khi đạt ngưỡng 40+ người chơi.
Giải thích chi tiết tại: