Minecraft Bedrock đang giết những thứ từng nuôi nó lớn.

PocketMine-MP dừng hỗ trợ, NetherGames đóng cửa, Zeqa đi từ một fork của PocketMine-MP đến mạng máy chủ Featured, còn mỗi phần mềm Bedrock sống sót bằng một cách khác nhau. Đây không giống một chuỗi tai nạn rời rạc. Nó giống một hệ sinh thái đang tự tay thu hẹp phần từng giúp mình lớn lên.

“Information wants to be free.” - Stewart Brand

Mình thích câu của Stewart Brand, người sáng lập ấn phẩm Whole Earth Catalog, vì nó có một kiểu ngang bướng rất đúng với internet cũ. Thông tin muốn được tự do không phải vì mọi thứ trên đời đều nên miễn phí theo nghĩa lười biếng. Nó muốn được tự do vì thông tin khi bị khóa lại quá lâu sẽ làm những người bên ngoài ngộp thở. Người muốn học không học được. Người muốn sửa không sửa được. Người muốn tạo ra thứ mới phải đứng trước một cánh cửa đóng và được bảo rằng hãy chờ ai đó có quyền thương mình.

Với Minecraft Bedrock, cảm giác đó càng ngày càng rõ. Ngày trước, phần cộng đồng server, plugin, modding, reverse engineering và mấy phần mềm không chính thức đã giúp Bedrock sống động hơn rất nhiều. Nó giúp người chơi ở lại. Nó giúp chủ server nhỏ dựng cộng đồng riêng. Nó giúp một đứa như mình đi từ tải Minecraft PE, mò IP, host server trên điện thoại, chỉnh plugin PHP, rồi dần dần bước vào code.

Rồi đến lúc Minecraft đã có lượng người chơi ổn định, có Marketplace, có Realms, có partner, có Featured Servers, có hệ thống thương mại đủ trưởng thành, chính những phần mềm và server từng giúp cộng đồng Bedrock lớn lên lại bị đẩy vào một môi trường kỹ thuật ngày càng khó sống.

Mình không có tài liệu nội bộ của Mojang hay Microsoft. Mình không thể nói có một phòng họp nào đó ra lệnh “giết PocketMine-MP” hay “giết NetherGames”. Nhưng cũng không nên giả vờ rằng chỉ những gì nằm trong thông cáo chính thức mới là thực tế. Đôi khi, các quyết định nối tiếp nhau cùng đẩy mọi thứ theo một hướng. Xu hướng ở đây khá rõ. Server Bedrock độc lập ngày càng phụ thuộc vào thông tin không công khai, vào quan hệ partner, vào một vài maintainer, vào tài trợ không ổn định và vào thiện chí của những bên đã được Mojang chọn.

Đó là lý do mình thấy cần viết bài này như một lời chỉ trích, cũng là một lời chia buồn. Chia buồn PocketMine-MP. Chia buồn NetherGames. Chia buồn cho một phần Minecraft Bedrock từng rất mở, rất bụi, rất nhiều lỗi, nhưng cũng rất thật.

Một cái chết không xảy ra trong một đêm

Ngày 09.07.2026, repository chính của PocketMine-MP trên GitHub được archive và chuyển sang read-only. Trước đó vài ngày, bản phát hành 5.44.3 vẫn còn được đưa ra vào 06.07.2026. Nhìn từ bên ngoài, chuyện này có vẻ đột ngột. Nhưng nếu đọc lại các dấu hiệu từ vài năm trước, PMMP không ngã xuống trong một đêm. Nó đi tới điểm cuối sau rất nhiều năm bị kéo căng.

Trang chủ PMMP hiện đã thành một trang farewell với dòng 2012 - 2026. Nội dung chia tay nói khá thẳng. Một developer quan trọng rời Minecraft để theo đuổi điều khác, và đội PMMP không còn ai sẵn sàng cập nhật cho các phiên bản Minecraft mới. Họ đã gom tài liệu về quy trình update để ai muốn fork còn có thể tự đi tiếp, nhưng đội PMMP sẽ không cung cấp thêm cập nhật nào nữa.

Nếu chỉ đọc đến đó, rất dễ kết luận PMMP chết vì thiếu người. Kết luận này đúng, nhưng chưa đủ. Thiếu người là triệu chứng cuối. Câu hỏi khó hơn là vì sao một dự án đã sống hơn mười năm, có hàng nghìn server phụ thuộc, có cộng đồng plugin, có repo nhiều nghìn sao, lại rơi vào trạng thái chỉ cần vài người rời đi là không còn đường cập nhật chính thức.

Muốn trả lời, phải quay về issue “I'm retiring” do Dylan, thường được biết đến với tên dktapps và là maintainer chính của PMMP trong nhiều năm, mở ngày 21.03.2024. Anh nói mình sẽ rời vai trò ở PocketMine-MP và rời Minecraft. Anh đã mất đam mê với Minecraft từ nhiều năm, chỉ còn mở game lên để test thay đổi của PocketMine. Nhưng điều quan trọng hơn nằm ở phần nói về tương lai dự án. Dylan gọi PMMP là nền móng mà hàng nghìn server Minecraft đã phụ thuộc, nhưng cũng nói việc duy trì nó cần mức cam kết, trách nhiệm và chuyên môn rất lớn. Việc đó thường vô ơn và không trả tiền thuê nhà, trừ khi có một doanh nghiệp dùng nó đứng ra tài trợ.

Đây là một câu rất đau. PMMP không phải project đồ chơi. Nó là hạ tầng của rất nhiều server. Nhưng hạ tầng đó lại dựa vào vài người có thời gian, có năng lực reverse engineering, có sức chịu đựng với cộng đồng, và đôi khi có một partner như Lifeboat, mạng máy chủ Featured đã tài trợ PMMP trong nhiều năm. Một hệ sinh thái khỏe mạnh không nên đặt phần xương sống của mình lên một số ít người như vậy rồi tỏ vẻ ngạc nhiên khi họ mệt.

Dylan cũng dự báo một tương lai rất gần với những gì mình đang thấy. Server lớn sẽ duy trì fork riêng. Server nhỏ sẽ chết dần. Không phải vì server nhỏ lười, mà vì chi phí hiểu Bedrock mới, cập nhật protocol, cập nhật dữ liệu và sửa plugin đã vượt khỏi tầm của đa số cộng đồng nhỏ.

Lifeboat đã cứu PMMP, nhưng không thể tạo ra người kế nhiệm

Nếu muốn chỉ trích chuyện này cho công bằng, phải nói thẳng một điều dễ bị kể sai. Lifeboat không phải công ty đến hút cạn PMMP rồi bỏ đi. Những lời của chính dktapps cho thấy điều gần như ngược lại. Lifeboat đã biến công việc vốn là hobby không lương thành một công việc có thể tiếp tục làm, trả tiền cho những phần PMMP mà network của họ cần, đồng thời cho phép thành quả được công khai cho cộng đồng.

Ngày 08.05.2023, dktapps viết rằng “without lifeboat y'all would still be stuck on PM3 ... and we wouldn't even be talking about PM5”. Có thể dịch thẳng là “nếu không có Lifeboat, mọi người có lẽ vẫn mắc kẹt ở PM3 và chúng ta còn chẳng nói tới PM5”. Trong cùng cuộc trao đổi, anh cũng nói Lifeboat không kiểm soát phần open source của PMMP. Đây là khác biệt quan trọng giữa một nhà tài trợ có lợi ích và một bên chiếm hữu dự án.

Một năm sau, dktapps còn nói “PM4 would never have released if i hadn't been hired by lifeboat”, nghĩa là “PM4 sẽ không bao giờ được phát hành nếu mình không được Lifeboat thuê”. Không cần tô hồng thêm. Chỉ riêng câu này đã đủ để Lifeboat được ghi công đúng chỗ. Một Featured Server đã dùng tiền của mình để giữ một upstream mở sống thêm nhiều năm, dù họ hoàn toàn có thể giữ phần việc ấy trong fork nội bộ.

Nhưng đây cũng là nơi lời khen biến thành một câu hỏi khó. Tại sao một dự án hạ tầng phục vụ hàng nghìn server lại phải sống nhờ một mạng máy chủ riêng tự nguyện trợ giá? Tại sao kiến thức cập nhật giao thức, tạo dữ liệu và phân tích phần bên trong Bedrock Dedicated Server (BDS) vẫn tập trung đến mức từ năm 2022 dktapps đã nói rằng nhóm người vừa đủ kỹ năng cập nhật giao thức, vừa có lý do làm công việc ấy công khai là rất nhỏ? Người làm được đã hiếm. Người làm được mà vẫn sẵn sàng dành công sức cho phần hạ tầng dùng chung còn hiếm hơn.

Đến tháng 05.2026, sự thật này lộ ra rõ hơn. Dktapps nói cả anh và Dries, đồng sở hữu NetherGames và là người đưa phần kỹ thuật của server sang hệ thống nội bộ, đều được Lifeboat trả tiền, nhưng “it's still not enough to make it worth it”, nghĩa là “vẫn chưa đủ để khiến công việc đó đáng tiếp tục”. Tiền giúp lao động bớt vô hình. Nó không làm việc cập nhật giao thức bớt mệt, không làm Bedrock bớt khép kín, không tự sinh ra đam mê đã mất và cũng không tạo ngay một maintainer vừa có kỹ năng vừa muốn gánh trách nhiệm lâu dài.

Ngày 10.07.2026, sau thông báo kết thúc, dktapps còn đính chính một chi tiết dễ bị hiểu lầm. Lifeboat đã đề nghị tiếp tục tài trợ PMMP, nhưng trong team không còn ai có kỹ năng cần thiết muốn tiếp tục làm. Vấn đề không phải nhà tài trợ khóa ví. Vấn đề là không còn người phù hợp để nhà tài trợ trả tiền.

Cuộc trò chuyện ngay sau đó cho thấy “không còn người muốn làm” không phải một câu né tránh. Khi một thành viên cho rằng nguyên nhân là kiệt sức, dktapps trả lời rằng kiệt sức chỉ là một phần, phần lớn hơn là nhiều năm bị bào mòn động lực bởi những gì liên tục đến từ Mojang. Anh nói mình đã nghĩ tới chuyện dừng từ năm 2018. Trong vài năm cuối, anh nhìn Geyser servers lớn nhanh và chiếm ưu thế, trong khi PMMP phải vượt qua các rào cản kỹ thuật của PHP, tự gánh performance, technical debt và khoảng cách vanilla. Đây là lời tự đánh giá rất nặng của người đã giữ dự án lâu nhất, không phải phán quyết khách quan rằng PHP vô dụng. Nhưng nó giải thích vì sao thêm tiền ở phút cuối không thể làm một công việc đã mất ý nghĩa với người làm trở nên đáng sống lại.

Thông cáo chia tay hiếm khi chứa hết những câu hỏi khó. Trong cuộc trao đổi này, giá trị không nằm ở suy đoán của người hỏi mà ở những điều dktapps trả lời khi được hỏi. Nhờ vậy, lý do “không còn người muốn làm” hiện lên đầy đủ hơn một dòng thông báo ngắn. Nó gồm cả kiệt sức, sự bào mòn động lực và cảm giác công việc ngày càng ít đáng để tiếp tục.

Nghịch lý của Lifeboat vì vậy không làm lời chỉ trích Mojang yếu đi. Nó làm lời chỉ trích chính xác hơn. Một Featured Server tử tế có thể cứu upstream công khai trong nhiều năm. Nhưng lòng tốt của một doanh nghiệp không phải chính sách hệ sinh thái, càng không phải kế hoạch kế nhiệm. Lifeboat đã kéo PMMP ra khỏi mép vực vài lần. Họ không thể một mình bù tài liệu thiếu, quyền truy cập không đồng đều, kiến thức tập trung vào quá ít người, nhóm người đóng góp hẹp và một kiến trúc phải tự viết lại Minecraft trong khi phía Java được dùng server chính thức làm nền.

PocketMine-MP từng là cánh cửa quá lớn

Với mình, PMMP không chỉ là một software server viết bằng PHP. Nó là một cánh cửa. Bài PocketMine-MP là gì? đã kể kỹ hơn phần lịch sử và kỹ thuật, còn bài Minecraft từ 2015, trước khi mình biết IP là gì giữ lại phần ký ức cá nhân. Nhưng nếu gom lại trong một câu, PMMP đã cho rất nhiều người một cách để biến Minecraft Bedrock thành nơi của riêng mình.

