- Tham gia
- 20/06/2018
- Bài viết
- 17
Đây là bài viết dài (wall-of-text), chứa nhiều kinh nghiệm/dữ liệu có chắt lọc/quan điểm cá nhân. Hỗ trợ bạn trong 1 - 3 tháng đầu phát triển máy chủ Minecraft.
Hướng dẫn này được viết theo dạng walkthrough, nghĩa là, sẽ dẫn dắt người đọc từng bước nâng cao thực lực cá nhân. Mục tiêu chính không phải giúp máy chủ phát triển cái vèo 50 người chơi
/đạt hiệu năng cao ngay lập tức, mà là giúp người đọc hiểu được hệ thống bên trong máy chủ hoạt động như thế nào - rồi từ đó phát triển ĐAM MÊ của riêng bạn nhanh như cách người yêu cũ trở mặt. Mình là Minh, hay được biết đến với TranNhatMinhxD hay Bạn gái tôi đá tôi ngã sõng soài, mình đã có 3 tháng kinh nghiệm trong lĩnh vực phát triển máy chủ Minecraft, viết nên bằng chính những kinh nghiệm và tâm huyết của mình cho cộng đồng, hi vọng nó sẽ hữu ích cho các bạn.
0. TABLE OF CONTENTS - Nội dung
---
Từ khóa | Giải ngố | ||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
xử lý bất đồng bộ, thay vì chạy trên luồng xử lý chính. | |||||||||||||||||||
fork | phiên bản riêng tách ra từ dự án gốc. | ||||||||||||||||||
chuỗi xử lý. | |||||||||||||||||||
điểm nghẽn. Đọc chi tiết hơn tại Performance Optimization 101 | |||||||||||||||||||
workload | khối lượng công việc mà máy chủ phải xử lý. | ||||||||||||||||||
luồng xử lý. | |||||||||||||||||||
vùng độc lập - một khu vực nhỏ trong thế giới Minecraft. | |||||||||||||||||||
tick | nhịp xử lý liên tục. Minecraft chạy trên một phần mềm lặp lại tác vụ, mỗi "tick" xảy ra, game (và máy chủ) sẽ xử lý những công việc như:
... và còn rất nhiều nữa tại TMC - GameTick. | ||||||||||||||||||
tps | số lần cập nhật mỗi giây. Viết tắt của Tick Per Second, Minecraft chạy ổn định ở 20 TPS == 50ms. TPS càng thấp sẽ khiến máy chủ bạn giật kinh hồn.
| ||||||||||||||||||
MSPT | Viết tắt của milliseconds per tick, là thời gian game cần để xử lý 1 tick (trong số 20 tick kia). MSPT ổn định sẽ ≤ 50ms
| ||||||||||||||||||
| ping | độ trễ, thời gian tính bằng mili giât để một gói dữ liệu chạy từ máy người chơi đến máy chủ rồi dội ngược lại. Khoảng cách địa lý giữa hai bên càng xa thì thời gian chạy càng lâu.
|
1. INTRO - Mở đầu
Về cơ bản, sẽ không bao giờ có một hướng dẫn nào có thể cho bạn kết quả hoàn hảo tuyệt đối.
Mỗi máy chủ đều có nền tảng và giới hạn riêng về việc quản trị viên sẵn sàng “hy sinh” bao nhiêu trải nghiệm người chơi để đánh đổi lấy tính năng. Khi áp dụng những gì được viết từ hướng dẫn này, bạn nên coi mỗi thay đổi là một “giả thuyết”: thay đổi X sẽ cải thiện Y. Sau đó, thử quan sát với các công cụ Gỡ lỗi - Debug riêng, hành vi người chơi than phiền, và tệp ghi chép dữ liệu máy chủ - Log... để xác nhận giả thuyết đó có đúng không nhé!
Cấu hình và lộ trình phát triển tối ưu sẽ phụ thuộc vào nhiều yếu tố như phần cứng máy chủ, số lượng người chơi trung bình, và thể loại đang phát triển... Một máy chủ sinh tồn Vanilla đông người, PvP mạnh tay sẽ cần có thiết đặt hoàn toàn khác so với một máy chủ cực nặng Modpack/Entity Model vắt khô chất xám người chơi.
Vì vậy, việc sao chép thiết đặt mà bạn A kêu ổn, studio B kêu nhẹ gánh khi bạn không hiểu cơ chế của chúng, sẽ dễ dẫn đến tình trạng “tối ưu sai chỗ”, thậm chí làm máy chủ oẳng nhanh hơn. Hãy luôn lưu lại một bản sao lưu đề phòng hư hại có thể xảy ra nhé.2. Preparations - Chuẩn bị
Với những người có nền tảng kinh tế eo hẹp như chủ thớt, thì việc duy trì máy chủ Minecraft phiên bản hiện đại, >1.16.4 ở cấu hình mặc định - đòi hỏi phần cứng đủ xịn, là điều khó có thể xảy ra. Trong trường hợp này, mình cân nhắc sử dụng các giải pháp và hệ thống thay thế để phát triển ổn định hơn, chẳng hạn như:
2.0. Essential Tools & Knowledge - Công cụ / Kiến thức cơ bản cần thiết
- Tư duy - Học cách sử dụng:
NBTExplorer cho phép bạn thay đổi các mã nguồn của tệp thế giới hoặc dữ liệu người chơi.
Piskel / BlockBench vẽ gói đồ họa cho máy chủ của bạn.
Spark / mclo.gs -- đây là profiler-tools giúp gỡ lỗi, kiểm tra và phân tích những tác vụ, ứng dụng, hoạt động đang sử dụng tài nguyên của hệ thống và phân tích điểm nghẽn.
Google để hỏi những câu bạn chưa biết.
Docs / Wiki mà Dev của hệ thống bạn sử dụng đã dày công viết ra.
AI để giải thích giống diễn đàn Reddit r/explainlikeimfive khi bạn vẫn chưa hiểu hoặc cần gỡ lỗi từ mclo.gs
Con người
Kiến thức hệ thống + tìm kiếm thông tin cơ bản | Đam mê với những điều mới + Lộ trình - Roadmap rõ ràng |
|---|---|
|
|
- Trí tuệ nhân tạo/Học máy sẽ giảm đi 70% đầu việc của bạn nếu biết triển khai:
Học nền tảng của thầy Andrew Ng bên Coursera
Hướng dẫn viết lệnh AI - Giải thích ngữ cảnh, viết Promt chuẩn chỉnh xíu.
claude.md - Triển khai công việc đã xử lý dưới dạng .md thay vì tốn thêm token giải thích lại ngữ cảnh.
Agency Agent - Phân đầu việc cho từng hệ thống AI riêng.
Deep Wiki - Dạng “wiki thông minh”, sử dụng công nghệ để tự động đọc và tóm tắt nội dung (như code, tài liệu, dự án), rồi biến chúng thành tài liệu dễ hiểu.
...
2.1. Server software JAR - Phần mềm máy chủ
Được phát triển bởi PurpurMC, tách ra từ dự án gốc - Paper fork, để phát triển thành phiên bản riêng, thiên về tính năng nhiều hơn là tối ưu. Sở hữu nhiều tính năng hấp dẫn như EnderChest 54 slots, tinh chỉnh kích thước động vật, cho phép tùy chỉnh nhiều khía cạnh về trải nghiệm người chơi. Mã nguồn gần như sẽ là nền tảng cho rất nhiều dự án bạn sử dụng sau này.
Phù hợp cho 10 --> 28+ người chơi.- Leaf
Leaf là một lựa chọn máy chủ hướng tới việc cân bằng giữa hiệu năng, khả năng mở rộng và tiện lợi cho người vận hành, tối ưu sâu vào bên trong để giảm tải xử lý và cung cấp thêm công cụ như Pufferfish & Sentry giúp quản trị viên kiểm soát máy chủ tốt hơn. Leaf không chỉ tối ưu mà còn "hồi sinh" những tính năng Paper đã lỡ tay làm mất hoặc hạn chế. Đây chính là chân ái dành cho những bạn trẻ rỗng túi như mình, cũng là nền tảng mình sẽ đi sâu vào hướng dẫn lần này.
- Fork: CraftBukkit --> Spigot --> Paper --> Purpur --> Leaf
Khi nhìn vào Leaf, bạn có thể hiểu nó như một phiên bản máy chủ được xây dựng dựa trên Paper nhưng được “độ lại” để vừa tối ưu hiệu năng, vừa mở rộng thêm nhiều khả năng tùy biến. Cải tiến ở nhiều điểm quan trọng như:
- Xử lý bất đồng bộ - Async cho hệ thống tìm đường của thực thể, quái xuất hiện, Chunk được tải...
- Hỗ trợ các giao thức Mods đặc biệt như Litematica, AppleSkin, Map.
- Sử dụng định dạng Region tuyến tính - Linear region file Format, để tiết kiệm dung lượng lưu trữ.
- Chống SeedCracker - chặn việc bị người chơi phát hiện Hạt giống thế giới.
...
> Một phần khối lượng công việc được tách ra khỏi bộ xử lý chính để giảm tải, giúp máy chủ chạy mượt hơn trong nhiều tình huống.
Phù hợp cho 29 --> 79 người chơi.
- Fork: CraftBukkit --> Spigot --> Paper --> Folia
Đây là phần mềm thay đổi hoàn toàn cách mà một máy chủ Minecraft vận hành ở cấp độ lõi. Thay vì coi toàn bộ thế giới là một khối, Folia chia thế giới thành các “independent region”- các vùng hoạt động độc lập, được tạo ra bằng cách nhóm các khu vực Chunk đang được tải, lại gần nhau. Mỗi Region này sẽ có vòng lặp tick riêng, và vẫn chạy ở tốc độ chuẩn20 tpsgiống Minecraft Vanilla. Điểm khác biệt nằm ở chỗ, nếu một máy chủ có nhiều người chơi phân tán khắp thế giới và bạn sử dụng Folia ấy, hiệu năng lúc này sẽ cải thiện rõ rệt vì các đầu việc được chia nhỏ hơn rất nhiều, phân bổ vào một thread pool (tập hợp nhiều threads) và thực thi song song.
Dù vậy, nhược điểm sẽ là:
- Việc thiết kế Plugin dành cho phần mềm máy chủ này do đó cũng trở nên phức tạp hơn. Vì không còn một thread trung tâm, các Event và thao tác với dữ liệu trò chơi phải đảm bảo an toàn giữa nhiều thread (thread-safe). Nếu Plugin bạn cài không được thiết kế cho môi trường này, có thể xảy ra lỗi race condition (tranh chấp dữ liệu) hoặc toang máy chủ ngay lập tức.
- Đắt xắt ra miếng: Trung bình cần nền tảng kiến thức nhất định về quản lý hệ thống, cùng số tiền bỏ ra để duy trì phần cứng không hề rẻ có thể làm bạn lỗ ròng vài tháng đầu phát triển, tối thiểu cần CPU 16 cores.Thấp hơn vẫn có thể hoạt động, không hề khuyến khích.
- Nếu người chơi tập trung đông ở một khu vực, thì toàn bộ workload vẫn bị dồn vào một region duy nhất, và khi đó phần mềm này lại quay về giới hạn gần giống mô hình Paper truyền thống.
Hiểu đơn giản: Folia giúp máy chủ chạy nhanh hơn bằng cách chia việc ra cho nhiều “luồng xử lý” làm cùng lúc, nhưng đổi lại, mọi thứ phải được tổ chức cẩn thận hơn rất nhiều để không bị “giẫm chân nhau” cùng hẻo.
Phù hợp cho 80 --> 400+ người chơi.Fork: Forge/Spigot/Paper/Atom/Thermos/um_bukkit --> Mohist
Fork: Forge/CraftBukkit/Spigot --> Arclight
Cho phép bạn dùng được Mods thuộcFabric /NeoForgesong song với Bukkit/Spigot/Paper plugins.
Vấn đề với Mohist- Fork riêng tư trả phí để tùy chỉnh riêng, ví dụ UniverseSpigot = $70
Bạn có tiền sao, đọc bài viết này đây chi
!!! "Lưu ý": Các phần mềm được Fork “mạnh tay” từ Paper hoặc Purpur thường sẽ dễ phát sinh vấn đề về độ ổn định, nhất là khi bạn muốn can thiệp sâu vào cách Plugin hoạt động. Phần mềm càng thay đổi sâu, càng có nhiều thay đổi vào hệ thống lõi, tức là cách xử lý Tick, Event, hoặc Thread có thể đã bị chỉnh sửa khác với chuẩn ban đầu, nếu những thay đổi này không được kiểm soát tốt, chúng có thể tạo ra lỗi khó gỡ hoặc xung đột với hệ thống dữ liệu bạn đang có sẵn. Tuyệt đối không /reload những plugins can thiệp sâu vào cơ chế trải nghiệm của người chơi - gameplay, trong khi máy chủ còn đang chạy. Một phần là trạng thái cũ của Plugin (dữ liệu, task trong thread) không được dọn dẹp hoàn toàn, dẫn đến việc rò rỉ bộ nhớ -
memory leak có thể từ từ OOM Kill máy chủ của bạn khi tràn Ram. Phần còn lại là những lỗi hành vi bất thường "ngẫu nhiên" không dự đoán được có thể làm máy chủ bạn sập ngay lập tức!!!2.2. Hosting - Chạy máy chủ ở đâu?
Đây là một danh sách gồm những lựa chọn phổ biến khi đề cập đến việc chạy một máy Minecraft, xếp từ vừa túi tiền cho đến xịn xò con bò rồi củ chuối nhất. Mở máy chủ cho người Việt thì cứ táng Host trong nước hoặc bét nhất là Tân Ba Gia / HongKong, đừng dại rước máy chủ tận Châu Âu về rồi bắt ae chịu khổ.
2.2.1. Lưu tâm về Host nước ngoài & Host Việt Nam
- Minh bạch về thông tin cấu hình phần cứng.
Điểm yếu của Minecraft là chỉ chạy trên 1 nhân của CPU, tức là nếu CPU bạn có 69 nhân, thì Minecraft cũng sẽ chỉ chạy trên duy nhất 1 nhân (Không được nhầm lẫn với luồng đâu ạ, Minecraft có hỗ trợ chạy đa luồng nha), CPU lí tưởng sẽ là CPU có hiệu năng đơn nhân tốt và xung nhịp khỏe (từ 2.7 Ghz trở lên), tham khảo CPU Benchmarks + So sánh của Copilot để biết thêm! Để có hiệu năng tốt, nên tránh các CPU quá cũ, ví dụ trước dòng Ryzen 3000.
> Từng khái niệm về CPU, RAM, Disk bạn cần hiểu sẽ có trong giáo trình đại học môn CEA201. Cá nhân mình ưu tiên Gigahertz Myth, tức đời CPU mới chuyên dành cho Gaming và những bên Hosting có Docs chia sẻ rõ thông tin.
- Hỗ trợ tùy chỉnh JVM và Docker Image (ví dụ Aikar’s Flags)
Không bắt buộc, nhưng một nhà cung cấp host tốt thường cho phép bạn tự chỉnh các tham số cờ JVM và đồng ý cung cấp cả
Đừng ngại hỏi thẳng nhà cung cấp về vấn đề này. Nếu họ không hỗ trợ thiết lập, không thèm phản hồi hoặc không cho bạn sử dụng toàn bộ tài nguyên CPU/RAM đã mua
thì đó là dấu hiệu nên cân nhắc lại nhé. Đặc biệt để tâm tới sftp nếu như bên Hosting không hỗ trợ, ví dụ của PikaMC:
Và có hỗ trợ - Bloom:
Docker Image - Java Software nếu cầu thiết, bao gồm nhưng không giới hạn ở việc đặt Xmx == Xms. Ví dụ của UltraServer tạo có hệ thống tạo JVM giúp mình:Đừng ngại hỏi thẳng nhà cung cấp về vấn đề này. Nếu họ không hỗ trợ thiết lập, không thèm phản hồi hoặc không cho bạn sử dụng toàn bộ tài nguyên CPU/RAM đã mua
thì đó là dấu hiệu nên cân nhắc lại nhé. Đặc biệt để tâm tới sftp nếu như bên Hosting không hỗ trợ, ví dụ của PikaMC:Và có hỗ trợ - Bloom:
- Có thông tin trạng thái node công khai
Nhà cung cấp Host nên có trang hiển thị tình trạng máy chủ theo thời gian thực (CPU, RAM…), việc này sẽ giúp quản trị viên có cái nhìn minh bạch hơn và ước lượng được
Thậm chí, có nhiều nhà cung cấp còn hỗ trợ chuyển tệp sftp miễn phí giữa các pterodactyl panel, cực kỳ hay ạ. Ví dụ của bên Lagless/Bumboo:
Hoặc DuckPanel thông qua hệ điều hành Mac/Linux của Bloom:
node mình thuê có đang bị “nhồi” quá nhiều máy chủ và người dùng hay không. Nếu có tụt tps, ping cao mấy ngày đầu mua ấy, thì vô tư tạo Phiếu Ticket hỗ trợ mà bồi hoàn lấy node mới thoai.Thậm chí, có nhiều nhà cung cấp còn hỗ trợ chuyển tệp sftp miễn phí giữa các pterodactyl panel, cực kỳ hay ạ. Ví dụ của bên Lagless/Bumboo:
Hoặc DuckPanel thông qua hệ điều hành Mac/Linux của Bloom:
- Chống DDoS
Hầu hết các Host chất lượng đều có chống DDoS (tấn công từ chối dịch vụ phân tán) là kiểu tấn công làm máy chủ bị quá tải bằng cách gửi rất nhiều yêu cầu giả cùng lúc từ nhiều nguồn khác nhau... Giống như có hàng nghìn người giả vờ truy cập cùng lúc, khiến máy chủ “nghẽn” và người chơi thật không vào được hoặc bị giật Lag, thậm chí sập thẳng cẳng. Ví dụ với ZynHost:
- ĐIỀU KHOẢN DỊCH VỤ rõ ràng & Chính sách quyền riêng tư minh bạch
[!!!] Cực kỳ quan trọng nhé.
Thường bạn nên để ý tới chính sách SLA - được hoàn tiền bao nhiêu ngày sau khi đưa vào sử dụng.
- Nước ngoài 48h - 1 tuần.
- VN tầm 48h - 72 tiếng. Ví dụ của MineVN Cloud:
Và hoàn được bao nhiêu ngày/tiền khi xảy ra sự cố DDOS/phía ngoài. Ví dụ của bên dptcloud trước khi đóng:
Thường bạn nên để ý tới chính sách SLA - được hoàn tiền bao nhiêu ngày sau khi đưa vào sử dụng.
- Nước ngoài 48h - 1 tuần.
- VN tầm 48h - 72 tiếng. Ví dụ của MineVN Cloud:
Và hoàn được bao nhiêu ngày/tiền khi xảy ra sự cố DDOS/phía ngoài. Ví dụ của bên dptcloud trước khi đóng:
- Số Port bạn được tạo - Port AllocationMấy cái số Port này nhìn vậy chứ là linh hồn của máy chủ đó nha. Nó quyết định mọi thứ từ địa chỉ máy chủ - IP chính, giúp anh em hệ Bedrock vào chơi chung, cho đến việc có chỗ mà quảng cáo miễn phí trên mấy trang Voting hay tự duy trì máy chủ chạy Resource Pack. Ở Việt Nam mình, mua host thường được tặng sẵn 1 - 3 port. Gặp đúng nhà cung cấp có tâm, như Lagless, là họ mở thêm, thậm chí cho bạn lựa số đẹp miễn phí nữa nhé

