Theo tài liệu tham khảo của Paper, sự khác biệt cốt lõi giữa bukkit.yml và spigot.yml nằm ở nguồn gốc kế thừa và phạm vi điều phối hệ thống: Trong khi bukkit.yml đóng vai trò là tệp cấu hình nền tảng chứa các thiết lập di sản từ CraftBukkit, thì spigot.yml lại tập trung vào các lớp tối ưu hóa hiệu suất và tính năng mở rộng chuyên sâu do Spigot phát triển. Trong phân cấp cấu hình của Paper, việc hiểu rõ ranh giới này là điều kiện tiên quyết để quản trị viên kiểm soát luồng Logic từ các tham số máy chủ cơ bản cho đến các tinh chỉnh hiệu năng phức tạp trước khi áp dụng các lớp tối ưu đặc thù trong paper-global.yml và paper-world-defaults.yml.
world-settings.default.view-distance
view-distance: default
simulation-distance: default
Hai tùy chọn này dùng để ghi đè lên các giá trị tương ứng trong tệp server.properties bạn đã nhập ở trên. Nếu bạn nhập một giá trị cụ thể ở đây, máy chủ sẽ dùng giá trị đó thay vì giá trị trong server.properties. Ngoài ra, quản trị viên cũng có thể tạo cấu hình riêng cho từng world/world_nether/world_the_end để mỗi thế giới có view-distance và simulation-distance khác nhau.
spigot.yml/world-settings.default.mob-spawn-range
Đề xuất: simulation-distance - 1
Tùy chọn này xác định phạm vi (tính theo Chunks) xung quanh người chơi mà máy chủ sẽ thử triệu hồi thực thể. Như đã nói ở phần spawn-limit trong bukkit.yml, bạn có thể chỉnh giá trị này để thay đổi cảm giác mật độ quái nhiều hay ít.
Nguyên tắc chung: Nên đặt tối đa bằng simulation-distance - 1 và tối thiểu là 3, vì những mobs nằm ngoài simulation-distance hoặc sát rìa sẽ không được xử lý (tick), gần như “đứng yên” và trông đần thật sự. Nếu bạn đang dùng simulation-distance mặc định == 10, thì có thể linh hoạt chỉnh mob-spawn-range trong khoảng từ 3 - 8 mà không cần quá cứng nhắc theo quy tắc trên. Nếu đặt mob-spawn-range cao hơn simulation-distance, thực thể sẽ cố xuất hiện ở những khu vực mà máy chủ không xử lý, khiến bạn cảm giác máy chủ chẳng có gì cả. Vì vậy, việc chọn giá trị phù hợp là rất quan trọng để giữ trải nghiệm người chơi ổn định.
spigot.yml/world-settings.default.nerf-spawner-mobs
Đề xuất: true
Tùy chọn này giúp tắt não
của các thực thể được sinh ra từ lồng triệu hồi - Spawner.
Nếu máy chủ của bạn cho phép người chơi lượm được spawner á, việc bật tùy chọn này sẽ góp phần giảm Lag đi đáng kể.Đồng thời, quản trị viên cũng nên bật thêm spawner-nerfed-mobs-should-jump trong tệp paper-world-defaults.yml để quái vẫn có thể nhảy, giúp một số dạng Mob Farm tiếp tục hoạt động, tránh làm người chơi khóc lóc
| [!?] Việc dùng Silk Touch để lấy Spawner nghe thú vị thật, nhưng khi nhiều Spawner tập trung lại một chỗ, chúng rất dễ trở thành nguồn gây Lag cực lớn cho máy chủ. Để đảm bảo hiệu năng lâu dài, tốt nhất vẫn nên hạn chế số lượng trong một khu vực hoặc tắt hẳn tính năng này.
|
spigot.yml/world-settings.default.entity-tracking-range
Đề xuất:
player: 48
animals: 48
monsters: 48
misc: 32
other: 64
simulation-distance - 1. Máy chủ mình chuyên về CustomContent/ Modpack/ Datapack tức phần cứng phải đủ mạnh --> do đó, mình có thể tăng không vượt quá mức (simulation-distance - 1) × 16 để tránh gây ảnh hưởng xấu đến hiệu năng: entity-tracking-range:
players: 128
animals: 32
monsters: 32
misc: 160
display: 160
other: 160
chunk provider tick:tracker stage 1là quá trình theo dõi entitytracker stage 2là quá trình gửi cập nhật entity đến client
Nếu chunk provider tick chiếm nhiều tài nguyên, bạn nên ưu tiên giảm tổng số Entity tại bukkit.yml trước, sau đó giảm simulation-distance. Nếu vẫn chưa cải thiện, lúc đó mới cân nhắc giảm entity-tracking-range như giải pháp cuối cùng.
Ngoài ra, Paper cho phép bạn chỉnh riêng khoảng cách theo trục dọc (Y) của thực thể trong trong tệp paper-world-defaults.yml tại mục entities.tracking-range-y. Việc này, giúp bạn kiểm soát cách thực thể xuất hiện hoặc biến mất nhanh hơn theo chiều cao. Các nhóm Entity trong entity-tracking-range được chia như sau:
- player: người chơi
- monster: quái vật
- animal: dân làng, sinh vật dưới nước và động vật
- misc: item frame, tranh, bảng, vật phẩm rơi, kinh nghiệm
- display: các entity dạng hiển thị của các Plugin chuyên tạo gói tài nguyên
- other: tất cả những gì không nằm trong các nhóm trên (ví dụ: armor_stand, end_crystal)
Đảm bảo thay đổispigot.yml/entity-activation-rangevới giá trị tương đươngentity-tracking-rangeđể quái khum bị ngou trước khi xuất hiện trước mặt ngừi chơi nhen
spigot.yml/world-settings.default.entity-activation-range
Máy chủ mình:
entity-activation-range:
animals: 8
monsters: 24
raiders: 6
misc: 20
water: 5
villagers: 24
flying-monsters: 48
Phần này cực quan trọng vì ảnh hưởng lớn tới các dạng máy Farm phổ biến trong máy chủ của bạn. Tùy chọn entity-activation-range quyết định khoảng cách (tính bằng block) mà thực thể có dùng được não, có vận động gân cốt được hay không. Những Entity nằm ngoài phạm vi này tồn tại như một bóng ma vật vờ không ai để ý tới. Bất kỳ thay đổi nào trong tệp spigot.yml/world-settings.default.entity-activation-range.wake-up-inactive sẽ khiến các dạng máy Farm như Sắt, Dân làng trao đổi sách tự động, Nuôi nhốt Động vật... thay đổi mạnh về sản lượng. Băng ghi hình giải thích chi tiết tại:https://www.youtube.com/watch?v=UBg8wPtk35U
spigot.yml/world-settings.default.entity-activation-range.wake-up-inactive
Đề xuất:
wake-up-inactive:
animals-max-per-tick: 3
animals-every: 2400
animals-for: 90
monsters-max-per-tick: 8
monsters-every: 800
monsters-for: 100
villagers-max-per-tick: 1
villagers-every: 12400
villagers-for: 40
flying-monsters-max-per-tick: 4
flying-monsters-every: 1600
flying-monsters-for: 100
villagers-work-immunity-after: 200
villagers-work-immunity-for: 100
villagers-active-for-panic: true
tick-inactive-villagers: false
ignore-spectators: true
work immunity và wake up inactive được Paper bổ sung nhằm giúp thế giới trong game trở nên “sống” hơn. Cơ chế này cho phép một số thực thể đang ở trạng thái không hoạt động có thể “thức dậy” trong một khoảng thời gian ngắn để thực hiện các hành vi cần thiết. Nhờ đó, những Entity như dân làng vẫn có thể bổ sung lại vật phẩm để trao đổi (restock) hoặc tìm công việc, ngay cả khi trước đó chúng không nằm trong vùng hoạt động đầy đủ. Riêng phần bên dưới, mình có hay áp dụng để giới hạn lại số lượng vật phẩm người chơi máy chủ mình trao đổi được với dân làng và cân bằng với Datapack:villagers-max-per-tick: 2
villagers-every: 12400
villagers-for: 40
tick-inactive-villagers: false
villagers-work-immunity-after: 200
villagers-work-immunity-for: 100
Thiết lập này sẽ dẫn đến hành vi như sau:
Cứ mỗi 12400 tick, máy chủ sẽ chọn ngẫu nhiên tối đa 2 dân làng đang được tải nhưng đã không hoạt động trong ít nhất 200 tick. Những dân làng này sẽ “thức dậy” trong khoảng 40 tick. Trong thời gian đó, dân làng có thể hoạt động bình thường trong khoảng 100 tick và không bị ảnh hưởng bởi trạng thái “đóng băng” khi ở quá xa người chơi.
Dễ hiểu, Dân làng học nghề lâu + thiết lập tick-inactive-villager: false yêu cầu máy chủ ngừng xử lý đối với những dân làng nằm ngoài "khoảng cách kích hoạt" (activation range) của người chơi. Về mặt kỹ thuật, khi người chơi rời xa khu vực dân làng, máy chủ sẽ đưa chúng vào trạng thái đóng băng để giảm tải; tuy nhiên, điều này dẫn đến hai hệ lụy trực tiếp:
- Iron Golem Farm sẽ giảm hiệu suất hoặc ngừng hoạt động vì điều kiện để sinh Golem yêu cầu dân làng phải hoạt động, kiểu như hoảng sợ hoặc đi ngủ, giao tiếp.
- Thời gian làm mới vật phẩm giao dịch (trade cooldown) sẽ bị tạm dừng hoàn toàn nếu không có người chơi AFK gần đấy, dân làng sẽ không bao giờ hồi lại các món đồ đã bán được cả.
Kết quả, tiết kiệm tài nguyên máy chủ và làm chậm lại tiến trình phát triển của người chơi 
spigot.yml/world-settings.default.merge-radius
Đề xuất:
item: 3.5
exp: 4.0
XP in Minecraft is Super WEIRD...
www.youtube.com
config/paper-world-defaults.yml/entities.behavior.experience-merge-max-value để tùy chỉnh sâu hơn giá trị từng hạt có thể gộp được. Ghi nhớ rằng, giá trị quá lớn sẽ khiến vật phẩm bị bug “xuyên tường” để gộp với nhau, vì mặc định Vanilla không có cơ chế kiểm tra va chạm giữa các loại vật thể này, trừ khi bạn bật tùy chọn fix-items-merging-through-walls của Paper.- Tiểu tiết tối ưu hiệu năng
config/paper-global.ymlmisc:
xp-orb-groups-per-area: 60
40) để gộp các hạt kinh nghiệm mạnh tay hơn, đặc biệt với những máy Farm có lượng Exp đầu ra siêu lớn.➜ Chỉnh trong tệp
spigot.ymlplayers: disable-saving: false
true, để tránh việc, dữ liệu người chơi tại máy chủ Lobby này bị lưu mỗi lần thoát ra vào lại.spigot.yml/attribute.maxHealth
attribute:
maxAbsorption: max: 2048.0
maxHealth: max: 9999.0
movementSpeed: max: 1024.0
attackDamage: max: 9999.0
spigot.yml/commands.spam-exclusions
Đề xuất:
commands: tab-complete: 0
send-namespaced: false
log: false
spam-exclusions:
- /function
.ᐟ.ᐟ Máy chủ bạn triển Datapack lặp lại câu lệnh nhiều? Tùy chọn này cho phép bạn liệt kê các tin nhắn hoặc lệnh sẽ được bỏ qua khỏi bộ lọc spam mặc định. Nếu nội dung chat hoặc lệnh bắt đầu giống với một mục trong danh sách này, thì sẽ không bị tính là Spam. Lưu ý, các lệnh phải có dấu
/ ở đầu thì mới được nhận diện nha.spigot.yml/netty-threads
Tham số netty-threads trong spigot.yml quyết định số lượng luồng (threads) CPU được cấp phát cho Netty – thư viện I/O bất đồng bộ chịu trách nhiệm xử lý toàn bộ luồng dữ liệu mạng (packet) vào và ra của máy chủ. Nói một cách dễ hiểu, nó giống như số lượng "nhân viên soát vé" ở cổng kết nối: nếu thiết đặt quá thấp, dữ liệu gửi nhận giữa người chơi và máy chủ sẽ bị nghẽn (bottleneck) dẫn đến tình trạng lag mạng - ping cao, block lag dù tps của server vẫn ở mức 20; ngược lại, nếu đẩy lên quá cao, bạn sẽ làm lãng phí tài nguyên CPU và gây ra độ trễ do hệ thống phải liên tục chuyển đổi ngữ cảnh (context switching) giữa quá nhiều luồng rác. Đối với hầu hết các phần mềm máy chủ, giá trị mặc định là 4 đã được Spigot và Paper tối ưu hóa cực tốt, thừa sức xử lý băng thông cho hàng trăm người chơi cùng lúc. Theo nhận định lâu đời của giới phát triển máy chủ Dev, bạn nên giữ nguyên con số 4 này.
Chỉ trong trường hợp máy chủ của bạn chạy trên máy vật lý có lượng nhân CPU cực khủng 16+ cores và phải gồng gánh một lượng kết nối đồng thời khổng lồ, bị nghẽn I/O rõ rệt qua các bản Spark báo cáo, thì mới nên cân nhắc nhích nhẹ lên6hoặc8.