Không phải ai cũng có tiền thuê hạ tầng tốt. Không phải ai cũng biết Go, C++, Java hay network protocol. Nhưng PHP, plugin, file config, Poggit, DevTools, mấy forum cũ và các video hướng dẫn từng đủ để một học sinh mở server, sửa spawn, chỉnh economy, thêm rank, dịch message, rồi từ từ hiểu rằng phía sau một lệnh trong game là code thật.

PMMP không hoàn hảo. Nó không phải vanilla. Nó thiếu world generation kiểu Mojang, thiếu redstone đầy đủ, thiếu mob AI như game gốc, và plugin có thể biến server thành một nồi lỗi nếu chủ server cứ tải đại mọi thứ trên mạng. Nhưng chính vì không hoàn hảo mà nó dạy người ta cách nhìn vào ruột phần mềm. Không có một cái hộp đen thần thánh nào cả. Server là event, packet, tick, permission, scheduler, memory, log, crash, và rất nhiều lần sửa xong một lỗi thì thấy hai lỗi khác đứng xếp hàng.

Một hệ sinh thái như vậy không chỉ tạo ra server. Nó tạo ra người học. Nó tạo ra developer. Nó tạo ra cộng đồng địa phương. Nó tạo ra các kho plugin, các nhóm Facebook, Discord, GitHub org, archive, tool nhỏ và thói quen chia sẻ tài nguyên. Nếu Minecraft Bedrock ngày nay có cộng đồng lớn, không thể phủ nhận đóng góp của những thứ không chính thức đó. Chúng là phần bùn đất dưới móng nhà. Khi nhà đã xây cao, người ta hay quên bùn đất. Nhưng móng không tự sinh ra từ logo đẹp.

NetherGames là lời cáo buộc công khai hiếm hoi

NetherGames đóng cửa vĩnh viễn vào ngày 28.06.2026. Thông báo của họ không phải một dòng status than mệt. Nó là một bản tường thuật gần mười năm. Server bắt đầu ngày 18.01.2016, từ một server nhỏ dùng mớ plugin công khai tải từ forum PocketMine. Sau đó NetherGames đi qua Better Together năm 2017, giai đoạn lượng người chơi nhiều server sụt giảm vì bắt buộc đăng nhập Xbox, rồi sáp nhập với GameCraftPE của Dries. Nhờ năng lực kỹ thuật của Dries, NetherGames chuyển khỏi mớ plugin công khai và xây hệ thống in-house.

Trong đại dịch, NetherGames từng đạt 3.314 người chơi đồng thời. Nghĩa là đây không phải một server nhỏ yếu vì thiếu cố gắng. Đây là một server lớn, có vận hành, có đội ngũ, có sản phẩm, có cộng đồng, có hạ tầng web, có game mode riêng, có kinh nghiệm thực chiến gần một thập kỷ. Vậy mà họ vẫn đóng.

Phần đáng chú ý nhất trong thông báo đóng cửa NetherGames nằm ở đoạn họ nói Microsoft và Mojang làm server không Featured ngày càng khó tồn tại. Họ cáo buộc Mojang đã cắt quyền tiếp cận thông tin kỹ thuật từng được cung cấp tự do, và dù từng được trấn an rằng quyền truy cập sẽ được phục hồi, điều đó không xảy ra. Họ nói việc theo kịp phiên bản Minecraft mới trở thành một cuộc chiến tốn tài nguyên mà họ không thể thắng. Họ cũng từng họp với Microsoft năm 2024 về khả năng trở thành Featured Server, rồi bị đầu mối liên hệ ghost.

Bản Discord do Callum, người sáng lập và đồng sở hữu NetherGames, đăng giữ nguyên hai nửa quan trọng của câu chuyện. Phần đầu kể NetherGames đi lên từ “mớ plugin công khai” trên forum PocketMine. Phần sau nói thẳng sân chơi của các server không Featured là không cân bằng. Tới ngày đóng cửa, Callum còn hứa phần lớn game và map sẽ được mở nguồn để người khác có thể tự chạy phiên bản NetherGames của họ. Một server cáo buộc thông tin bị đóng lại đã chọn đáp lại bằng cách mở phần di sản có thể mở. Chi tiết đó làm lời chia tay buồn hơn, nhưng cũng đẹp hơn.

Tuy vậy, không nên biến lời cáo buộc của Callum thành một nguyên nhân duy nhất. Khi một thành viên hỏi vì sao NetherGames chưa từng được Featured, một người giữ vai trò Support Representative của server nói có khá nhiều vấn đề nội bộ mà anh không thể thảo luận, và chúng cũng góp phần khiến NetherGames không được Featured. Câu này không bác lời Callum. Nó cho thấy hai lớp có thể cùng đúng. Mojang tạo ra một mặt sân lệch và bỏ lửng đầu mối liên hệ, còn NetherGames có các vấn đề nội bộ riêng mà công chúng không thấy. Một hệ thống khắc nghiệt thường không cần là nguyên nhân duy nhất. Nó chỉ cần làm mọi điểm yếu sẵn có trở nên đắt hơn.

Lời kể này không đứng một mình. Ngày 23.06.2026, vài ngày trước khi NetherGames đóng, dktapps nói anh biết gần như toàn bộ người trong đội và viết “i saw all the nethergames guys slowly get the hope drained out of them” khi Mojang cứ kéo dài chuyện partner status. Có thể dịch là anh đã nhìn thấy hy vọng của đội NetherGames bị rút cạn dần. Đây vẫn là lời chứng của một người quen đội ngũ, không phải biên bản nội bộ. Nhưng nó khớp với sự kiệt sức hiện rõ trong thông báo đóng cửa. Trước khi một server tắt, thường có một giai đoạn rất dài trong đó những người xây nó thôi tin rằng cố thêm sẽ thay đổi được gì.

Đây là lời của NetherGames, không phải tài liệu nội bộ của Mojang. Nhưng nó rất quan trọng vì nó trùng khớp đáng sợ với những gì tài liệu PMMP đang mô tả ở phía kỹ thuật. Một bên là server vận hành thương mại nói mình bị cắt thông tin và không thể thắng cuộc đua cập nhật. Một bên là phần mềm server mã nguồn mở nói muốn cập nhật Bedrock mới cần dữ liệu từ BDS và một số dữ liệu chỉ còn lấy được nếu có build dành cho partner.

Hai câu chuyện đó không nhất thiết đồng nghĩa NetherGames đóng cửa vì PMMP ngừng hỗ trợ. NetherGames đã có hệ thống nội bộ từ lâu, và Dries cũng là một mắt xích kỹ thuật rất riêng của họ. Nhưng chính vì vậy trường hợp NetherGames càng đáng nói hơn. Ngay cả khi thoát khỏi việc tải plugin công khai, ngay cả khi có đội ngũ riêng, server Bedrock độc lập vẫn đụng cùng một bức tường. Bedrock là một nền tảng mà thông tin quan trọng không được phân phối công bằng.

Zeqa không đứng ngoài câu chuyện này

Zeqa kín tiếng hơn NetherGames về software phía sau, nhưng không kín đến mức không còn dấu vết. Tổ chức GitHub của Zeqa Network tự giới thiệu đây là GitHub chính thức của network. Ngay trên trang đó có repo NG-PM, được fork trực tiếp từ NetherGamesMC/PocketMine-MP. Dòng mô tả nguyên văn là “Modified fork of NG's fork of PM”, nghĩa là một fork đã chỉnh sửa từ fork PocketMine của NetherGames.

Lịch sử Git làm mối liên hệ này rõ hơn tên repo. Sau điểm tách khỏi NetherGames, Zeqa có một nhóm commit riêng vào tháng 10.2025. Một commit ghi thẳng “customisations for use on Zeqa”, có thể dịch là “các tùy biến để dùng trên Zeqa”. Commit kế tiếp chuyển sang fork BedrockProtocol của Zeqa. Những commit khác thêm hashed block IDs và chuyển Discord logging về Zeqa core. Trong source, VersionInfo gọi software là NG-PocketMine-MP, còn composer.json dùng các package BedrockData và BedrockProtocol của NetherGames.

Đầu năm 2026, Zeqa tạo thêm một fork trực tiếp từ PMMP. Lần này tên trong core được đổi thành ZeqaMine-PM. Nó không nằm yên để làm bookmark. Wraith0x10, người thuộc đội Administration của Zeqa, cùng các contributor thêm spear, lunge, slow falling, sửa experience bottle và splash potion đến ngày 17.03.2026. Repo plugin OnlineTime của Zedstar16 dùng giao diện plugin API 5 của PMMP và ghi rõ nó đang được dùng trên zeqa.net.

Vì vậy, phần lịch sử không còn cần nói kiểu “Zeqa có vẻ dùng PocketMine-MP”. Dữ liệu công khai đủ để kết luận Zeqa đã vận hành và tự tùy biến backend bắt nguồn từ PMMP ít nhất trong giai đoạn cuối năm 2025 đến đầu năm 2026. Điều chưa thể kết luận là mọi node của Zeqa đều chạy cùng một core, hoặc backend production hiện tại vẫn y nguyên như repo công khai.

Discord công khai của Zeqa bổ sung một lớp xác nhận đời thường hơn. Ngày 09.07.2026, ngay sau khi PMMP dừng hỗ trợ, một người hỏi “Pocketmine wont get any updates anymore, will zeqa update pmmp themselfes?”. Dịch gần nghĩa là “PocketMine không còn được cập nhật nữa, Zeqa có tự cập nhật PMMP không?”. Trước đó, ngày 20.06.2026, khi có người hỏi Season 10 dùng Nukkit hay PMMP, wraith trả lời ngắn “PMMP”. Ngày 23.06.2026, cũng trong kênh chat đó, wraith mô tả Jack và Zed là hai người cùng xử lý phần giao thức và cập nhật phiên bản. Những mẩu này không thay thế bằng chứng GitHub, cũng không chứng minh mọi backend hiện tại. Nhưng chúng cho thấy PMMP không phải một suy đoán bên ngoài gán vào Zeqa. Nó là một phần từ vựng vận hành mà chính cộng đồng Zeqa đang dùng khi hỏi về mùa mới, bản cập nhật và trách nhiệm bảo trì.

Khi mình ping zeqa.net:19132 ngày 13.07.2026, endpoint chỉ trả dòng WaterdogPE Proxy. Tài liệu WaterdogPE giải thích rất đúng với hiện tượng này. Proxy là cửa vào người chơi nhìn thấy, còn gameplay, world, block và entity nằm trong các downstream server phía sau. Những downstream đó có thể là PocketMine-MP, Nukkit hoặc software khác. Bởi vậy server ping hiện tại xác nhận Zeqa dùng WaterdogPE ở mặt trước, nhưng không thể lật tấm rèm để gọi tên backend.

Điểm này còn quan trọng hơn khi nhìn từ chính WaterdogPE. Issue #428 mô tả lỗi khi chuyển người chơi từ downstream Java + Geyser sang downstream Bedrock native Nukkit qua WaterdogPE. Setup không có custom item hay plugin đặc biệt, kết nối thẳng vào Nukkit lại hoạt động, nên vấn đề nằm ở lớp chuyển giữa hai kiểu downstream. Trong Discord WaterdogPE, maintainer cũng nhắc rằng việc trộn nhiều server software không nên được xem là tự nhiên tương thích vì các cờ như authoritative movement, block breaking hoặc inventory authority được gửi trong StartGamePacket. PR #420 sau đó ghi các thay đổi đã được test trên GeyserMC, Nukkit và PocketMine. Vì vậy, WaterdogPE không phải tấm nhãn backend. Nó là lớp giao thông, còn phía sau có thể là nhiều loại server với các giả định protocol khác nhau.

Lịch sử hỗ trợ BDS của WaterdogPE cũng cho thấy software sống bằng cách đổi phạm vi. Cuối năm 2024, maintainer nói WaterdogPE không làm protocol translation, chỉ là proxy và lúc đó chưa hỗ trợ BDS. Tới tháng 07.2026, BDS đã hoạt động phần nào, còn các test build liên tục sửa login, transfer và trường hợp proxy cùng máy với BDS. Đây không phải bằng chứng mọi thứ đã ổn. Nó là ví dụ về một dự án chuyển từ giả định PMMP/Nukkit sang gánh thêm BDS bằng nhiều vòng vá tương thích. Khi upstream chung yếu đi, phần phức tạp không biến mất. Nó trôi sang proxy, bridge và từng downstream.