- Hỗ trợ khách hàng
Đội ngũ hỗ trợ nhanh và có kiến thức là một điểm cộng lớn. Khi gặp sự cố, việc được hỗ trợ kịp thời có thể tiết kiệm cho bạn rất nhiều thời gian và công sức. Ví dụ của Bumboo Hosting - một bên Host của Việt Nam hỗ trợ nhiệt tình thật sự:
Phản hồi từ các bên thứ 3
Là quan điểm cá nhân, cũng là một trong những bên mình hay đi cào dữ liệu để tìm nơi thiết đặt máy chủ nhất, thường mình sẽ lấy từ các nền tảng Facebook -> Discord -> Reddit. Không đúng cũng không sai, và mình không muốn phạm phải sai lầm như những quý khách hàng khác đã gặp phải.
2.2.2. Choosing a Host - Lựa chọn nơi đặt máy chủ.
Nhìn chung, nếu một nhà cung cấp Hosting đáp ứng được hầu hết các tiêu chí trên, thì đó đã là một lựa chọn khá ổn cho máy chủ của bạn. Nhớ là, những dịch vụ đạt đủ các tiêu chuẩn này thường sẽ có giá cao hơn mặt bằng chung nhen. Hãy cân nhắc kỹ nhu cầu và ngân sách, vì trong trường hợp này, tiền nào của nấy.
Đừng ham rẻ, cái giá phải trả sau này (lag, crash, mất dữ liệu…) thường còn đắt hơn nhiều.
Xịn nhất trong các lựa chọn mình liệt kê tới, yêu cầu có kĩ năng quản trị hệ điều hành Linux tối thiểu, nếu muốn, bạn có thể chọn OVH & Hetzner
> Khả thi với máy chủ
> Khả thi với máy chủ
~60+ người chơi.- Shared host - Cùng "chia sẻ" tài nguyên với các máy chủ khác
Phần lớn các cộng đồng hoặc máy chủ Minecraft mà bạn thấy trên thị trường Việt Nam (khoảng 10–240 người chơi) đều thuộc nhóm này, và thường được quản lý thông qua Pterodactyl Panel. Đây có lẽ là phần dễ gây rối nhất khi chọn Hosting vừa phù hợp nhu cầu, vừa phù hợp túi tiền - người đọc sẽ gặp rất nhiều thuật ngữ quảng cáo như CPU cực mạnh, Ram nhiều, hay nâng lẻ phần cứng được...
[!!!]Bỏ qua đi
Bạn nên sử dụng danh sách ở phần 2.2.1. để đánh giá nhà cung cấp, những bên đáp ứng đầy đủ các tiêu chí đó thường sẽ có giá nhỉnh hơn một chút mà đổi lại là uy tín về hiệu năng & hỗ trợ bài bản. Bạn có thể tham khảo trước ý kiến tại các bên như LeafMC / Minemumi / Cộng đồng Minecraft Hosting & Cloud...
[!!!]Bỏ qua đi
Bạn nên sử dụng danh sách ở phần 2.2.1. để đánh giá nhà cung cấp, những bên đáp ứng đầy đủ các tiêu chí đó thường sẽ có giá nhỉnh hơn một chút mà đổi lại là uy tín về hiệu năng & hỗ trợ bài bản. Bạn có thể tham khảo trước ý kiến tại các bên như LeafMC / Minemumi / Cộng đồng Minecraft Hosting & Cloud...
Với tay mơ như mình, hiện tại đang ưu tiên Host ngoại --> Host vật lý bên Việt Nam khi đã phát triển đủ mạnh.
Thứ tự ưu tiên với Host ngoại theo quan điểm cá nhân mình:
- UltraServer - Bên Ấn Độ, hàng của Ấn Độ thì rẻ, dư ổ đĩa, hông chê được
- Lagless - Khi mình đang cải thiện mã nguồn của gói dữ liệu Datapack thì được nhà phát triển bên này gửi tặng promote giảm 30% + 10% lần đầu mua. Nhân sự hỗ trợ mình đổi Port miễn phí, hướng dẫn kiểm tra kết nối mạng từ phía VNPT/FPT và tận tình chuyển node giúp mình khi cụm Asia bị đầy
Thứ tự ưu tiên với Host Việt Nam theo quan điểm cá nhân mình:
- MineVN Cloud - Phát triển bởi đội ngũ nhân sự của MineVN mà mình dành phân nửa thanh xuân trong máy chủ này, nên cam kết về chất lượng kỹ thuật. Hạ tầng thì mình chưa thử
- ZynHost / Luminecloud - AsakaCloud là tiền thân của ZynHost / Luminecloud biết cách tiếp thị và cập nhật nhanh thông tin nội bộ hệ thống.
- BumbooHosting / ZenCheap(oẳng) - Hỗ trợ nhiệt tình ạ.
- Hypercore - Phù hợp với máy chủ chuyên dành cho PC Java - chặn Geyser(Bedrock) tại thời điểm mình viết bài.
- DiHoaCloud / GachCloud / PikaMC / StaCloud - Mình host cho Bot bên Discord là chính.
- VPS - Virtual Private Server
Nghe thì có vẻ hời, nhưng thực chất thì VPS sẽ có thể không bằng Shared host, vì phần lớn VPS hiện tại trên thị trường Việt Nam chỉ tập trung vào phân khúc web-hosting, vậy nên tài nguyên (CPU, RAM...) thường sẽ đắt mà kém hơn, khiến cho trải nghiệm của người dùng bị tệ đi rất nhiều, khả thi nhất thì còn tuỳ theo loại VPS mà bạn chọn. Nếu quyết định theo hướng này, hãy tìm VPS chuyên dụng để host máy chủ Game, thay vì những VPS để host web. Bạn có thể làm được những việc mà Shared host không bao giờ làm được, như:
- Sử dụng tập lệnh CPU nâng cao giúp tăng tốc các tác vụ tính toán như MobAI, Pathfinding;
- Tối ưu tập lệnh SIMD;
- Giảm độ trễ truy cập bộ nhớ RAM (máy chủ vật lý Linux);
- Sử dụng CPU Cache hiệu quả hơn cho các máy chủ vật lý có nhiều cache CPU;
- Tối ưu Java Native Interface;
- Sử dụng FPU để tăng tốc các tác vụ cần floating points;
- Tối ưu JIT compilation cho phép khởi động máy chủ nhanh hơn;
- Sử dụng bộ random generator mới của Java 21+, nhanh hơn so với Vanilla cho tác vụ như tạo địa hình và load chunks (1.20.4+);
- Tối ưu riêng cho hệ thống Linux (máy chủ vật lý).
- Kernel Level Optimization (Linux).
- Budget Host - Rẻ hơn Shared Host, và tất nhiên là tệ hơn
Nhà cung cấp sẽ cố gắng nhồi nhét càng nhiều máy lên 1 máy có thể càng tốt, kiểu như nhét người vô xe khách dịp Tết vậy, đây chính là lý do mà dạng này rẻ hơn shared-host, đơn giản vì ít máy = ít chi phí hơn.
Thường chi nhiều tiền cho quảng cáo hơn là chất lượng dịch vụ của chính họ + nhắm đến những con mồi nhẹ dạ cả tin, có thể nhận biết như sau:
Thường chi nhiều tiền cho quảng cáo hơn là chất lượng dịch vụ của chính họ + nhắm đến những con mồi nhẹ dạ cả tin, có thể nhận biết như sau:
- Model CPU được đề cập xàm chó đến trên các gói dịch vụ
- Các gói được bán phân chia theo số lượng người chơi tối đa
- Quá 10GB RAM thì bắt đầu bán RAM theo GB
- "Lưu trữ không giới hạn"
- Discount "Chỉ còn lại hôm nay" nhưng quanh năm vẫn thấy
- Có
-Xms=128Mtrong JVM startup flag
- Summerhost - Đứa con ghẻ của Budget Host
Thuật ngữ "Summerhost" ám chỉ những host "sớm nở, chóng tàn", mọc lên vào mùa hè khi mà nhu cầu cho máy chủ Minecraft tăng cao đột biến, chờ đến khi nhu cầu giảm thì cho sập, đợi đến năm sau thì thay tên đổi họ nhưng thực chất chỉ là "bình mới rượu cũ".
Tốt nhất là nên tránh xa ra, vì loại host này có thể sập bất thình lình và đưa cả toàn bộ công sức của bạn xuống mồ chung với nó.
Tốt nhất là nên tránh xa ra, vì loại host này có thể sập bất thình lình và đưa cả toàn bộ công sức của bạn xuống mồ chung với nó.
- Free Host - Tệ nhất của những thứ tệ trong danh sách
"Nếu bạn không trả tiền cho sản phẩm, bạn chính là sản phẩm ở đây"
Với chiến thuật tiếp thị "ở đây miễn phí", để chỉ phải chi rất ít chi phí, trong khi chia rất ít tài nguyên cho rất nhiều người. Lấy ví dụ như Aternos và ServerPro, chúng đều có rất, rất nhiều hạn chế, như là JVM flags, tệp thiết đặt - config files, plugins, server JAR, không thể nhập/xuất file ra, vân vân và mây mây. Bạn đang tự nhảy vào hệ sinh thái và tự biến mình thành một món hàng trên kệ cho họ bán.
> Danh sách để bạn tham khảo, nếu bạn thật sự muốn chạy thử: https://github.com/Myuui/Free-Minecraft-Hosts + https://panel.lemem.dev/
- Self host - Tự triển máy chủ vật lý tại nhà
Mình thường sử dụng để phát triển dự án cá nhân và kiểm thử phần mềm trước khi đẩy lên hệ thống chính. Có kha khá Máy chủ Việt Nam đang sử dụng theo hướng này và vẫn duy trì đến thời điểm hiện tại.
Hướng dẫn cơ bản hoặc bạn có thể xem thực hành với Oracle Free Tier tại:
Hướng dẫn Port forward, hoặc là Google Cách mở port router ""Model router của bạn";
Khi tự host máy chủ trên máy tính cá nhân, bạn nên tháo GPU rời nếu CPU có đồ họa tích hợp hoặc bo mạch chủ hỗ trợ chạy không cần GPU, vì GPU vẫn tiêu thụ điện đáng kể dù không sử dụng và gần như không cần thiết trong môi trường chạy không màn hình (quản lý qua SSH hoặc tương tự). Việc sử dụng mạng riêng ảo có thể giúp giảm độ trễ nhờ kết nối trực tiếp vào hạ tầng mạng chính, thay vì phải đi qua nhiều lớp trung gian giữa các nhà mạng tại Việt Nam. Hiển nhiên, một máy tính cá nhân không chạy máy chủ Minecraft vẫn có thể dùng khoảng
2GB dữ liệu trong 6 giờ với tốc độ mạng 600Mbps; mà với máy chủ Minecraft cộng đồng ấy, thì con số này sẽ tăng lên nhiều lần, va phải mục tiêu của tấn công DDoS sẽ nhanh chóng đẩy cái giới hạn trần này tới tận 20TB băng thông.hóa đơn tiền điện cứ thế mà tăng brr brr...
2.3. Human - Đối tác / Cộng tác viên / Nhân sự /Suc' va^.t
Làm việc với con người thật sự rất khó. Sau đây là vài ví dụ khi niềm tin của người phát triển đặt sai chỗ:
|
Bạn của mai sau rất có thể sẽ góp mặt trong mớ hỗn độn này, nếu không dành thời gian để bảo vệ sản phẩm chất xám cá nhân. Có thể kể tới những phương án bảo vệ như:
- Làm rõ nội dung Brief công việc được giao, đảm bảo Điều khoản dịch vụ / Chính sách quyền riêng tư của máy chủ bạn đang phát triển sẽ hỗ trợ trong quá trình làm việc/chấm dứt làm việc. Dùng đại GPT quét qua một lượt văn bản + Chính sách của những máy chủ Minecraft lớn thường sẽ có những thông tin này để bạn tham khảo.
- Đọc trước Luật lao động 2019 + Luật dân sự 2015. Văn bản, thỏa thuận cùng Bằng chứng phát triển sẽ là những thứ hỗ trợ cho bạn rất nhiều khi cần đòi lại công bằng.
- Tham khảo list-of-shame-mcvn & list-of-shame + listofshame++, trong này sẽ chứa những khái niệm liên tục xảy ra và lặp lại trong suốt lịch sử phát triển của Minecraft Việt Nam.
- Lựa chọn người quản lý thật sự đam mê với tựa Game này và có trình độ nhất định ngoài đời:
-
Tin người ít thôi, làm gì cũng cần chừa đường lui cho bản thân. Sản phẩm bạn phát triển hay đến mấy, một khi dính đến tiền bạc sẽ có những người muốn học theo và đạp thẳng lên công sức của bạn.
Tin người ít thôi, làm gì cũng cần chừa đường lui cho bản thân. Sản phẩm bạn phát triển hay đến mấy, một khi dính đến tiền bạc sẽ có những người muốn học theo và đạp thẳng lên công sức của bạn.
3. Setup - Thiết đặt
Mẫu với phần mềm máy chủ Leaf 1.21.11 bản Stable 22/04/2026 thiết đặt tham khảo trước:
- purpur.yml | |
- spigot.yml | |
- bukkit.yml | |
- server.properties | |
- gale-global.yml | |
- gale-world-defaults.yml | |
- leaf-global.yml | |
- paper-global.yml | |
- paper-world-defaults.yml | |
[!!!] Khuyến khích tạo thêm tệp paper-world.yml tại thư mục world_nether |
Mẫu với phần mềm máy chủ Folia 1.21.11 thiết đặt tham khảo trước:
- https://spark.lucko.me/5Us40AInJY
-
pufferfish.yml thiết đặt tương tự leaf-global.yml3.0. Tài nguyên tham khảo
Ngoài các danh mục mình khuyến khích đọc hiểu tại 2.0, bài viết từ bên dưới trở đi sẽ được tham khảo thêm với các nguồn:
- Dữ liệu Discord / Facebook Group / Youtube của những máy chủ lớn tại Việt Nam tính tới thời điểm viết bài.
- Dữ liệu 3.200+ người từng chơi máy chủ mình.
Để xác định được máy chủ của bạn có phát triển mượt mà sau khi thay đổi thiết đặt như trên hay khum, quản trị viên vẫn nên đầu tư thời gian để chăm sóc
nhân sự/ cộng tác viên/ người chơi:- Spark - Gần như là công cụ đi liền với bạn trong toàn bộ quá trình phát triển máy chủ.
Không cần đọc hiểu hết, chỉ cần thu nhập dữ liệu --> Có đường dẫn công khai - Link --> Chuyển toàn bộ báo cáo Spark Profiler sang định dạng .json --> Quăng lên cho Gemini Pro/Copilot phân tích từng khái niệm --> AI sẽ giải thích 24/7 cho bạn. - 24 - 72h đầu quan sát phản hồi người chơi.
3.1. Giải thích các khái niệm và lý do mình đặt vậy
3.1.1. JVM startup flags - Cờ JVM phù hợp
- Docker Image: Khuyến khích bản Java ổn định nhất như Amazon Corretto --> GraalVM (Bản Enterprise) -> Eclipse Adoptium
> Tham khảo bài viết giải thích chi tiết các khái niệm của meowice-flags dành cho SMP.
> Tham khảo v2flags dành cho máy chủ / Client chiến Modpack cực nặng.
Ram thì đừng ăn quá, máy chủ Minecraft chỉ nên lấy 80%. OS, JVM, spike / buffer còn dùng thêm RAM ngoài phần bạn cấp như Metaspace (class) Thread stack Buffer, cache nội bộ. Để quá = Tràn Ram khi vượt ngưỡng = OOM Killer sập máy chủ ngay lập tức. Plugins nhiều như máy chủ mình ==
70%Leaf cũng có một bài viết chi tiết + vài Flag thú vị mình có sử dụng. Mẫu của máy chủ mình đang dùng với Amazon Corretto:
JSON:
-XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 -XX:G1HeapRegionSize=16M -XX:G1NewSizePercent=28 -XX:G1MaxNewSizePercent=50 -XX:G1ReservePercent=15 -XX:G1HeapWastePercent=5 -XX:G1MixedGCCountTarget=4 -XX:G1MixedGCLiveThresholdPercent=90 -XX:G1SATBBufferEnqueueingThresholdPercent=30 -XX:InitiatingHeapOccupancyPercent=45 -XX:MaxTenuringThreshold=1 -XX:SurvivorRatio=32 -XX:+UseStringDeduplication -XX:+DisableExplicitGC -XX:+UseLargePages -XX:+UseTransparentHugePages -XX:LargePageSizeInBytes=2M -XX:ReservedCodeCacheSize=512M -XX:AllocatePrefetchStyle=3 -XX:+TieredCompilation -XX:TieredStopAtLevel=4 -XX:-DontCompileHugeMethods -XX:MaxNodeLimit=240000 -XX:NodeLimitFudgeFactor=8000 -XX:+OptimizeStringConcat -XX:+PerfDisableSharedMem -Dgale.log.warning.offline.mode=false -Dgale.log.warning.root=false -DGeyser.RakGlobalPacketLimit=100000 -DGeyser.RakPacketLimit=1500 -DGeyser.RakRateLimitingDisabled=true -Djava.awt.headless=true -Djava.net.preferIPv4Stack=true -DLeaf.disable-vanilla-profiler=true -DLeaf.enableFMA=true -Dpaper.explicit-flush=true -Dpaper.playerconnection.keepalive=180 -Dsun.net.maxDatagramSockets=16384 -Dterminal.ansi=true -Dterminal.jline=false
-DGeyser.RakGlobalPacketLimit-DGeyser.RakPacketLimit-DGeyser.RakRateLimitingDisabled
là các cờ Geyser mình thêm, khi nhà cung cấp Host bên Việt Nam gặp tình trạng RakPacketLimit với người chơi Bedrock.Mẫu dành cho máy chủ LocalHost kiểm thử tính năng mới, đang dùng với BellSoft:
YAML:
@echo off
java -Xms900M -Xmx900M ^
-XX:+UseG1GC ^
-Djava.awt.headless=true ^
-jar leaf.jar nogui
PAUSE
Các công cụ mình thường sử dụng để xác định chuẩn sau 1 tuần thử nghiệm:
- GC log (Nhật ký Garbage Collection) trong Java là công cụ chẩn đoán hiệu năng quan trọng, ghi lại hoạt động dọn dẹp bộ nhớ của JVM, giúp xác định lỗi bộ nhớ, tối ưu hóa thời gian tạm dừng - pauses và theo dõi sử dụng heap.
- JDK Mission Control
- GC log (Nhật ký Garbage Collection) trong Java là công cụ chẩn đoán hiệu năng quan trọng, ghi lại hoạt động dọn dẹp bộ nhớ của JVM, giúp xác định lỗi bộ nhớ, tối ưu hóa thời gian tạm dừng - pauses và theo dõi sử dụng heap.
java -Xlog:gc*:file=gc.log:time,uptime,level,tags:filecount=10,filesize=100M -jar server.jar- JDK Mission Control
3.1.2. Fundamentals - Nền tảng
Không tải trước thì sao? --> Người chơi vừa vào khám phá, tạo nhiều khu vực mới --> tụt tps máy chủ trầm trọng. Giải thích rõ hơn tại QnA của Chunky.- View Distance và Simulation Distance - Chunk
| Simulation Distance | View Distance |
|---|---|
Rất quan trọng vì ảnh hưởng trực tiếp đến tps của máy chủ. Mặc định Vanilla là 10 chunks, và cực nhiều máy Farm trên mạng cũng được thiết kế theo mức này. Thông thường, để 5 chunks để vẫn chơi thoải mái, nhưng nếu bạn làm SMP hoặc Skyblock thì có thể để thấp hơn nữa.
| Chủ yếu ảnh hưởng đến việc bạn nhìn xa hay gần. Tăng lên sẽ giúp cảnh đẹp hơn, nhưng sẽ tốn thêm RAM phía máy chủ, khuyến khích hỗ trợ phía Client người chơi sử dụng những Mods như Bobby, Voxy để tăng tầm nhìn trong máy chủ lên tận 1200+ chunks.
|
Quản trị viên còn có thể chỉnh riêng các thông số này cho từng thế giới - world, world_nether, world_the_end trong tệp
spigot.yml --> server.properties cấu hình, không cần tất cả phải giống nhau. Tổng hoạt động của Chunk - ServerChunkCache.tick() mà bạn đọc được trong Spark nên < 30% toàn thời gian- Giữ số lượng Entity ở mức hợp lý / LagMachine cơ bản
[!!!] Đây cũng là mô hình gây Lag phổ biến nhất mà bất kỳ người chơi nào trong máy chủ của bạn cũng có thể áp dụng, có thể kể đến như:
| Tập trung Thuyền/Khung vật phẩm | Đá đỏ, máy đẩy - Redstone/Piston hàng loạt | Thác Snowball |
|---|---|---|
|
| |
|
|
Để kiểm tra và tìm nguyên nhân gây lag, Spark sẽ giúp quản trị viên xem cái gì đang làm máy chủ chậm và kiểm tra xem các thay đổi đằng ấy chỉnh có hiệu quả hay không. Tổng hoạt động của Entity -
EntityTicksList.forEach() mà bạn đọc được trong Spark nên < 30% toàn thời gian. Nếu vượt quá, máy chủ sẽ bắt đầu chậm lại.- Hiểu cách quái xuất hiện
Băng ghi hình giải thích rõ chi tiết từng khái niệm với Python 
|
Nói đơn giản: quái chỉ xuất hiện ở một khoảng cách nhất định, và càng xa bạn thì chúng càng “ít hoạt động” hoặc biến mất luôn.Vanilla / Paper mặc định nếu bạn không đổi gì --> Sẽ Lag khi đông người chơi Bạn có thể dùng lệnh /paper mobcaps và /paper playermobcaps để xem chi tiết về cách mob xuất hiện quanh người chơi. Giải thích chi tiết hơn trong technical minecraft Discord - TMC
|
- Griefing - Suc' vat^. đi phá hoại
Các phương thức Griefing (phá game) là hành động cố tình gây khó chịu, quấy rối hoặc phá hoại trải nghiệm chơi của người khác trong Minecraft. Sau khi xem nhiều phương tiện đại chúng về việc “Hủy diệt” các máy chủ Pay to Win + Không luật lệ + SMP trên nền tảng YouTube, một bộ phận không nhỏ người chơi Việt Nam có xu hướng thử áp dụng lại các cách đó lên những máy chủ có cấu hình hoặc quản lý chưa tốt
| Thác đá cuội = Dung nham + Nước | TNT / end_crystal / respawn_anchor | Cheater - Gian lận |
|---|---|---|
|
|
|
Thường thấy nhất do dễ làm, dễ ức chế người chơi và cực tốn thời gian phá đi == AntiLavaCast là được ![]() | Không ai thích công trình tâm huyết của mình biến mất sau một đêm cả. | Hack Client, Bypass, UUID Proof, Exploit khai thác lỗ hổng... |
-- Cay không? Cay chứ - Quản trị viên có thể áp dụng những cách thức sau để giảm thiểu hậu quả:
| Hướng giải quyết | Ưu / Nhược điểm | Minh họa |
|---|---|---|
| CoreProtect -- Khôi phục nguyên trạng AntiLavaCast | -Hoàn trả đồ bị mất, công trình trở về như mới, truy vết câu lệnh người chơi sử dụng. Mò lại Lịch sử dấu chân Internet - Digital Footprint của người chơi từ phá hoại công trình tới lấy trộm vật phẩm, tương tác động vật + Addons kết hợp nhiều.- Docs dễ hiểu, cộng đồng - Dev hỗ trợ nhiệt tình. - Cơ sở dữ liệu - Database vì thế cũng Ưu điểm ở trên mà PHÌNH TO siêu nhanh, chiếm trọn dung lượng lưu trữ vốn ít ỏi của máy chủ bạn. Mặc định để SQLite, nên khi >18 người chơi cùng tương tác, sẽ tụt tps đi một ít. Quản trị viên cần có thời gian thiết đặt tệp config.yml, Database chuyển từ SQLite mặc định --> MariaDB, quản lý thông qua phpmyadmin.- Cần có thời gian hướng dẫn nhân sự máy chủ sử dụng. Staff mà lười tìm hiểu lịch sử khu vực cần khôi phục, dùng lệnh ngay --> sẽ dẫn đến tình trạng nhân bản Vật phẩm - Item Dupe. | Ưu tiên cho những máy chủ SMP nhỏ, Quản trị viên muốn dành thời gian tương tác với người chơi.
|
| GriefPrevention / Land -- Người chơi chiếm trọn một khu vực | Không cần cơ sở dữ liệu, người chơi dùng vài câu lệnh đơn giản là xong, tích hợp GUI đồ họa nhìn chiến đét Kết hợp với hệ thống Rank, quản trị viên có thể rao bán đặc quyền nhất định.NBT / Datapack / Vật phẩm tùy chỉnh có thể không bảo vệ được. Người mới vào, sẽ bị khu vực được chiếm của người đi trước cản trở. | Máy chủ đông, Staff muốn phát triển sâu tính năng.
|
| Rules/Code of Conducts -- Luật bảo vệ tài sản người chơi | Người chơi biết đọc là hiểu. Giá xăng tăng làm con người ta quên mất con chữ. | |
| AntiCheat -- Chặn suc' vat^. | Bảo vệ 80 - 90% máy chủ của bạn. 20 - 10% còn lại. | Gần như ai cx bít rùi :^) |
- gamerule - thiết lập quyền kiểm soát trò chơi
| Dưới đây là vài gamerule thường dùng trong các máy chủ SMP/Chill | Vui lòng đọc trước cập nhật tại https://minecraft.wiki/w/Game_rule |
|---|---|
elytra_movement_check | Gợi ý: falseTùy chọn này quyết định việc máy chủ có kiểm tra tốc độ di chuyển của người chơi khi họ đang sử dụng elytra hay không. Bật lên thường giúp giảm hiện tượng giật, rung khi bay do lag trong môi trường nhiều người chơi. |
fire_spread_radius_around_player | Gợi ý: 0Tùy chọn này kiểm soát khoảng cách tối đa (tính bằng block) mà lửa có thể lan ra xung quanh người chơi. Nếu đặt là -1 thì lửa có thể lan không giới hạn khoảng cách. |
immediate_respawn | Gợi ý: trueHồi sinh ngay lập tức, không có màn hình lý do hẻo. |
keep_inventory | Giữ lại kho đồ khi hẻo. |
locator_bar | Hiển thị vị trí người chơi hoặc vật thể trên thanh kinh nghiệm. |
player_movement_check | Gợi ý: falseTùy chọn này quyết định việc máy chủ kiểm tra tốc độ di chuyển của người chơi. |
players_sleeping_percentage | Bao nhiêu % người chơi cần đi ngủ để chuyển sang ban ngày. Nếu đặt bằng 0, chỉ cần 1 người ngủ là đủ để trời sáng ngay lập tức. Nếu đặt lớn hơn 100, mọi người cùng mất ngủ. |
respawn_radius | Phạm vi (tính bằng số block) xung quanh xuất phát điểm của thế giới mà người chơi có thể xuất hiện khi lần đầu vào máy chủ hoặc khi hẻo mà không có điểm hồi sinh riêng. |
3.1.3. Thiết lập máy chủ cơ bản
Quản trị viên chưa có kinh nghiệm nên thử trước với việc mở máy chủ cá nhân - Self-host tại máy tính nhà hoặc Free-host trên mạngSau khi đã có 30 phút kinh nghiệm nhất định, bạn có thể:
- Làm quen với Pterodactyl Panel - Nền tảng Website, đa dụng nhưng có giới hạn tải tệp/thư mục lên
Hướng Dẫn Setups Server Sinh Tồn PE PC Chơi Chung Với Các Lệnh TPA, Sethome,...
Bạn đang muốn mở server Minecraft Sinh Tồn cho PE (Bedrock) và PC (Java) chơi chung?Trong video này, mình sẽ hướng dẫn setup server chi tiết từ A–Z, phù hợp ...
www.youtube.com
- Học cách sử dụng WinSCP - Kết nối và Quản lý tệp tin máy chủ Minecraft thông qua
sftp / ftp
- Hướng dẫn thiết đặt Plugins vào máy chủ - KanCI Gamer
- Mở Port - Mở cổng kết nối cho người chơi tham gia
HƯỚNG DẪN MỞ PORT SERVER MINECRAFT 2025 | TÊN MIỀN MIỄN PHÍ
Liên Hệ Cv: [email protected]ác bạn có thể tạo server Minecraft 24/7 qua website GachCloud.Truy cập qua: https://gachcloud.net/tunghaidon và nhập Mã g...
www.youtube.com
3.2. server.properties - thiết đặt cần thiết
view-distance
Gợi ý: 7Như đã giải thích ở trên, đây là khoảng cách mà máy chủ gửi hình ảnh địa hình cho người chơi nhìn thấy. Nếu bạn nghe theo ông cháu nào kêu tăng
view-distance để tia gái cho đã hơn, thì số khu vực máy chủ phải tải sẽ tăng rất nhanh - không phải kiểu tăng nhẹ một tí mà là tăng mạnh theo cấp số mũ, công thức tính số chunk mà một người chơi load sẽ là:[(view-distance + 2) × 2 + 1]^2Ví dụ:
- view-distance = 5 --> load 225 chunk
- view-distance = 10 (mặc định) --> load 625 chunk
- view-distance = 15 --> load 1225 chunk
simulation-distance
Gợi ý: 4Đảm bảo ≤
view-distance. Nếu Quản trị viên đặt simulation-distance cao hơn, thì Minecraft cũng chỉ tính trong phạm vi view-distance, không hơn. Mặc dù view-distance tiêu tốn ít tài nguyên máy chủ hơn simulation-distance, quản trị viên vẫn nên cẩn thận khi tăng giá trị này nha! Nhớ là, mỗi chút tài nguyên tiết kiệm được đều rất quan trọng để giữ máy chủ ổn định. Bạn có thể chỉnh riêng view-distance và simulation-distance cho từng thế giới tại tệp spigot.yml, chẳng hạn như, bạn có thể đặt view-distance cao hơn trong world_the_end, giúp cho người chơi tìm kiếm Elytra trong không gian trống dễ hơn.allow-flight
Gợi ý: trueTùy chọn này giúp tránh việc người chơi bị đá khỏi máy chủ vì nghi ngờ “bay” khi đang cưỡi ngựa hoặc leo giàn giáo. Việc bật tùy chọn này hông có nghĩa là ai cũng có thể bay tự do, mà chỉ đơn giản - AntiCheat sẽ lo hộ bạn đầu việc này.
pause-when-empty-seconds
Gợi ý: 60Đây là khoảng thời gian (tính bằng giây) máy chủ sẽ chờ sau khi không còn người chơi trực tuyến trước khi tự tạm dừng hoạt động. Tích kiệm một ít tài nguyên.
entity-broadcast-range-percentage
Gợi ý: 80Tùy chọn này quyết định % khoảng cách mà thực thể sẽ được gửi tới người chơi để hiển thị. Ví dụ, đặt
50 nghĩa là, chỉ còn một nửa khoảng cách so với bình thường.Giá trị hợp lệ: 10% - 1000%.
max-world-size
Gợi ý: 100000 tức 100k x 100k, máy chủ sẽ không tạo thêm địa hình mới ngoài phạm vi 100.000 khốiCòn được biết tới tên: Giới hạn bán kính tối đa của thế giới (tính bằng khối), chỉ ảnh hưởng đến việc tạo map khi thế giới được sinh ra ban đầu, chứ không liên quan đến world-border - viền giới hạn thế giới mà bạn đặt trong Minecraft.
/worldborder set <kích thước> <thời gian thu nhỏ>network-compression-threshold
Gợi ý: 512Tùy chọn này cho phép bạn đặt giới hạn kích thước của một gói dữ liệu trước khi máy chủ tiến hành nén. Nếu đặt cao hơn, máy chủ sẽ tiết kiệm được tài nguyên CPU nhưng đổi lại sẽ tốn nhiều băng thông - Network hơn & gây bất lợi cho người chơi có mạng chậm. Trong trường hợp server chạy cùng máy với proxy hoặc nằm trong mạng nội bộ có độ trễ rất thấp (<2 ms), việc tắt nén
-1 thường sẽ tốt hơn vì mạng nội bộ có thể xử lý lượng dữ liệu không nén dễ dàng.rcon
Gợi ý: nên thử sứcTrong Minecraft, RCON (Remote Console) là một giao thức cho phép gửi lệnh tới server từ bên ngoài (qua TCP), kiểu như bạn đang gõ lệnh trong console nhưng không cần truy cập trực tiếp vào máy chủ. Khi bật RCON (với
enable-rcon=true, đặt rcon.password và rcon.port), các ứng dụng có thể kết nối vào máy chủ và thực thi lệnh như ban, kick, rtp... Kết hợp với DiscordSRV, RCON được dùng để liên kết Discord với máy chủ, cho phép bot Discord của bạn gửi lệnh trực tiếp vào console, dạng như gửi tin nhắn từ Discord vào game, hoặc thực thi lệnh khi Admin dùng bot.[!!!] Lưu ý quan trọng: RCON rất nhạy cảm về bảo mật nhen. Nếu đã bật, bạn phải dùng mật khẩu mạnh và không mở port công khai bừa bãi, vì ai đó có quyền truy cập RCON gần như có toàn quyền điều khiển máy chủ ngay lập tức.
spawn-protection
Gợi ý: 0Bảo vệ xuất phát điểm máy chủ. Không cần thiết khi bạn đặt Spawn của máy chủ tại tệp khác hoặc đã có WorldGuard. Còn nếu đã xây Spawn chung với thế giới sinh tồn, đặt tại vị trí 0 . 0 thì bạn có thể bật cái này lên nè, công thức
2x+1resource-pack
Gợi ý: nên sử dụng đường dẫn tại github hoặc thiết đặt selfhost trong tệp config.yml của Plugin tạo gói tài nguyên bạn sử dụngNhóm cấu hình này dùng để gợi ý người chơi tải Resource Pack từ trên trời xuống, trước khi vào máy chủ (tức là tải tự động, không cần gửi tệp thủ công):
- resource-pack: link URL trực tiếp tới tệp
.zipcủa Gói tài nguyên (host trên web/CDN) - resource-pack-id: ID để client nhận diện pack (ít dùng nhưng nên có để tránh cache lỗi)
- resource-pack-prompt: thông báo hiện lên khi máy chủ hỏi người chơi có tải pack không
- resource-pack-sha1: mã sha1 hash để xác minh gói tài nguyên (giúp Client phía người chơi biết pack đúng và Cập nhật khi quản trị viên đổi pack)
3.3. bukkit.yml - thiết đặt cần thiết
spawn-limits (còn được biết tới là mob cap)
Wiki:
Đề xuất
monsters: 20
animals: 5
water-animals: 2
water-ambient: 2
water-underground-creature: 3
axolotls: 3
ambient: 1
Phần cấu hình này quyết định tổng số thực thể được sản sinh trên máy chủ. Giảm các giá trị ở đây là cách ảnh hưởng trực tiếp nhất đến hiệu năng, vì Entity là một trong những thứ cực kỳ tiêu tốn tài nguyên máy chủ để hoạt động.
Wiki:
Máy chủ mình
spawn-limits:
monsters: 24
animals: 12
water-animals: 1
water-ambient: 1
water-underground-creature: 1
axolotls: 1
ambient: 0
Cách phân loại theo Categories, giới hạn số lượng thực thể - mob cap trên máy chủ được tính theo công thức:
giới hạn số lượng thực thể toàn máy chủ = số người chơi trực tuyến * giới hạn quái được bạn điền vô ở trên
Using Science to Design a MAXIMUM Efficiency Iron Farm
A detailed explanation of iron farm mechanics and how to apply them :-].Java only**0:00 Intro1:34 - Iron Farm Basics4:10 - Impact of Time to Kill7:02 - Impac...
Càng ít người chơi hoặc đặt giới hạn càng thấp thì máy chủ sẽ càng ít quái xuất hiện. Miễn là xung quanh người chơi còn vị trí hợp lệ để quái xuất hiện, máy chủ sẽ liên tục cố gắng tạo thêm thực thể cho đến khi đạt tới giới hạn bạn đã đặt.
Tùy chọn
:
per-player-mob-spawn tại config/paper-world-defaults.yml sẽ giúp chia đều quái cho mỗi người chơi, tránh tình trạng người 2 hộp sữa, thằng không hộp nào. Nhớ là, việc giảm giới hạn mob luôn là con dao hai lưỡi
:- Máy chủ nhẹ hơn
- Người chơi than không còn quái để Farm
Quản trị viên có thể đặt
monsters < 20 nếu giảm đồng thời mob-spawn-range tại tệp spigot.yml xuống, yên tâm, người chơi sẽ không than cho đến khi monsters < 14. Công thức tính:Overall Entity Count (%) | spawn-limit tại bukkit.yml | mob-spawn-range tại spigot.yml | Actual Calculated Number |
|---|---|---|---|
100 | 70 | 8 | 8 |
90 | 63 | 7 hoặc 8 | 7.6 |
80 | 56 | 7 | 7.18 |
70 | 49 | 6 hoặc 7 | 6.74 |
60 | 42 | 6 | 6.26 |
50 | 35 | 5 hoặc 6 | 5.75 |
40 | 28 | 5 | 5.18 |
30 | 21 | 4 | 4.55 |
20 | 14 | 4 | 3.81 |
10 | 7 | 3 | 2.89 |
3 | 2 | Bỏ xíu tiền mà nâng cấp máy chủ đi ạ | Cái Nokia nhà mình còn xử lý được nhiều thực thể hơn cả máy chủ bạn. |
Về mặt tổng thể, lượng Entity nên chiếm < 30% thời gian xử lý mỗi tick. Nếu bạn thấy máy chủ tốn quá nhiều tài nguyên cho việc sản sinh quái, thì đó là dấu hiệu giới hạn thực thể đang quá trời nhiều luôn ạ, và cần phải giảm xuống. Mục tiêu lý tưởng là giữ mật độ Mob gần giống mặc định của Vanilla, nhưng vẫn đảm bảo máy chủ duy trì dưới
[COLOR=rgb(26, 188, 156)]50 mspt[/COLOR] trong giờ cao điểm. Nếu chưa đạt được mức này, hãy tiếp tục giảm giới hạn cho đến khi máy chủ ổn định.Nếu dùng Paper, bạn còn có thể chỉnh giới hạn riêng cho từng thế giới world/world_nether/world_the_end tại https://docs.papermc.io/paper/reference/world-configuration
[!!!] Các giới hạn này chỉ áp dụng cho mob xuất hiện tự nhiên, những Entity được tạo ra bằng cơ chế đặc biệt như nhân bản Allay, Silver Fish - Cá bạc từ thuốc Nhiễm khuẩn, Iron Golem sinh ra từ dân làng, hay Guardian trong Ocean Monument sẽ không bị ảnh hưởng bởi thiết đặt này. Bắt buộc phải có Plugin riêng, ở đây mình sử dụng EntityBlocker để chặn Cá bạc, và EntityLimiter với các loại còn lại.
| Cá bạc | IronGolem | Allay |
|---|---|---|
|
|
|
[!!!] Villager - Dân làng
Dân làng là loại thực thể đặc biệt, vừa tốn tài nguyên máy chủ theo cách riêng, vừa không thể bị kiểm soát số lượng khi người chơi sản sinh hàng loạt, lại còn không bị giới hạn bởi các tùy chọn trong
Dân làng là loại thực thể đặc biệt, vừa tốn tài nguyên máy chủ theo cách riêng, vừa không thể bị kiểm soát số lượng khi người chơi sản sinh hàng loạt, lại còn không bị giới hạn bởi các tùy chọn trong
bukkit.yml như đã đề cập ở trên. Do đó, bạn nên tham khảo các phương pháp dưới đây:- Cài VillagerLobotimizer để tự động tắt não của dân làng bị nhét vào khu trao đổi (trading hall). Leaf cũng có chức năng tương tự mà không sâu bằng.
- Giảm tần suất xử lý (tick rate) của dân làng tại
paper-world-defaults.yml/tick-ratesđể giảm áp lực lên máy chủ. - Giới hạn số lượng dân làng trong một khu vực với FarmControl / EntityLimiter
- Thay đổi cách người chơi kiếm đồ == tạo khu trao đổi cộng đồng/Shop hệ thống do Admin quản lý.
Dân làng để làm cảnh.
ticks-per
Wiki:
Đề xuất
monster-spawns: 10
animal-spawns: 400
water-spawns: 400
water-ambient-spawns: 400
water-underground-creature-spawns: 400
axolotl-spawns: 400
ambient-spawns: 400
. Với quái vật, việc tăng nhẹ thời gian giữa mỗi lần triệu hồi tương đương việc giảm số lần Game kiểm tra thường xuyên, tùy chọn này không ảnh hưởng nhiều đến tốc độ quái xuất hiện, kể cả với các Mob Farm thường thấy trên nên tảng Youtube.
Wiki:
Máy chủ mình
ticks-per:
animal-spawns: 4200
monster-spawns: 12
water-spawns: 4200
water-ambient-spawns: 4200
water-underground-creature-spawns: 4200
axolotl-spawns: 4200
ambient-spawns: 4200
autosave: 36000
Nếu chỉ tăng hoặc giảm ở đây, bạn thực chất chỉ đang tìm cách trì hoãn vấn đề thay vì giải quyết tận gốc. Nhớ là, Minecraft sẽ luôn cố gắng triệu hồi thực thể cho đến khi lấp đầy giới hạn mob-cap đã được bạn đặt ở phần trước --> việc tính toán và kiểm tra vị trí để quái xuất hiện được thực thi luân phiên --> điều này cũng tiêu tốn tài nguyên máy chủ một lượng kha khá đó nha~ Nên tốt nhất, vẫn là giảm giới hạn Entity tổng trước tại
bukkit.yml/spawn-limits, sau đó mới tính tới việc điều chỉnh ticks-per.
How to Design the MOST Optimized Gold Farm [Nerf Proof!]
I make the mechanical thinking machine optimize my gold farm for me in Minecraft. A deep dive into the balancing act require to optimize spawning farms. This...
[!!!] Không đạt đủ mob cap dù đã cố gắng hết sức?!
Nếu mobcap không đạt tới giới hạn nhanh và hiệu quả, máy chủ sẽ:
- liên tục vô vọng triệu hồi Mobs
- tốn tài nguyên CPU vô ích
- tụt tps máy chủ
Nếu có thời gian và muốn tìm hiểu về Technical Minecraft, bạn nên dùng lệnh
/paper mobcaps và /paper playermobcaps và dành thêm một khoảng thời gian phân tích Wiki và đảm bảo rằng spawn-limits bạn đặt hoàn toàn chuẩn. Dấu hiệu mobcap bị lỗi thường sẽ xuất hiện trong tệp Spark của máy chủ bạn, như thông số NaturalSpawner.spawnForChunkđang cao bất thường:![]()
Quái đông máy chủ khóc, người chơi than <--> Quái ít người chơi than
Bạn có thể thay đổi
Thiết đặt ở trên cũng có thể được chỉnh riêng cho từng thế giới trong tệp
paper-world-defaults.yml/entities.spawning.ticks-per-spawn
Wiki:
ticks-per-spawn:
ambient: 90000
axolotls: 2200
creature: 90000
monster: 20
underground_water_creature: 9800
water_ambient: 2200
water_creature: 2200
paper-world.yml (tạo riêng trong thư mục của từng world/world_nether/world_the_end...), để ghi đè lên cấu hình paper-world-defaults.yml mặc định của máy chủ. Nhờ vậy, bạn có thể tinh chỉnh tần suất quái xuất hiện khác nhau cho từng thế giới, thay vì phải dùng chung một mức cho tất cả.aliases
Chuyển câu lệnh mặc định sang những dạng câu lệnh mới tương đương. Ví dụ:
/op --> /capchotaoquyenop vẫn sẽ cho bạn quyền quản trị viên khi nhập, chặn được 90% vấn đề phá hoại máy chủ cơ bản 