Các fork công khai cũng đang chậm hơn phiên bản 1.26.20 mà Zeqa quảng bá ở mặt ngoài. Có vài khả năng hợp lý. Zeqa có thể có branch private mới hơn, có thể dùng một fork khác, có thể chỉ giữ PMMP cho một số gamemode, hoặc đã chuyển một phần hệ thống. Sự kín tiếng ở đây không tự động là điều xấu. Một server PvP lớn có lý do để giữ anticheat, matchmaking, economy và vận hành production ở private. Nhưng sự lệch giữa code công khai và hệ đang chạy cũng cho thấy lời dự báo của dktapps đã thành hình. Server lớn giữ fork riêng và tiếp tục sống, còn cộng đồng nhỏ không còn một upstream chung để đi theo.

Câu chuyện còn đổi hướng mạnh hơn khi InPvP mua Zeqa. Trong thông báo mua lại, Mohamed Weheba, người công bố thương vụ từ phía InPvP, gọi Zeqa là server Bedrock lớn nhất bên ngoài Featured list. Anh nói các chủ cũ sẽ chuyển sang vai trò quản lý và phát triển, đồng thời đặt mục tiêu đầu tư lớn và đưa Zeqa vào danh sách Featured chính thức. Sau đó, bài công bố Season 10 nói Mineville và Zeqa sẽ hợp thành Mineville Zeqa, còn store chính thức hiện ghi Zeqa đã là một phần của Mineville Zeqa, một Featured Server.

Aeris làm rõ thêm hướng tập trung đó. Trong Discord Aeris, thông báo ngày 02.05.2026 nói Aeris đã trở thành một phần của InPvP sau thương vụ mua Zeqa gần đó. Ở phía Zeqa, tài khoản PizzaMC trong kênh thông báo cũng công bố Aeris gia nhập InPvP và mục tiêu là xây một trung tâm PvP Bedrock chung quanh Zeqa. Phần hỏi đáp cùng ngày nói Aeris không còn join riêng được, người vào Aeris sẽ redirect sang Zeqa, rank được chuyển sang Zeqa và thông báo sẽ dời về Zeqa rồi Mineville. Đây không chứng minh backend của Aeris hay Zeqa là gì. Nhưng nó cho thấy Zeqa không chỉ sống sót. Nó trở thành một đầu mối gom thêm các brand PvP khác vào hệ InPvP và Mineville.

Những trao đổi của dktapps làm đường đi này bớt trừu tượng. Anh nhận xét việc Zeqa được một partner hiện hữu mua lại trên thực tế là con đường duy nhất để họ vào partner program. Đến ngày 07.07.2026, anh nói “i think zeqa going fully closed source is shitty and selfish but i understand it from a business perspective”. Dịch gần nghĩa là “mình thấy Zeqa đóng source hoàn toàn thì tệ và ích kỷ, nhưng mình hiểu nó từ góc nhìn kinh doanh”. Hai câu này là quan điểm của dktapps, không phải lời thú nhận của Zeqa. Dù vậy, chúng mô tả rất gọn incentive đang hoạt động. Code mở nuôi cả vùng chung, còn code kín giữ lợi thế cho bên đang phải tự trả chi phí sống sót.

Không có bằng chứng Mojang ép Zeqa bán mình. Mình cũng không biến một thương vụ mua lại thành âm mưu. Nhưng rất khó bỏ qua diễn biến này. NetherGames cố bước vào Featured list rồi nói mình bị ghost và cuối cùng đóng cửa. Zeqa, một network từng đứng ngoài Featured list và chạy core bắt nguồn từ PMMP cùng fork NetherGames, được một studio có Mineville mua lại rồi đi vào chính network Featured đó. Zeqa không chết như NetherGames. Nó đi qua cánh cửa.

Đây có lẽ là chi tiết dễ bị bỏ qua nhất trong toàn cảnh. Áp lực nền tảng không chỉ tạo ra archive và thông báo đóng cửa. Nó còn tạo ra sự tập trung. Một upstream mở có thể kiệt sức như PMMP. Một server độc lập có thể đóng như NetherGames. Một server đủ lớn và đủ giá trị có thể sống bằng fork kín, developer nội bộ, nguồn vốn mới rồi được mua lại và nhập vào nhóm Featured. Ba kết quả khác nhau, nhưng đều nói cùng một điều. Tồn tại độc lập trên Bedrock đang ngày càng đắt.

Debug symbols nghe khô, nhưng đó là oxy

Để hiểu vì sao mọi chuyện nghiêm trọng, phải nói về debug symbols. Nghe hơi khô. Nhưng với phần mềm server Bedrock độc lập, đây gần như là oxy.

BDS là phần mềm server Bedrock chính thức của Mojang. Một bản BDS bình thường chỉ là tệp chương trình đã biên dịch. Nó chạy được, nhưng bên trong rất khó đọc. Debug symbols là lớp thông tin giúp ánh xạ những phần trong tệp đó thành tên hàm, tên lớp, cấu trúc và các định danh dễ hiểu hơn. Trên Windows, lớp thông tin này thường được đóng gói trong tệp Program Database (PDB) có đuôi .pdb. Có symbols, người làm dịch ngược biết mình đang nhìn vào đâu. Không có symbols, mọi thứ giống như đi trong một thành phố bị tháo hết biển đường.

Năm 2019, dktapps đã viết bài 1.13, debug symbols and the Titanic trên forum PMMP. Anh giải thích debug symbols là công cụ thiết yếu mà server và mod development đã dựa vào nhiều năm. Khi symbols bị gỡ, việc reverse engineer protocol trở nên khó hơn nhiều. Công cụ tự động có thể vô dụng, còn phân tích bằng tay mất nhiều công hơn. Anh cảnh báo update một phiên bản mới có thể từ vài ngày thành vài tuần hoặc vài tháng.

Lúc đó, dktapps vẫn không muốn nói Mojang đang cố giết server bên thứ ba. Anh nghiêng về cách hiểu rằng Mojang đang chống hacker, còn server third-party là thiệt hại ngoài ý muốn. Mình thấy thái độ đó rất đáng tôn trọng. Nó không vội kết tội. Nó cố công bằng với người bên kia. Nhưng đến năm 2026, bức tranh đã khác. Khi một quyết định bất lợi kéo dài nhiều năm, khi cộng đồng phản ứng, khi server lớn đóng cửa và khi tài liệu chính thức của PMMP phải ghi rằng dữ liệu cần thiết nằm sau quyền truy cập partner, rất khó tiếp tục gọi toàn bộ chuyện này là vô tình.

Tài liệu Implementing new Minecraft version support in PocketMine-MP nói rõ quy trình cập nhật cần BDS tương ứng, các repo BedrockProtocol, BedrockData, schema nâng cấp block và item, công cụ dump dữ liệu, packet traces giữa BDS và client, cùng các mod của BDS để trích xuất dữ liệu. Đáng chú ý nhất là ghi chú từ Bedrock 1.21.40. Mojang không còn public BDS build có debugging symbols. Muốn tạo dữ liệu cần thiết, người làm server phải có quyền truy cập build được cung cấp bởi server partner hoặc Marketplace partner. Tài liệu protocol công khai chỉ thay thế được một phần, không đủ hết. Kết luận của tài liệu là server bên thứ ba phụ thuộc vào thiện chí của Minecraft partners.

Câu “phụ thuộc vào thiện chí” nghe nhẹ, nhưng rất nặng. Nó có nghĩa là phần mềm độc lập không còn đứng trên nền tài liệu công khai. Nó đứng trên các mối quan hệ. Hôm nay có partner tốt giúp thì sống. Ngày mai partner đổi ưu tiên, maintainer nghỉ, NDA (thỏa thuận bảo mật) bị siết, hoặc dữ liệu không được chia sẻ nữa, cả cộng đồng phải tự bơi trong bóng tối.

Protocol đã mở hơn, nhưng chiếc thang vẫn lệch

Cũng phải ghi nhận một thay đổi tốt. Mojang đã công khai đặc tả giao thức và tiếp tục cập nhật nó. Dktapps nói ngày 09.07.2026 rằng “we don't need to decomp for packet structures anymore”, nghĩa là “chúng ta không còn phải dịch ngược để lấy cấu trúc packet nữa”. Một ngày khác, anh nói việc viết code đã dễ hơn nhiều từ khi đặc tả giao thức được công bố. Đây là một trường hợp thông tin được mở ra và thật sự làm chi phí cập nhật giảm xuống.

Nhưng protocol không phải toàn bộ Minecraft. Nó có thể cho biết packet có field nào mà không cho biết đầy đủ block state order, upgrade schema, mapping, runtime behavior, gameplay quirk hoặc cách một BDS binary kín tổ chức nội bộ. Ngày 25.04.2026, dktapps nói mapping mod dùng để tạo PM BedrockData “breaks every update”, nghĩa là “vỡ ở mỗi lần cập nhật”. Vì vậy, câu đúng không phải “Mojang không công khai gì”. Câu đúng là phần được mở đã giúp rất nhiều, nhưng phần còn đóng vẫn nằm đúng nơi tốn công nhất.

BedrockData cho thấy PMMP từng tạo ra một lớp hạ tầng tri thức riêng. Repo pmmp/BedrockData tự mô tả là dữ liệu sinh từ Minecraft Bedrock dùng bởi PocketMine-MP, gồm block properties, biome map, item upgrade schema, protocol info, creative inventory, recipes và nhiều thứ một server phải biết để nói chuyện đúng với client. Ngày 11.07.2026, bên Geyser cũng xuất hiện issue “pmmp/BedrockData will not be updated”. Ngay cả khi Geyser không phụ thuộc trực tiếp vào toàn bộ dữ liệu đó, việc issue này xuất hiện cho thấy cái chết của PMMP làm người ngoài PMMP nghĩ tới một nguồn dữ liệu chung. Trong khi đó, Mojang/bedrock-protocol-docs ghi rõ protocol được chia sẻ với server partners và có thể đổi giữa các bản phát hành. Tài liệu protocol mở là bước tiến thật. Nhưng phần dữ liệu quanh protocol vẫn là vùng đắt đỏ.

Cloudburst và Nukkit cũng có cùng vết thương ở lớp dữ liệu. Trong kênh #protocol của Cloudburst, Kaooot, người tham gia các trao đổi kỹ thuật trong kênh này, nói ngày 14.06.2024 rằng debugging symbols gần như không có cơ hội quay lại, tài liệu giao thức không đầy đủ và nhiều dữ liệu chỉ lấy được từ BDS không còn dễ lấy. Trước đó, khi BDS Preview 1.21.10.22 mất symbols, anh hỏi lấy dữ liệu giao thức, bảng block và thuộc tính block từ đâu khi Mojang/bedrock-protocol-docs không hỗ trợ đều đặn các bản giao thức thử nghiệm. Một người khác nói việc mất PDB đang ảnh hưởng nặng tới PMMP. Điểm đáng chú ý là các câu này không nằm trong Discord PMMP. Nó đến từ một cộng đồng Nukkit/Cloudburst, nghĩa là gánh nặng thu thập dữ liệu không chỉ rơi vào PHP.

Alemiz, một maintainer Cloudburst, giải thích đầy đủ hơn trong cùng chuỗi. Protocol vẫn có thể cập nhật khi không có symbols, nhưng khó hơn vì docs có lỗi, bỏ sót thay đổi và không cho đủ ngữ cảnh packet. Server software còn cần game assets như block palette, không phải thứ nào cũng lấy từ packet được. Anh nói các dự án open source phải dựa vào server partner sẵn lòng chia sẻ asset, còn những contributor từng cố thuyết phục Microsoft giữ symbols hoặc cung cấp giải pháp thay thế thì không được phản hồi. Đây là lời của maintainer Cloudburst về trải nghiệm của cộng đồng mình, không phải biên bản Microsoft. Nhưng nó mô tả chính xác cơ chế phụ thuộc mà tài liệu PMMP về sau ghi thành quy trình.

Và lịch sử ấy còn cũ hơn đợt PDB biến mất hoàn toàn. Năm 2018, SupremeMortal, người giữ vai trò Project Lead trong Discord Geyser, nói partner từng nhận bản gần hoàn thiện sớm hơn công chúng. Năm 2019, anh dẫn cảnh báo rằng Mojang đã xóa phần lớn symbols khỏi beta 1.13. Năm 2020, anh ước tính việc thêm hỗ trợ có thể tốn hơn gấp đôi thời gian khi client không có debug symbols. Đến năm 2022, anh tóm tắt rằng Bedrock không có tài liệu giao thức công khai, cộng đồng phải dịch ngược và debug symbols của server vanilla là thứ làm việc đó khả thi. Nghĩa là cú sốc năm 2024 không sinh ra từ khoảng trống. Nó là điểm cuối của một đường thu hẹp đã được developer bên ngoài PMMP nhìn thấy nhiều năm.

Lời kể ấy không chỉ nằm trong Cloudburst. Ngày 04.01.2020, SupremeMortal viết trong Discord Geyser rằng “The community has tried for quite some time now but it doesn't make a difference”, nghĩa là “cộng đồng đã cố suốt một thời gian dài nhưng chẳng thay đổi được gì”. Ngay sau đó, khi nhắc việc debug symbols bị gỡ, anh thêm “They didn't even care”, nghĩa là “họ thậm chí không quan tâm”. Đây là cảm nhận gay gắt của một người làm dự án sau chuỗi thay đổi anh chứng kiến, không phải biên bản cho biết Mojang đã nghĩ gì. Nhưng nó lưu lại rất rõ trạng thái tinh thần của cộng đồng từ đầu năm 2020, nhiều năm trước khi PDB bị rút hoàn toàn khỏi BDS công khai.

Ngày 10.08.2020, SupremeMortal giải thích phần kỹ thuật ngay trong Discord Geyser. Debug symbols giúp lấy stack trace, tên hàm và đối số từ chương trình C++. Nếu thiếu chúng thì “it's a mess of unknown functions”, nghĩa là “chỉ còn một mớ hàm không biết tên”. Anh còn kể từng có người thử ghép chữ ký hàm từ binary cũ sang bản mới, nhưng cách đó không hiệu quả. Chi tiết này quan trọng vì nó nối hai thứ thường bị tách riêng. Sự bực bội của maintainer không đến từ việc ghét một công ty theo cảm tính. Nó đến từ việc bản đồ kỹ thuật từng giúp họ làm việc đang bị xóa dần.

Lịch sử Discord cho thấy chiếc thang thông tin này hình thành theo thời gian. Năm 2019, trước khi làm cho Lifeboat, dktapps đã lo rằng NDA của một partner có thể phá khả năng tiếp tục làm PMMP open source. Đến năm 2023, khi đã ở Lifeboat, anh nói network nhận một số thứ sớm nhiều tuần nhưng anh không thể publish vì NDA. Đầu năm 2024, anh nói thẳng mình có debug information nhờ là thành viên Lifeboat, còn developer open source không partner thì không có cùng thông tin.

Điều đó không có nghĩa mọi thứ PMMP công bố đều được lấy trộm từ tài liệu mật. Trong chính chuỗi trao đổi năm 2023, dktapps nói những thứ được publish vẫn có thể tự tìm ra không cần NDA, chỉ là tài nguyên NDA làm quy trình nhanh hơn đáng kể. Đây là sắc thái quan trọng. Người ngoài không hẳn bị khóa tuyệt đối. Họ bị bắt leo đường dài hơn, tốn người hơn và dễ bỏ cuộc hơn.

Partner cũng không sống trong khu vườn hoàn hảo. Tháng 06.2024, dktapps kể anh và các partner đã giải thích chính xác vì sao cần symbols, nhưng phía Microsoft lại trả lời rằng “featured servers don't need symbols”, nghĩa là “Featured Servers không cần symbols”. Đến tháng 05.2026, anh nói ngay cả Lifeboat vẫn đang vật lộn xin private symbols và liên tục nhận những thứ không dùng được. Có vé vào cổng không đồng nghĩa người trong cổng luôn được lắng nghe.

Vì vậy, partner access không nên được mô tả như phép màu chia thế giới thành người được cứu và người bị bỏ mặc. Nó là một bậc thang lệch. Partner có thể nhận thông tin sớm hơn, build khác hoặc đường liên hệ trực tiếp hơn. Người ngoài vẫn có thể sống, như chính dktapps nói, nhưng sẽ khó hơn. Và khi ngay cả partner cũng bị thu hẹp symbols, toàn bộ chuỗi phụ thuộc phía dưới cùng tăng rủi ro.

Partner không chỉ là một cái logo đẹp

Minecraft hiện có hệ thống partner rất rõ. Trang Minecraft Partner Program nói creator chính thức có thể bán sản phẩm trên Marketplace, phải có portfolio chất lượng, phải vận hành như một business và nội dung mới được review trước khi đến người chơi. Trang Minecraft servers thì nhấn mạnh Official Minecraft Server List, Partner Servers trực tiếp trong Minecraft Bedrock, Xbox profile, chuẩn cộng đồng và an toàn.

Mình không phủ nhận nhu cầu an toàn. Minecraft có rất nhiều trẻ em. Server công khai có chat, giao dịch, nội dung do người chơi tạo và vô số rủi ro. Mojang có lý do thật để kiểm soát một phần trải nghiệm. Nhưng giữa “bảo vệ người chơi” và “làm server ngoài hệ partner khó thở hơn” có một khoảng xám rất lớn. Vấn đề là các quyết định kỹ thuật đang đẩy quá nhiều thứ quan trọng vào khoảng xám đó.

Partner có lợi thế phân phối. Họ xuất hiện trực tiếp trong game, hoặc có đường chính thức đến Marketplace. Partner có lợi thế niềm tin vì được gắn nhãn chính thức. Và theo tài liệu PMMP, một số server hoặc Marketplace partner còn có quyền tiếp cận BDS build có symbols mà cộng đồng không có. Ba thứ đó cộng lại không chỉ là marketing. Nó là cấu trúc quyền lực.

Nếu một server được đưa vào tab chính thức, có đường tiếp cận người chơi tốt hơn và có khả năng nhận thông tin kỹ thuật tốt hơn, thì server bên ngoài không còn cạnh tranh trên cùng một mặt sân. Nó phải tự quảng bá khó hơn, tự cập nhật khó hơn, tự reverse engineer nhiều hơn, tự gánh rủi ro nhiều hơn. Rồi khi nó đóng cửa, người ta có thể nói “thị trường chọn như vậy”. Nhưng đó không phải thị trường tự nhiên. Đó là thị trường đã được thiết kế.

Điều làm mình khó chịu là ngày trước chính các server và software không chính thức đã giúp Bedrock có đời sống cộng đồng mạnh hơn. Trước khi Marketplace bóng bẩy, trước khi Featured Servers thành cổng phân phối lớn, người chơi đã vào server bằng IP, tải plugin, xem YouTube hướng dẫn, tham gia forum, mở server nhỏ cho bạn bè, làm staff, build lobby, chỉnh rank và tạo ra hàng nghìn lý do để ở lại với game. Khi hệ sinh thái đủ lớn để thương mại hóa, phần từng giúp nó lớn lên lại bị đặt ở mép ngoài.

Dragonfly sống sót bằng một đường hẹp hơn

Trong đoạn trò chuyện mình đọc được ở Bedrock Gophers, Seb, người trực tiếp tham gia công việc dữ liệu quanh Dragonfly, từng nói thẳng “dragonfly relies on pocketmines existance”, có thể dịch là “Dragonfly phụ thuộc vào việc PocketMine còn tồn tại”. Khi được hỏi sau thông báo PMMP ngừng hỗ trợ thì Dragonfly còn phụ thuộc PMMP cho việc tạo dữ liệu hoặc cập nhật giao thức hay không, cuộc trò chuyện chuyển sang các bản server dành cho gỡ lỗi có symbols. Ambient, một người khác tham gia trao đổi, nói việc cập nhật còn dễ hơn nếu dùng những server này, dù chúng không công khai. Seb trả lời server gỡ lỗi có symbols là cách duy nhất giúp Dragonfly được giữ sống đến giờ. May mắn là Dragonfly hiện chỉ cần dữ liệu từ BDS ở phần schema nâng cấp block, và gần đây phần này gần như không cần cập nhật.

Đoạn này cần đọc cẩn thận. Nó không chứng minh công khai rằng Galaxite cấp file BDS private cho Dragonfly. Nó cũng không chứng minh mọi Featured Server đều nhận đầy đủ tài nguyên kỹ thuật giống nhau. Nhưng nó cho thấy một điều rất thực tế. Dự án nào ở gần một hệ sinh thái partner, có người có quyền truy cập build riêng, hoặc chỉ cần một phần nhỏ dữ liệu từ BDS, thì có cơ hội sống cao hơn so với một dự án độc lập phải cập nhật nhiều lớp dữ liệu và protocol.

Dragonfly là server software Bedrock viết bằng Go, thiên về async và thường được dùng như library để mở rộng. Trong tổ chức df-mc còn có datagen, công cụ tạo dữ liệu từ BDS, và mapping, một mod tạo thông tin hữu ích từ BDS dựa nhiều trên pmmp/mapping. Điều này củng cố một thực tế rộng hơn. Dù viết bằng Go hay PHP, dù kiến trúc khác nhau, phần mềm server Bedrock độc lập vẫn cần dữ liệu từ thế giới BDS.

Lịch sử cũ hơn cho thấy sự phụ thuộc ấy từng cụ thể hơn. Ngày 01.10.2025, Seb nói Dragonfly đang đợi PocketMine cập nhật BedrockData. Ngày hôm sau, anh nói chưa thể cập nhật datagen vì BedrockData chưa có state meta map. Repo df-mc/datagen cũng tự mô tả nó kết nối tới BDS bằng gophertunnel để tạo dữ liệu cần cho Dragonfly updates, và yêu cầu canonical_block_states.nbt cùng block_state_meta_map.json từ BedrockData hoặc bds-mod-mapping. Nói ngắn hơn, Dragonfly có thể đang cần ít dữ liệu hơn PMMP, nhưng nó vẫn sống trong cùng nền kinh tế dữ liệu Bedrock.

Chi tiết đáng chú ý là Dragonfly từng có kế hoạch tự thoát khỏi điểm chờ đó. Tháng 04.2024, Seb nói anh dự định hoàn thiện công cụ tạo dữ liệu cho cả Dragonfly lẫn PMMP, rồi tiếp quản việc duy trì BedrockData khi Dylan nghỉ vì mình có quyền tiếp cận build phù hợp để tìm symbols. Kế hoạch ấy rất hợp lý, và nó cho thấy đã có ý thức kế nhiệm. Nhưng mười tám tháng sau, Dragonfly vẫn đợi PMMP cập nhật BedrockData. Đây không phải bằng chứng Seb thất hứa. Nó là bằng chứng kế hoạch của một cá nhân, dù có quyền truy cập và năng lực, vẫn khác rất xa một quy trình kế nhiệm bền vững có thời gian, ownership và người thay thế.

Các PR gần đây ở hệ Go cho thấy PMMP vẫn là một nguồn tham chiếu kỹ thuật. Trong Dragonfly PR #1315, tác giả dùng changelog PocketMine để dẫn chứng UDP 19133 là cổng IPv6 cho Bedrock LAN discovery. Trong gophertunnel PR #468, phần sửa self-signed login claims nói wire evidence hiện tại khớp với PrismarineJS và PMMP, rồi xác minh bằng một client thật kết nối tới PocketMine-MP 5.44.3 qua Oomph proxy. Đây không phải bằng chứng Dragonfly phụ thuộc PMMP như một package runtime. Nó cho thấy các stack khác vẫn dùng PMMP để đối chiếu hành vi Bedrock.

Dragonfly có thể đi tiếp vì phạm vi dữ liệu cần ít hơn và vì nó có vị trí thuận lợi hơn. PMMP thì phải gánh một API plugin lớn, một hệ sinh thái cũ, một lịch sử dài, nhiều loại dữ liệu và vô số kỳ vọng. Nói cách khác, đây không chỉ là chuyện ngôn ngữ lập trình nào tốt hơn. Đây là chuyện ai có dữ liệu, ai có người, ai có quyền truy cập, ai có tiền và ai còn đủ sức tiếp tục.

Geyser làm ván cờ lệch thêm

Có một nhân vật khác trong bức tranh này là Geyser. Geyser không cố viết lại server Bedrock từ đầu. Nó dịch giao thức để người chơi Bedrock vào server Java. Mô hình đó có lợi thế rất lớn vì phần gameplay và server logic dựa trên Minecraft Java, nơi hệ sinh thái modding, server software và tooling lâu đời hơn nhiều.