Muốn thay đổi sâu hơn? Tham khảo EternalCore plugin - Phát triển bởi các anh Ba Lan, tùy chỉnh mạnh/bật & tắt các thiết lập câu lệnh.
3.4. spigot.yml - thiết đặt cần thiết
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: defaultsimulation-distance: defaultHai 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 - 1Tù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, mob sẽ cố spawn ở những khu vực mà máy chủ không xử lý, khiến bạn cảm giác mob xuất hiện ít đi. Vì vậy, việc chọn giá trị phù hợp là rất quan trọng để giữ trải nghiệm ổn định.spigot.yml/world-settings.default.nerf-spawner-mobs
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
Mã:
Đề 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:
Mã:
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ã:
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:spigot.yml/world-settings.default.entity-activation-range.wake-up-inactive
Mã:
Đề 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
Giải thích từng khái niệm tại Entity Activation Range -- cũng là nền tảng để phát triển DEAR sau này. Tùy chọn
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:
Mã:
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
Mã:
Đề xuất:
item: 3.5
exp: 4.0
Tùy chọn này quyết định khoảng cách mà các vật phẩm rơi và kinh nghiệm (Exp Orb) có thể gộp lại với nhau, từ đó giảm số lượng vật phẩm phải xử lý trên mặt đất. Nếu đặt quá cao, người chơi có thể cảm giác vật phẩm hoặc Exp “biến mất” do bị gộp lại. Băng ghi hình giải thích dễ hiểu về cách các hạt EXP được gộp vào với nhau
XP in Minecraft is Super WEIRD...
Back from vacation with a quick deep dive into some of the weird and unintuitive dynamics of XP in Minecraft. Links:@whitestonejazz - Math discussion -- GREA...
Ngoài ra, bạn có thể thiết đặt trong tệp
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
Chỉnh trong tệp
Tùy chọn này cho phép bạn đặt giá trị cao hơn mặc định (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
Nếu bạn đang chạy Proxy có Lobby, bạn nên đặt giá trị này thành
config/paper-global.yml
Mã:
misc:
xp-orb-groups-per-area: 60
Chỉnh trong tệp
spigot.yml
Mã:
players:
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
Mã:
attribute:
maxAbsorption:
max: 2048.0
maxHealth:
max: 9999.0
movementSpeed:
max: 1024.0
attackDamage:
max: 9999.0
spigot.yml/commands.spam-exclusions
Mã:
Đề 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ố
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ên
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ên
6 hoặc 8.3.5. PAPER configs - tệp thiết đặt cần thiết
Thư mục config giờ sẽ chứa các file cấu hình mặc định và cấu hình chung của máy chủ Paper, nằm ngay trong thư mục gốc của Minecraft.
- Tệp
paper-global.ymlbao gồm toàn bộ các thiết lập áp dụng chung cho toàn máy chủ. - Tệp
paper-world-defaults.ymlchứa cấu hình mặc định cho tất cả các thế giới - world.
Ngoài ra, mỗi world/world_nether/world_the_end sẽ tự tạo một tệp riêng, lấy tên là
paper-world.yml trong thư mục của nó. Bạn có thể chỉnh tệp này để ghi đè cấu hình cho từng world cụ thể, đường dẫn sẽ là /[tên_world]/paper-world.yml˚˖ ᵎᵎ 3.5.1. PAPER-WORLD-DEFAULTS.YML
Anti-xray cơ bản
Toàn bộ thiết đặt bạn cần cùng giải thích các khái niệm đã có sẵn tại https://docs.papermc.io/paper/anti-xray/
.ᐟ Nghe đằng ấy hỏi về Anti-Xray mà thấy "cột sống" máy chủ nó đau giùm luôn á. Để mình chia sẻ nhẹ kiến thức, giải thích cho đằng ấy hiểu tại sao cái tính năng này nó vừa là "cứu tinh" mà cũng vừa là "kẻ hủy diệt" băng thông nhé. Viễn cảnh xảy ra giữa các lựa chọn:- Tại sao Anti-Xray lại làm Server phình to?
Bình thường, dữ liệu của Minecraft được nén lại rất gọn gàng vì các khối giống nhau nằm cạnh nhau. Nhưng khi quản trị viên bật Anti-Xray với
Engine Mode 2, máy chủ sẽ tung hỏa mù bằng cách nhồi nhét một đống đồ giả vào các khối đá.- Kết quả: Dữ liệu trở nên "lộn xộn" - Entropy cao, thuật toán nén không thể làm gọn nó được nữa. Gói tin gửi đi nặng đô hơn hẳn. Nếu máy chủ có trên 100 con dân cùng trực tuyến, đường truyền mạng sẽ sớm "ét ô ét" vì quá tải dữ liệu, dẫn đến tình trạng ping nhảy vpop mỗi khi người chơi đổi world hoặc đăng nhập
- "Hackers" vẫn có cửa thoát.ᐟ
- Anti-Xray chỉ che giấu trong một tầm nhất định để đỡ lag, hack xịn vẫn có thể "soi" được quặng thật ở ngoài tầm che phủ đó.
- Seed Reversing (Dò hạt giống): Đây là đòn "chí mạng" kết liễu mọi hệ thống anti-xray, nếu tụi nó mò được World-Seed, coi như xong đời. Thần dân của máy chủ bạn sẽ biết chính xác tọa độ Diamond/Ancient Debris nằm ở đâu mà không cần máy chủ phải gửi dữ liệu quặng về.
Đề xuất: Quản trị viên phải đổifeature-seedstrong Paper và cả mấy cáistructure-seedtrongspigot.yml+paper-world-defaults.yml/feature-seeds.generate-random-seeds-for-all+leaf/fast-biome-manager-seed-obfuscation+leaf/secure-seedthì mới gọi là có chút "phòng thủ" nhá.
- Cái bẫy "Quặng lộ thiên" (Ores Exposed to Air)
air vào danh sách hidden-blocks để giấu triệt để:- Mặt tốt: Chống x-ray tuyệt đối, kể cả trong hang.
- Mặt tối: Máy tính của người chơi sẽ phải gồng mình từ Hiệu năng tới Tốc độ mạng tính toán, để vẽ đống quặng giả đó xung quanh hang động, hệ quả là fps của người chơi sẽ tụt dốc không phanh. Đừng để người chơi phải thốt lên "Server lag ỉa" với Bedrock bị ăn kick liên hồi chỉ vì bạn quá mạnh tay với tụi X-ray nhé.ᐟ
- Cứu tinh + Giải pháp thay thế
Engine-mode 1tạo điều kiện cho máy tính người chơi giảm mạnh phần tính toán với khu vực Chunk mới
dù vậy, cũng khá dễ để các pháp sư x-ray bypass vượt qua, thay vì phụ thuộc hoàn toàn vào Anti-Xray và làm khổ cái băng thông, đằng ấy nên:- Dùng Plugin Tracking:CoreProtect hoặc mấy cái plugin chuyên ghi chép tốc độ đào quặng của thần dân là chân ái. Cứ ai đào quá nhiều Diamond trong thời gian ngắn là bế đi luôn cho nhanh.
/co rollback action:-block exclude:stone,deepslate,dirt,gravel,andesite,diorite,granite radius:20 time:2h #preview- Lantern [Anti-Xray] - cũng là chiếc Plugin Premium mình rất thích để phát triển thêm, sử dụng thuật toán học máy CatBoost (Categorical Boosting) để phân tích 19 hành vi đào quặng của người chơi, tỉ lệ chuẩn 90%.
- 24/7 ngồi soi người chơi: Không có cái máy nào thay thế được sự tinh đời của Admin đâu ạ <
Mã:
Mẫu với thiết đặt paper-world-defaults.yml
anticheat:
anti-xray:
enabled: true
engine-mode: 1
hidden-blocks:
- diamond_ore
- deepslate_diamond_ore
- emerald_ore
- deepslate_emerald_ore
- gold_ore
- deepslate_gold_ore
- raw_gold_block
max-block-height: 64
replacement-blocks:
- stone
- deepslate
Mã:
Mẫu với world_nether/paper_world.yml
anticheat:
anti-xray:
enabled: true
engine-mode: 3
hidden-blocks:
- nether_gold_ore
- ancient_debris
- nether_quartz_ore
- gilded_blackstone
lava-obscures: false
max-block-height: 128
replacement-blocks:
- basalt
- blackstone
- gravel
- netherrack
- soul_sand
- soul_soil
update-radius: 2
use-permission: false
paper-world-defaults.yml/entities.tracking-range-y
Mã:
Đề xuất
tracking-range-y:
animal: 30
display: 160
enabled: true
misc: 160
monster: 32
other: 160
player: 256
entity-tracking-range của spigot.yml nhưng theo chiều dọc (Y).paper-world-defaults.yml/entities.spawning.despawn-ranges
Mã:
Đề xuất:
ambient:
hard: 72
soft: 30
axolotls:
hard: 72
soft: 30
creature:
hard: 72
soft: 30
misc:
hard: 72
soft: 30
monster:
hard: 72
soft: 30
underground_water_creature:
hard: 72
soft: 30
water_ambient:
hard: 72
soft: 30
water_creature:
hard: 72
soft: 30
monster.hard như sau:
Mã:
despawn-ranges:
monster:
hard:
horizontal: default
vertical: default
soft: default
Người chơi đông, máy chủ phần cứng yếu thì thiết lập này cực kỳ quan trọng, nếu
simulation-distance bạn đặt < 10, thì mob-spawn-range tại spigot.yml = (simulation-distance - 1). Đồng thời, despawn-ranges.hard.horizontal nên đặt bằng (simulation-distance - 1) × 16. Giá trị theo chiều dọc - horizontal nên giữ mặc định (128 trong Vanilla), phần lớn các hướng dẫn Farm trên mạng người chơi tìm được đều dựa trên mức này, bảng minh họa:
simulation-distance | mob-spawn-range | despawn-range.hard.horizontal |
|---|---|---|
10 (Vanilla) | 8 (Vanilla) | 128 (Vanilla) |
9 | 8 | 128 |
8 | 7 | 112 |
7 | 6 | 96 |
6 | 5 | 80 |
5 | 4 | 64 |
4 | 3 | 48 |
3 (khum nên) | 3 | 36 (khum khuyến khích) |
Wiki:
Máy chủ mình đặt:
despawn-ranges:
ambient:
hard: 32
soft: 12
axolotls:
hard: 32
soft: 12
creature:
hard: 48
soft: 12
misc:
hard: 48
soft: 12
monster:
hard:
horizontal: 96
vertical: 48
soft: 30
underground_water_creature:
hard: 48
soft: 12
water_ambient:
hard: 48
soft: 12
water_creature:
hard: 48
soft: 12
paper-world-defaults/entities.spawning.despawn-time
Paper cho phép bạn thiết lập thời gian biến mất riêng cho từng loại thực thể Entity, bên cạnh các quy tắc Despawn mặc định của Vanilla.
Mã:
Gợi ý:
despawn-time:
llama_spit: 1200
snowball: 800
fireball: 1200
dragon_fireball: 1200
small_fireball: 1200
arrow: 3000
shulker_bullet: 3000
wither_skull: 3000
despawn-time + entity-per-chunk-save-limit + alt-item-despawn-rate sẽ tạo thành một Combo cơ bản giúp chặn được LagMachine
paper-world-defaults.yml/chunks.entity-per-chunk-save-limit
Mã:
Đề xuất:
entity-per-chunk-save-limit:
area_effect_cloud: 8
armor_stand: 14
arrow: 20
dragon_fireball: 3
egg: 18
ender_pearl: 5
fireball: 5
firework_rocket: 8
lingering_potion: 8
shulker_bullet: 6
small_fireball: 12
snowball: 12
spectral_arrow: 10
splash_potion: 8
trident: 10
wither_skull: 3
paper-world-defaults.yml/entities.spawning.alt-item-despawn-rate
Mã:
Đề xuất:
alt-item-despawn-rate:
enabled: true
items:
cobblestone: 300
cobbled_deepslate: 600
netherrack: 120
deepslate: 300
rotten_flesh: 900
dirt: 300
ender_pearl: 90
leather: 300
bone: 600
bone_meal: 300
cactus: 300
egg: 300
feather: 300
gunpowder: 1200
arrow: 300
gravel: 300
scaffolding: 600
oak_leaves: 300
sugar_cane: 300
string: 1200
ink_sac: 900
slime_ball: 1200
paper-world-defaults.yml/merge-radius để tối ưu hiệu năng, thay vì phải dùng các Plugin/Skript chuyên dọn dẹp ClearLag xàm chó trên mạng. Lý do sẽ giải thích chi tiết hơn ở https://github.com/HSGamer/list-of-shame-mcvn
paper-world-defaults.yml/collisions.max-entity-collisions
Gợi ý: 8Giá trị này giúp xác định số lượng Entity tối đa được tính vào việc máy chủ xử lý va chạm Hitbox. Khi đạt đến ngưỡng này, máy chủ sẽ ngừng xử lý thêm các va chạm khác.
Không nên đặt <
3 -- Farm của người chơi vẫn cần hệ thống va chạm này để hoạt động đúng.
|
|
Dù vậy, chớ nhầm lẫn giữa
gamerule maxEntityCramming và collisions.max-entity-collisions.- Gamerule maxEntityCramming quy định số lượng Entity tối đa có thể dồn vô một góc trước khi bắt đầu nhận sát thương “ngạt”. Bạn có thể chỉnh tay bằng lệnh:
/gamerule maxEntityCramming [số] (mặc định là 24)
paper-world-defaults.yml/collisions.fix-climbing-bypassing-cramming-rule
fix-climbing-bypassing-cramming-rule: trueTùy chọn này quyết định việc các Entity có khả năng leo trèo sẽ bị tính vào giới hạn nhồi vào một góc -
gamerule maxEntityCramming hay không.paper-world-defaults.yml/entities.spawning.per-player-mob-spawn
Đã giải thích ở phần
bukkit.yml/spawn-limit --> luôn để phần này thành true. Trong Vanilla bình thường, máy chủ có một con số tổng (ví dụ: 70 quái vật cho toàn bộ server). Thuật toán sẽ quét tất cả các Chunks xung quanh mọi người chơi để tìm chỗ sinh quái.- Anh Nguyễn Văn A (ngồi chơi ở Nether Waste): Có hàng nghìn khối có thể sinh quái (Air blocks trên nóc Nether). Máy chủ quét đâu cũng thấy chỗ trống, quái vật sẽ "spam" liên tục quanh ổng.
- Chị Dậu (đứng camp tại Nether Ceiling): Cổ đã dày công bao phủ mọi nơi quái xuất hiện bằng Slab, chỉ chừa lại một chỗ trống nhỏ xíu mong rằng sẽ thu được kết quả Farm tốt đẹp ở đây. Cơ mà tỷ lệ máy chủ quét trúng miếng sàn này cực thấp so với không gian bao la quanh người chơi ngồi chơi ở trên.
paper-world-defaults.yml/chunks.prevent-moving-into-unloaded-chunks
Đề xuất: trueChặn người chơi di chuyển vào khu vực chưa được tải, nếu cho phép đi vô là thuật toán sẽ dồn mọi nguồn lực để tải cho xong khu vực này --> dẫn tới tình trạng đói tài nguyên ở chỗ khác --> tụt tps toàn máy chủ.
paper-world-defaults.yml/misc.redstone-implementation
Để đạt được điểm cân bằng hoàn hảo nhất giữa việc giữ nguyên trải nghiệm Vanilla và tối ưu hóa hiệu năng máy chủ, quản trị viên nên chọn ALTERNATE_CURRENT.
Lựa chọn
www.youtube.com
Người chơi của bạn sẽ cảm thấy mọi thứ hoạt động y hệt Vanilla, trừ khi họ là những dân chơi hệ kỹ thuật (Technical Player) chuyên xây dựng các cỗ máy Farm cực kỳ khắt khe, phụ thuộc vào thứ tự cập nhật khối siêu nhỏ (update-order) của bản gốc. So với `EIGENCRAFT` (một thuật toán tối ưu đã khá cũ), Alternate Current là giải pháp hiện đại, mượt mà và ít gây lỗi vặt nhất cho các máy chủ SMP hiện tại.
Lựa chọn
VANILLA gốc vốn có thuật toán xử lý tín hiệu bụi đá đỏ rất cồng kềnh, tạo ra vô số các cập nhật khối (block updates) đệ quy vô nghĩa, gây tụt tps thê thảm khi máy chủ có các cỗ máy Redstone lớn nhấp nháy liên tục. Trong khi đó, ALTERNATE_CURRENT (hiện đang là "tiêu chuẩn vàng" được cộng đồng Dev khuyên dùng) là một thuật toán tối ưu hóa triệt để lượng lag dư thừa này, nhưng điểm đáng giá nhất là nó giữ nguyên hành vi của 99% các hệ thống redstone thông thường.
I am frequently confronted with complaints about the contraptions I share not working on certain multiplayer servers. In this video we will discover the prob...
paper-world-defaults.yml/environment.treasure-maps
Đề xuất: falseLý do khiến bản đồ kho báu (treasure maps) trở thành "sát thủ" tiêu tốn tài nguyên máy chủ nằm ở cơ chế tìm kiếm cấu trúc (structure lookup) trên luồng xử lý chính (Main Thread). Khi một người chơi mở rương chứa bản đồ hoặc giao dịch với dân làng, máy chủ không chỉ đơn giản là đưa ra một vật phẩm bản đồ bình thường; Minecraft sẽ phải ngay lập tức quét một vùng không gian khổng lồ với bán kính lên tới
~1100 khối chỉ để tìm kiếm tọa độ của một rương kho báu chưa từng được khám phá. Quá trình này cực kỳ nặng nề vì hai yếu tố:- Nếu khu vực đó chưa được tạo (un-generated chunks), máy chủ buộc phải tính toán trước các thuật toán tạo địa hình và cấu trúc công trình ngầm chỉ để xác định xem rương có nằm ở đó hay không;
- Toàn bộ quá trình tìm kiếm này thường chặn đứng mọi hoạt động khác của máy chủ cho đến khi có kết quả. Nếu rương ở quá xa hoặc địa hình phức tạp, việc tính toán có thể kéo dài hàng trăm ms, gây ra các cú giật Lag hoặc thậm chí khiến hệ thống Watchdog của Paper tại
spigot.ymltự động tắt máy chủ vì tưởng là bị treo.
paper-world-defaults.yml/chunks.max-auto-save-chunks-per-tick
Mã:
Đề xuất:
chunks:
auto-save-interval: default
delay-chunk-unloads-by: 15s
flush-regions-on-save: false
max-auto-save-chunks-per-tick: 15
max-auto-save-chunks-per-tick trong paper-global.yml thực chất là van tiết lưu - throttle cho hệ thống I/O của đĩa cứng. Đây là một trong những thiết lập nguy hiểm nhất vì nó trực tiếp can thiệp vào cách máy chủ xả dữ liệu từ RAM xuống ổ cứng và cũng cực kỳ cần thiết khi người chơi thường xuyên của máy chủ bạn tăng lên. Thử hình dung quá trình này như một dây chuyền sản xuất nhé:- Chunks modified (trong RAM): Là sản phẩm đang chờ đóng gói.
- Auto-save interval: Là thời gian quy định cho một đợt vận chuyển (mặc định thường là 6000 ticks ~ 5 phút).
- max-auto-save-chunks-per-tick: Là tốc độ băng chuyền vận chuyển sản phẩm ra kho (ổ cứng).
- Nếu đặt giá trị quá cao: Ép khô ổ cứng (đặc biệt nếu dùng HDD hoặc SSD rẻ tiền) phải ghi quá nhiều dữ liệu cùng lúc, dẫn đến hiện tượng Disk I/O Latency. Máy chủ sẽ bị khựng - freeze trong vài ms hoặc lâu hơn mỗi khi đến chu kỳ save, khiến tps tụt thảm hại.
- Nếu đặt giá trị quá thấp: Máy chủ không kịp đẩy dữ liệu ra ổ cứng trước khi chu kỳ save tiếp theo bắt đầu. Dữ liệu tồn đọng trong RAM ngày càng nhiều, dẫn đến tình trạng dồn hàng tắc nghẽn. Khi RAM đầy hoặc đến ngưỡng giới hạn, máy chủ sẽ cố gắng "xả" toàn bộ số khu vực khổng lồ đó cùng một lúc, gây ra cú lag kinh hoàng, thậm chí làm sập máy chủ do Watchdog phát hiện phản hồi quá chậm.
Công thức
max-auto-save-chunks-per-tick * auto-save-interval ≥ total loaded chunks that requires save chính là bài toán cân bằng lưu lượng chuẩn nhất. Cần tham khảo thêm max-auto-save-chunks-per-tick tại PaperMC discord khi mà số lượng người chơi máy chủ thường xuyên >40.paper-world-defaults.yml/tick-rates
Mã:
Đề xuất:
tick-rates:
behavior:
villager:
validatenearbypoi: 120
container-update: 3
dry-farmland: 90
grass-spread: 45
mob-spawner: 18
sensor:
villager:
secondarypoisensor: 240
wet-farmland: 28
paper-world-defaults.yml/environment.optimize-explosions
Đề xuất: trueTất cả những vật phẩm có thể gây nổ, sẽ được Paper sử dụng thuật toán tối ưu hóa riêng.
paper-world-defaults.yml/entities.armor-stands
Đề xuất: falseTắt hết mấy dạng LagMachine sử dụng Armor-stand dồn ứ một góc, đồng thời làm hỏng những máy Farm chuyên dụng sử dụng Armor-stand như
Best Way to Travel in the End: Ice Highways with Guardrails
update of the Frostwalker ice generator. now generates additional guardrails on the side for extra safety.boats on ice can reach almost 40 blocks/sec. That's...
paper-world-defaults.yml/lootables
Hệ thống
Việc hiểu rõ các kịch bản này sẽ giúp bạn giải đáp thắc mắc của người chơi khi họ thấy rương "lúc có đồ lúc không":
lootables của Paper là một công cụ tuyệt vời để giữ cho tài nguyên trong thế giới (như rương ở Dungeon, Desert Temple, End City...) không bao giờ bị cạn kiệt, đặc biệt hữu ích cho các máy chủ SMP đông người tồn tại lâu dài. Nếu quản trị viên muốn tạo ra một nền kinh tế mà người chơi phải liên tục khám phá nhưng không thể "cắm trại" tại một chỗ để Farm rương, hãy thử thiết lập này nhé:
Mã:
lootables:
auto-replenish: true
max-refills: -1
refresh-min: 24h
refresh-max: 3d
reset-seed-on-fill: true
restrict-player-reloot: false
restrict-player-reloot-time: 7d
Việc hiểu rõ các kịch bản này sẽ giúp bạn giải đáp thắc mắc của người chơi khi họ thấy rương "lúc có đồ lúc không":
- Đã lấy rùi: Người chơi cần chờ ít nhất X ngày mới Loot lại được rương đã lấy, người mới thì khum cần.
- Vấn đề "Rác": Nếu nhét đầy rác vô rương, khỏi còn chỗ mà thêm đồ mới.
- Cơ chế cộng dồn: Nếu người chơi A chỉ lấy đồ ngon và để lại đồ thừa, người chơi B đến sau sẽ nhận được:
Đồ thừa của A + Đồ mới của B-- rương sẽ ngày càng đầy cho đến khi có người dọn sạch.
Chỉ rương sinh ra tự nhiên mới có tác dụng. Nếu người chơi phá rương để lấy gỗ, rương đó vĩnh viễn biến mất khỏi hệ thống hồi đồ.
Nhớ thông báo lên Discord: "Rương tự nhiên sẽ tự hồi đồ sau mỗi X ngày nếu khum bị phá nhen". Cơ chế này giúp bảo tồn tài nguyên thế giới cực tốt mà quản trị viên không cần phải khởi tạo dữ liệu bản đồ thường xuyên. Hay ở chỗ, những máy chủ mới tại Việt Nam như VietRealms, có thể kết hợp song song TerraLith datapack chuyên tạo địa hình mới + Skript Nexo + API của Terra Plugin (thông qua Java/Kotlin) cùng IrisDimensions cho ra công trình tùy chỉnh, liên tục tạo lại rương đồ tùy chỉnh mới và vô hạn nội dung trong máy chủ. Mỗi tội cần phải yêu môn Toán do rất nặng về kiến thức.
paper-world-defaults.yml/feature-seeds.generate-random-seeds-for-all
Đề xuất: trueCơ chế sản sinh sub-seed ngẫu nhiên cho máy chủ, tính năng này thường được gọi là Feature Seed Randomization (Ngẫu nhiên hóa hạt giống tính năng).
Các công cụ như SeedcrackerX có thể phân tích vị trí các loại công trình, cấu trúc quặng hoặc cây cối để tính toán ngược lại hạt giống Seed gốc của thế giới. Một khi có được Seed, người chơi có thể dùng các trang web như Chunkbase để biết chính xác vị trí mọi loại quặng, mọi công trình hiếm, gây mất cân bằng nghiêm trọng. Tùy chọn này sẽ thay đổi "hạt giống con" (sub-seed), khiến các công cụ đó trả về kết quả sai lệch hoàn toàn. Mỗi tội nếu bạn dọn dẹp dung lượng ổ đĩa định kỳ như máy chủ mình, là sẽ gặp lỗi như ảnh:
Kết hợp với LeafMC đã tích hợp sẵn Mã hóa 1024bit hạt giống, đảm bảo không thể lần ra được.
⚠︎ Tips Quản trị viên phải đổi
feature-seeds trong Paper và cả mấy cái structure-seed trong spigot.yml + paper-world-defaults.yml/feature-seeds.generate-random-seeds-for-all + leaf/fast-biome-manager-seed-obfuscation + leaf/secure-seed thì mới gọi là có chút "phòng thủ" nhá 
˚˖ ᵎᵎ 3.5.2 PAPER-GLOBAL.YML
Vẫn đang quằn quại giữa đống file
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
.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 < 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ã:
Máy chủ mình đặt:
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: 65.0 --> 85.0
player-max-chunk-send-rate: 50 --> 65.0
chunk-system:
io-threads: -1 hoặc 40% số CPU lõi hiện có
worker-threads: -1 hoặc 55% CPU lõi hiệ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. 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 để 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:- 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ạipaper-world-default.ymlengine-mode 2làm dữ liệu phình to ra, thử thay đổi sangmode-1hoặcmode-3xem 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ăngnetty-threadstrongspigot.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ò ạ
- 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ư:- EconomyShopGUI Premium: Giới hạn vật phẩm Elytra được BÁN ra mỗi tuần và tăng 70% giá theo sức mua của người chơi.
- Mẫu đọc tham khảo tại docs https://wiki.gpplugins.com/economyshopgui/file-configuration/config.yml#dynamic-pricing
Mã:'11': material: Elytra buy: 3600000 # Giá trị ngang ngửa 36 tiếng chơi Game liên tục của cư dân máy chủ bạn # Giới hạn số lượng MUA toàn cầu, reset 04:20 hằng tuần vào Chủ nhật buy-limit-global: 3 refill-stock: true auto-restock-global-buy-frequency: "0 20 4 ? * SUN" dynamic-pricing: enabled: true side: BUY min-price: 2888888 max-price: 8888888 breakpoints: - threshold-global-bought-percent: 0.3 sell-price: 5555555 - threshold-global-bought-percent: 0.7 sell-price: 8888888 displaylore: - "&7Bán tối đa &f3 cái&7/tuần" - "&7Đặt lại lúc &f04:20&7 Chủ Nhật hàng tuần" - EconomyShopGUI Premium: Giới hạn vật phẩm Elytra được BÁN ra mỗi tuần và tăng 70% giá theo sức mua của người chơi.
➜ 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
- purpur.yml/world-settings.default.gameplay-mechanics.elytra thiết đặt như sau:➜ 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
Mã:
elytra:
damage-per-second: 1.8
damage-multiplied-by-speed: 0.7
damage-per-boost:
firework: 1.9
trident: 1.4
kinetic-damage: false
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: 1
speed_multiplier: 0.75
additional_durability_loss: 0.3
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".ᐟ
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-helptại PaperMC mà hỏi các bậc tiền bối nhé
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
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 tắ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.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
Cái
Điểm đáng nói nằm ở chỗ
Mã:
packet-limiter:
all-packets:
action: KICK
interval: 7.0
max-packet-rate: 3000.0
kick-message: <red><lang:disconnect.exceeded_packet_rate>
overrides:
ServerboundCommandSuggestionPacket:
action: DROP
interval: 1.0
max-packet-rate: 15.0
ServerboundPlaceRecipePacket:
action: DROP
interval: 4.0
max-packet-rate: 5.0
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ư place_recipe, 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 .ᐟ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:
www.youtube.com
The Minecraft Exploit That Broke 2b2t
Today on the oldest anarchy server in Minecraft we'll discuss The Minecraft Exploit That Broke 2b2t, how it worked, and the chaos that followed!My Twitter: h...
paper-global.yml/tick-rates
Mã:
Đề xuất
behavior:
villager:
validatenearbypoi: 60
acquirepoi: 120
sensor:
villager:
secondarypoisensor: 80
nearestbedsensor: 80
villagerbabiessensor: 40
playersensor: 40
nearestlivingentitysensor: 40
- Sensor: "Xung quanh có cái giường nào không?", "Thằng thợ rèn kia đang ở đâu?", "Có zombie không?"
- Behavior: "Đi ngủ thôi", "Đi làm việc thôi", "Đi buôn chuyện nào", "Nhận nghề ở đâu ấy nhỉ?"
acquirepoi (Acquire Point of Interest) là hành động dân làng đi tìm các điểm quan trọng như giường, bàn làm việc hoặc chuông, Thay vì để chúng kiểm tra mỗi giây một lần gây lag, quản trj viên tăng con số này lên là dân làng sẽ lười kiểm tra hơn, CPU được nghỉ ngơi nhiều hơn == Dân làng hơi "đần" tí, đôi khi chúng đứng ngơ ra một lúc mới tìm thấy cái giường/bàn làm việc ngay trước mặt.3.6. purpur.yml - thiết đặt cần thiết
Nếu Spigot là đời đầu, Paper là "quốc dân" giúp server mượt hơn, thì Purpur chính là phiên bản "độ" hết nấc dành cho những chủ server muốn nắm toàn quyền sinh sát trong tay. Purpur nhanh, nhẹ và quan trọng nhất là "tùy biến sâu đến mức không tưởng".
Việc gì phải cài thêm Plugins khi bạn có thể chỉnh thẳng trong Config?
purpur.yml/use-alternate-keepalive
use-alternate-keepalive: true
Keepalive truyền thống:- Kiểu cũ (Vanilla/Paper): Server gửi 1 gói tin "Alo, Vũ à?" (keepalive packet). Nếu chẳng may mạng nhà bạn bị "lag nhẹ" đúng lúc đó làm gói tin bị thất lạc (packet loss), máy chủ sẽ phũ phàng kết luận: "À, Vũ đây rồi" và đá văng bạn ra với dòng chữ
Timed Outđầy ức chế. - Purpur: Server sẽ gửi liên tục mỗi giây 1 gói tin. Nó cực kỳ "kiên trì" luôn, gửi ròng rã trong 30 giây, chỉ cần bạn phản hồi lại duy nhất 1 gói bất kỳ trong số 30 cái đó, server sẽ hiểu là "À, mạng hơi lag tí thôi nhưng vẫn ổn áp" và giữ bạn ở lại.
Nếu máy chủ đằng ấy đang dùng Proxy xịn xò như TCPShield hoặc các bộ lọc DDoS gắt gao, để chống DDoS mà bật cái này lên, khả năng cao là người chơi sẽ không vào được hoặc bị lỗi kết nối linh tinh. TCPShield có cách xử lý gói tin riêng để bảo mật, nên khi Purpur gửi đống packet liên tục như thế, hệ thống phòng thủ có thể lầm tưởng máy chủ đang bị tấn công á. Nên khi máy chủ bạn còn nhỏ mà người chơi hay than phiền là "mạng nhà em chập chờn quá", thiết lập này sẽ giúp trải nghiệm mượt mà hơn hẳn, giảm hẳn mấy ca "bay màu" vô lý.
purpur.yml/zombie.aggressive-towards-villager-when-lagging
Đề xuất: falseZombie biết điều khi tps tụt xuống dưới mức
lagging-threshold trong purpur.yml. Đám Zombie sẽ tự động "giả mù", ngừng đuổi đánh dân làng để giảm tải cho CPUpurpur.yml/entities-can-use-portals
Đề xuất: trueKhi bật
false, chỉ có người chơi mới được đi qua cổng địa ngục hay cổng End, còn đám Mob khác thì "tuổi tôm". Điều này sẽ làm hỏng các Farm sử dụng cổng Nether như:
| Gold Farm | Wither Skeleton Farm | Chunk Loader |
|---|---|---|
|
|
|
villager.lobotomize.enabled
Mã:
villager:
can-pick-up-loot: default
ridable: false
ridable-in-water: true
controllable: true
attributes:
max_health: 90.0
scale: 0.4
tempt_range: 4.0
follow-emerald-blocks: false
can-be-leashed: true
can-breed: true
breeding-delay-ticks: 9000
clerics-farm-warts: false
cleric-wart-farmers-throw-warts-at-villagers: true
mob-griefing-override: default
takes-damage-from-water: false
allow-trading: true
always-drop-exp: false
minimum-demand: 0
lobotomize:
enabled: true
check-interval: 1200
wait-until-trade-locked: false
spawn-iron-golem:
radius: 0
limit: 4
search-radius:
acquire-poi: 16
nearest-bed-sensor: 16
acquire-poi thay vì đi tìm giường hay bàn làm việc ở tận đẩu tận đâu, chúng chỉ được phép tìm trong một bán kính nhỏ (tầm 16 block). Giới hạn vòng tròn quan hệ này giúp CPU không phải tính toán đường đi quá xa nè.Còn lại, nên tìm hiểu thêm trong Docs của Purpur, quản trị viên có thể thay đổi trực tiếp kích thước động vật, cho phép bọt biển hút dung nham, tăng bán kính Beacon, điều chỉnh sát thương TNT/End_Crystal, khiến bắn cung khó chài ia? hay thay đổi độ bền Elytra sử dụng... Nhất định nên thử!
3.7. leaf-global.yml
Nếu phải mô tả LeafMC bằng một từ, đó là "Lean" (Tinh gọn). Nó không chỉ đơn thuần là mượt, mà là mượt một cách "sang chảnh". LeafMC mã nguồn mở, phát triển cùng các pháp sư Trung Hoa, tập trung vào việc xử lý những thứ "nặng đô" nhất của Minecraft (như entity, chunk loading) bằng những thuật toán mà các bản fork cũ chỉ biết nhìn mà ước j làm được. Nếu Purpur là chiếc xe độ đầy màu sắc, thì LeafMC chính là chiếc Tesla đời mới nhất – tối giản, hiện đại và tốc độ kinh hoàng. Bạn cảm thấy đã sẵn sàng để "lên đời" quả máy chủ phò phạch của mình chưa?
[.ᐟ.ᐟ] Toàn bộ thiết đặt cần thiết đều được giải thích tại Docs của Leaf
leaf-global.yml/fast-biome-manager-seed-obfuscation
Đề xuất: true.ᐟ.ᐟ Trong bản Vanilla, Minecraft dùng thuật toán SHA-256 để xáo trộn seed khi tính toán các quần xã sinh vật (biomes). LeafMC cho phép bạn đổi sang XXHash – một thuật toán nhanh như chớp nhưng vẫn cực kỳ chuẩn xác, giúp giảm tải khi tạo Biome mới từ Vanilla --> Datapack
leaf-global.yml/secure-seed
Đề xuất: trueĐây chính là "trùm cuối" để chống lại các pháp sư soi seed. Thay vì dùng seed 64-bit mỏng manh dễ vỡ như Vanilla, LeafMC nâng cấp lên 1024-bit bằng thuật toán mật mã học siêu cấp. Với seed 64-bit bình thường, mấy thanh niên dùng tool "seed cracking" chỉ mất vài phút là biết sạch chỗ nào có kim cương, chỗ nào có trụ sở dân làng hay công trình gần đó. Một khi đã dùng Secure Seed, quản trị viên không thể tắt thiết lập này đi để quay về kiểu cũ được, trừ khi bạn muốn máy chủ mình đầy những vết sẹo địa hình bị lỗi như ảnh:
|
|
leaf-global.yml/sentry
Đề xuất: học cách mà dùngNếu bạn là Quản trị viên và mệt mỏi với việc mỗi lần máy chủ "dở chứng" là phải lặn ngụp trong cái tệp nhật ký dữ liệu
latest.log dài như sớ táo quân, thì Sentry chính là trạm cứu hộ tâm hồn cho cái máy chủ của bạn đấy.Chi tiết hướng xử lý tại Performance Optimization 101 của anh Minh Monmen
Hãy tưởng tượng Sentry như một chiếc Camera an ninh thông minh 24/7 lắp trong server của bạn. Bình thường, khi máy chủ lỗi, nó chỉ để lại một đống nhật ký hỗn độn mà bạn phải tự đi "mò kim đáy bể". Nhưng với Sentry, mỗi khi có một con bug xuất hiện hay ai đó trong máy chủ "hắt hơi sổ mũi", phần mềm này sẽ ngay lập tức chụp ảnh hiện trường, ghi lại mọi bằng chứng và gửi thẳng về điện thoại hoặc web-panel cho bạn: đoạn code nào lỗi, plugin nào đang "đánh nhau", và tình trạng server lúc đó ra sao. Kết hợp với tính năng tracing (theo dõi hành trình), Sentry sẽ giúp nhân sự Dev của bạn biết được một yêu cầu từ người chơi đã đi qua những đâu trước khi gây ra lỗi (Plugins pipeline). Thay vì hỏi "Sao máy chủ sập thế nhỉ?", bạn sẽ tự tin nói được "À, lỗi ở dòng 45 của Plugin X, để mình sửa trong 30 giây nhé".
leaf-global.yml/DAB
Mã:
dab:
enabled: true
dont-enable-if-in-water: false
start-distance: 8
max-tick-freq: 80
activation-dist-mod: 7
blacklisted-entities:
- axolotl
- zombified_piglin
- zombie
- axolotl
- goat
- cat
- cow
- enderman
- villager
- turtle
DAB hoạt động dựa trên nguyên lý cực kỳ thực dụng: "Xa mặt thì mất não".
- Khi ở gần người chơi: Thực thể sẽ được cấp "full nơ-ron", quái sẽ cực kỳ thông minh, phản ứng nhanh, di chuyển mượt mà vì bạn đang nhìn thấy nó.
- Khi ở xa người chơi: DAB sẽ nhận thấy: "À, chỗ này không có ai xem nè, làm màu làm gì!". Thế là thiết đặt này sẽ giảm tần suất "suy nghĩ" của con Mob đó xuống, thay vì kiểm tra não bộ 20 lần mỗi giây, giờ Game có thể chỉ kiểm tra 1 lần mỗi vài giây thôi.
3.8. config/gale-world-defaults.yml - thiết đặt cần thiết
gale-world-defaults.yml/gameplay-mechanics.entities-can-random-stroll-into-non-ticking-chunks:true
Đề xuất: falseMob chỉ dám đi dạo trong khu vực đang hoạt động, đến biên giới nơi không có Chunk hoạt động là chúng nó tự quay đầu lại.
gale-world-defaults.yml/reduced-intervals.check-stuck-in-wall
Đề xuất: 30Bình thường, Minecraft cực kỳ lo xa. Cứ mỗi tích tắc , server lại phải đi hỏi từng thực thể một cùng một câu hỏi: "Ê, mày có đang bị kẹt đầu vào tường không? Có nghẹt thở không để tao còn trừ máu?". Nếu server bạn có hàng nghìn con Mob, việc đi hỏi thăm liên tục như thế sẽ khiến CPU bị quá tải và bắt đầu thở oxy theo đúng nghĩa đen. Điều chỉnh thiết lập này, đồng nghĩa với việc thay đổi cách Dân làng học nghề, nên nhất định nên lưu tâm.
gale-world-defaults.yml/entity-wake-up-duration-ratio-standard-deviation
Đề xuất: 0.3Khi bạn có cả đống thực thể đang ở trạng thái ngủ đông để tiết kiệm tài nguyên, nếu có chuyện gì đó xảy ra như người chơi đi tới gần khiến tất cả cùng "bừng tỉnh" vào cùng 1 tick, CPU của bạn sẽ bị sốc nhiệt - Lag-spike vì phải xử lý quá nhiều AI cùng lúc. Thay vì để 100 con Mob cùng dậy lúc 7:00 sáng, thiết đặt sẽ phân phối chuẩn lại giờ dậy của chúng nó ra.
- Con thì dậy lúc 6:58, con thì 7:01, con thì 7:02...
- Cái số
0.3chính là độ "lệch" của báo thức. Càng cao thì giờ dậy càng rải rác.
3.8. config/gale-global.yml
use-xor-shift-random
Mã:
small-optimizations:
reduced-intervals:
increase-time-statistics: 200
update-entity-line-of-sight: 10
use-xor-shift-random:
elytra-firework-speed: true
entity-wake-up-duration: true
generate-tree-with-bukkit-api: true
Gặp vấn đề hiệu năng liên quan tới LeafMC? Nhất định phải tham gia LeafMC Discord nhé.ᐟ.ᐟ
4. Advanced system integrations - Giới thiệu tính năng khái quát
[?] Mở đầu, những Video này có gì khác biệt?
| MineVN | VietRealms | Mr.Bearst - VietNam |
|---|---|---|
Họ - Nhà phát triển đều đẩy tựa Game này đến giới hạn hiểu biết của người chơi. Chưa bao giờ mình nghĩ rằng, Minecraft lại có thể làm được như vậy[?] Thứ hai, những bức ảnh này có gì giống nhau?
| NotMC | vnmc | 3fmc |
|---|---|---|
|
|
Là chúng đều là tư liệu học tập tại MinemumiVN - Cộng đồng chia sẻ tài nguyên Minecraft của người Việt, nơi mọi người cùng chia sẻ Plugin, map, setups và nhiều hơn nữa. Mình có thể xem trước thiết đặt của vài máy chủ lớn trong này, mà học lỏm được nhiều kỹ năng ạ
Mẫu gửi cho bạn tham khảo tại:- https://www.mediafire.com/file/54z2leyudkgmbdl/1.21.11-PremiumLifestealSetupV3.7.5-NitroSetups.zip/file
[?] Thứ ba, những bức ảnh này có gì giống nhau?
Đều chia sẻ tại STELLA STUDIOS - Discord này được tạo nên nhằm mục đích kinh doanh, cùng với đó là tập hợp những cá nhân/tổ chức có kiến thức trong lĩnh vực máy chủ Minecraft. Cho thấy được Minecraft phát triển vượt bậc với gói đồ họa riêng, sẽ là như thế nào nè
Bạn có bao giờ thắc mắc tại sao nhiều máy chủ lại mượt mướt mườn mượt và có nhiều tính năng "ảo ma" đến thế?! Đó là nhờ bộ sưu tập Plugins và Datapacks cực nghệ mà họ đã tự thiết kế riêng. Không chỉ dừng lại ở việc thêm thắt tính năng, mớ "gia vị" này còn giúp anh em trải nghiệm Minecraft theo một cách rất riêng – hiện đại hơn, thông minh hơn và quan trọng là không bao giờ lỗi thời. Cùng mình, tham khảo thiết kê bộ máy vận hành cơ bản để phát triển máy chủ Minecraft siêu cấp xịn xò của bạn nhé!4.1. Plugins
Fork của EssentialsX, EternalCode không chỉ là một plugin đơn lẻ, mà là một studio chuyên cung cấp các giải pháp "High-end" cho máy chủ Minecraft. Các sản phẩm từ EternalCode được thiết kế với tư duy "Performance First" (Hiệu năng là trên hết) và "Modular Architecture" (Cấu trúc mô-đun). Nhớ là, EssentialsX vốn luôn là một gã khổng lồ già nua với hàng tấn code cũ tích tụ qua nhiều năm. Ngược lại, EternalCode mang về những tính năng đó, tái sử dụng lại với các thư viện code đời mới, cho phép bạn:
- Bật tắt, sửa đổi câu lệnh cũ sang lệnh khác:
/op-->/capchotaoquyenopchẳng hạn, chặn thẳng 90% việc bị backdoor
- Thiết lập từng dạng thông báo/âm thanh riêng biệt tới người chơi, thông qua công cụ Notification Generator
- Gần như toàn bộ tính năng nổi bật của EssentialsX.
Fork lại AuthMe cũ, đồng cải thiện bởi Trưởng nhóm phát triển phần mềm máy chủ LeafMC. Bảo mật tài khoản người chơi với các thiết lập mật khẩu mạnh, cho phép người chơi Bedrock tự động đăng nhập, chặn Bot/Quốc gia cơ bản...
Bạn có thể cài chung BedrockAutoAuth (mình đã kiểm tra mã nguồn rồi nhen
) để tự động
Bạn có thể cài chung BedrockAutoAuth (mình đã kiểm tra mã nguồn rồi nhen
) để tự động đăng nhập/đăng ký cho người chơi Bedrock, giải thích cơ chế tại https://github.com/RaphiMC/MinecraftAuthVaultUnlocked chính là bản Fork của Vault (cái plugin kinh điển mà hầu như server nào cũng phải có). Nếu Vault bản gốc là một "người phiên dịch" giúp các plugin hiểu nhau về tiền tệ, chat và quyền hạn (permissions), thì VaultUnlocked là phiên bản "người phiên dịch" đó nhưng được trang bị khả năng đa nhiệm, đa tiền tệ thay vì chỉ có mỗi "Money" như hồi xưa. Giờ máy chủ của bạn có thể có song song cả Đá quý - Shards, Xu - Point, Linh hồn - Souls... mà các plugin vẫn hiểu nhau mượt mà.
Nếu các plugin kinh tế cũ chỉ cho bạn đúng một túi tiền duy nhất, thì CoinEngine là một hệ thống quản lý đa tiền tệ (Multi-currency) cực kỳ mạnh mẽ. Plugins này cho phép quản trị viên tạo ra không giới hạn các loại đơn vị tiền khác nhau như: Xu, Kim cương, Linh hồn, Điểm nạp... tất cả đều chạy song song trong một máy chủ. Chi tiết từng nhiệm vụ tại https://nightexpressdev.com/coinsengine/
LuckPerms chính là "Thẻ căn cước" và "Chùm chìa khóa" quyền lực nhất trong server của bạn. Đây là plugin quản lý quyền hạn (permissions) cho người chơi, Luckperms quyết định xem ai được phép làm gì trên máy chủ. Thay vì ngồi gõ hàng nghìn dòng lệnh trong game hay sửa file
Bạn có thể thiết lập kiểu "Cha truyền con nối": Group VIP++ sẽ tự động thừa hưởng mọi quyền của group VIP+, bạn không cần phải copy-paste lại mệt nghỉ hay cấp quyền theo điều kiện tại từng world/world_nether/world_the_end hay có phải người chơi Bedrock -
.yml nhức mắt, bạn chỉ cần nhập /lp editor--> Đường dẫn Website cực kỳ hiện đại, nơi bạn có thể thao tác chuột để phân quyền, tạo group, kéo thả cực kỳ "aesthetic". Xong xuôi bấm Save là máy chủ tự cập nhật, không cần khởi động lại như xưa.
Bạn có thể thiết lập kiểu "Cha truyền con nối": Group VIP++ sẽ tự động thừa hưởng mọi quyền của group VIP+, bạn không cần phải copy-paste lại mệt nghỉ hay cấp quyền theo điều kiện tại từng world/world_nether/world_the_end hay có phải người chơi Bedrock -
Floodgate hay không. Đọc chi tiết hơn lại LuckPerms Wiki.FAWE
Fork của WorldEdit, toàn bộ thao tác chỉnh sửa kiến trúc đều sẽ được FAWE hỗ trợ xây dựng nhanh chóng. WorldEdit Docs + Hướng dẫn đầy đủ 5 phút cho Admin
LPC (LuckPermChat)
Nếu LuckPerms là cái "thẻ căn cước" thì LPC (LuckPerms Chat) chính là cách cái thẻ đó hiện hồn lên khung chat một cách diệu kỳ nhất. Đây là một bộ định dạng chat (Chat Formatter) siêu tối giản và mạnh mẽ, nhiệm vụ duy nhất của nó là: Lấy cái Prefix (tiền tố như
Song song đó, bạn có thể mua thêm LPC Pro (LuckPerms Chat Pro) là plugin định dạng chat cao cấp cho Minecraft, hỗ trợ MiniMessage để tạo chat giàu tính năng như màu gradient, hover tooltips, và click actions. Nó được thiết kế để tích hợp liền mạch với LuckPerms, cho phép tùy chỉnh định dạng chat theo từng nhóm người dùng (group) một cách dễ dàng.
[VIP], [Assmin]) và Màu tên bạn đã chỉnh trong LuckPerms rồi hiển thị nó lên khung chat một cách chuẩn chỉ.
Song song đó, bạn có thể mua thêm LPC Pro (LuckPerms Chat Pro) là plugin định dạng chat cao cấp cho Minecraft, hỗ trợ MiniMessage để tạo chat giàu tính năng như màu gradient, hover tooltips, và click actions. Nó được thiết kế để tích hợp liền mạch với LuckPerms, cho phép tùy chỉnh định dạng chat theo từng nhóm người dùng (group) một cách dễ dàng.
| Bong bóng Chat | Toxic? Mất điểm công dân | Discord Hook |
|---|---|---|
|
|
|
ViaVersion

1.21.11 mà phải xách dai' đi hỗ trợ các phiên bản thấp chính là cực hình
TAB
TAB chính là "bộ mặt" của máy chủ, hệ thống này quản lý danh sách người chơi (phím Tab), thanh tiêu đề trên đầu (BossBar), và phần tên hiện trên đầu nhân vật (Nametags).
AntiCheat - AntiHack - Chống gian lận dành cho SMP / Chill ở bên trong
Giải thích cơ chế hoạt động https://www.youtube.com/watch?v=O1vZboxA7P4
- Bản
1.8cho Minigame: PolarAC là tốt nhất (nó đắt nma sắt ra miếng). Polar kiểm tra rất đặc biệt vì hệ thống này có siêu nhiều cơ sở dữ liệu để huấn luyên AI bắt gian lận. Cơ chế Polar checks thì có rất nhiều tầng, ví dụ: Nếu là có ai gian lận ở mảng PvP thì Polar áp dụng cơ chế giảm dmg 10%/30%/70% trong vòng 10p/30p/vĩnh viễn tùy thiết lập, cuối cùng là kick/ban. - GrimAC mã nguồn mở --> bản GrimAC Trả phí. Khác bản Free (v2) ở chỗ thêm
External checks (V3) + Bedrock Checks, thay vìSimple checkskhông Bedrock bên Free. Cả hai đều yêu cầu vềĐiều kiện máy chủvàTuân thủ cam kếtmới được mua. GrimAC là một Strict Simulation AntiCheat. Nó không chỉ đơn thuần là nhìn xem bạn có làm gì lạ không, mà nó tự xây dựng một "thế giới ảo" song song cho từng người chơi, nó mô phỏng chính xác bộ Engine vật lý của Minecraft phía máy chủ. Khi bạn gửi một hành động (như di chuyển hay đánh), GrimAC sẽ tính toán: "Với trạng thái này, vị trí này, liệu người chơi có thể làm được điều đó không?". Bản GrimAC Lightning - Fork lại của GrimAC, gần như đáp ứng nhu cầu máy chủ hiện tại, có thể kết hợp thêm NCP vì AntiCheat này khá tốt về mảng Patch được một số exploit ở một số checks.
> Anticheat ở trên đều thuộc dạng
silentflagkhiến người chơi sài HackClient rất khó Bypass. - Themis - Hỗ trợ Bedrock anticheat. Đa số các AntiCheat như GrimAC hay Vulcan thường rất hay "vả nhầm" người chơi Bedrock vì cơ chế di chuyển của bản Bedrock rất khác Java. Themis được tối ưu riêng để hiểu sự khác biệt này, giúp các bạn chơi trên điện thoại không bị kích ra oan uổng.
Lí do mình không khuyên về Vulcan/MatrixAC/Spartan... vì:1. Vulcan check lỏ, có hàng trăm "bài kiểm tra" nhỏ, ví dụ:
"Check Speed A", "Check Fly B"--> tăng tài nguyên chiếm dụng CPU --> tụt tps. Dễ bị người chơi vượt qua nếu bạn không có thời gian thiết lập config.yml -- dễ bị chia sẻ cách để vượt qua. Bạn có thể tải thiết đặt cho Vulcan tại đây hoặc vô MineMumi để tìm.2. MatrixAC hay bị
False kick/ban ở các bản cao. Nhất là không nên sài nếu người chơi ping cao/ máy chủ tps thấp.3. Bạn làm gì có tiền mà mua
Một số máy chủ lớn như Hypixel sẽ có hệ thống AntiCheat riêng như bản Fork của NCP+, bạn cũng có thể phát triển bản fork của riêng máy chủ bạn, nếu có dữ liệu database đủ lớn:AntiBackdoor / AntiBot / AntiVPN / AntiDDos - Chặn (cơ bản) những thành phần cố ý phá hoại máy chủ bạn ở Bên ngoài
Thường thì máy chủ bé tí - mới mới khum có sợ do bên nhà cung cấp lo cho cả rồi, cơ mà, một khi máy chủ bạn đã tăng trưởng mạnh về kích thước. Vui lòng xem xét kỹ thông tin về DDos + Join Bot vì kiểu gì máy chủ bạn cũng sẽ lặp lại tại: https://github.com/HSGamer/list-of-shame-mcvn
- Soi mã nguồn của Plugins bạn tải lậu trên mạng về: Chúa mới biết những thứ bạn cài có ổn hay không, có thể tham khảo công cụ GitNexus / để mò lại mã nguồn
Bản nâng cấp của multiverse-inventories + multiverse-core, cho phép tạo viễn cảnh mới, người chơi di chuyển giữa các thế giới, phân chia kho đồ từng khu vực.
Trong Minecraft, mọi hành động (nhìn, đi, đánh, mở rương) đều là những Gói tin (Packets) được gửi đi gửi lại. PacketEvents đóng vai trò là một "trạm kiểm soát" cực kỳ thông minh, cho phép bạn chặn, sửa đổi hoặc tạo ra các gói tin đó theo ý muốn. Sự góp mặt của nhà phát triển dự án này, có thể tìm được tại Github.
Đừng dùng ProtocolLib hay bất kỳ Plugins nào phải liên kết với nó nữa, tối ưu hiệu năng không tốt bằng thư viện PacketEvents hiện tại này đâuThực nghiệm tại máy chủ 150+ người chơi Việt Nam:
![]()
![]()
EconomyShopGUI / ExcellentShop chính là cái "siêu thị VinMart" hiện đại và tiện lợi nhất trong máy chủ của bạn. Đây là plugin tiêu chuẩn vàng để tạo ra các cửa hàng vật phẩm bằng giao diện menu (GUI) mà không cần phải xây shop bằng rương hay bảng hiệu thủ công kiểu cũ.
- Dynamic Prices (Giá cả biến động): Đây là tính năng "out trình" nhất. Giá của vật phẩm sẽ thay đổi dựa trên cung và cầu. Nếu quá nhiều người bán Kim cương, giá sẽ giảm sâu; nếu ai cũng tranh nhau mua Táo vàng, giá sẽ tăng vọt. Pluginss này tạo ra một thị trường chứng khoán thu nhỏ cho máy chủ.
- Item Limits & Stock (Giới hạn kho hàng): Mỗi vật phẩm có thể được thiết lập số lượng có hạn. Khi hết hàng, người chơi phải đợi máy chủ tiếp tục "nhập hàng" mới hoặc chờ người khác bán vào mới có thể mua tiếp.
- Transaction Logging (Lịch sử giao dịch): Ghi lại chi tiết ai đã mua gì, bán gì, lúc nào
- Discount & Bonuses (Khuyến mãi): Thiết lập giảm giá giờ vàng hoặc cộng thêm tiền khi bán hàng vào những khung giờ nhất định.
- Hỗ trợ giao dịch vật phẩm NBT: Vật phẩm Vanilla/Datapack, vật phẩm tùy chỉnh tạo bởi Nexo / Craft-Engine đều hỗ trợ song song.
|
FancyNpcs / ZNPCsPlus
Geyser đóng vai trò là một thông dịch viên siêu cấp, cho phép người chơi từ phiên bản Bedrock (điện thoại, console, Win10) có thể gia nhập và chơi chung trong các máy chủ hệ Java một cách mượt mà. Tuy nhiên, điểm yếu của việc chơi chéo là người chơi Bedrock thường phải có tài khoản Java mới đăng nhập được - và đó là lúc Floodgate xuất hiện để giải quyết "nỗi đau" này. Floodgate cho phép người chơi Bedrock đăng nhập trực tiếp bằng tài khoản Microsoft/Xbox của họ mà không cần sở hữu tài khoản Java, đồng thời tự động cấp ID và đồng bộ hóa mọi thứ.
CommandWhilelist / CommandBlocker
Như tên gọi, chặn lệnh phía người chơi, phân quyền cho phép sử dụng lệnh. Cá nhân mình
CommandWhilelist do đặc tính ưu việt của em nó.
CommandWhilelist do đặc tính ưu việt của em nó.
DeluxeMenu / zMenu / MiaoMenu
Menu tùy chỉnh dành cho người chơi.
Cho phép người chơi dịch chuyển đến vị trí của nhau.
Mã nguồn mở, chặn người chơi chỉ với vài câu lệnh cơ bản, cơ sở dữ liệu lưu ngoài tránh bị ảnh hưởng bởi các Plugins khác, vượt trội hơn hẳn các Plugins đang bày bán trên thị trường hiện tại. Bạn có thể xem kỹ thông tin hơn tại: https://docs.libertybans.org/#/Quick-Plugin-Comparison
Nếu bạn từng mơ ước trở thành một "pháp sư" có thể thay đổi mọi cơ chế của Minecraft mà không muốn động vào đống code Java khô khan, thì Skript chính là quyền trượng dành cho bạn. Skript là một ngôn ngữ lập trình bậc cao (High-level) dành riêng cho Minecraft. Thay vì viết những đoạn code Java phức tạp, bạn sẽ viết các dòng lệnh bằng cú pháp cực kỳ giống tiếng Anh. Hệ thống Addon vô cùng rộng lớn, giúp Skript có thể can thiệp vào gần như mọi Plugins khác trên máy chủ của bạn. Nếu hỏi một Quản trị viên nên cài addon nào đầu tiên, câu trả lời chắc chắn là SkBee - addon "phải có" vì nó mở khóa những tính năng cực khó mà Skript gốc không làm được như:
Trong xu hướng Minecraft 2026, việc sử dụng các Gói tài nguyên Resource-Pack để tạo ra Model 3D và Texture riêng như vật phẩm, cánh, đồ nội thất là điều hiển nhiên rồi, với Nexo kết hợp Skript-Nexo chính là chiếc cầu nối có thể giúp quản trị viên phát triển những cơ chế xịn xò mà không cần phải học Java.
- NBT & Packets: Giúp bạn chỉnh sửa dữ liệu ẩn - NBT của vật phẩm và thực thể
- Công cụ GUI: Giúp tạo các menu click chuột (như Shop, Menu cá nhân) cực kỳ nhanh gọn và mượt mà như bên dưới:
Trong xu hướng Minecraft 2026, việc sử dụng các Gói tài nguyên Resource-Pack để tạo ra Model 3D và Texture riêng như vật phẩm, cánh, đồ nội thất là điều hiển nhiên rồi, với Nexo kết hợp Skript-Nexo chính là chiếc cầu nối có thể giúp quản trị viên phát triển những cơ chế xịn xò mà không cần phải học Java.
Nexo / Craft-Engine
Một khi đã bước vào thế giới của Custom Items (Vật phẩm tùy chỉnh) năm 2026, chúng ta không thể không nhắc đến hai thế lực đang làm mưa làm gió là Nexo và Craft-Engine. ItemsAdder với Oraxen á? Cập nhật quá chậm
- Nexo (Kế thừa Oraxen): Cơ chế chính là Resource Pack Automation. Nexo quản lý các tệp hình ảnh, model 3D, âm thanh và tự động đóng gói chúng thành một Resource Pack để gửi cho người chơi, sử dụng cơ chế "Glyph" và "Custom Model Data" để ghi đè lên các vật phẩm cũ của Minecraft, biến chúng thành đồ mới hoàn toàn.
|
|
- Craft-Engine: Item & Mechanic Engine thế hệ mới, Plugin này không chỉ đơn thuần là hiển thị đồ đẹp, mà tập trung vào việc tạo ra một cấu trúc dữ liệu (Data structure) cực kỳ vững chắc cho vật phẩm, hoạt động như một lớp trung gian, giúp các Plugins khác hoặc Datapack Vanilla có thể tương tác với vật phẩm tùy chỉnh một cách mượt mà nhất. Vì là Mã nguồn mở -
Open-Source, Craft-Engine API cho phép các pháp sư cấu hình có thể soi vào tận lõi để chỉnh sửa nếu cần.
|
CustomNameplates / BetterHUD
|
|
Explock
CoreProtect ghi lại tất tần tật mọi hành động xảy ra trên máy chủ vào một bộ dữ liệu khổng lồ. Ai đặt block nào, ai phá rương nào, thậm chí là ai "tiện tay" lấy mất quả táo vàng trong rương của bạn... không có gì có thể lọt qua mắt thực thể này.
- Bạn chỉ cần cầm một câu lệnh cơ bản
/co i(hoặc/co near) và click vào vị trí bị phá. Ngay lập tức, "lịch sử đen tối" của block đó hiện ra: tên người phá, thời gian phá, và thậm chí là tọa độ chính xác. Không một ai có thể "gaslight" được Admin khi bằng chứng rành rành ngay trước mắt --> Khôi phục được trọn vẹn - SQLite rất tệ khi tệp cơ sở dữ liệu của bạn nặng tới hàng GB. Nếu biết kết hợp với một database xịn như MySQL/MariaDB, máy chủ của bạn vẫn sẽ chạy "vèo vèo" mà không sợ bị drop tps, an tâm nhé, bên nhà cung cấp nào cũng hỗ trợ phần này rồi.
YAML:
donation-key:
# use-mysql: true
# table-prefix: co_
# mysql-host: 103.211.201.57 # địa chỉ IP Database của bên nhà cung cấp trả về điền vô đây
# mysql-port: 3306 # port Database của bên nhà cung cấp
# mysql-database: s1646_coreprotect #thường là [dãy ký tự ngẫu nhiên] + tên bạn tự đặt
# mysql-username: u1646_Xn7QK1joUn # tên ngẫu nhiên từ Database của nhà cung cấp Host
# mysql-password: e5YM75R8@Ym^F9!dUy5HJ2Qa #mật khẩu ngẫu nhiên từ Database của nhà cung cấp Host
language: vi
check-updates: false
api-enabled: true
verbose: false
default-radius: 2
max-radius: 80
rollback-items: true
rollback-entities: false
skip-generic-data: true
block-place: true
block-break: true
natural-break: false
block-movement: false
pistons: false
block-burn: false
block-ignite: false
explosions: true
entity-change: false
entity-kills: false
sign-text: false
buckets: false
leaf-decay: false
tree-growth: false
mushroom-growth: false
vine-growth: false
sculk-spread: false
portals: false
water-flow: false
lava-flow: false
liquid-tracking: false
item-transactions: true
item-drops: false
item-pickups: true
hopper-transactions: false
player-interactions: false
player-messages: false
player-commands: true
player-sessions: false
username-changes: false
worldedit: false
Dotman - Nạp thẻ
Được hiểu thông dụng hiện nay, là hình thức người chơi nạp tiền vào máy chủ bằng cách nạp thẻ hoặc chuyển tiền ngân hàng. Để duy trì máy chủ bạn, thì không thể không có được
Plugin tích hợp giữa nạp thẻ và banking, do bên MineVN phát triển, tăng cường sự quản lý của Admin & hỗ trợ nhiều dịch vụ gạch thẻ.LagFixer
Như tên gọi, giúp máy chủ bạn xử lý những tác vụ gây Lag. Mình chỉ khuyến khích bạn bật đúng 2 Modules làAbilityLimiter & LagShield. Tức là máy chủ đang phải gồng gánh còng lưng, cắt giảm đủ thứ ngầm bên trong, nhưng đập vào mắt người chơi thì mọi thứ vẫn phải mượt mà, visual không được sứt mẻ. Để làm được chiêu này, mình phải chia các tính năng ra theo Thứ tự ưu tiên cắt giảm từ "vô hình" nhất đến "dễ lộ" nhất như sau:
Mã:
LagShield:
enabled: true
worlds:
- world
- world_the_end
- world_nether
values:
tps_threshold:
leaves_decay: 19.9 # Gần như tắt đầu tiên, chả ai quan tâm lá rụng
fireworks: 12.0
entity_spawn: 16.5 # Giảm tải Entity (cả thuyền nha) khi chớm lag
tick_hopper: 18.5 # Ép phễu chậm lại khi tps rớt xuống 18.5
redstone: 17.0 # Bắt đầu vô hiệu hóa Farm đá đỏ nặng
liquid_flow: 18.9 # Chặn nước/lava chảy để cứu server
explosions: 18.0 # TNT đứng hình (bảo vệ khỏi bị crash do TNT nổ nhiều cùng lúc)
projectiles: 18.0 # Cố gắng giữ cung/nỏ hoạt động càng lâu càng tốt
mobai: 12.0 # Chỉ đóng băng quái khi server thực sự đang giãy chết
dynamic_view_distance:
enabled: true # TẮT NGAY! Chỉ nên sử dụng như con át chủ bài cuối cùng khi máy chủ thật sự Lag giật.
tps_thresholds:
- "20.1:10"
- "12:8"
- "10:6"
- "8:4"
dynamic_simulation_distance:
enabled: true
tps_thresholds:
- "19.8:4" # Vừa chớm lag là rút Simulation về 4 ngay
- "19.2:2"
- "18.0:1" # Dưới 18 tps thì server chỉ tính toán quanh người chơi
dynamic_tick_speed:
enabled: true
tps_thresholds:
- "19.9:2"
- "19.5:1"
- "19.0:0"
UltimateAutoRestart
Trong môi trường Java (thứ mà Minecraft chạy trên đó), có một cơ chế gọi là Garbage Collection (GC), nôm na là "anh lao công" đi dọn dẹp các dữ liệu không còn dùng tới để lấy lại RAM. Tuy nhiên, trong Minecraft, có một hiện tượng cực kỳ nhức nhối gọi làMemory Leak:- Người chơi chính là nguồn cơn làm ram phình to nhanh nhất. Họ đi map load-chunk mới liên tục, treo máy Farm hàng ngàn thực thể hoặc chạy những dàn máy đá đỏ siêu khổng lồ. Mấu chốt ở đây là dù anh em có dùng plugin dọn rác xịn đến đâu, thì Engine Java của Minecraft vẫn có những vùng nhớ bị kẹt không thể giải phóng hoàn toàn, gọi là memory fragmentation. Khi đó, những tàn dư dữ liệu sẽ bám lấy bộ nhớ máy chủ như những bóng ma mà không một thuật toán dọn rác nào quét sạch được
- Khi người chơi thao tác với máy chủ hoặc dùng quản trị viên dùng câu lệnh lệnh
/reload, nhiều plugin cũ không thực sự biến mất. Chúng vẫn để lại các "mối nối" (references) bí mật trong bộ nhớ. "Anh lao công" GC thấy vẫn còn mối nối nên không dám dọn những dữ liệu đó đi. Kết quả là RAM cứ đầy dần lên, dù người chơi đã bỏ đó rồi.
4.2. Datapack - Gói dữ liệu
[!!!] Cẩn thận, miễn phí, rất nhiều tính năng hay nhưng sẽ kéo máy chủ bạn xuống mồ cùng với vấn đề hiệu năng xích chặt vào Main Thread (Mọi lệnh trong Datapack đều phải chạy xong thì Server mới được sang tick tiếp theo của Vanilla). Tìm thêm những gói dữ liệu hay tại:
VeinMiner: Đào quặng nhanh
Terralith / Tecnoic / Incendium: Thêm Địa hình/Biome mới
DynamicLight: Đuốc thật sự phát sáng
True Ending - Ender dragon overhaul: Rồng siêu cấp xịn xò.
Crops and Kettle: Hệ thống cây trồng / chăn nuôi tương tự Farmer's Delight, đã và đang được bọn mình việt hóa --> chuyển sang Paper Plugin
Terralith / Tecnoic / Incendium: Thêm Địa hình/Biome mới
DynamicLight: Đuốc thật sự phát sáng
True Ending - Ender dragon overhaul: Rồng siêu cấp xịn xò.
Crops and Kettle: Hệ thống cây trồng / chăn nuôi tương tự Farmer's Delight, đã và đang được bọn mình việt hóa --> chuyển sang Paper Plugin
4.3. Phân tích những pha tự hủy kinh điển của Quản trị viên máy chủ
Làm quản trị viên một cỗ máy sinh tồn không chỉ là câu chuyện nhặt vài cái tệp tin trên mạng ném vào thư mục rồi cầu nguyện cho nó chạy mượt. Từ kinh nghiệm đi fix-bug dạo cho vô số hệ thống đang ngắc ngoải ngoài kia, mình nhận ra hầu hết anh em đều sập hầm ở những lỗi kiến trúc rất sơ đẳng. Đừng biến máy chủ của bạn thành một mớ mã nguồn hỗn độn bóp nghẹt tài nguyên phần cứng đấy nhé .Cài một mớ Plugins và Datapack theo hệ tâm linh
Cài càng nhiều, thì bạn càng phải chấp nhận việc gỡ lỗi và thiết đặt sẽ càng phức tạp. Thiết đặt kiểu này rất dễ oẳng. Nhiều Plugins can thiệp trực tiếp vào logic cốt lõi của game, trong khi lại có loại lại hook vào các sự kiện trên máy chủ. Hệ thống Plugins này mà dẫm chân lên nhau, ví dụ cùng quản lý cơ chế rơi đồ của Quái/Cùng quản lý việc người chơi nhắn tin, thì Server không báo lỗi đỏ lòm Console cũng khiến tps lặn mất tăm. Làm Ássmin thì nguyên tắc số 1 là phải đọc kỹ Documentation/Wiki/Source-Code của thứ mình nhét vô, trước khi cài bất cứ thứ gì.
| Cài hằng sa số Plugins | Cài Plugin lậu | Dev không giỏi / VibeCoding |
|---|---|---|
|
|
|
Datapack chạy dựa trên hệ thốngMột bản datapack viết tốt luôn thắng một chiếc Plugin viết tệ. Tại sao ạ?
command và function chính chủ của MoJang, nó được tối ưu hóa để vận hành trong vòng lặp tick ngay trên chính luồng xử lý chính mà không gây crash hệ thống đột ngột. Trái lại, một plugin Viết cẩu thả, ví dụ như lạm dụng quá nhiều task đồng bộ trên main thread hoặc không giải phóng bộ nhớ, sẽ khiến Server sập hầm ngay lập tức.
Dù vậy, Datapack dù có xịn đến đâu cũng không bao giờ chạm được tới ngưỡng của Plugin hàng tuyển, chỉ có thể thao tác với những gì Mojang cho phép thông qua lệnh và NBT, trong khi Plugin có toàn quyền truy cập vào API của
bukkit/spigot, thậm chí là can thiệp trực tiếp vào mã nguồn gốc nms - net minecraft server để thay đổi cách thế giới vận hành ở mức phân tử. Một ví dụ Plugin tương tác với Datapack viết hay, là của Craft-Engine, luồng xử lý linh hoạt hơn nhiều: Sự kiện phát sinh --> Event listener bắt ngay lập tức ở tầng byte-code --> thực thi logic trực tiếp trên Ram --> thay đổi trạng thái entity/block ngay trong tích tắc, đẩy những tác vụ nặng như tính toán định vị hoặc ghi ra các luồng xử lý bất đồng bộ riêng biệt (Async) để không làm Lag máy chủ bạn, điều mà Datapack Vanilla hoàn toàn bất lực.Lười tìm hiểu Plugin / tinh chỉnh config
|
|
|
RANDAR: Minecraft's Most DANGEROUS Exploit
Today we'll uncover the history of the most powerful Minecraft coordinate exploit of all time, and how to stay safe from it!Download Honkai: Star Rail with m...
Quản lý cơ sở dữ liệu kiểu sinh viên <-- Kiểu gì bạn cũng sẽ lặp lại cho mà xem
Chạy máy chủ cho năm ba người bạn thì xài file
.yml hay sqlite cục bộ là quá đủ. Nhưng nếu làm cộng đồng SMP lớn cỡ 15 ngừi, mà vẫn tư duy giữ dữ liệu bằng flatfile thì tới công chuyện liền. Khi dữ liệu phình to lên vài chục ngàn dòng, mỗi lần người chơi đăng nhập hay mua bán, máy chủ phải đứng hình truy vấn nguyên cái tệp mất vài tích tắc chỉ để đọc ghi tệp. Chuẩn bài là phải tham khảo ngay một hệ thống cơ sở dữ liệu xịn như Mariadb hay mySQL từ đầu, vừa mượt vừa dễ thao tác lên sau này.Case-study bài học xương máu?
- Học cách xử lý Khủng hoảng truyền thông, mình đề xuất Tài liệu PDF tổng hợp quy trình xử lý khủng hoảng truyền thông
5. Em không có tiền mua Plugins + thiết đặt xịn anh ơi!
Như một vị hiền triết trong Trang này đã từng nói:
Luôn thử sức nhé, hông ai đánh thuế ước mơ của bạn.
Khi bạn đã sử dụng hàng lậu rồi, mặc nhiên đồng ý với tất cả trách nhiệm đều thuộc về hành động đáng xấu hổ của bạn. Một khi đã có tiền, nhất định phải cảm ơn Dev + người chia sẻ tài nguyên nhé. Thậm chí, có những Plugins còn công khai mã nguồn mở, cho phép bạn được trải nghiệm tính năng == việc tự Fork về, giống như tác giả của Craft-Engine và tác giả bên Dotman đang làm vậy.
Luôn thử sức nhé, hông ai đánh thuế ước mơ của bạn.
Khi bạn đã sử dụng hàng lậu rồi, mặc nhiên đồng ý với tất cả trách nhiệm đều thuộc về hành động đáng xấu hổ của bạn. Một khi đã có tiền, nhất định phải cảm ơn Dev + người chia sẻ tài nguyên nhé. Thậm chí, có những Plugins còn công khai mã nguồn mở, cho phép bạn được trải nghiệm tính năng == việc tự Fork về, giống như tác giả của Craft-Engine và tác giả bên Dotman đang làm vậy.6. Lưu ý nhỏ của những người đi trước nè~
➥ Tập thói quen cài ít Plugins thôi, nếu thật sự muốn cân bằng hiệu năng thì đừng thêm cài gì nhiều vào. Sau gỡ lỗi có mà ná thở --
➥ Chạy 1 server phải đặt bản thân là ngừi chơi, thì mới biết cần gì, thêm gì sửa gì, và quan trọng, phải là người chơi thì mới biết phải móc tiền từ đâu, như nào. Tìm hiểu thêm tại Giáo trình nhập môn phát triển Game UIT và các tựa Game như:
➥ Chạy 1 server phải đặt bản thân là ngừi chơi, thì mới biết cần gì, thêm gì sửa gì, và quan trọng, phải là người chơi thì mới biết phải móc tiền từ đâu, như nào. Tìm hiểu thêm tại Giáo trình nhập môn phát triển Game UIT và các tựa Game như:
Dragon Nest
Elsword
Ragnarok Online / Ragnarok M
MapleStory
Gunny (PC / Mobile – DDTank)
Perfect World (Hoàn Mỹ Thế Giới – PC & Mobile)
Justice Online (Nghịch Thủy Hàn – 逆水寒)
Moonlight Blade Online (Thiên Nhai Minh Nguyệt Đao)
JX Online 3 (剑网3 – Kiếm Võng 3)
GuardianTales
--> Nhìn cách mà các con dân Marketing bên đó phát triển và duy trì cộng đồng người chơi như thế nào.
www.youtube.com
➥ Nên tham khảo trước Giáo trình trường đại học, đặc biệt là những chuyên ngành như:
Vì sao chúng ta lại ĐAM MÊ CHƠI GAME? (Góc nhìn của Phó tổng giám đốc VNG) | Spiderum | QUAN ĐIỂM
Vì sao chúng ta lại ĐAM MÊ CHƠI GAME? (Góc nhìn của Phó tổng giám đốc VNG) | SPIDERUMBài viết này không phải để thuyết phục bạn rằng chơi game rất tuyệt, và ...
➥ Nên tham khảo trước Giáo trình trường đại học, đặc biệt là những chuyên ngành như:
- "Principles of Marketing" (Philip Kotler) – Cuốn "Kinh thánh" nhập môn Marketing.
- Introduction to Design Thinking for UX Beginners của Uijun Park.
- MI1010 - Giải tích I; MI1030 - Đại số; CEA201...
- System Performance - Enterprise and the Cloud của Brendan Gregg.
Không giúp máy chủ thành công hơn, nhưng sẽ giảm tỉ lệ thất bại của bạn xuống khi làm việc với con người.
➥ ˗ˋˏCơm áo gạo tiềnˎˊ˗ sẽ hủy diệt đam mê của bạn. Luôn thử sức nhé.
➥ Luôn luôn có một thằng Ấn Độ hoặc người Trung Quốc giỏi hơn bạn
➥ Tham khảo MUG của Minecraft:
➥ Và EULA:
➥ Luôn luôn có một thằng Ấn Độ hoặc người Trung Quốc giỏi hơn bạn

➥ Tham khảo MUG của Minecraft:
Wiki:
1. Why does your Minecraft server community and server exist?
Understanding "why" your community exists is an important first step to setting you up for long-term success. It sets the groundwork for how you find and advertise to new players, the types of events you run, the rules you have in place, and the game modes you develop. If you know "why" your server community exists, then it gives something more defined that your players will be able to understand and be excited to share with their friends. When someone asks them, "Why did you join that server?" they can know exactly what to say because they can consistently sense it through your entire server experience
2. Who is your target audience and how do you advertise to them?
Minecraft servers are great places for players to unite over something they all have in common - their shared identity. In smaller groups, it's easy to spot what ties everyone together. But as your community expands, it's super important to be clear about what gives your community an identity. Not every shared thing can be the glue holding you together (like, "We all wear iron helmets" versus "We're all UGerman college students playing KitPvP"). To really click as a community, the things you have in common need to be a big part of who you are and what you do. So, who is your community for and what makes them unique? How do you advertise to find new members to join your community?
3. In the next 12 months, what three metrics will define success for your server?
Picture the ultimate Minecraft experience on your server - what's it like being part of your crew? What cool stuff are you bringing to the table for your players? Once you've got that down, you can measure how well you're doing in the short and long term. Start by thinking about some basic metrics, like how many players have played on your server in a month or how many epic events you've run. As you explore this idea of measuring your success, level up your skills and set even bigger or more specific goals.
4. What are three principles that are most valuable to your community?
A community is a unique opportunity for a group of players to treat each other in a special way, maybe in a better way than they would without the existence of the community structure. But in order for that to happen, the community has to first agree on what it believes in. The principles that a server follows is a compass pointing them to success, and they can also be closely related to the first question in this workbook, "Why does your community exist?" A shared set of values is incredibly powerful. It represents an aspirational way of life for the community and provides a north star for all actions and interactions in the community. Ultimately, knowing that they believe in similar values will help players create deeper and longer lasting bonds. It's also incredibly helpful for staff team members to understand the culture and principles of the server they're working at so that they can represent those values well as they work on the server. What values and principles are the most important to you? These could be based on competitions, gameplay, inclusivity, player safety, community engagement, a chill atmosphere, or many other things.
5. How does each player’s experience start when they join your server? How does this express your values in action?
When managing a community, you want each new player's first experience to reflect what your server's values and audience. It always comes back to, "Why does your server exist?", even on the first action a player takes. For example, if you value having a very relaxed and survival experience, and you advertise your server to a more mature and chill audience, you don't want their first experience on the server to be an immediate PvP battle with OP players or a Wither boss fight. Defining the player's first experience can help you hit the ground running with them and turn player bounces into long-term loyalty.
6. What are the different roles that members can play in your community? What does each role do?
The roles in your community can be short and sweet or widespread and complex, but as long as it is clear what those roles are, players can have a confident understanding on who to contact, when, and what they can do. Roles can include your server staff roles, volunteers, and admins or above, as well as player-based roles such as new players, those with PvP toggled on, educators, parents, or play-style-based. If you can define each role on your server in 1-2 sentences, then so can your players, and it gives them something they might aim to achieve in the future as they play long-term on your server.
7. What are the most important rules that you have to help you achieve your server's purpose and values?
While you may have already added your server's rules to our Rules Editor or linked to a page on your website on your edit-server page, it can be a good idea to think about what your most important rules are in your community. This can help make sure that any server moderators you have know where to focus their primary attention, and which rules players will be highly expected to follow in order to uphold the values of your server. You don't need to copy all of your rules here (unless they're all equally valuable to you, of course), but think of the ones that are most important to creating a great experience that aligns with your community's interests and gameplay and list those here.
8. How do you make decisions for the server? Who gets to decide what?
Did you know that different decision-making styles and processes can impact how players interact on the server? Some servers have open decisions with the community of players directly involved, while other servers allow a single person or small group make the decisions which the rest of the players follow. Each of these can have positive and negative impacts on the player experience, but the most important thing is that this process is consistent and understood by everyone involved. If your staff and players know how decisions are made, when, and who makes them, then that can help alleviate tension or confusion that might be caused, while simultaneously making them excited to follow along with the process as the server evolves over time. How do you make decisions for your server? Is it a group effort, do different team members make different kinds of decisions, or is one person responsible for all decisions made?
9. What are the risks that can prevent your community from thriving? What tools do you use to protect your server and players? Are they reactive or proactive?
Managing a Minecraft community comes with many potential challenges, and you will get to know these well over time. You don't need to have a plan for every possible risk, but it's a good idea to exercise this thought-process and ask yourself what possible challenges might lie ahead for you. If you can write those down now, it can help you resolve the issues or prepare solutions ahead of time and reduce any possible damage the challenges may cause. Risks to your server might be relating to user-generated content (UGC), chat moderation, player retention, server stability and performance, player disputes or griefing, or financial challenges. What challenges are the most concerning for you that you want to make sure you're prepared for? What challenges and risks do you already have solutions in place to prevent or mitigate?
10. What are the simplest channels for you to communicate with other staff? With players? How often do you talk with them?
"Community" and "Communication" have a lot more in common than just the first 7 letters! When, where, and how often you communicate with your players can dramatically influence the satisfaction and long-term loyalty they have with your server. You can use many tools to communicate different messages and engage with your community. Do you use Discord? In-game announcements? A blog? Forums? Social media? Do your players know how to get help if they have a problem or question? What about talking with your staff - do they know where to go to get the best answers so they can do their jobs more excellently? If you define that here, then it can help you prioritize where you communicate with your staff and players later.
➥ Và EULA:
7. Sau 1 - 3 tháng, rồi sao?
| ( ദ്ദി ˙ᗜ˙ ) Tìm nhà đầu tư ủng hộ chiến lược của bạn | (¬_¬") Đừng lừa tiền người chơi rồi đóng |
|---|---|
|
➥ Sau 1 - 3 tháng đầu, một khi đã xây dựng được lộ trình phát triển riêng, bạn nên đầu tư thời gian để học về:
- Database người chơi,
- Dành thời gian vẽ Gói đồ họa,
- Học cách làm việc với con người...
> Nhiều nha, gắng nhé! Hướng dẫn phát triển "thần kinh thép" khi làm việc với cộng tác viên trẻ tuổi:
8. Danh mục tài liệu tham khảo bổ sung
- Chiếc guide nhỏ xinh giúp bạn dễ dàng tối ưu máy chủ
- Danh sách những vật (người, server, dự án hoặc bất cứ thứ gì) gây tranh cãi trong cộng đồng Minecraft Việt Nam
- MC-Optimization-Guide
- GeyserMC Discord
- XiaoMoMi Discord
- Stella Studios
| - Discord Servers - Hỗ trợ mình phát triển bài viết này, sẽ làm Docs/Website sau khi mình có thời gian. - Mẹ bạn, nếu bạn DDoS máy chủ mình đang phát triển

Đính kèm

xịn
không quan tâm
chơi thế cho' nao` được.
hóa đơn tiền điện cứ thế mà tăng brr brr...
Quái đông máy chủ khóc, người chơi than <--> Quái ít người chơi than
của các thực thể được sinh ra từ lồng triệu hồi - 