Cần sửa một hiểu lầm quan trọng ở đây. Geyser không dùng PocketMine-MP như dependency hay backend. Ngày 28.11.2024, Auri, người giữ vai trò Geyser Developer trong Discord dự án, trả lời thẳng “Geyser does not make use of PocketMine”, nghĩa là “Geyser không sử dụng PocketMine”. Kastle, một người khác tham gia cuộc trao đổi trong cộng đồng Geyser, giải thích thêm rằng Geyser dùng thư viện giao thức của Cloudburst viết bằng Java, còn PMMP có BedrockProtocol viết bằng PHP, nên việc tái sử dụng trực tiếp vốn không tự nhiên. Issue về BedrockData vì vậy không chứng minh Geyser phụ thuộc khi chạy vào PMMP. Nó cho thấy người trong hệ Geyser vẫn theo dõi sự biến mất của một nguồn dữ liệu và một implementation độc lập trong cùng hệ sinh thái.

Kiến trúc thuận lợi hơn cũng không làm Geyser thoát khỏi chi phí duy trì. Ngày 27.11.2024, chris, người có vai trò Geyser trong Discord dự án, nói Geyser sẽ bỏ hỗ trợ 1.20.80 cùng vài phiên bản khác khi thêm Bedrock mới vì “complexity related to maintaining different versions with different behaviours”, nghĩa là “độ phức tạp khi phải duy trì nhiều phiên bản có hành vi khác nhau”, và vì tính năng mới không tồn tại trên các bản Bedrock cũ. Đây là một quyết định phạm vi hợp lý. Nó cũng cho thấy “vẫn sống và cập nhật tốt” không có nghĩa một project có thể ôm vô hạn mọi nhánh hành vi mà Bedrock để lại.

PrismarineJS cho thấy một nhánh khác của mạng phụ thuộc chéo đó. Issue bedrock-protocol #756 cho Minecraft 26.33 tự theo dõi patch stream của PocketMine, gophertunnel và CloudburstMC. PR #743 sửa self-signed login vì nếu thiếu audience claim thì không thể đăng nhập PocketMine-MP qua OpenID. Trong minecraft-data #1027, người đóng góp nói block palette cho bản mới có thể lấy từ GeyserMC mappings generator, BedrockBlockPaletteArchive hoặc Endstone DevTools. Đây không phải một cây phụ thuộc thẳng. Nó giống một mạng chằng chịt, nơi mỗi project nhìn sang project khác để biết Bedrock thật sự đang làm gì.

Extremeheat, maintainer quan trọng của bedrock-protocol và từng đóng góp cho PMMP, từng nói thẳng cách làm ấy. Khi format đổi, hãy nhìn diff của các implementation bên thứ ba như PocketMine để suy ra chuyện gì đã thay đổi. Năm 2021, anh cũng liệt kê PocketMine, gophertunnel và Cloudburst như ba nơi cùng theo protocol. Vì vậy cái mất đi khi PMMP dừng không chỉ là một backend PHP. Hệ sinh thái mất một implementation độc lập để so diff, test client thật và bắt chéo sai lầm của các implementation còn lại.

Mình không nói Geyser xấu. Ngược lại, Geyser là một dự án rất đáng nể. Nhưng sự tồn tại của nó làm lộ rõ một nghịch lý. Nếu muốn xây trải nghiệm server mạnh cho người chơi Bedrock, một con đường thực tế có thể là chạy server Java rồi cho Bedrock vào bằng lớp dịch. Điều đó nói lên rằng hệ sinh thái server Bedrock clean-room đã trở nên khó đến mức đi vòng qua Java đôi khi hợp lý hơn đi thẳng vào Bedrock.

Dktapps tự tổng kết sự kết thúc của PMMP bằng ba lực chồng lên nhau. Server Bedrock bớt phổ biến, Mojang làm cuộc sống maintainer khó hơn, còn clean-room servers bị những thứ như Geyser ép ra ngoài. Câu này đáng giữ vì nó không biến mọi chuyện thành một thủ phạm duy nhất. Thị trường đổi, công nghệ đổi và chính sách nền tảng cùng đẩy về một hướng.

Bằng chứng gần nhất nằm ngay ở Lifeboat. Ngày 10.07.2026, dktapps nói anh đã làm với software mới của Lifeboat một thời gian và có thể xác nhận rằng “working with the java server makes it vastly easier to get stuff done”, nghĩa là “làm việc với Java server khiến việc hoàn thành mọi thứ dễ hơn rất nhiều”. Lifeboat từng là network trả tiền để PMMP tiến lên. Khi chính network đó tìm được một đường Java hiệu quả hơn, đây không còn là cuộc tranh luận ngôn ngữ trên forum. Nó là một quyết định vận hành.

Java không tự động tốt hơn trong mọi tình huống, và phần mềm mới của Lifeboat không được công khai đủ để mổ xẻ toàn bộ. Lợi thế lớn nhất ở đây không chỉ là tốc độ của JVM (máy ảo Java) và khả năng xử lý nhiều luồng. Nó là việc server Java chính thức đã có gameplay của Mojang, có tài liệu và wiki tốt hơn, có hệ plugin lớn hơn, có nhiều developer hơn, rồi chỉ cần thêm lớp hỗ trợ Bedrock. PMMP phải tự làm chiều ngược lại. Nó nhận client Bedrock trước, rồi gánh việc dựng lại thế giới phía sau.

Đây là điều khá buồn. Bedrock là phiên bản nhiều người chơi trên điện thoại, console và Windows. Nó đáng lẽ phải có một hệ server độc lập mạnh, tài liệu rõ, API ổn định và dữ liệu công khai đủ để cộng đồng làm đúng. Nhưng thay vì thế, phần mềm như PMMP phải reverse engineer. Server như NetherGames phải tự xây nội bộ rồi vẫn than không thể thắng cuộc đua cập nhật. Những dự án khác phải bám vào partner hoặc giảm phạm vi phụ thuộc.

Vì sao những phần mềm Bedrock khác vẫn sống?

Câu hỏi này cần được trả lời thẳng, vì nếu Allay, PowerNukkitX, Endstone, LeviLamina, Geyser hay Dragonfly vẫn cập nhật thì có vẻ cái chết của PMMP chỉ là chuyện riêng của PMMP. Nhưng cùng là phần mềm cho Minecraft Bedrock không có nghĩa chúng đang làm cùng một việc, càng không có nghĩa chúng phải gánh cùng một loại công việc, chi phí và rủi ro bảo trì.

Endstone là ví dụ dễ thấy nhất. Nó có full vanilla compatibility không phải vì một nhóm tình nguyện đã viết lại redstone, mob AI, world generation và toàn bộ gameplay bằng Python hoặc C++. Endstone chạy cùng BDS chính thức. Code của Mojang vẫn xử lý vanilla, còn Endstone chèn API plugin vào bên cạnh. Vì vậy nó được thừa kế những tính năng mà PMMP phải tự viết lại hoặc chấp nhận thiếu.

Nhưng gánh nặng bảo trì không biến mất. Nó đổi từ “viết lại Minecraft” thành “bám vào một tệp chương trình đóng luôn thay đổi”. Lần chuyển Endstone lên BDS 1.26.20 có 57 commit. Phần thay đổi công khai cho thấy việc trích xuất symbol từ PDB trên Windows, quét mẫu byte trên Linux, sửa bảng hàm ảo, hook, chữ ký hàm và nhiều thay đổi ở ABI (giao diện nhị phân ứng dụng). Changelog nói Endstone không còn cần debug symbols khi chạy không đồng nghĩa symbols biến mất khỏi quá trình chuyển phiên bản. Repo cho thấy PDB và mẫu nhị phân vẫn là một phần của công việc trước khi bản build đến tay người dùng.

Endstone còn để lại một timeline hiếm về cách quyền truy cập được thay thế. Sau một cuộc họp với Mojang ngày 15.07.2024, Vincent, người duy trì chính của Endstone trên GitHub, nói PDB sẽ không quay lại công khai, nhưng có thể được cung cấp riêng cho một số dự án cộng đồng. Tháng sau, anh giải thích Levi sẽ được truy cập PDB tạm thời rồi chuyển nó thành dữ liệu tra cứu symbol một chiều, không thể đổi ngược thành PDB. Cách này tốt hơn bóng tối hoàn toàn, nhưng nó không khôi phục mô hình cũ. Tri thức từng nằm trong tệp công khai được chuyển thành một dịch vụ dẫn xuất do số ít bên vận hành.

Đến BDS 1.21.60, ngay cả đường vòng cũng vỡ. Thông báo Endstone tháng 02.2025 nói compiler optimization mạnh hơn làm bindiff mất tác dụng, buộc team khôi phục symbols thủ công từ đầu, trong khi function inlining làm một số hook cũ không còn khả thi. Năm 2026, Endstone thêm symbol dumper có thể nhận PDB và fallback sang signature scan, còn LeviLamina dùng bedrock-runtime-data được phát hành theo version. Hệ sinh thái đã thích nghi rất giỏi. Nhưng càng thích nghi, nó càng lộ ra rằng một phần hạ tầng chung đang được giữ sống bằng các pipeline chuyên biệt mà rất ít người hiểu hết.

Endstone cũng tự nói rõ món nợ lịch sử đó trong chính Discord của mình. Vincent viết “without Nukkit, there probably would not be Endstone today”. Có thể dịch là “nếu không có Nukkit, có lẽ hôm nay đã không có Endstone”, và anh đặt Nukkit trong dòng cảm hứng từ PocketMine. Điều này đáng giữ vì nó không đến từ người ngoài khen xã giao. Nó là một dự án BDS-native thừa nhận cây phả hệ của mình đi qua PMMP. Bản Endstone v0.11.6 hỗ trợ BDS 1.26.33 rất sớm sau các biến động lớn của PMMP, còn Endweave được mô tả như lớp cho phép client mới vào server cũ trong lúc Endstone chưa kịp cập nhật. Nghĩa là ngay cả đường BDS-native cũng phải nghĩ tới khoảng trễ cập nhật như một sự thật vận hành.

LeviLamina, trước đây là LiteLoaderBDS, đi cùng nhóm kiến trúc đó. Nó cũng là mod loader cho BDS, còn build config đóng gói SymbolProvider và BedrockData theo phiên bản. Đây là cách biến kiến thức reverse engineering thành tooling có thể lặp lại. Nó không phải con đường miễn phí. Chỉ là thay vì tự làm world generation và mob AI, maintainer phải theo ABI, symbol, hook và cấu trúc nội bộ của BDS.

BDSX là đối chứng làm sự khác biệt đó hiện ra rõ hơn. Repo tự mô tả BDSX theo công thức BDS + Node.js. Nó giữ toàn bộ vanilla từ server chính thức, rồi cho plugin chặn packet, hook hàm và gọi vào lớp thấp của BDS. Đây gần như chính là nhóm lợi thế Endstone và LeviLamina đang có. Nhưng repo BDSX chỉ cập nhật tới tháng 08.2024 và bị chủ sở hữu archive ngày 14.11.2024.

Ngày 23.09.2024, SacriPudding, một thành viên giữ vai trò Plugin Dev trong Discord BDSX, giải thích rằng project không thể đi qua 1.21.20 vì Microsoft đã rút file debug symbols dùng để xác định vị trí hàm trong binary. Không có file đó, “we can't as easily hook functions inside of the game”, nghĩa là “không còn dễ hook các hàm bên trong game”, và “BDSX as is right now is on hiatus for the foreseeable future”, nghĩa là “BDSX ở trạng thái hiện tại sẽ tạm ngưng trong tương lai chưa biết đến bao giờ”. SacriPudding không giữ vai trò maintainer, nên đây là lời giải thích kỹ thuật từ một plugin developer trong cộng đồng, không phải thông báo chính thức của chủ repo.

Dù vậy, lời giải thích ấy khớp với artifact công khai. Tổ chức BDSX có hẳn bdsx-dev được mô tả là PDB Parser for BDSXbdsx-core chứa pdbcachegen. Chưa đầy hai tháng sau tin nhắn, repo chính bị archive. Chuỗi này không chứng minh mọi mod loader đều bất khả thi khi thiếu PDB. Chính SacriPudding cũng nói vẫn có những nỗ lực khác nhằm giữ mod loader sống. Nó chứng minh điều cụ thể hơn và đáng lo hơn. Một kiến trúc từng cập nhật được có thể rơi vào hiatus nếu bản đồ hàm biến mất mà project không còn đủ người và pipeline chuyên biệt để dựng lại bản đồ đó.

Vì vậy Endstone và LeviLamina sống tiếp không bác bỏ câu chuyện BDSX. Chúng làm câu chuyện nặng hơn. Thành công của hai dự án kia cho thấy vẫn có đường vòng bằng signature scan, symbol lookup dẫn xuất, runtime data theo phiên bản và rất nhiều lao động chuyên môn. BDSX cho thấy chuyện gì xảy ra khi một project cùng họ kiến trúc không xây kịp hoặc không còn sức duy trì đường vòng ấy.

Một câu trong LeviMC nói phần khó chịu này rất thẳng. Người dùng Pops viết rằng PocketMine, Endstone, Nukkit và Levi đều có giới hạn, đều ít nhiều chịu cùng vấn đề “not being immediately updated”, rồi kết lại “It sucks to not belong to the club of the big boys”. Dịch gần nghĩa là không thuộc nhóm lớn có cửa trong thì rất tệ. Đây là cảm giác của cộng đồng, không phải tài liệu kỹ thuật. Nhưng nó tóm đúng phần đời thường của chi phí bảo trì. Người dùng không quan tâm ABI hay symbol, họ chỉ thấy server mình cần chậm hơn nhóm có đường vào bên trong.

AllayPowerNukkitX gần PMMP hơn vì đều viết lại nhiều phần server. Dù vậy, chúng cũng không khởi hành từ chân không. README của Allay cảm ơn Endstone vì DevTools của Endstone là thiết yếu để dump dữ liệu quan trọng từ BDS, cảm ơn protocol library mà Allay dùng, df-mc, gophertunnel và cả pmmp vì cung cấp nhiều thông tin hữu ích. Chính Discord Allay cũng nói Allay không tự xử lý Bedrock network protocol updates mà dùng thư viện CloudburstMC. Repo AllayMC/BedrockData tự mô tả là dữ liệu sinh từ BDS và nói từ 1.21.1.03 họ dùng Endstone DevTools để tạo dữ liệu cần thiết.

PowerNukkitX (PNX) cũng từng có quan hệ với dữ liệu PMMP rõ hơn một dòng README. Tháng 12.2023, trong Discord PowerNukkitX có người nói bản cập nhật giao thức 1.20.50 có thể bị chậm vì file pmmp/BedrockData mà PNX dùng chưa được cập nhật. Một issue GitHub được đưa vào Discord ngay trước đó đề xuất dùng AllayMC/BedrockData để giảm độ khó khi cập nhật phiên bản vì PNX sẽ kiểm soát dữ liệu tốt hơn. Đây là lý do không nên nhìn PNX và Allay như phản ví dụ đơn giản kiểu “dự án khác vẫn sống nên PMMP tự yếu”. Chúng sống bằng phần được kế thừa, thư viện chung, dữ liệu trích xuất từ BDS và quyết định phạm vi khác nhau.

Nhưng đây cũng không phải quan hệ phụ thuộc đứng yên. Một contributor PNX nói cuối năm 2023 sẽ cập nhật branch ngay khi PMMP BedrockData có dữ liệu mới. Đến tháng 07.2025, anh mô tả PNX đã tự tạo palette, còn phần dữ liệu Bedrock khác lấy từ Cloudburst Nukkit. Tháng sau, phần lớn state đã được script tự cập nhật. PNX không “thoát khỏi cộng đồng”. Nó chuyển từ phụ thuộc trực tiếp vào một upstream sang phối hợp nhiều nguồn và tự động hóa phần mình có thể giữ.

Allay cũng cho thấy việc kế nhiệm diễn ra bằng con người cụ thể. Ngày 13.07.2026, khi các maintainer chính ít hoạt động, Zernix, một contributor của Allay, nói mình chưa từng tự làm một bản cập nhật phiên bản và phải lần theo cách Endstone DevTools xuất dữ liệu BDS. Vài giờ sau, anh đã dùng được dữ liệu Endstone mới và tiếp tục cập nhật resource, item, block cùng entity. Đây là một kết quả đáng mừng. Nó cho thấy kiến thức có thể được truyền tiếp. Nó cũng cho thấy rủi ro dự án phụ thuộc vào quá ít người không biến mất chỉ vì repo còn commit. Một ngày nào đó, “project vẫn sống” có thể chỉ phụ thuộc vào việc một contributor có đủ kiên nhẫn học quy trình trước khi người cũ rời hẳn.

Altay là phản ứng trực tiếp nhất sau cái chết của PMMP. GitHub của Altay ghi thẳng đây là fork của PocketMine-MP. Trong Discord, xrookiefight, người công bố lộ trình kỹ thuật của Altay, thông báo Altay sẽ giữ API 5 ổn định với các bản cập nhật giao thức đến tháng 06.2027 và phát triển API 6. Sau đó có bản phát hành 5.43.3 cho Bedrock 1.26.30. Nhưng chính trong kênh general cũng có câu “The protocol is ready but the bedrock data isn't ready yet”, nghĩa là “giao thức đã xong nhưng dữ liệu Bedrock thì chưa”. Altay vì vậy là hy vọng, không phải phép màu. Nó có thể giữ một nhánh PMMP sống thêm, nhưng vẫn phải tự xử lý đúng hai phần giao thức và dữ liệu từng làm upstream cũ kiệt sức.

Geyser giao gameplay cho Java server. Dragonfly thu hẹp phạm vi và thường được dùng như một library cho custom server. Endstone, LeviLamina và BDSX giao vanilla cho BDS, nhưng BDSX đã dừng ở nơi hai project kia dựng được pipeline thay thế. Allay và PowerNukkitX viết lại nhiều hơn nhưng chia sẻ protocol, data và tooling. Cloudburst có commit đang tiếp diễn nhưng chưa có release công khai. Chỉ một chữ “sống” đang che ít nhất năm câu hỏi khác nhau. Project có theo kịp protocol không, có release dùng được không, có chạy production không, có đủ vanilla không, và có người kế nhiệm khi maintainer chính rời đi không.

Những project còn hoạt động không bác bỏ áp lực của Bedrock. Chúng cho thấy mỗi kiến trúc tránh, chuyển hoặc gánh chi phí bảo trì theo một cách. Có dự án đẩy gameplay về BDS hoặc Java. Có dự án giảm phạm vi. Có dự án tái sử dụng nhiều năm code và thư viện chung. Có dự án được một công ty hoặc mạng máy chủ lớn trả lương cho developer. Có dự án đơn giản là vẫn còn một vài người đặc biệt kiên trì.

PMMP dừng khi không còn ai trong đội sẵn sàng cập nhật phiên bản. Điều đó không chứng minh PHP bất khả thi, cũng không chứng minh mọi server Bedrock độc lập phải chết cùng ngày. Nó chứng minh một upstream chung chỉ sống khi còn người đủ chuyên môn và thời gian gánh toàn bộ phần việc khó. Khi người cuối cùng rời phần việc đó, những fork kín như Zeqa có thể đi tiếp cho chính họ, nhưng con đường công khai mà hàng nghìn server nhỏ từng đi cùng đã khép lại.

PMMP cũng có lỗi của chính nó

Nếu chỉ đổ hết lên Mojang thì bài này sẽ dễ đọc hơn, nhưng không công bằng. PMMP cũng có những vấn đề nội tại.

PHP không phải lựa chọn tự nhiên nhất cho game server hiệu năng cao. PMMP đã làm rất nhiều thứ thông minh để sống với PHP, nhưng càng về sau Dylan cũng từng đồng ý với nhận xét rằng nhiều thời gian được dùng để vượt qua giới hạn của PHP hơn là phát triển PocketMine. API major thay đổi có thể làm plugin vỡ hàng loạt. Việc không phải vanilla khiến nhiều chủ server hiểu sai kỳ vọng. Cộng đồng plugin cũ có nhiều code chất lượng thấp. Một số chủ server từng dùng plugin lậu, plugin share lại, plugin copy paste, rồi đổ lỗi cho PMMP khi server lỗi.

Nhưng chính thông báo chia tay của PMMP không nói “PHP đã giết chúng tôi”. Nguyên nhân trực tiếp được công bố đơn giản hơn và cũng khó chịu hơn. Đội ngũ không còn ai sẵn sàng cập nhật cho các phiên bản Minecraft mới. PHP là một hệ số làm bài toán khó hơn. Nó thu hẹp nhóm người vừa giỏi ngôn ngữ, vừa hiểu game server, protocol, binary data và hiệu năng. Nó không phải bản án tử hình tự động, như chính mười bốn năm tồn tại của PMMP đã chứng minh.

PMMP cũng không còn là vùng đất nhỏ, nơi ai ném ý tưởng vào cũng được merge. Một dự án đã trở thành nền cho nhiều server phải bảo thủ hơn. Điều đó làm người mới cảm thấy khó đóng góp. Review chậm. Maintainer ít. Cửa vào core hẹp. Kiến thức update tập trung vào rất ít người. Tất cả đều là vấn đề thật, và PMMP có trách nhiệm với phần kế nhiệm chưa đủ rộng của chính mình.

Nhưng các vấn đề đó không phủ định áp lực từ Bedrock. Một dự án có nợ kỹ thuật vẫn có thể sống nếu nền tảng ổn định, tài liệu tốt và dữ liệu công khai. Một dự án có maintainer mệt vẫn có thể chuyển giao nếu quy trình cập nhật không đòi hỏi một lớp dịch ngược cực kỳ chuyên biệt. PMMP yếu ở vài điểm, còn Bedrock khiến mỗi điểm yếu ấy ngày càng tốn công và đắt đỏ hơn.

Nói cách khác, PMMP có bệnh nền. Mojang không tạo ra toàn bộ bệnh nền đó. Nhưng môi trường kỹ thuật của Bedrock đã làm bệnh nặng hơn, đồng thời làm việc tìm người tiếp quản khó hơn rất nhiều.

Vì sao mình gọi đây là một cách giết

Giết một phần mềm không nhất thiết là gửi văn bản bắt nó đóng cửa. Có nhiều cách chậm hơn. Không cập nhật tài liệu đủ. Rút debug symbols khỏi public build. Để protocol thay đổi liên tục. Chỉ cung cấp dữ liệu cần thiết cho một số partner. Không đưa ra API plugin chính thức đủ ổn định để thay thế. Tạo hệ phân phối khiến server partner dễ tiếp cận người chơi hơn hẳn. Để server ngoài hệ chính thức vừa khó cập nhật, vừa khó cạnh tranh, vừa khó tuyển người giỏi.

Mỗi quyết định riêng lẻ đều có thể được giải thích bằng lý do hợp pháp. Chống hack. Bảo vệ trẻ em. Giảm gian lận. Tránh rò rỉ nội bộ. Giảm nghĩa vụ hỗ trợ. Chuẩn hóa trải nghiệm. Nhưng khi cộng lại, chúng làm chi phí bảo trì tăng lên. Mọi project Bedrock đều chịu tác động, chỉ là mỗi kiến trúc có cách tránh, chuyển hoặc gánh khác nhau.

Project sống tốt không nhất thiết là project được partner bí mật cứu. Có project giao vanilla cho BDS. Có project giao gameplay cho Java. Có project thu hẹp mục tiêu thành custom game. Có project chia sẻ thư viện giao thức và công cụ trích xuất dữ liệu. Có project có công ty trả lương, mạng máy chủ lớn giữ fork riêng hoặc maintainer vẫn còn sức. Vấn đề là dự án nhỏ và upstream cộng đồng thường có ít cách san sẻ gánh nặng bảo trì nhất, trong khi lại phải chia kết quả cho nhiều người nhất.

Đây là điểm mình muốn chỉ trích mạnh nhất. Nếu Mojang thật sự không muốn công khai BDS có symbols vì lý do bảo mật, họ vẫn có thể công khai dữ liệu đã dump. Họ có thể phát hành schema chính thức. Họ có thể cung cấp changelog protocol đủ chi tiết. Họ có thể có một kênh developer công bằng cho server software độc lập. Họ có thể tách thông tin cần cho interoperability khỏi thông tin nhạy cảm. Họ có thể nói “không public binary debug, nhưng đây là dữ liệu để cộng đồng không phải mò trong tối”.

Việc không làm các phương án thay thế đó, trong khi partner vẫn có đường tiếp cận, khiến câu chuyện khó được xem là thuần bảo mật. Nó giống một chính sách giữ quyền lực trong tay nền tảng. Và khi nền tảng giữ quyền lực quá chặt, cộng đồng sáng tạo bên ngoài trở thành thứ trang trí. Dùng được khi cần tăng trưởng, mua lại hoặc bỏ lại khi cần kiểm soát.

Nếu ngày mai Mojang công khai PDB thì sao?

Nếu Mojang công khai lại PDB, xuất bản dữ liệu Bedrock cần thiết và viết tài liệu đủ chỉn chu để dự án độc lập cập nhật mà không phải mò trong tệp chương trình, mình sẽ gọi đó là tin tốt. Bài này không cần Mojang tiếp tục đóng thông tin mãi mãi mới đứng vững. Nó ghi lại những gì cộng đồng đã phải trả bằng thời gian, người duy trì và dự án bị bỏ lại trong giai đoạn quyền truy cập bị thu hẹp hoặc phân phối không đồng đều.

Một chính sách tốt xuất hiện muộn không làm PMMP sống lại, không mở cửa NetherGames lần nữa và không xóa những năm maintainer phải tự dựng đường vòng. Nhưng nó có thể ngăn cái tên tiếp theo xuất hiện trong lời chia buồn. Lời chỉ trích có ích nhất không phải lời chỉ trích cầu mong vấn đề tồn tại mãi để mình luôn đúng. Nó nên vui khi nguyên nhân bị sửa.

Nếu thay đổi ấy xảy ra, phần có trách nhiệm là cập nhật bài, ghi rõ ngày Mojang đổi chính sách, liên kết tài liệu mới và tách điều đã đúng trong lịch sử khỏi hiện trạng mới. Khi đó, câu chuyện sẽ không phải “cộng đồng đã phóng đại”, mà là “một cánh cửa từng bị thu hẹp cuối cùng đã được mở lại”. Sự thay đổi ấy đáng được ghi nhận mà không cần xóa cái giá đã trả trước nó.

Information wants to be free trong Minecraft Bedrock

Câu của Stewart Brand không nên bị hiểu ngây thơ. Thông tin không tự do chỉ vì nó muốn. Có công ty giữ nó. Có luật giữ nó. Có NDA giữ nó. Có lợi ích thương mại giữ nó. Có nỗi sợ bảo mật giữ nó. Nhưng câu đó nhắc rằng thông tin có xu hướng tạo giá trị khi nó được lưu thông. Với phần mềm, điều này càng rõ. Tài liệu mở tạo developer. Protocol rõ tạo interoperability. Tooling công khai tạo fork. Schema công khai tạo server. Knowledge base mở tạo thế hệ mới.

PocketMine-MP là một ví dụ sống động cho câu đó. Nó sống nhờ code mở, plugin mở, forum, Poggit, docs, ví dụ, những lần người này chỉ người kia sửa lỗi. NetherGames bắt đầu từ plugin công khai rồi xây fork riêng. Zeqa lại lấy chính fork NetherGames, tùy biến nó cho production, sau đó tiếp tục trên một core mang tên ZeqaMine-PM. Dragonfly có repo mở, tool datagen, mapping và cộng đồng quanh nó. Chuỗi kế thừa này không sinh ra từ bí mật. Nó sinh ra từ việc nhiều người đủ khả năng nhìn, học, sửa, phá và dựng lại.

Khi thông tin bị khóa, người giỏi nhất có thể vẫn tìm đường. Nhưng người mới mất cửa vào. Server nhỏ mất khả năng tự cứu. Plugin dev mất động lực. Maintainer phải dành thời gian đoán những thứ đáng lẽ được ghi rõ. Và cuối cùng, một thế hệ học code từ Minecraft sẽ ít hơn. Đó không phải thiệt hại nhỏ. Với mình, đó là mất một con đường học tập.

Ở Việt Nam, đây không chỉ là chuyện của phần mềm

Sau khi đọc lại những bài viết và bình luận trong nhóm PocketMine-MP Việt Nam, mình càng thấy đoạn chia tay này không nằm trên mây. Những ký ức đó không nên được dùng như một bảng mốc tuyệt đối, vì nhiều thứ được kể lại sau nhiều năm và chắc chắn có chỗ lẫn lộn. Nhưng chúng rất thật ở tầng cảm xúc. PMMP từng là nơi một nhóm học sinh mở port, chạy server trên điện thoại hoặc VPS rẻ, Việt hóa plugin, sửa config, viết plugin đầu đời, rồi từ đó đi vào Công nghệ thông tin.

Các bình luận cũng làm rõ một lớp địa phương mà nếu chỉ nhìn từ NetherGames hay tài liệu PMMP sẽ dễ bỏ sót. Ở Việt Nam, sự suy tàn không đến từ một nhát cắt duy nhất. Nó đi qua cú 1.2 làm thiết bị cũ và Xbox Live thành rào cản, qua cảnh YouTube bớt kéo người chơi, qua server mùa vụ, các đợt DDoS (tấn công từ chối dịch vụ), plugin leak, gameplay Skyblock lặp lại, rồi tới PM3 lên PM4 khiến rất nhiều plugin và chủ server nhỏ không còn đủ sức đi tiếp. Có người nhớ thời Genisys Pro, ElyWing, Steadfast2, Allay, PM3, PM4. Có người nhớ những đêm tối ưu server chạy trên phần cứng yếu, những plugin chống Toolbox, Pickaxe Level, FarmingIsland, những lần dupe, crash, bug coin, mất data, build lại map. Nghe vừa buồn cười vừa đau, vì đó đúng là cách một cộng đồng học bằng va đập.

Những chia sẻ quanh Miheisu, Bravocraft và vài project cá nhân còn sót lại cũng cho thấy ngọn lửa chưa tắt hẳn. Nó chỉ nhỏ đi. Miheisu được kể như một server chọn sự ổn định và giản đơn, đi qua MineSAO, PuckVN rồi trở lại vào năm 2024. Một vài người vẫn sửa plugin cũ, vẫn giữ project riêng, vẫn gửi resource pack, vẫn hy vọng có thứ mới ra mắt. Nhưng cảm giác chung là PMMP Việt Nam không còn là quảng trường đông đúc nữa. Nó giống một nhóm người đứng quanh bếp than cuối ngày, vừa kể chuyện cũ vừa biết khó có chuyện quay lại y nguyên.

Vì vậy mình không muốn dùng những bài đăng đó để chứng minh thêm rằng Mojang đã làm gì. Chúng không phải tài liệu kỹ thuật hay nguồn chính thống. Nhưng chúng giúp bài này có đất hơn. Cái chết của PMMP không chỉ là một repo bị archive. Nó là tiếng thở dài của những người từng học code bằng cách sửa lỗi server, từng lớn lên từ những plugin vụng về, từng sai, từng phá, từng xin lỗi, từng làm lại, rồi cuối cùng nhận ra một phần tuổi trẻ của mình đã thành archive.

Cảm ơn PocketMine-MP

Mình muốn dành riêng một đoạn để cảm ơn PMMP, vì chỉ trích Mojang không có nghĩa là biến PMMP thành một biểu tượng trừu tượng rồi quên con người thật phía sau.

Cảm ơn Shoghi vì đã tạo ra PocketMine từ thời Minecraft Pocket Edition còn rất khác. Cảm ơn Dylan vì đã gánh PMMP qua một đoạn đường dài và để lại rất nhiều code, tài liệu, quyết định kỹ thuật, tranh luận và cả những cảnh báo khó nghe nhưng cần thiết. Cảm ơn các maintainer, reviewer, moderator, donor, plugin developer, người sửa bug, người viết docs, người trả lời câu hỏi lặp lại đến mệt. Cảm ơn Lifeboat vì đã tài trợ phát triển trong những năm cuối mà vẫn để kết quả được công khai cho cộng đồng.

Cảm ơn PMMP vì đã cho một đám người biết server không phải phép màu. Vì đã làm PHP trở thành cửa vào cho Minecraft Bedrock. Vì đã có Poggit. Vì đã có DevTools. Vì đã có plugin.yml, onEnable, event listener, permission, config, task, form, virion, console đỏ và những dòng lỗi làm nhiều người vừa bực vừa học được thứ mới.

Cảm ơn vì đã giúp rất nhiều server nhỏ tồn tại. Có server sống vài tháng. Có server mở đúng kỳ nghỉ hè rồi chết. Có server đầy bug. Có server bán rank hơi lố. Có server chỉ có vài người bạn vào chơi. Nhưng với người dựng nó, đó là một thế giới thật. Một thế giới có spawn, có luật, có người chơi, có hy vọng và có cảm giác mình làm được một thứ không chỉ nằm trong máy mình.

PMMP chính thức dừng hỗ trợ không có nghĩa mọi fork sẽ chết ngay. Sẽ có người thử tiếp tục. Sẽ có server lớn giữ fork riêng. Sẽ có archive. Sẽ có plugin còn chạy ở phiên bản cũ. Nhưng thời kỳ PMMP như một upstream chung cho cộng đồng Bedrock độc lập đã khép lại. Và điều đó xứng đáng được buồn.

Tạm biệt NetherGames

NetherGames cũng xứng đáng được nhìn như hơn một server đóng cửa. Nó là bằng chứng rằng một server bắt đầu từ plugin PocketMine công khai vẫn có thể lớn lên, tự xây hệ thống, đạt hàng nghìn người chơi đồng thời và trở thành một phần ký ức của rất nhiều người.

Thông báo đóng cửa của NetherGames có một nét rất con người. Callum kể bắt đầu server từ năm 11 tuổi, bằng tiền hosting bố mẹ trả cho sinh nhật. Lobby bị phá vì trao quyền quản trị nhầm người. Không ai nghĩ đến backup đúng lúc. Sau đó server lớn lên, đổi tên, sáp nhập, trưởng thành, đi qua đại dịch, có đội ngũ, có portal web, có staff, có developer, có người chơi. Đó là lịch sử của một cộng đồng thật, không phải một bảng chỉ số thành tích.

Điều đau là chính một server như vậy cũng kết luận mình đang ở trong cuộc chiến không thể thắng. Không phải vì thiếu tình yêu với Minecraft. Không phải vì chưa đủ cố gắng. Mà vì sân chơi kỹ thuật và phân phối nghiêng về phía những server được chọn. Khi server nói mình từng cố trở thành Featured Server rồi bị ghost, câu chuyện không còn là “ai làm tốt thì sống”. Nó là “ai được mở cửa thì có đường sống tốt hơn”.

NetherGames nói sẽ open source nhiều game nhất có thể để người chơi có thể tiếp tục host match và giữ lại phần yêu thích. Nếu làm được, đó là cách chia tay đẹp. Không đóng mọi thứ trong một chiếc hộp rồi chôn. Để lại code, để lại ký ức, để lại đường cho người khác tiếp tục. Đó cũng là tinh thần gần nhất với “Information wants to be free”.

Điều còn lại nên được giữ mở

Sau những cái chết như vậy, phản ứng dễ nhất là chán. Nhưng phản ứng có ích hơn là lưu lại.

Lưu lại plugin cũ. Lưu lại docs. Lưu lại forum bằng archive. Lưu lại tutorial. Lưu lại source game NetherGames nếu họ mở. Lưu lại cách PMMP update protocol. Lưu lại schema. Lưu lại công cụ datagen. Lưu lại những bài giải thích bằng tiếng Việt để người sau không phải bắt đầu từ một đống link chết. Không phải vì mọi thứ sẽ sống lại như cũ, mà vì ký ức kỹ thuật cũng là hạ tầng.

Mình nghĩ các fork PMMP nếu muốn đi tiếp sẽ cần thực tế hơn là lãng mạn. Cần chọn phạm vi nhỏ. Cần tài liệu hóa quy trình cập nhật. Cần tách dữ liệu có thể công khai khỏi phần không thể công khai. Cần tránh phụ thuộc vào một người duy nhất. Cần nói rõ phiên bản nào hỗ trợ, cái gì không hỗ trợ, và đừng bán ảo tưởng vanilla nếu không thể giữ. Cần một thái độ bình tĩnh với sự thật là Bedrock không còn dễ chơi như xưa.

Nhưng phần trách nhiệm lớn hơn vẫn nằm ở Mojang và Microsoft. Họ có thể làm tốt hơn. Họ có thể không công khai secrets mà vẫn công khai dữ liệu cần thiết. Họ có thể hỗ trợ interoperability mà vẫn bảo vệ người chơi. Họ có thể tạo một chương trình developer cho server software độc lập không phụ thuộc vào việc được chọn làm partner thương mại. Họ có thể thừa nhận rằng hệ sinh thái bên ngoài không phải kẻ ăn bám. Nó là một phần lý do Minecraft sống lâu.

Không ai cần ký giấy khai tử

Một hệ sinh thái có thể giết phần bên ngoài mà không cần ra lệnh giết. Chỉ cần mỗi năm đóng thêm một chút thông tin, nghiêng thêm một chút phân phối, tăng thêm một chút chi phí cập nhật, chuyển thêm một chút quyền truy cập vào partner, để maintainer tự mệt, để server nhỏ tự rơi, rồi nói rằng mọi chuyện là tự nhiên.

Nhưng người từng đứng ở mép ngoài sẽ thấy nó không tự nhiên đến vậy. PMMP không chết chỉ vì PHP. NetherGames không đóng chỉ vì một server hết trend. Zeqa không sống sót vì áp lực đó chưa từng tồn tại, mà bằng fork riêng, developer nội bộ, một thương vụ mua lại và đường đi vào network Featured. Chúng nằm trong cùng một dòng chảy, nơi Bedrock ngày càng được quản trị như nền tảng thương mại đóng, còn những thứ từng giúp nó nở ra trong cộng đồng phải chết, tự thu hẹp hoặc tìm đường vào phía trong cánh cổng.

Minecraft Bedrock sẽ vẫn sống. Marketplace vẫn bán. Partner server vẫn đông. Realms vẫn có người dùng. Những thứ chính thức sẽ không biến mất vì PMMP dừng hỗ trợ hay NetherGames đóng cửa. Nhưng Bedrock đã mất đi một phần lớn linh hồn bụi bặm của mình.

Và với mình, điều đáng chỉ trích nhất là sự mất mát đó đáng lẽ có thể tránh được. Không cần Mojang mở source toàn bộ game. Không cần phát tán binary debug nếu thật sự có rủi ro. Chỉ cần họ coi cộng đồng server độc lập là một phần đáng được hỗ trợ bằng tài liệu, dữ liệu và API tử tế, thay vì để nó sống nhờ quan hệ không chính thức và thiện chí của partner.

Information wants to be free. Minecraft Bedrock từng lớn lên nhờ rất nhiều thông tin được chuyền tay, được mở ra, được reverse, được viết lại, được đưa lên forum, lên GitHub, lên YouTube, lên Poggit, lên những server nhỏ chạy trên máy yếu. Khi thông tin bị khóa lại, không chỉ phần mềm chết. Một con đường học code cũng hẹp đi.

Vậy nên, tạm biệt PocketMine-MP. Tạm biệt NetherGames. Cảm ơn vì đã làm Minecraft Bedrock rộng hơn cái menu chính thức của nó.

Đọc tiếp từ nguồn gốc

Trang farewell của PocketMine-MP thông báo dự án không còn cập nhật cho phiên bản Minecraft mới và cảm ơn Lifeboat cùng cộng đồng.

Repo PocketMine-MP trên GitHub cho thấy trạng thái archive ngày 09.07.2026, thông báo end of support và bản release 5.44.3.

Issue “I'm retiring” của dktapps giải thích vì sao tương lai PMMP đã bất ổn từ năm 2024.

Tài liệu PMMP về cập nhật protocol mô tả quy trình lấy dữ liệu từ BDS và việc các bản BDS công khai không còn debugging symbols kể từ 1.21.40.

pmmp/BedrockData, Mojang/bedrock-protocol-docs và issue Geyser mappings-generator #98 cho thấy ranh giới giữa protocol đã mở và dữ liệu Bedrock vẫn phải được duy trì riêng.

Các đoạn trong Discord Cloudburst về debug symbols khó quay lại, phần giải thích kỹ thuật của Alemiz về giới hạn của protocol docs và game assets, cùng lịch sử SupremeMortal mô tả reverse engineering nhờ vanilla server symbols cho thấy vấn đề dữ liệu đã được nhìn thấy lâu năm từ cộng đồng Nukkit/Cloudburst.

Các đoạn Discord Geyser ghi lại sự bất lực của cộng đồng trước việc symbols bị gỡ từ năm 2020, vai trò của symbols trong việc gọi tên hàm, lời xác nhận Geyser không dùng PocketMine và lý do Geyser phải bỏ một số phiên bản Bedrock cũ. Chúng cho thấy Geyser là nhánh độc lập nhưng vẫn phải chọn phạm vi để trả chi phí tương thích.

Bài forum PMMP năm 2019 về debug symbols cho thấy cảnh báo này đã xuất hiện từ rất sớm.

Thông báo đóng cửa NetherGames, hai phần gốc trên Discord về lịch sử PocketMinemặt sân Featured, cùng lời staff về các vấn đề nội bộ không thể công khai tạo thành một hồ sơ nhiều nguyên nhân hơn.

Trang Minecraft serversMinecraft Partner Program cho thấy hệ thống server, partner và Marketplace chính thức của Bedrock.

Dragonfly, df-mc datagendf-mc mapping là các mảnh liên quan đến cách phần mềm Bedrock độc lập vẫn phải tạo dữ liệu từ BDS.

Dragonfly PR #1315gophertunnel PR #468 cho thấy tài liệu, changelog và hành vi của PMMP vẫn được các stack khác dùng để đối chiếu kỹ thuật.

Các đoạn Discord Bedrock Gophers về Dragonfly phụ thuộc vào sự tồn tại của PocketMine, debug server có symbols, việc đợi PocketMine cập nhật BedrockDatadatagen bị kẹt vì thiếu state meta map nên được đọc như dấu vết vận hành, không phải tuyên bố chính thức của mọi dự án Go.

GitHub chính thức của Zeqa Network, fork NG-PM, fork ZeqaMine-PMplugin OnlineTime là các dấu vết công khai xác nhận mối liên hệ giữa Zeqa, NetherGames và PocketMine-MP.

Các link Discord trong server Zeqa về câu trả lời PMMP cho Season 10, người xử lý protocol và version updates, cùng câu hỏi Zeqa có tự cập nhật PMMP không bổ sung lớp bằng chứng cộng đồng. Chúng nên được đọc như dấu vết vận hành, không phải thông cáo chính thức về toàn bộ backend production.

Tài liệu WaterdogPE giải thích vì sao endpoint công khai chỉ lộ proxy, còn trạng thái live của zeqa.net ghi nhận lớp proxy đang được dùng.

WaterdogPE issue #428, PR #420 và các trao đổi Discord về self-signed auth payload cùng auth type giữa PMMP và BDS cho thấy proxy phải xử lý nhiều giả định downstream khác nhau.

Thông báo InPvP mua Zeqa, bài công bố Season 10store Zeqa cho thấy network đi từ vị trí ngoài Featured list vào Mineville Zeqa.

Các thông báo Discord của Aeris về việc Aeris trở thành một phần của InPvP sau thương vụ Zeqa, redirect người chơi Aeris sang Zeqa và chuyển rank, cùng việc Discord Aeris dời sang Zeqa bổ sung bằng chứng về xu hướng tập trung brand PvP Bedrock.

Endstone, PR chuyển sang BDS 1.26.20, lời Vincent về PDB không công khaidữ liệu tra cứu một chiều của Levi, cùng repo bedrock-runtime-data cho thấy mod loader BDS phải trả giá ở lớp symbol, hook, ABI, pipeline dữ liệu và khoảng trễ cập nhật.

Repo BDSX đã archive, PDB parser, pdbcachegen trong bdsx-corelời giải thích trong Discord BDSX về trạng thái hiatus sau khi symbols bị gỡ tạo thành một chuỗi bằng chứng nhất quán. Tin nhắn Discord nên được đọc như lời của plugin developer trong cộng đồng, còn trạng thái archive và vai trò của PDB được neo bằng repo công khai.

Altay cùng các thông báo Discord về kế hoạch giữ API 5 đến tháng 06.2027, bản phát hành 5.43.3vấn đề BedrockData cho thấy fork PMMP vẫn có đường sống, nhưng không thoát khỏi gánh nặng cập nhật dữ liệu.

PrismarineJS bedrock-protocol #756, PR #743minecraft-data #1027 cho thấy hệ Prismarine cũng đối chiếu PocketMine, gophertunnel, CloudburstMC, Geyser mappings và Endstone DevTools khi theo Bedrock.

Allay, AllayMC/BedrockData, đoạn Discord Allay về việc học quy trình cập nhật từ dữ liệu Endstone, cùng các đoạn PowerNukkitX về pmmp/BedrockData làm chậm updateviệc về sau tự tạo palette rồi lấy các dữ liệu khác từ Cloudburst Nukkit cho thấy server viết lại vẫn dựa vào protocol library, data dump và maintainer theo những mức khác nhau.

Thông báo kết thúc của dktapps trên Discord PMMP là bản nguồn trực tiếp của lời chia tay. Các chuỗi Discord về tài trợ Lifeboat, feedback của partner về symbols, kiệt sức và sự bào mòn động lực, cùng software Java mới của Lifeboat bổ sung góc nhìn nhân chứng kỹ thuật. Các link này có thể yêu cầu đăng nhập Discord và nên được đọc như lời của dktapps, không phải thông cáo thay mặt Mojang, Lifeboat, NetherGames hay Zeqa.

Bạn đọc tới cuối rồi Nếu cần nói ngắn
Bài này nói gì về Minecraft Bedrock?

Bài này cho rằng Minecraft Bedrock đang làm server độc lập và software không chính thức khó sống hơn bằng cách đóng dần thông tin kỹ thuật, đẩy quyền truy cập quan trọng về phía partner và khiến chi phí cập nhật tăng quá cao.

Vì sao PocketMine-MP và NetherGames được nhắc cùng nhau?

PocketMine-MP dừng hỗ trợ chính thức còn NetherGames đóng cửa, nhưng cả hai cùng chỉ vào một vấn đề rộng hơn. Server Bedrock độc lập phải theo kịp protocol, dữ liệu BDS và hệ phân phối ngày càng nghiêng về phía những bên được chọn.

PocketMine-MP, PMMP, PocketMine MP và PocketMine có phải là một không?

Trong bài này, PocketMine-MP là tên dự án server mã nguồn mở, còn PMMP là viết tắt phổ biến. PocketMine MP là cách nhiều người viết không có dấu gạch, còn PocketMine có thể là tên gọi ngắn hoặc tên các phiên bản lịch sử trước PMMP. Bài PocketMine-MP là gì? giải thích kỹ hơn phần này.

Lifeboat có bỏ rơi PocketMine-MP không?

Không. Theo dktapps, Lifeboat đã tài trợ PMMP nhiều năm, giúp PM4 được phát hành và tạo điều kiện để dự án đi tiếp tới PM5, đồng thời còn đề nghị tiếp tục tài trợ. PMMP dừng vì trong team không còn người đủ kỹ năng muốn tiếp tục cập nhật phiên bản Minecraft mới.

Bài viết có khẳng định Mojang ra lệnh giết PMMP hay NetherGames không?

Không. Bài viết không khẳng định có một lệnh nội bộ như vậy. Nó suy luận từ các sự kiện công khai, tài liệu kỹ thuật và trải nghiệm cộng đồng để chỉ ra một xu hướng khiến phần mềm và server độc lập bị bóp nghẹt dần.

Vì sao phần cộng đồng Việt Nam quan trọng?

Phần cộng đồng Việt Nam cho thấy PMMP không chỉ là một repo phần mềm. Nó từng là đường vào Công nghệ thông tin của nhiều học sinh, chủ server nhỏ, người Việt hóa plugin và developer tự học.

Zeqa có dùng PocketMine-MP không?

Có bằng chứng công khai cho thấy Zeqa đã vận hành và tùy biến backend bắt nguồn từ PocketMine-MP ít nhất trong giai đoạn cuối năm 2025 đến đầu năm 2026. GitHub chính thức của Zeqa có fork NG-PM từ NetherGames và một fork PMMP đổi tên thành ZeqaMine-PM. Tuy nhiên, địa chỉ công khai hiện đi qua WaterdogPE nên server ping không thể xác nhận mọi backend hiện tại.

- NhanAZ - 10.07.2026