PocketMine-MP là gì? Lịch sử PMMP từ 2012 đến 2026

Một phần mềm server viết bằng PHP đã mở đường cho multiplayer tùy biến trên Minecraft Pocket Edition, sống qua nhiều thế hệ API và kết thúc khi chi phí theo kịp Bedrock vượt quá sức của số maintainer còn lại.

PocketMine-MP, thường gọi là PMMP, là phần mềm server mã nguồn mở cho Minecraft Bedrock Edition được xây lại chủ yếu bằng PHP. Nó không phải Bedrock Dedicated Server của Mojang, cũng không phải một plugin cài lên BDS. PMMP tự nhận kết nối từ client Bedrock, tự xử lý protocol, người chơi, thế giới, block, item, entity và command, rồi mở toàn bộ hệ thống đó cho plugin can thiệp.

Dự án bắt đầu bằng commit đầu tiên ngày 19.10.2012. Sau gần 14 năm, bản chính thức cuối cùng là 5.44.3 cho Minecraft Bedrock 1.26.30, phát hành ngày 06.07.2026. Repo chính được archive ngày 09.07.2026 và nhóm PMMP tuyên bố không còn cập nhật cho các phiên bản Minecraft mới.

Nhóm PMMP đã ngừng duy trì PocketMine-MP. Nhưng mã nguồn, tài liệu và khả năng fork của nó vẫn còn. “Kết thúc hỗ trợ chính thức” chính xác hơn “biến mất”.

Muốn hiểu vì sao một repo PHP dừng update lại khiến nhiều người coi đó là cái chết của một thời đại, không thể chỉ đếm release. PocketMine-MP từng đứng đúng chỗ trống giữa một game di động rất được yêu thích và một hệ multiplayer mà nhà phát triển game chưa cung cấp đủ. Nó không chỉ chạy server. Nó cho cộng đồng quyền tự xây phần còn thiếu, rồi vô tình trở thành trường học lập trình, hạ tầng kinh doanh và ký ức tuổi thơ của nhiều thế hệ người chơi Minecraft PE.

Trước PocketMine, multiplayer Minecraft PE gần như chưa thành hình

Minecraft trên điện thoại chưa phải Bedrock như ngày nay

Năm 2012, Minecraft Pocket Edition còn là một nhánh nhỏ và thiếu rất nhiều thứ so với Minecraft Java. Từ “Bedrock Edition” chưa tồn tại theo nghĩa thương hiệu hiện nay. Người chơi chủ yếu có single-player và multiplayer trong mạng nội bộ. Một thiết bị mở world, những thiết bị cùng Wi-Fi nhìn thấy world đó và tham gia. Khi máy chủ rời game, thế giới cũng biến mất khỏi mạng. Không có package dedicated server chính thức, không có danh sách featured server, không có Marketplace và cũng chưa có hệ Add-On hiện đại.

Điểm khác biệt này quan trọng vì ngày nay người đọc dễ tưởng PocketMine-MP được tạo ra như một lựa chọn thay thế BDS. Thực tế lúc commit đầu tiên xuất hiện, BDS còn chưa tồn tại để bị thay thế. Câu hỏi ban đầu không phải “nên dùng BDS hay PocketMine”, mà là “làm sao để một client Minecraft PE kết nối được tới một server chạy độc lập”.

Shoghi Cervantes Pueyo bắt đầu trả lời câu hỏi ấy bằng cách quan sát dữ liệu mạng của client, nhận diện packet, thử tái tạo quy trình đăng nhập và dựng một thế giới đủ để client không ngắt kết nối. Tài liệu PMMP về lý do dùng PHP nhìn lại dự án như một prototype nhanh để reverse engineering protocol, chưa từng được dự tính cho production. Trớ trêu ở chỗ phần mềm về sau gánh hàng nghìn server lớn ban đầu chỉ là công cụ để hiểu một giao thức chưa được tài liệu hóa đầy đủ.

“It was never intended for use on production servers.”

Bản dịch - “PocketMine-MP chưa bao giờ được thiết kế để dùng cho các server vận hành thực tế.”

Nguồn - Tài liệu PMMP, “Why was PHP chosen?”

Câu này giải thích nhiều đặc điểm sẽ đeo bám PocketMine suốt đời. PHP được chọn vì tốc độ thử nghiệm, không phải vì một hội đồng kiến trúc đã kết luận đây là ngôn ngữ game server hoàn hảo. Những abstraction đầu tiên được viết trong lúc protocol vẫn đang được khám phá. Khi prototype trở thành infrastructure, cộng đồng phải vừa giữ server đang chạy vừa thay dần nền móng dưới chân nó.

2013, PocketMine Realms đã đi trước external server

Một trong những chi tiết bị quên nhiều nhất là PocketMine Realms. Ngày 19.06.2013, Shoghi mở một dịch vụ miễn phí cho phép người chơi MCPE 0.7.0 tìm và kết nối server cộng đồng thông qua giao diện Realms. Trên Android, người dùng thay đổi DNS. Trên iOS, họ cài một configuration profile. Dịch vụ đứng giữa client và danh sách server, biến một cánh cửa do game thiết kế cho Realms thành lối vào multiplayer do cộng đồng vận hành.

Đây không chỉ là một server list có website. External server khi ấy chưa có nút chính thức trong game. PocketMine Realms đã can thiệp đúng lớp discovery để những server PocketMine-MP có thể xuất hiện trong trải nghiệm mà người chơi phổ thông hiểu được. Nó cho thấy đội PocketMine không chờ Mojang hoàn thiện đường đi rồi mới bước vào. Họ tự dựng đường đi trước.

Bản lưu ngày 01.10.2013 trên Wayback Machine giữ lại thông báo đóng dịch vụ. Dòng quan trọng nhất không phải lời đồn forum, mà là câu do chính PocketMine công bố.

“Mojang ... asked us to end our PocketMine Realms service.”

Bản dịch - “Mojang ... đã yêu cầu chúng tôi chấm dứt dịch vụ PocketMine Realms.”

Nguồn - Thông báo đóng PocketMine Realms năm 2013

Thông báo PocketMine Realms đã đóng nói Mojang yêu cầu chấm dứt dịch vụ và đổi lại MCPE 0.7.4 sẽ có khả năng kết nối external server. Sau đó người dùng có thể bấm nút External, nhập tên, IP và cổng mặc định 19132. Dữ liệu trong database PocketMine Realms bị xóa vì không còn cần thiết.

Sự kiện này cần được đọc công bằng nhưng không vô cảm. Mojang đã mở một con đường chính thức tốt hơn cho người dùng, nên kết quả trước mắt có lợi cho cả hệ sinh thái PocketMine. Đồng thời, đây cũng là tiền lệ rõ ràng rằng Mojang không đứng hoàn toàn ngoài PocketMine. Công ty đã trực tiếp yêu cầu một dịch vụ do dự án vận hành phải kết thúc khi dịch vụ đó chạm vào bề mặt Realms. Mười hai năm sau, khi cộng đồng suy đoán xung đột giữa công việc của Shoghi tại Mojang với PocketMine, ký ức ấy khiến giả thuyết không thể bị gạt đi như trí tưởng tượng vô căn cứ.

Vì sao PocketMine-MP từng quan trọng đến vậy?

PocketMine-MP lấp khoảng trống bằng một package mà người dùng có thể tự vận hành. Một người có PC, VPS, máy chủ thuê hoặc thậm chí thiết bị Android đủ kiên nhẫn có thể tải PHP binary, chạy file PHAR, mở cổng UDP, nhập IP vào game rồi cài plugin. Bản GitHub release sớm nhất còn thấy rõ, Alpha 1.3.3 ngày 04.07.2013, đã hỗ trợ Minecraft PE 0.7.2. Những hướng dẫn cùng thời còn chỉ cách chạy trên Linux, Mac, Windows, Android và cả môi trường iOS đã jailbreak.

Quy trình ấy không hề thân thiện theo chuẩn hiện nay. Người dùng phải hiểu external IP khác local IP, router phải forward UDP 19132, firewall phải mở đúng rule và client phải khớp protocol. Trên Windows 10 về sau còn có rào cản loopback của ứng dụng UWP. Nhưng khó không có nghĩa là không thể. PocketMine biến multiplayer độc lập từ một ý tưởng chỉ nhà phát triển game làm được thành một bài thử cuối tuần mà một học sinh có thể vật lộn rồi thành công.

Mojang chỉ đưa Bedrock Dedicated Server vào thử nghiệm alpha ở Bedrock 1.6.1 năm 2018. Trong phần lớn quãng 2012–2018, PocketMine-MP không phải lựa chọn phụ đứng cạnh server chính thức đầy đủ. Với rất nhiều người, nó là con đường thực tế nhất để vận hành multiplayer có IP riêng và logic riêng.

Giá trị của PMMP không nằm ở việc mô phỏng Minecraft hoàn hảo. Nó nằm ở quyền tự quyết. Chủ server có thể tạo survival games, lobby, prison, faction, skyblock, economy, rank, kit, form, scoreboard và những luật chơi không cần chờ Mojang thêm vào game. Một hạn chế của core thường trở thành việc cho plugin giải quyết. Cách làm đó tạo ra thị trường host, đội ngũ developer, dịch vụ bán plugin và network có hàng nghìn người chơi.

Tài liệu PMMP nhắc Lifeboat Survival Games là một trong những server MCPE lớn đầu tiên xây trên PocketMine-MP. Điều này tạo ra một quan hệ vòng tròn đáng chú ý. PocketMine giúp các network đầu tiên lớn lên. Những network ấy tạo nhu cầu cho plugin, hosting và protocol update. Lifeboat về sau thuê dktapps, tài trợ phần việc công khai và góp phần giữ PMMP sống thêm nhiều năm.

PocketMine-MP hoạt động như thế nào?

Nó là một server độc lập, không phải lớp bọc của BDS

Khi người chơi kết nối, Minecraft Bedrock client giao tiếp với PMMP qua RakNet trên UDP. RakLib xử lý lớp vận chuyển RakNet. BedrockProtocol định nghĩa cách mã hóa và giải mã packet của Minecraft Bedrock. Từ đó core chuyển dữ liệu mạng thành các hành động có nghĩa trong server như đăng nhập, di chuyển, tương tác block, thay đổi inventory hoặc gửi command.

Core duy trì trạng thái người chơi và thế giới theo tick. Plugin đăng ký listener, command, permission và task để đọc hoặc thay đổi trạng thái đó. Packet đi ra lại được mã hóa, nén và gửi về client. Nhìn từ ngoài, người chơi vẫn mở Minecraft Bedrock bình thường. Phần hoàn toàn khác nằm phía sau địa chỉ IP.

Trong các đời mới, PMMP còn phụ thuộc vào nhiều package và extension chuyên biệt cho NBT, LevelDB, block state, item mapping, mã hóa, nén và thread. Điều đó giải thích vì sao nói dự án “viết bằng PHP” là đúng nhưng chưa đủ. Phần logic chính nằm trong PHP, còn môi trường chạy được gia cố bằng C, C++ và những extension riêng mà bộ PHP phổ thông của một web server thường không có.

PHP giúp hạ thấp cửa vào, nhưng không xóa chi phí kỹ thuật

PHP từng là lựa chọn lạ cho game server, đồng thời cũng là một phần sức hút của PocketMine. Cú pháp dễ tiếp cận, vòng lặp sửa file rồi chạy lại nhanh, plugin được đóng thành file PHAR và có thể bắt đầu từ vài class nhỏ. Rất nhiều người lần đầu hiểu event, object, namespace, dependency hay lưu dữ liệu không phải trong lớp học, mà khi sửa một plugin để server ngừng báo lỗi.

Đổi lại, PHP không được thiết kế cho một game server đa luồng chạy lâu. Tài liệu threading của PMMP giải thích rằng phần lớn cấu trúc dữ liệu PHP không an toàn để chia sẻ giữa thread và việc sao chép dữ liệu có thể tốn hơn phần thời gian tiết kiệm được. PMMP dùng thread cho một số công việc phù hợp như world generation, lighting, network compression và request cURL, còn gameplay và plugin vẫn phải rất cẩn thận với main thread.

Vì vậy PHP không tự động làm PMMP chậm, cũng không tự động làm nó dễ mở rộng vô hạn. Hiệu năng phụ thuộc vào thiết kế core, plugin, cách truy cập đĩa, network, số entity, chunk và khối lượng công việc mỗi tick. Một plugin chặn main thread bằng truy vấn hoặc vòng lặp nặng có thể làm cả server đứng, bất kể phần cứng còn dư bao nhiêu core.

Plugin là sản phẩm chính, vanilla chỉ là nền tối thiểu

Tài liệu chính thức mô tả plugin là module ngoài dùng để thêm tính năng hoặc thay đổi hành vi mặc định. Plugin có thể lắng nghe event, hủy một hành động, sửa kết quả, tạo command, quản lý permission, thao tác inventory, gửi form, chạy task hoặc kết nối dịch vụ ngoài.

Đó cũng là lý do PMMP chưa bao giờ nên được đánh giá như một bản sao BDS. README chính thức nói thẳng rằng nó không phù hợp với vanilla survival, thiếu nhiều cơ chế như world generation nguyên bản, redstone, mob AI và các phần gameplay khác. PMMP mạnh khi server muốn khác Minecraft gốc. Nếu mục tiêu là một thế giới survival giống game nhất có thể, BDS thường hợp lý hơn.

Lịch sử PocketMine-MP từ 2012 đến 2026

2012–2013, từ Pocket Minecraft PHP đến server Minecraft PE

Shoghi Cervantes Pueyo, thường dùng tên shoghicp, bắt đầu dự án vào tháng 10.2012. Tên ban đầu là Pocket Minecraft PHP. Commit đầu ngày 19.10.2012 chỉ mang thông điệp “First commit”, nhưng từ đó một server hoàn toàn độc lập dần hình thành trong tổ chức PocketMine.

Đây là giai đoạn vừa viết code vừa khám phá protocol của một game di động thay đổi nhanh. Không có bộ specification hoàn chỉnh để làm theo. Từng packet, format world và phản ứng của client phải được quan sát, thử nghiệm rồi hiện thực lại. Khi client gửi dữ liệu mới mà server không hiểu, kết quả thường không phải thông báo lỗi đẹp mà là disconnect, world sai, inventory lệch hoặc crash.

Các release Alpha 1.3.x năm 2013 đánh dấu lúc prototype trở thành phần mềm có người dùng thật. Tên version của PocketMine không khớp version Minecraft PE, một nguồn nhầm lẫn kéo dài nhiều năm. “PocketMine Alpha 1.3.3” hỗ trợ MCPE 0.7.2, chứ không phải Minecraft 1.3.3. Mỗi khi client mobile tự cập nhật qua store, chủ server lại phải tìm đúng build tương thích hoặc giữ người chơi ở version cũ.

Việc server tồn tại cũng làm phát sinh nhu cầu mới rất nhanh. Người dùng muốn command, whitelist, permission, nhiều world, anti-grief, economy và minigame. Core không thể chứa mọi ý tưởng. Plugin trở thành cách để nhu cầu cộng đồng đi nhanh hơn roadmap của một nhóm nhỏ. Từ đây PocketMine không chỉ reverse engineer protocol. Nó bắt đầu hình thành một API xã hội, nơi người không đủ sức sửa core vẫn có thể thay đổi trải nghiệm trên server của mình.

2014–2015, hạ tầng cộng đồng hình thành

Trong hai năm tiếp theo, PocketMine-MP có website, forum, plugin repository, Jenkins build, tài liệu, kênh IRC và nhóm contributor rộng hơn. Website là điểm tải phần mềm. Jenkins phát development build. Forum vừa là nơi hỗ trợ cài đặt vừa là kho plugin và nơi các developer tranh luận API. GitHub chứa code, nhưng phần đông chủ server không sống trực tiếp trên GitHub. Họ sống trong chuỗi website, forum, file PHAR và những tutorial được tìm từ Google.

Dòng 1.4 mang tên “Zekkou Cake” đi qua nhiều beta trước khi ổn định đầu năm 2015. Release 1.4 ngày 02.01.2015 hỗ trợ MCPE 0.10.4, tăng API lên 1.10.0, thay RakLib interface, cải thiện world generation, memory và IP blocking. Ghi chú release thú nhận bản ổn định cũ đã quá lỗi thời nên 1.4 được đẩy ra dù vẫn thiếu tính năng. Đây là nhịp sống quen thuộc của dự án. Client không chờ server hoàn thiện. Một bản chưa đủ phải thay thế bản đã không còn dùng được.

Các plugin phổ biến dần tạo nên bộ từ vựng riêng của cộng đồng. EconomyAPI làm nền cho tiền tệ. PurePerms và PureChat quản lý nhóm, permission, prefix. EssentialsPE hoặc essentialsTP gom command tiện ích. FactionsPro, WorldProtect, ManyWorlds, SimpleAuth và hàng loạt plugin nhỏ biến một core thiếu gameplay thành server có nhận diện. Nhiều plugin sống lâu hơn tác giả nhờ người khác fork, sửa API hoặc đưa vào Poggit Orphanage.

Chủ server thường ghép hàng chục plugin công khai. Network lớn lại viết một “core plugin” riêng, gom matchmaking, economy, rank, moderation và game loop vào một codebase để giảm phụ thuộc. Trên forum năm 2017, một người mới hỏi làm sao các server lớn chỉ có vài plugin. Câu trả lời thực tế là họ không copy nhiều plugin vào một file. Họ viết lại hệ thống theo nhu cầu riêng. Văn hóa private core này giải thích vì sao ảnh hưởng của PocketMine lớn hơn số plugin công khai còn tìm được.

Dấu vết còn lại trong repo legacy cho thấy quy mô của giai đoạn Shoghi. Repo PocketMine cũ giữ 4.718 commit và 30 release. Tuy nhiên code chỉ là một phần của dự án đang sống. Domain, forum, plugin repository, build server, tài khoản mạng xã hội và quyền thêm collaborator mới quyết định ai có thể vận hành cộng đồng. Sai lầm quản trị lớn nhất không nằm trong PHP. Nó nằm ở chỗ gần như toàn bộ chìa khóa hạ tầng tập trung vào một người.

Đầu 2015, dấu hiệu một prototype đã biến thành thể chế

Khi một project nhỏ hỏng, người dùng có thể chuyển sang project khác. Khi PocketMine trục trặc năm 2015, hàng loạt server, host và plugin đã phụ thuộc vào nó. Mỗi thay đổi protocol của MCPE trở thành hạn chót kinh doanh. Mỗi API break tạo hàng trăm câu hỏi hỗ trợ. Một release chậm không chỉ làm vài developer khó chịu mà có thể khiến người chơi sau khi update game không vào được network họ vẫn chơi hằng ngày.

Sự phụ thuộc ấy phát triển nhanh hơn cấu trúc quyền lực. PocketMine có contributor, moderator và developer, nhưng hạ tầng trung tâm không được chia quyền tương xứng. Đây là kiểu bus factor khó nhìn khi người sáng lập vẫn hoạt động. Chỉ tới lúc Shoghi bận, mất liên lạc và không còn phát triển thường xuyên, cộng đồng mới phát hiện quyền sửa code không đồng nghĩa quyền duy trì dự án.

Cuối 2015–2016, người sáng lập rời đi và các fork nở ra

Theo tài liệu về PocketMine và PMMP, Shoghi buộc phải dừng phát triển vào cuối năm 2015 vì xung đột với công việc tại Mojang. Anh đồng thời là người duy nhất có quyền administrator trên gần như toàn bộ hạ tầng legacy gồm GitHub organization, forum, website và nhiều dịch vụ khác. Khi anh mất liên lạc với những người còn lại, team không thể thêm collaborator, bảo trì hạ tầng hoặc quản lý forum đúng mức.

Từ “xung đột” trong tài liệu không cho biết đó là điều khoản hợp đồng, quy định nội bộ, lo ngại cạnh tranh với Realms, ranh giới sở hữu trí tuệ hay tổng hợp nhiều yếu tố. Nhưng bối cảnh khiến nó khó được hiểu đơn giản như “không còn thời gian”. Shoghi làm cho công ty sở hữu chính protocol mà PocketMine phải reverse engineer. Hai năm trước, Mojang từng yêu cầu PocketMine Realms đóng. Anh lại giữ chìa khóa của hạ tầng dự án nhưng không thực hiện một cuộc bàn giao sạch khi dừng phát triển. Cách giải thích hợp lý nhất là công việc tại Mojang đã đặt anh vào giới hạn lợi ích hoặc pháp lý mà anh không thể giải quyết công khai.

Một thread tháng 11.2016 kể lại việc PocketMine “chết rồi hồi sinh” gắn giả thuyết trực tiếp với Realms và tự đánh dấu phần đó là “Theory”. Nhãn này không làm giả thuyết vô nghĩa. Nó cho biết cộng đồng đương thời chưa có toàn bộ thông tin, nhưng đã nhìn thấy cùng một chuỗi dấu hiệu. Người sáng lập vào Mojang, project chậm lại, quyền không được bàn giao và hệ sinh thái Realms đang lớn lên. Lịch sử không cung cấp email nội bộ, nhưng cũng không bắt người đọc giả vờ các sự kiện ấy không liên quan.

2016, một triệu hướng fork và cuộc chiến về chữ “PocketMine”

Khoảng trống upstream tạo ra thời kỳ fork dày đặc. Genisys, ClearSky, ImagicalMine, RedstoneLamp và nhiều nhánh khác cố giữ hỗ trợ client mới, thêm gameplay hoặc phục vụ một network cụ thể. Genisys được tạo ngày 27.02.2016 và tự mô tả là server MCPE giàu tính năng dựa trên PocketMine-MP. Nó hấp dẫn chủ server cần mob, gameplay và compatibility ngay hơn là một cuộc tái cấu trúc core dài hạn.

ClearSky và ImagicalMine cũng sống trong vùng nhu cầu đó. Một fork có thể lấy build PocketMine cũ, chấp nhận patch nhanh, backport packet, gộp pull request từ nơi khác và giữ API để plugin tiếp tục chạy. Điều này rất hợp lý với người vận hành server đang mất người chơi từng ngày. Nó lại khó chịu với maintainer muốn code có type rõ, test được và không tích lũy thêm technical debt.

Tháng 01.2017, một phụ huynh chỉ muốn dựng server LAN cho con đã mô tả trải nghiệm tìm kiếm của mình trên PMMP Forum.

“Pocketmine forked off into a million directions.”

Bản dịch - “PocketMine đã bị fork ra theo cả triệu hướng.”

Nguồn - PMMP Forum, “Pocketmine history: What happened?”

Thread “Pocketmine history: What happened?” liệt kê ClearSky, RedstoneLamp, Genisys và PMMP rồi hỏi vì sao mọi người không tập trung vào một fork. Câu hỏi đơn giản ấy ghi lại đúng điều Google không thể giải thích lúc đó. Bài hướng dẫn cũ vẫn trỏ về PocketMine, repo chính trông chết, nhiều fork đều nhận mình là đường tiếp tục, plugin lại chỉ chạy trên vài nhánh nhất định.

Trong văn hóa PMMP, fork bị đánh giá là sao chép cẩu thả thường được gọi là spoon. Trò đùa “fork và spoon thuộc trong tủ bếp” che một tranh chấp nghiêm túc về chất lượng và quyền ghi công. Team PMMP không muốn nhập thẳng feature từ Genisys nếu code bị xem là hacky, khó bảo trì hoặc có nguồn gốc không rõ. Chủ server lại thấy feature đang chạy và hỏi vì sao upstream không copy. Một bên tối ưu cho hôm nay. Bên kia cố tránh làm ngày mai tệ hơn.

Không nên kể thời kỳ này như bảng phả hệ sạch sẽ với một nhánh chính và vài nhánh phụ. Nhiều repo lấy code của nhau, đổi tên, mất lịch sử Git, chuyển organization hoặc tồn tại chỉ để phục vụ một server. Có nhánh công khai nhưng development thực ở private repo. Có project gọi mình là fork của fork. Có plugin dựa vào behavior chỉ một “spoon” cung cấp. Bản đồ ấy lộn xộn vì nhu cầu thật cũng lộn xộn.

Steadfast, Lifeboat và lịch sử nằm ngoài upstream

Steadfast là ví dụ quan trọng cho một hướng khác. Nó dựa trên PocketMine cũ nhưng được Lifeboat sửa rất sâu cho nhu cầu network riêng. Forum mô tả Steadfast như một phiên bản PocketMine cũ đã được biến đổi nặng. Nó có thể hỗ trợ nhiều client hoặc behavior mà server thương mại cần, nhưng không phải tài liệu đầy đủ về protocol và không nhất thiết triển khai phần Lifeboat không dùng.

Điều này giải thích vì sao “server lớn vẫn chạy được” không có nghĩa upstream cộng đồng đang khỏe. Một network có doanh thu có thể trả developer, kiểm soát client range, viết proxy, bỏ phần gameplay không cần và giữ code private. Một chủ server nhỏ cần release công khai, plugin công khai và tài liệu công khai. Cùng gọi là PocketMine, nhưng điều kiện sinh tồn của hai nhóm khác hẳn nhau.

Tháng 09.2016–2017, PMMP trở thành người kế nhiệm

Tháng 09.2016, một số thành viên cũ của PocketMine cùng Dylan, hay dktapps, lập tổ chức PMMP. Họ không chỉ fork repo. Họ tạo GitHub organization, website, forum, build service và những tài khoản có thể cấp quyền cho nhiều người. Đây là một cuộc tái lập thể chế sau bài học đắt giá rằng source mở không bảo đảm hạ tầng mở.

Intyre, một thành viên đáng tin cậy của team PocketMine cũ, được trích lại với lời giải thích rất ngắn về quyết định rời hạ tầng legacy.

“It is time to stop asking and to move on.”

Bản dịch - “Đã đến lúc ngừng hỏi và bước tiếp.”

Nguồn - Intyre trên PMMP Forum

Trong cùng thread lịch sử năm 2017, staff nói họ đã nhiều lần xin thêm quyền nhưng không nhận được. Dktapps cũng giải thích forum cũ vẫn mở không phải vì team chọn giữ nó, mà vì team mới thậm chí không có quyền đóng. “PMMP” vì vậy vừa là tên kỹ thuật vừa là lời tuyên bố quản trị. Nếu không thể lấy lại chìa khóa, họ sẽ xây một ngôi nhà khác.

PMMP không phải sản phẩm cạnh tranh tình cờ mang tên giống PocketMine-MP. Nó là nhánh tiếp tục code và con người của dự án, nhưng được đặt trong tổ chức có thể vận hành. Cuối năm 2017, Shoghi công nhận PMMP là người kế nhiệm, chuyển nhiều địa chỉ pocketmine.net sang pmmp.io và cấp quyền truy cập organization cũ. Team PMMP lúc ấy đã có hơn một năm issue, pull request, forum và danh tính riêng nên chọn archive repo legacy thay vì quay lại.

Quyết định không quay về còn cho thấy lịch sử phần mềm không chỉ nằm trong commit. Issue ghi lại bug và tranh luận. Pull request ghi lại ai đã làm gì. Forum, CI URL và package namespace tạo thói quen cho hàng nghìn người. Di chuyển tất cả về một organization cũ chỉ để có tên “chính thống” có thể gây hại nhiều hơn mang lại lợi ích. PMMP trở thành PocketMine không phải vì thắng quyền sở hữu thương hiệu trong một ngày, mà vì cộng đồng đã dùng nó như upstream đủ lâu để sự kế nhiệm trở thành thực tế.

2017–2018, Poggit và API 3 đưa hệ sinh thái về một trục

Khi forum và plugin repository cũ trở nên lỗi thời, PMMP phải giải quyết một vấn đề sống còn khác ngoài core. Người dùng lấy plugin ở đâu, và họ tin file PHAR ấy bằng cách nào? Đầu năm 2017, forum vẫn có người than rằng phát hành một repo GitHub không tiếp cận được lượng người như plugin repository cũ. Người khác trả lời lúc ấy chưa có cách “chính thức kiểu PocketMine” để release, còn Poggit vẫn đang alpha.

Bản tham vấn công khai tháng 12.2016 mô tả Poggit bằng một câu rất kỹ thuật nhưng có ảnh hưởng lâu dài.

“Poggit consists of a continuous-integration (CI) and a plugin list.”

Bản dịch - “Poggit gồm một hệ thống tích hợp liên tục (CI) và một danh sách plugin.”

Nguồn - PMMP Forum, “Poggit public consultation”

Poggit-CI kết nối repo GitHub, build source thành PHAR khi có commit hoặc pull request và chạy các kiểm tra cơ bản như PHP syntax cùng cấu trúc plugin. Poggit Release không cho developer tải lên một binary bí ẩn. Artifact phải được build từ source mà hệ thống biết, sau đó đi qua các tầng review. Thiết kế ấy biến open source từ lời hứa đạo đức thành một phần của pipeline phân phối.

Quy trình ban đầu khá tham vọng. Staff kiểm tra nhanh mã độc và chất lượng tối thiểu. Người dùng có tài khoản GitHub có thể tham gia review. Reviewer chính thức kiểm tra kỹ hơn và release tốt có thể được featured. Không phải mọi phần của mô hình ban đầu tồn tại nguyên vẹn, nhưng nguyên tắc cốt lõi giữ lại. Plugin công khai phải lần được về source, và bản tải nên là kết quả có thể tái tạo từ source đó.

Poggit còn tạo orphanage cho plugin bị bỏ. EconomyAPI, PurePerms, PureChat, WorldProtect, ManyWorlds và nhiều tên quen thuộc có lúc được chuyển vào organization chung để cộng đồng tiếp tục sửa. Orphanage không thể làm tác giả quay lại, nhưng nó giữ quyền merge và release khỏi chết theo một tài khoản cá nhân. Đây chính là bài học quyền quản trị mà PocketMine core từng trả giá.

API 3 không phải một lần đổi số, mà là hai năm đại phẫu

Ngày 20.12.2016, dktapps đưa branch hỗ trợ MCPE 1.0 ra công khai với API 3.0.0-ALPHA1 và cảnh báo không dùng production vì có thể corrupt world. Từ ALPHA1 tới stable kéo dài khoảng mười tám tháng. Mỗi alpha có thể phá plugin của alpha trước. Những người chỉ muốn server chạy nhìn thấy một chuỗi version khó hiểu. Maintainer lại nhìn thấy cơ hội sửa những quyết định từ thời prototype trước khi chúng đóng cứng thêm một thập kỷ.

Trong thread “Why is the API always changing?”, Intyre trả lời câu hỏi bằng một phép so sánh khô hài.

“Why is your age always changing?”

Bản dịch - “Tại sao tuổi của bạn cứ luôn thay đổi?”

Nguồn - Intyre trên PMMP Forum, “Why is the API always changing?”

Cuộc thảo luận ngày 26.12.2016 sau đó đi vào lý do thật. API version bảo vệ server khỏi plugin gọi class và method không còn đúng. Major tăng khi có thay đổi không tương thích. Minor thêm khả năng nhưng giữ compatibility. Patch sửa bug. Các hậu tố ALPHA, BETA và RC có zero tolerance vì interface còn biến động mạnh.

API 3 đưa strict typing sâu hơn vào code, bỏ hỗ trợ 32-bit, yêu cầu PHP mới, sửa entity performance, inventory transaction, skin, NBT, world provider và network. Composer dần thay Git submodule để quản lý package. Xbox Live authentication được triển khai. LevelDB world mới được hỗ trợ. Mỗi thay đổi giải quyết một vấn đề thật, nhưng kết hợp lại chúng tạo một bức tường migration.

Changelog alpha của 3.0 là một tài liệu lịch sử đáng đọc hơn nhiều bài tổng kết. Nó cho thấy một release server không chỉ theo Minecraft version. Có bug về UUID, NBT signedness, memory leak, thread safety, crafting desktop, resource pack và hàng trăm method signature. Câu “chỉ bump protocol thôi” trở nên vô lý khi nhìn khối việc thật.

Ngày 18.06.2018, PocketMine-MP 3.0.0 cuối cùng được phát hành cho Bedrock 1.4.0. Từ đây version server và plugin API dùng cùng một hệ semver. Nhánh 3.0.x nhận bugfix, 3.1 thêm feature giữ tương thích, còn master chuẩn bị 4.0. Thông báo release flow biến một quá trình từng rất khó đoán thành hợp đồng dễ hiểu hơn giữa core và plugin.

Cái giá vẫn hiện rõ. Plugin không còn maintainer bị bỏ lại. Server owner buộc phải tìm fork, thuê người port hoặc ở lại core cũ. Nhưng nếu PMMP giữ mọi behavior từ 2013 chỉ để plugin cũ không lỗi, technical debt sẽ khóa cả project vào PHP, protocol và kiến trúc đã lỗi thời. API break không phải thất bại của compatibility. Nó là khoản phí để một prototype 2012 có thể tiếp tục sống trong Bedrock 2018.

2018–2023, PMMP trưởng thành trong lúc Bedrock có BDS chính thức

BDS public alpha xuất hiện năm 2018, sáu năm sau commit đầu của PocketMine. Nó thay đổi phép so sánh. Người chỉ muốn survival gần vanilla cuối cùng có server chính thức với mob, redstone, world generation và behavior của game. PMMP không còn phải giả làm đáp án cho mọi nhu cầu multiplayer Bedrock.

Sự xuất hiện của BDS vẫn không làm PMMP mất lý do tồn tại. BDS phục vụ vanilla và hệ Add-On trong giới hạn Mojang thiết kế. PMMP phục vụ server muốn plugin PHP, nhiều world trong một process, event có thể hủy, packet có thể can thiệp và gameplay được viết lại từ server. Một prison network không cần redstone hoàn hảo. Nó cần kiểm soát mining, economy, rank, anti-cheat, form và chuyển người chơi giữa các lobby.

Điểm yếu vanilla của PocketMine vì vậy cũng là điều kiện cho sự tự do của nó. Core không mang toàn bộ behavior BDS, nên plugin không phải thương lượng với mọi assumption vanilla. Server có thể dùng block như nút giao diện, entity như NPC, item như menu và world như arena dùng một lần. Với minigame, việc “không giống Minecraft gốc” có thể là yêu cầu, không phải bug.

2019, Titanic và cảnh báo đã nói trước phần kết

Tháng 09.2019, một beta Bedrock 1.13 bỏ debugging symbols khỏi binary Android. Với người chơi, thay đổi này gần như vô hình. Với developer server bên thứ ba, symbols là tên function, constant và artifact giúp đọc executable. Không có chúng, binary vẫn chạy nhưng bản đồ để hiểu bên trong biến mất.

Trong announcement có tiêu đề “1.13, debug symbols and the Titanic”, dktapps giải thích update protocol khi đó thường mất vài ngày, còn không có symbols có thể thành nhiều tuần hoặc nhiều tháng. Tool tự động viết trong ba năm có nguy cơ vô dụng. Reverse engineering bằng tay khó hơn nhiều. Anh nói thẳng đã cân nhắc rời PM development vì công sức bỏ ra lớn hơn lợi ích nhận lại.

“Third-party servers are just collateral damage.”

Bản dịch - “Các server bên thứ ba chỉ là thiệt hại liên đới.”

Nguồn - dktapps trên PMMP Forum, “1.13, debug symbols and the Titanic”

Câu này xuất hiện khi người dùng hỏi Mojang có đang cố giết server hay không. Dktapps cho rằng mục tiêu được tuyên bố là làm hacker khó sống hơn, còn server bên thứ ba bị kẹt trong làn đạn. Đây không phải lời buộc tội về một chiến dịch bí mật nhắm riêng PocketMine. Nó còn đáng ngại hơn theo một nghĩa khác. Một ecosystem có thể bị bào mòn không vì ai đó ghét nó, mà vì người ra quyết định coi thiệt hại của nó là chấp nhận được.

Thread cũng bác ý tưởng chỉ copy Steadfast2. Fork Lifeboat chỉ triển khai phần network cần, có nhiều chỗ sai và không thể thay thế việc hiểu protocol. MiNET, NukkitX và những server khác cũng phụ thuộc cùng nguồn thông tin. Vấn đề không nằm ở PHP. Nó nằm ở bất kỳ ai cố tái hiện giao thức của nền tảng đóng mà không được cấp tài liệu đủ.

Điều đặc biệt là cảnh báo năm 2019 không hoàn toàn thành hiện thực ngay. BDS vẫn còn symbols hữu ích trong một thời gian. Tooling chuyển dần sang BDS. PMMP tiếp tục update. Nhưng nguy cơ không biến mất, nó chỉ đổi binary để bám vào. Tới 1.21.40, symbols công khai của BDS cũng mất. Chiếc phao tạm thời mà thread Titanic nhắc tới cuối cùng cũng bị rút khỏi công chúng.

2020–2021, Lifeboat biến sự phụ thuộc thành tiền công

Tháng 04.2020, Lifeboat thuê Dylan để chuyển network sang PMMP 4, hỗ trợ Minecraft mới và làm những phần PocketMine mà network cần. Đây là bước ngoặt hiếm hoi nơi giá trị thương mại chảy ngược về upstream. Lifeboat đã dùng một hậu duệ PocketMine cũ trong nhiều năm. Thay vì chỉ giữ mọi cải tiến trong private fork, network trả lương cho maintainer và cho phép phần công việc chung được phát hành công khai.

Không nên lãng mạn hóa. Một công ty tài trợ vì có nhu cầu kinh doanh. Nhưng open source không yêu cầu động cơ thuần khiết, nó cần cơ chế biến lợi ích riêng thành hạ tầng chung. Lifeboat cần PMMP 4. Cộng đồng nhận được protocol update, refactor và maintenance mà một volunteer kiệt sức khó duy trì. Thông báo chia tay năm 2026 nhấn mạnh network có thể thuê team làm closed-source nhưng đã không làm vậy.

PocketMine-MP 4.0.0 phát hành ngày 01.12.2021 cho Bedrock 1.18.0 sau nhiều năm phát triển. Changelog dài hơn 1.500 dòng cho thấy mức độ thay nền. World format, network, block, item, entity, command và dependency cùng thay đổi. BedrockProtocol trở thành package riêng. Nhiều extension PHP mới trở thành bắt buộc. Security và performance được siết.

Với plugin developer, PM4 lại là một migration lớn. Namespace đổi, API bỏ method cũ, world và block model được làm lại. Với server owner, câu chuyện quen thuộc trở lại. Plugin yêu thích chưa có bản mới, một video YouTube bảo sửa số API, console trả TypeError và developer forum bảo không thể vá bằng một dòng. Cái khó chịu là thật. Lý do thay đổi cũng thật.

2022–2023, API 5 và lúc forum trở thành di tích

PMMP 3 kết thúc hỗ trợ sau khi 4.0 ổn định. Team nói rõ duy trì hai major tốn thời gian có thể dùng cho 4.x và 5.0. Mỗi nhánh cũ kéo theo security fix, Minecraft compatibility, PHP binary và câu hỏi hỗ trợ. Open source không làm chi phí nhân đôi biến mất.

PocketMine-MP 5.0.0 ngày 01.06.2023 hỗ trợ Bedrock 1.19.80, thêm nhiều block và item, đọc world Bedrock từ 1.13 trở lên và đổi API. World cùng player data được upgrade theo cách không thể quay lại PM4 nếu không backup. PHP binary lại đổi. PM5 không phải cuộc cách mạng quản trị như PM3, nhưng cho thấy core vẫn đang tiến gần dữ liệu Bedrock hiện đại thay vì đứng yên ở abstraction cũ.

Tháng 03.2023, PMMP Forum chuyển sang read-only. Một thành viên cũ viết lời chào và giữ danh sách “Souls of PocketMine” trong signature. IvanCraft623 trả lời ngắn.

“The party continues on the Discord server.”

Bản dịch - “Cuộc vui vẫn tiếp tục trên server Discord.”

Nguồn - IvanCraft623 trên PMMP Forum, “Goodbye forums”

Lời tạm biệt forum nghe vui, nhưng sự chuyển dịch có cái giá lưu trữ. Forum giữ URL công khai, ngày tháng, danh tính tương đối ổn định và được search engine lập chỉ mục. Discord phản hồi nhanh hơn, gần gũi hơn và hợp support thời gian thực, nhưng câu trả lời dễ chìm, tài khoản có thể biến mất và người ngoài khó tìm lịch sử bằng một truy vấn web.

Vì vậy bài này có thể trích lại tranh luận năm 2016 về API hay cảnh báo năm 2019 về symbols, còn nhiều quyết định sau 2023 chỉ tồn tại trong issue, commit hoặc ký ức Discord. Việc đóng forum không làm PMMP chết. Nó làm tương lai khó viết lịch sử PMMP hơn.

2024, dktapps rời đi và kể cái giá con người

Ngày 21.03.2024, Dylan mở issue “I'm retiring”. Đây không phải changelog hay thông cáo ngắn. Anh kể mình đến với PocketMine năm 2016 giữa áp lực học tập, thất nghiệp và vấn đề sức khỏe tinh thần, rồi dành tám năm cho server dù đã mất hứng thú với Minecraft từ lâu. Có thời gian anh chỉ mở game để test thay đổi PMMP.

Chi tiết ấy làm sụp một huyền thoại phổ biến về maintainer. Dự án không sống mười năm chỉ vì ai đó luôn tràn đầy đam mê. Nó có thể sống vì trách nhiệm, hoàn cảnh, tình bạn, thói quen và vì rời đi sẽ khiến hàng nghìn người khác gặp vấn đề. Sự bền bỉ đó đáng biết ơn, nhưng không thể được dùng như mô hình tài chính.

Dylan nói Lifeboat đã thay đổi hoàn cảnh của anh từ năm 2020. Công việc có lương cho phép anh làm thứ mình giỏi trong môi trường ít áp lực hơn. Tuy vậy, tới 2024 anh muốn rời toàn bộ không gian Minecraft. Anh không dự đoán sẽ có người thay mình ở vị trí “benevolent dictator”. Nếu PMMP sống, nó phải chuyển thành nỗ lực của một nhóm.

Năm maintainer được cấp quyền cho phần update game, nhưng không ai được trả lương để gánh trách nhiệm ấy. Quyền merge là điều kiện cần, không phải động lực. Tài liệu là điều kiện cần, không phải thời gian rảnh. Một người có kỹ năng vẫn có thể chọn công việc nuôi sống mình, gia đình hoặc một project còn mang lại niềm vui hơn.

“All the large servers maintain their own forks, and the smaller servers die off.”

Bản dịch - “Tất cả server lớn đều duy trì fork riêng, còn các server nhỏ hơn thì chết dần.”

Nguồn - dktapps, GitHub issue #6295

Đây là tương lai mà Dylan nói anh dễ hình dung. Câu ấy không phải tiên tri siêu nhiên. Nó là phép tính incentive. Network lớn có doanh thu và nhu cầu trực tiếp nên trả được chi phí fork. Server nhỏ phụ thuộc release công khai. Khi upstream chung mất, bên có tiền giữ lợi thế còn phần commons co lại. Hai năm sau, upstream thực sự dừng và dự đoán trở thành khung hợp lý nhất để nhìn giai đoạn hậu PMMP.

2024–2026, chi phí cập nhật protocol tăng và upstream dừng lại

Cập nhật PMMP cho một bản Bedrock mới không chỉ là đổi số protocol. Tài liệu update mà team để lại yêu cầu clone PocketMine-MP, BedrockProtocol, BedrockData, BedrockBlockUpgradeSchema và BedrockItemUpgradeSchema. Người làm cần Linux, BDS đúng version, world thử nghiệm, tool dump protocol, mod BDS và khả năng dùng reverse engineering tool.

Quy trình bắt đầu bằng lấy packet ID và version data. Một số dữ liệu phải dump từ BDS mod vì tài liệu công khai không có. Packet trace giữa vanilla client với BDS được thu bằng Frida hoặc proxy. Sau đó developer sửa encoder và decoder trong BedrockProtocol, cập nhật enum, xác định packet đi chiều nào, chạy code generation và dùng PHPStan tìm điểm core không còn khớp.

Công việc chưa kết thúc ở network. Creative inventory, recipe, block palette và item mapping phải sinh lại. Schema cần được tạo để world cũ nâng block state và item data sang version mới. Các constant về world data version phải đúng để client không mở world bằng feature nó không hiểu. Cuối cùng mới tới unit test, playtest, commit đồng bộ nhiều repo và phát hành PHP binary tương thích.

Từ Bedrock 1.21.40, Mojang không còn cung cấp công khai BDS build có debugging symbols. Tài liệu PMMP viết thẳng rằng người cập nhật cần build do server partner hoặc Marketplace partner cung cấp để sinh một số dữ liệu. Một phần có thể lấy từ protocol docs, nhưng không phải tất cả. Câu kết của note rất nặng. Server bên thứ ba trở nên phụ thuộc vào thiện chí của Minecraft partner.

Đây là nơi quyền lực nền tảng hiện ra rõ hơn source code. Bất kỳ ai cũng có thể fork repo LGPL. Không phải bất kỳ ai cũng có binary, symbol, contact và công cụ cần để hiểu version tiếp theo. Giấy phép mở bảo vệ quyền sửa phần đã có. Nó không buộc chủ nền tảng cung cấp thông tin về thứ sắp thay đổi.

PMMP vẫn phát hành đều qua nhiều version sau khi Dylan tuyên bố nghỉ. Điều đó chứng minh team còn năng lực, nhưng không chứng minh mô hình kế nhiệm đã ổn định. Công việc update tập trung vào vài người. Mỗi người rời đi làm tập hợp người vừa có kỹ năng, quyền truy cập và sẵn sàng hiến thời gian nhỏ lại.

Đầu tháng 07.2026, driesboy rời Minecraft. Thông báo chia tay không dùng ngôn ngữ mơ hồ về hiatus.

“No one is left willing to do updates for new Minecraft versions.”

Bản dịch - “Không còn ai sẵn lòng thực hiện cập nhật cho các phiên bản Minecraft mới.”

Nguồn - PMMP, thông báo kết thúc dự án

Team tập hợp tài liệu update cho người muốn tiếp tục bằng fork, nhưng xác nhận PMMP sẽ không cung cấp release mới. Họ cảm ơn Lifeboat, những maintainer, moderator, reviewer, Patreon supporter và cộng đồng. Lời cảm ơn cũng là bảng kê những loại lao động thường vô hình cho tới khi không còn ai làm.

Release 5.44.3 cho Bedrock 1.26.30 xuất hiện ngày 06.07.2026. Repo bị archive ngày 09.07.2026 ở mốc 18.965 commit. Đây là điểm kết thúc rõ ràng của upstream do nhóm PMMP duy trì, không chỉ là một tháng ít commit hay tin đồn Discord.

15.07.2026, vì sao dktapps không trao PMMP cho một người kế nhiệm?

Trong một chuỗi trao đổi bắt đầu lúc 06:06 ngày 15.07.2026 theo giờ Việt Nam, tức 23:06 ngày 14.07 theo UTC, một thành viên hỏi thẳng dktapps vì sao anh archive PMMP thay vì giao nó cho người vẫn muốn cập nhật. Câu trả lời đầu tiên của Dylan T., người dẫn dắt kỹ thuật và quản trị PMMP trong phần lớn giai đoạn sau năm 2016, mở ra phần còn thiếu trong thông báo chia tay. Nút Transfer trên GitHub có thể chuyển repository. Nó không chuyển được ký ức về codebase, khả năng review, uy tín của release hay cam kết ở lại thêm nhiều năm.

“i tried that once already and then the new people i brought in faded and left me holding the bag again”

Bản dịch - “Mình từng thử việc đó rồi, nhưng những người mới mình đưa vào dần rời đi và cuối cùng mình lại phải gánh mọi thứ.”

Nguồn - dktapps trong Discord PocketMine-MP, 15.07.2026

Ngay sau đó, Dylan nói đào tạo một người tiếp quản tốn rất nhiều thời gian và năng lượng. Anh cũng không tin lúc ấy có người đủ nghiêm túc để theo dự án lâu đến mức công sức đào tạo trở nên xứng đáng, đồng thời không muốn giao di sản cho một người ngẫu nhiên rồi nhìn chất lượng bị kéo xuống. Đây là đánh giá chủ quan của Dylan, không chứng minh rằng cộng đồng vĩnh viễn không có người đủ khả năng. Nhưng nó là đánh giá của người đã từng trả chi phí cho một lần kế nhiệm thất bại, nên không thể gạt đi như sự ích kỷ giữ quyền đơn thuần.

“the community needs to start figuring this stuff out and fending for itself instead of waiting for the messiah to save y'all”

Bản dịch - “Cộng đồng cần bắt đầu tự hiểu những việc này và tự đứng vững, thay vì chờ một đấng cứu thế đến cứu tất cả.”

Nguồn - dktapps trong Discord PocketMine-MP, 15.07.2026

Ivan ở đây là IvanCraft623, core contributor và thành viên tổ chức PMMP. Trong issue nghỉ hưu năm 2024, Dylan nêu Ivan là một trong năm người được cấp quyền vào các phần code cần cho việc bảo trì và cập nhật game. Việc Dylan từng cân nhắc trao quyền cho Ivan cho thấy phương án kế nhiệm cá nhân đã được xem xét, chứ không phải đến lúc archive mới có người hỏi. Quyết định cuối cùng vẫn là không dựng thêm một trung tâm uy tín quanh một người được chỉ định từ trên xuống.

“shoghi didn't hand over control, that's why pmmp exists, we had to create a new team”

Bản dịch - “Shoghi đã không bàn giao quyền kiểm soát. Đó là lý do PMMP tồn tại, bọn mình đã phải lập một nhóm mới.”

Nguồn - dktapps trong Discord PocketMine-MP, 15.07.2026

Hai thời điểm cách nhau mười năm tạo thành một đối xứng đáng chú ý nhưng không hoàn toàn giống nhau. Năm 2016, nhóm PMMP phải dựng tổ chức và hạ tầng mới vì Shoghi không bàn giao quyền kiểm soát sạch sẽ. Năm 2026, nhóm PMMP archive upstream, nhưng mã nguồn theo giấy phép LGPL-3.0, các release và tài liệu update vẫn còn, còn Dylan công khai nói cộng đồng nên tự fork. Kết quả ở cả hai lần đều có thể là một nhóm mới. Khác biệt nằm ở chỗ lần đầu cộng đồng bị mắc kẹt ngoài hạ tầng cũ, còn lần sau upstream được chủ động đóng để các nhánh kế tiếp tự chứng minh năng lực.

“i think it's better that people fork and figure out how to do this stuff without my supervision”

Bản dịch - “Mình nghĩ tốt hơn là mọi người tự fork và tự tìm cách làm mà không cần mình giám sát.”

Nguồn - dktapps trong Discord PocketMine-MP, 15.07.2026

Ngay sau câu được trích, Dylan nói nếu vẫn giám sát, anh sẽ luôn bị cám dỗ quay lại rồi chỉ đạo mọi người. Điều đó làm quyết định archive hiện ra như một ranh giới quản trị, không chỉ là hành động bỏ cuộc. Nếu upstream còn mang thẩm quyền cũ và mọi fork vẫn xin anh phê chuẩn, Dylan rất dễ trở thành người quản lý không chính thức dù đã nghỉ. Archive cắt luôn vòng lặp ấy. Nó giết upstream PMMP theo nghĩa tổ chức, nhưng cũng buộc những nhánh tiếp theo phải tự chứng minh năng lực thay vì mượn uy tín của dktapps.

Một ngày trước đó, trong channel support, dktapps nói với một thành viên đang phát triển fork rằng anh đã thấy rất nhiều fork chất lượng thấp đến rồi biến mất trong mười năm. Theo anh, lợi thế của nhóm làm thật không nằm ở việc ngăn người khác sao chép, mà ở chỗ họ đi trước và hiểu đủ để hỗ trợ người dùng khi sự cố xảy ra. Một nhánh chỉ sao chép sẽ luôn chạy theo và hy vọng mình không bỏ sót thứ cần copy.

Vì vậy số fork hay star tăng ngay sau ngày archive chỉ cho biết sự chú ý, chưa cho biết ai đã trở thành người kế nhiệm. Một upstream mới cần cập nhật liên tiếp, review thay đổi, xử lý lỗi bảo mật, phát hành binary, giữ niềm tin của plugin developer và trả lời khi server vỡ. Nếu một fork sau này làm được những việc đó và giành được niềm tin, nó sẽ không bác bỏ phần lịch sử này. Nó sẽ chứng minh rằng cộng đồng đã làm đúng điều Dylan yêu cầu, tự đứng vững mà không chờ một người được upstream chỉ định.

PocketMine, PocketMine-MP và PMMP khác nhau thế nào?

PocketMine là tên dự án và tổ chức ban đầu gắn với Shoghi. PocketMine-MP là tên phần mềm server. Hậu tố MP bắt nguồn từ multiplayer. PMMP là tên tổ chức được lập năm 2016 để tiếp tục PocketMine-MP, đồng thời trở thành cách cộng đồng gọi ngắn phần mềm và hệ sinh thái mới.

Vì vậy câu “PMMP là fork của PocketMine-MP” đúng ở góc độ hạ tầng Git và tổ chức, nhưng dễ gây hiểu lầm nếu khiến người đọc nghĩ đây là một sản phẩm cạnh tranh như Genisys. Nhóm PMMP mang lịch sử code của PocketMine-MP sang nơi có thể tiếp tục quản trị, sau đó được người sáng lập cũ công nhận là người kế nhiệm.

Trong lời nói hằng ngày, “PocketMine” có thể chỉ bất kỳ core nào mang dòng code này. Một chủ server nói “server PocketMine” năm 2017 có thể đang chạy Genisys. Một plugin ghi “PocketMine API 2” có thể vô tình phụ thuộc behavior chỉ ImagicalMine giữ. Một network báo `/about` là Steadfast vẫn có lịch sử PocketMine bên dưới. Vì vậy tên gọi cho biết họ hàng, chưa chắc cho biết compatibility.

Bản đồ không hoàn chỉnh của các fork đáng nhớ

  • Genisys ưu tiên feature và khả năng dùng ngay trong giai đoạn PocketMine upstream chậm. Nó trở thành một trong những lựa chọn nổi bật nhất quanh MCPE 0.14–1.0 và để lại các hậu duệ như GenisysPro.
  • ClearSky cùng thời với Genisys, cung cấp build hỗ trợ client mới và nhiều gameplay hơn core cũ. Tên này thường xuất hiện trong tutorial, hosting panel và câu hỏi “nên chọn core nào”.
  • ImagicalMine là một fork khác của thời phân mảnh, có documentation riêng và nhiều thay đổi hướng tới server owner. Việc các bản tài liệu của nó vẫn còn trên Read the Docs cho thấy một fork có thể biến mất nhưng dấu chỉ dẫn của nó tiếp tục xuất hiện trong kết quả tìm kiếm nhiều năm.
  • RedstoneLamp nằm trong nhóm tên người mới thường gặp khi tìm core hỗ trợ MCPE mới. Lịch sử repo không còn đầy đủ như PMMP, một ví dụ về việc code hosting biến mất làm phả hệ khó dựng lại.
  • Steadfast và Steadfast2 gắn với Lifeboat, dựa trên PocketMine cũ và backport protocol cùng feature network cần. Nó chứng minh private fork thương mại có thể sống theo logic khác upstream công khai.
  • Nukkit không đơn thuần là fork PHP của PocketMine mà là server Java chịu ảnh hưởng từ hệ MCPE server cùng thời. Nó cho thấy nhu cầu đủ lớn để nhiều implementation độc lập cùng xuất hiện.

Danh sách này không nhằm chọn “người thắng”. Mỗi project trả lời một áp lực khác nhau. Chạy client mới ngay, giữ plugin cũ, thêm mob, tăng performance, phục vụ network riêng hoặc làm sạch API. Vấn đề chỉ xuất hiện khi người dùng tưởng các project cùng họ sẽ thay thế nhau mà không mất dữ liệu hay plugin.

Fork cũng là cách tri thức sống sót. Nếu PMMP không hình thành năm 2016, một fork khác có thể đã thành upstream trên thực tế. Nhưng fork đồng thời phân tán maintainer, bug report và plugin target. Khi năm project cùng vá protocol trong private branch, cộng đồng làm lại một công việc năm lần mà vẫn không có reference chung.

Poggit, PHAR và vòng đời của một plugin

Plugin PocketMine-MP thường có file plugin.yml khai báo tên, version, main class, API tương thích, command, permission và dependency. Code có thể chạy từ folder trong lúc phát triển, nhưng bản phát hành thường được đóng thành file .phar và đặt vào thư mục plugins.

Ở thời đầu, plugin thường được đăng trên PocketMine Forum hoặc plugin repository cũ. Người dùng tải PHAR đính kèm, đôi khi source nằm trên GitHub, đôi khi không. File cũng được mirror qua MediaFire, Dropbox, blog và video YouTube. Khi link chết, cả plugin có thể biến mất dù hàng trăm server từng phụ thuộc vào nó.

DevTools hỗ trợ load plugin dạng folder, tạo skeleton và build PHAR. ExamplePlugin đưa ra cấu trúc tối thiểu theo API hiện hành. Virion là thư viện nhỏ có thể được đóng chung vào plugin khi build. Những mảnh này tạo chuỗi công cụ đủ để một người đi từ “chưa biết plugin bắt đầu ở đâu” đến “có release người khác cài được”.

Poggit biến repo GitHub thành artifact có thể tải và giữ liên kết về source. Nó không làm plugin tự nhiên an toàn hoặc được bảo trì mãi mãi, nhưng tạo tuyến phát hành nhất quán hơn việc gửi file binary qua host tạm. Việc release công khai phải có source đặc biệt quan trọng với một ecosystem có nhiều developer trẻ, plugin bỏ dở và server cần tự port khi API đổi.

Những plugin cũ cho biết server PocketMine thực sự cần gì

Danh sách download của Poggit Orphanage là một bản khảo cổ nhu cầu. EconomyAPI vượt xa vai trò plugin tiền đơn giản vì nhiều shop, land và job plugin dựa lên nó. PurePerms cùng PureChat tạo group, permission và prefix. WorldProtect, ManyWorlds, AlwaysSpawn và SignPortal bù vào các chức năng quản trị mà server owner coi là cơ bản.

Những plugin ấy cũng cho thấy “gameplay thiếu” của PocketMine không chỉ là khuyết điểm. Vì core không áp đặt một hệ economy hay permission phức tạp, cộng đồng tự ghép stack. Hai server cùng chạy PocketMine có thể khác hoàn toàn từ command, rank tới cách lưu dữ liệu. Điều đó khuyến khích thử nghiệm, nhưng làm dependency graph mong manh. Một plugin economy biến mất có thể kéo theo năm plugin khác.

Poggit Orphanage là giải pháp xã hội cho tình trạng đó. Khi tác giả không còn duy trì, quyền sở hữu repo được chuyển sang organization để contributor khác merge compatibility fix. Mô hình không hoàn hảo. Người review vẫn hữu hạn và hiểu business logic cũ rất khó. Nhưng nó vẫn tốt hơn việc để binary cuối cùng biến mất cùng tài khoản tác giả.

Tại sao PHAR vừa tiện vừa che giấu sự mong manh

Với chủ server, PHAR tạo cảm giác plugin là một sản phẩm hoàn chỉnh. Tải file, thả vào thư mục, restart và xem console. Nhưng PHAR chỉ là archive executable của PHP. Nó có thể chứa source đọc được, dependency được đóng chung, metadata và bất kỳ logic nào tác giả viết. Nếu không có repo, build instruction và tag release, người dùng khó biết file đến từ commit nào.

Poggit-CI làm đường từ commit tới PHAR dễ kiểm tra hơn. Tuy nhiên nhiều server vẫn dùng build Discord, fork private hoặc binary đã qua tay. Điều này trở thành vấn đề lớn khi có lỗ hổng, backdoor hoặc API migration. “Có file chạy được” khác “có project còn sống”.

Vì sao plugin PocketMine-MP hay lỗi sau khi cập nhật?

Plugin khai báo API mà nó tương thích. Nếu API server không phù hợp, PMMP từ chối load thay vì giả vờ rằng mọi thứ ổn. Cơ chế này gây khó chịu khi một plugin cũ chỉ cần sửa nhỏ, nhưng nó ngăn code viết cho class, method hoặc hành vi cũ chạy sai âm thầm trên server mới.

Có ba nguồn thay đổi lớn. Minecraft Bedrock liên tục đổi packet và dữ liệu gameplay. PHP thêm kiểu dữ liệu và loại bỏ cách làm cũ. Bản thân PMMP phải trả nợ kỹ thuật để core dễ kiểm tra và bảo trì hơn. Những major release như 3.0, 4.0 và 5.0 gom các thay đổi phá tương thích vào mốc rõ ràng, nhưng chi phí chuyển plugin vẫn rơi vào maintainer của từng plugin.

Việc chỉ sửa số API trong plugin.yml không phải lúc nào cũng là cập nhật. Nếu plugin gọi method đã đổi, chạm internal network, thao tác NBT cũ hoặc dựa vào hành vi bug, nó cần được đọc và sửa thật. Các thread hỗ trợ cũ đầy câu hỏi “chỉ bump API được không” chính vì khoảng cách giữa plugin còn source và plugin còn người hiểu source là rất lớn.

Một câu trả lời năm 2018 của SOFe chia nguyên nhân thành technical debt từ code PocketMine cũ, thay đổi trong chính Minecraft và thay đổi của PHP. Ba lớp đó có thể xảy ra cùng lúc. Plugin dùng method core cũ, chạy trên PHP mới và xử lý packet Bedrock đã đổi sẽ không có một dòng sửa kỳ diệu.

Từ API 2 lên API 3

Migration này đưa scalar typehint và return type vào nhiều interface. Chỉ riêng onCommand() hoặc Task::onRun() đổi signature đã đủ làm PHP báo lỗi ở plugin triển khai method cũ. Network class, entity, tile, chunk, NBT và scheduler đều được dọn. Plugin chạm packet internal chịu ảnh hưởng nặng nhất vì internal không phải lời hứa compatibility.

Server owner thường mở plugin.yml, đổi api: 2.0.0 thành 3.0.0 rồi thất vọng. Trên thực tế, việc PMMP từ chối load trước vẫn tử tế hơn việc để plugin vào server, xử lý sai inventory và làm mất item. Một compatibility gate khó chịu còn tốt hơn corruption im lặng.

Từ API 3 lên API 4 và API 5

PM4 thay đổi world model, block, item, player, command và nhiều dependency. Plugin có thể phải đổi namespace, object type và cách truy cập world. PM5 hiện đại hóa block state và item data thêm một lần nữa. Plugin chỉ dùng event phổ biến có thể port nhanh. Plugin làm custom block, packet, inventory transaction hay world conversion có thể cần viết lại phần lớn.

Compatibility còn là bài toán mạng lưới. SkyWars chỉ có bản PM3 trong khi mob plugin chỉ còn bản PM4 thì chủ server không thể cài cả hai bằng ý chí. Họ phải port một plugin, tìm bộ plugin khác hoặc giữ cả core cũ. Mỗi major API chia ecosystem thành những hòn đảo cho tới khi phần plugin quan trọng bắt kịp.

Vì sao PMMP chấp nhận làm người dùng đau?

Giữ compatibility vô hạn có vẻ thân thiện nhưng chuyển chi phí vào core. Method lỗi không thể bỏ, data model cũ phải tồn tại song song, bug trở thành behavior mà plugin dựa vào và maintainer phải hiểu mọi lớp lịch sử. Với một team nhỏ chạy theo protocol mới, đó là con đường chậm chết.

PMMP chọn major release rõ ràng, deprecation khi có thể và từ chối API không tương thích. Quyết định ấy khiến cộng đồng thường xuyên phàn nàn nhưng cũng cho phép PHPStan, strict type và test bắt lỗi sớm hơn. Dự án sống gần mười bốn năm một phần vì dám bỏ hành lý, không phải dù đã làm vậy.

Vì sao PocketMine-MP dừng hỗ trợ?

Nguyên nhân trực tiếp là con người

Thông báo chính thức rất cụ thể. Một maintainer chủ chốt rời đi và không còn ai trong team sẵn sàng cập nhật cho Minecraft mới. Không có lỗi kỹ thuật duy nhất khiến code không thể chạy. Không có thông báo pháp lý buộc repo đóng. Dự án hết năng lực duy trì upstream trước khi hết khả năng tồn tại trên đĩa.

Đây là kiểu thất bại quen thuộc của mã nguồn mở. Hàng nghìn server có thể phụ thuộc vào một project, nhưng trách nhiệm khó nhất vẫn tập trung vào vài người. Số lượt tải không tự biến thành thời gian review. Số server kiếm tiền không tự biến thành lương cho maintainer. Mỗi bản game mới lại mở một hạn chót mà volunteer không kiểm soát.

“Không còn ai sẵn sàng” cũng khác “không còn ai đủ thông minh”. Team đã trao quyền cho maintainer. Tài liệu update được viết. Source và tool còn đó. Thứ thiếu là sự kết hợp hiếm của thời gian, kỹ năng, quyền truy cập, trách nhiệm release và mong muốn tiếp tục phục vụ một game người làm có thể đã hết yêu từ nhiều năm.

Nguyên nhân cấu trúc nằm ở chi phí theo kịp một nền tảng đóng

PMMP hiện thực lại hành vi của một game mà nhóm không sở hữu. Bedrock có thể đổi packet, block state, item data, authentication và world format theo lịch của Mojang. Khi tài liệu thiếu hoặc sai, maintainer phải quan sát client, trace packet, phân tích BDS và dựng công cụ sinh dữ liệu.

Việc debugging symbols không còn công khai từ 1.21.40 không tự tay xóa PMMP, nhưng nó thu hẹp tập người có thể làm công việc update. Một server partner có build cần thiết có lợi thế mà developer độc lập không có. Khi người nắm cả kỹ năng lẫn quyền truy cập rời đi, việc tìm người thay thế khó hơn nhiều so với lời kêu gọi “ai đó cứ fork đi”.

Bedrock còn tự động cập nhật trên phần lớn mobile và console. Chủ server không thể yêu cầu toàn bộ người chơi giữ version cũ như một cộng đồng modded Java có thể làm. Chậm update vài ngày đã mất traffic. Chậm vài tuần có thể mất cộng đồng. Nhịp release do Mojang quyết định trở thành lịch làm việc bắt buộc của volunteer PMMP.

Nguyên nhân kinh tế là commons được dùng nhiều hơn được nuôi

Server network có thể kiếm tiền từ rank, pass, cosmetic, quảng cáo hoặc Marketplace. Host bán gói PocketMine. Developer bán plugin private. Video creator có nội dung hướng dẫn. PMMP giúp nhiều hoạt động kinh tế tồn tại, nhưng phần giá trị quay về core maintainer rất nhỏ và không ổn định.

Lifeboat là ngoại lệ tích cực vì đã trả tiền cho công việc có ích chung. Chính vì Lifeboat là ngoại lệ nổi bật nên quy luật chung càng rõ. Hầu hết người hưởng lợi có động cơ chờ người khác tài trợ. Khi tất cả cùng chờ, maintainer gánh chi phí như nghĩa vụ đạo đức cho một ecosystem mà họ không sở hữu.

Mojang có góp phần giết PocketMine-MP không?

Không cần một “lệnh giết” để tạo ra kết quả giết chết

Câu hỏi này thường bị ép vào hai lựa chọn quá đơn giản. Hoặc có email từ Microsoft ra lệnh đóng PMMP, hoặc Mojang hoàn toàn vô can. Lịch sử thực tế nằm giữa hai cực đó. Một nền tảng có thể không cấm project nhưng vẫn thay đổi điều kiện đến mức project độc lập ngày càng khó tồn tại.

Không có dấu vết công khai về cease-and-desist nhằm vào PocketMine-MP core hay mệnh lệnh archive repo năm 2026. Nhưng chúng ta có chuỗi hành vi quan sát được kéo dài mười ba năm.

  • Năm 2013 Mojang trực tiếp yêu cầu PocketMine Realms dừng, dù đổi lại external server chính thức được mở.
  • Cuối 2015 Shoghi dừng PocketMine vì xung đột với công việc tại Mojang và hạ tầng không được bàn giao sạch.
  • Năm 2019 debug symbols biến mất khỏi client, làm reverse engineering khó hơn và dktapps gọi server bên thứ ba là collateral damage.
  • Về sau BDS trở thành nguồn thay thế, rồi từ 1.21.40 build có symbols cũng không còn công khai.
  • Tài liệu protocol không đủ cho toàn bộ dữ liệu, khiến server độc lập phụ thuộc Minecraft partner.
  • Nhịp update Bedrock tiếp tục buộc server theo kịp nhanh trong khi maintainer cộng đồng không được trả tiền ổn định.

Mỗi sự kiện riêng có thể được giải thích bằng lý do sản phẩm, bảo mật hoặc tổ chức. Đặt cạnh nhau, chúng cho thấy một xu hướng nhất quán. Quyền hiểu và mở rộng Bedrock dịch dần từ công chúng về phía Mojang cùng các partner được chọn. PocketMine không bị bắn một phát. Không gian để nó thở bị thu hẹp từng lớp.

Giả thuyết Shoghi, Mojang và Realms nên được đọc thế nào?

Forum năm 2016 suy đoán Mojang cấm Shoghi tiếp tục vì Realms. Không có hồ sơ công khai đủ để biết câu chữ trong hợp đồng hay cuộc trao đổi nội bộ. Nhưng “không biết câu chữ” khác “giả thuyết vô căn cứ”. Mojang đã từng can thiệp PocketMine Realms. Shoghi sau đó là nhân viên Mojang. Tài liệu PMMP xác nhận anh buộc dừng vì xung đột công việc. Hạ tầng tập trung vào anh rồi bị bỏ trong trạng thái team khác không thể quản trị.

Cách đọc thuyết phục nhất là xung đột thực sự tồn tại và có liên quan đến vị trí kép của Shoghi. Realms có thể là toàn bộ nguyên nhân hoặc chỉ là biểu tượng dễ hiểu nhất mà cộng đồng nhìn thấy. Việc thiếu tuyên bố chi tiết có thể đến từ nghĩa vụ bảo mật, mong muốn tránh tranh chấp hoặc đơn giản vì người trong cuộc không muốn kể. Sự im lặng không chứng minh mọi suy đoán, nhưng cũng không xóa cấu trúc lợi ích đã hiện ra.

Từ collateral damage tới partner-only access

Dktapps năm 2019 cho rằng Mojang không nhắm riêng server mà đang chống hacker, còn server độc lập bị thiệt hại phụ. Lập luận này không minh oan cho kết quả. Nếu một công ty biết thay đổi bảo mật sẽ làm hại ecosystem hợp pháp, vẫn thực hiện và không cung cấp con đường tài liệu thay thế đủ tốt, thiệt hại vẫn là hậu quả của lựa chọn công ty.

Đến khi symbols chỉ còn qua partner, ranh giới trở nên kinh tế và chính trị. Network đã được chọn có quyền truy cập giúp duy trì software. Developer độc lập phải xin dữ liệu, dựa vào thiện chí hoặc tự reverse engineer binary khó hơn. Đây không phải sân chơi mở nơi code tốt nhất tự thắng. Đây là hệ sinh thái có cổng, và chủ cổng quyết định ai nhìn thấy bản đồ.

Kết luận hợp lý nhất

Mojang không phải tác giả duy nhất của cái chết PMMP. Bus factor, technical debt, burnout, funding yếu và lựa chọn quản trị trong cộng đồng đều có vai trò. Nhưng nói Mojang không liên quan chỉ vì không có thông cáo “chúng tôi đóng PocketMine” là một cách đọc quá nghèo.

Các quyết định của Mojang đã góp phần tạo môi trường nơi server độc lập phải làm nhiều reverse engineering hơn, tiếp cận ít thông tin công khai hơn và chạy nhanh theo lịch update không do mình kiểm soát. Khi maintainer cuối cùng rời đi, project gãy đúng tại điểm áp lực ấy. Vì vậy kết luận công bằng không phải “Mojang bí mật ra lệnh giết PMMP”, mà là Mojang đã thiết kế và thu hẹp Bedrock theo cách khiến một project như PMMP ngày càng khó được kế nhiệm.

Phân tích rộng hơn về mô hình này nằm trong bài Minecraft Bedrock đang giết những thứ từng nuôi nó lớn. Lịch sử PocketMine cung cấp case study dài nhất cho luận điểm đó.

PocketMine-MP đã chết chưa?

Nếu “PocketMine-MP” có nghĩa là upstream do nhóm PMMP cập nhật cho từng phiên bản Bedrock mới, câu trả lời là có. Hoạt động đó đã kết thúc. Repo chính ở trạng thái read-only và thông báo chính thức nói không còn update.

Nếu “PocketMine-MP” có nghĩa là toàn bộ code, plugin, tài liệu, server đang chạy và cộng đồng đã hình thành, câu trả lời là chưa. Release 5.44.3 vẫn chạy với phiên bản client tương thích. Source mang giấy phép LGPL-3.0 vẫn có thể được fork. Tài liệu update đã được để lại. Các network có fork riêng không biến mất chỉ vì upstream archive.

Vấn đề bắt đầu ở bản Minecraft tiếp theo không còn tương thích. Server có thể giữ client cũ trong một thời gian, dùng proxy hoặc backport trong phạm vi nhất định, nhưng không thể giả định người chơi trên mobile và console sẽ ở lại một version mãi. Một fork kế nhiệm phải giải quyết cả protocol, dữ liệu, PHP build, security patch, plugin ecosystem và niềm tin rằng bản sau vẫn có người làm.

Có thể chia “cái chết” thành bốn lớp. Repo chết khi không còn nhận commit. Upstream chết khi không còn ai phát hành version mới. Ecosystem chết khi plugin, host và developer ngừng theo. Ký ức chết khi link, forum, binary và lời kể biến mất. PMMP đã chết ở lớp upstream. Những lớp còn lại đang sống với tốc độ khác nhau.

Một server 5.44.3 còn chạy được bao lâu?

Về kỹ thuật, nó có thể chạy nhiều năm nếu giữ đúng client, PHP binary, operating system và dependency. Cộng đồng Minecraft cổ vẫn hồi sinh server PE 0.8, 0.11 và 0.15 bằng archive, fork và APK cũ. Năm 2026 vẫn có người tìm PocketMine 0.15.10, sửa để chạy trên Android mới và hỏi cách dựng server offline. Phần mềm không tự phân hủy theo lịch.

Khó khăn là distribution của Bedrock. Mobile store đẩy client mới. Console hạn chế nhập server tùy ý và rollback version. Authentication endpoint có thể đổi. OS bỏ compatibility. Một server cổ không chỉ giữ binary server, mà phải giữ cả đường cho người chơi kết nối. Preservation vì thế là bài toán ecosystem, không phải nén một file ZIP.

Một fork mới cần nhiều hơn tên và logo

Nhấn Fork trên GitHub tạo bản sao code trong vài giây. Tạo upstream mới cần maintainer được tin, CI, PHP build, release signing, security response, protocol knowledge, plugin coordination, documentation và quan hệ với người có dữ liệu Bedrock. Nó còn cần nguyên tắc governance để tránh lặp lại việc chìa khóa tập trung vào một người.

Fork kế nhiệm cũng phải chọn mức tương thích. Giữ API 5 giúp plugin hiện tại sống nhưng hạn chế refactor. Tạo API 6 mở đường dọn core nhưng có thể phân mảnh ecosystem ngay lúc yếu nhất. Theo vanilla sâu hơn tốn người. Tập trung minigame làm phạm vi thực tế hơn nhưng bỏ server survival. Không có lựa chọn trung tính.

Di sản kỹ thuật và cộng đồng

Di sản dễ thấy nhất là code. Gần 19.000 commit trong repo hiện tại, hơn 400 release, các package như RakLib, BedrockProtocol, NBT, Math, Snooze, Log, BedrockData và nhiều schema vẫn là một kho kiến thức lớn về cách server Bedrock vận hành.

Di sản lớn hơn là con người. PocketMine-MP biến việc viết server từ một khái niệm xa lạ thành thứ có thể tải về, chạy, phá hỏng rồi sửa. Nó đưa nhiều học sinh và chủ server nhỏ đến PHP, GitHub, Linux, VPS, network, database, CI, code review và open source. Không phải ai cũng trở thành developer chuyên nghiệp, nhưng rất nhiều người lần đầu nhận ra phần mềm không phải hộp đen.

Nó cũng để lại một bài học quản trị. Dự án sống lâu không chỉ cần license mở. Nó cần quyền truy cập được chia sẻ, build có thể tái tạo, tài liệu cho công việc khó, nguồn tiền không khóa code lại và nhiều người đủ khả năng quyết định. PocketMine từng suýt mất đường đi vì hạ tầng tập trung vào một tài khoản. PMMP sau đó vẫn kết thúc khi năng lực cập nhật tập trung vào quá ít người. Hai biến cố cách nhau mười năm nhưng cùng chỉ vào bus factor.

Lời cảm ơn Lifeboat trong thông báo cuối cũng đáng được giữ. Network này có thể tài trợ một fork đóng cho riêng mình, nhưng đã đồng ý để công việc Dylan và team làm tiếp tục được công khai. Đó là một ví dụ hiếm nhưng rất rõ rằng lợi ích thương mại và hạ tầng chung có thể cùng tồn tại.

Di sản của việc học bằng cách sửa plugin

Nhiều developer PocketMine không bắt đầu bằng giáo trình computer science. Họ muốn thêm command, đổi message, tạo rank hoặc sửa plugin không chạy. Họ mở file PHP, copy một listener, gặp namespace error rồi đi tìm forum. Từ nhu cầu rất nhỏ, họ học object-oriented programming, Git, SQL, async task và network.

Cách học ấy lộn xộn và tạo nhiều code tệ, nhưng cũng dân chủ. Một thiếu niên không cần xin quyền vào studio game để thay luật chơi. Server của họ là phòng thí nghiệm. Forum đôi lúc cay nghiệt, nhưng code và câu trả lời công khai cho phép người mới tiến từ copy-paste tới hiểu hệ thống.

Di sản của protocol như tri thức công cộng

BedrockProtocol, BedrockData và các tool dump không chỉ phục vụ PMMP. Chúng ghi lại cấu trúc packet, enum, item, block và upgrade schema mà tài liệu chính thức có thể thiếu hoặc sai. Dktapps từng nhấn mạnh implementation PMMP còn có vai trò như protocol documentation. Một encoder được test qua hàng triệu kết nối là một loại tài liệu sống.

Khi upstream archive, giá trị này không mất. Nhưng nó đóng băng ở version cuối nếu không ai tiếp tục. Mỗi update không được ghi lại làm khoảng cách giữa lịch sử công khai và protocol hiện tại lớn hơn. Đó là lý do mất PMMP không chỉ mất một lựa chọn server. Cộng đồng mất một thiết chế quan sát Bedrock từ bên ngoài.

Những gì Internet đã làm mất

Viết lịch sử PocketMine khó không phải vì mọi người không nói. Họ đã nói rất nhiều, nhưng trên forum đóng, Discord không index, website đổi domain, Jenkins bị thay, file host hết hạn và repo bị xóa. Một tutorial có hàng trăm nghìn lượt xem có thể trỏ tới binary không còn tồn tại. Một plugin phổ biến có thể chỉ còn fork không rõ nguồn.

Old PocketMine Forum từng được giữ “cho mục đích lịch sử”, nhưng không phải mọi asset và attachment đều sống. PMMP Forum may mắn còn read-only. Wayback Machine giữ được PocketMine Realms. GitHub giữ commit và release. Poggit giữ plugin source. Mỗi dịch vụ bảo tồn một phần khác nhau, không nơi nào giữ toàn bộ đời sống cộng đồng.

Discord giúp trao đổi tri thức nhanh, nhưng tri thức cũng khó được giữ lâu. Search engine không thể trích một cuộc tranh luận trong channel đã xóa. Người viết sau này dễ tưởng không có dữ liệu và quay về thông cáo chính thức, trong khi chứng cứ xã hội từng tồn tại nhưng bị kiến trúc nền tảng làm khó tiếp cận. “Không có trên Google” không đồng nghĩa “chưa từng xảy ra”.

Những gì nên được lưu ngay lúc này

  • Release PHAR, PHP binary và checksum cho các mốc Minecraft quan trọng.
  • Repo plugin cùng tag, artifact và dependency thay vì chỉ giữ bản download cuối.
  • Forum thread có giá trị lịch sử, announcement và ảnh đính kèm.
  • Tài liệu update protocol, tool dump, schema và hướng dẫn build sau khi link gốc đổi.
  • Lời kể của maintainer, chủ network, plugin developer và moderator trước khi ký ức bị rút thành vài dòng timeline.

Bảo tồn không phải thờ quá khứ. Nó giảm lượng công việc người kế nhiệm phải phát minh lại. Một fork mới có thể học vì sao API cũ bị bỏ, không lặp lại bug đã sửa và hiểu quyết định nào đến từ giới hạn lịch sử thay vì chân lý kỹ thuật.

Điều gì có thể xảy ra sau PMMP?

Kịch bản đầu tiên là một fork cộng đồng tiếp quản. Khó khăn không nằm ở nút Fork trên GitHub mà ở việc tập hợp maintainer có kỹ năng protocol, quyền tiếp cận dữ liệu, hạ tầng release và quy trình review. Tên mới không giải quyết được các điều kiện đó.

Kịch bản thứ hai là các network lớn tiếp tục fork riêng. Điều này giữ server của họ sống nhưng tri thức dễ bị phân mảnh hoặc đóng lại. Những thay đổi có giá trị không quay về một upstream chung thì server nhỏ phải làm lại cùng một việc, hoặc dừng.

Kịch bản thứ ba là hệ plugin dịch sang BDS, các server software khác hoặc một kiến trúc proxy. Không có đường chuyển tự động. API, gameplay model và giả định về thread khác nhau. Một plugin PMMP không thể đổi đuôi file để chạy trên BDS.

Kịch bản thực tế nhất có thể là hỗn hợp của cả ba. Một số fork công khai, một số fork thương mại, server cũ đứng yên ở 5.44.3 và developer dần chuyển sang nền tảng khác. Tên PocketMine-MP có thể không trở lại như một upstream duy nhất, nhưng code và con người từ nó sẽ tiếp tục xuất hiện ở nhiều nơi.

Dự đoán đáng lo nhất vẫn là mô hình Dylan nêu năm 2024. Các network có tiền âm thầm tiến lên, còn commons công khai dừng lại. Nếu vậy, Minecraft Bedrock vẫn có server tùy biến nhưng quyền tạo server quy mô lớn ngày càng thuộc về nhóm đã có vốn, partner access và private tooling. Di sản của PocketMine từng là hạ thấp cánh cửa. Hậu PMMP có nguy cơ kéo cánh cửa lên lại.

Một lịch sử không nên kết thúc bằng chữ “deprecated”

Nhìn PocketMine-MP như một package cũ sẽ bỏ lỡ điều quan trọng nhất. Nó xuất hiện trước external server chính thức, tự dựng protocol, giúp những network MCPE đầu tiên lớn lên, sống qua khủng hoảng người sáng lập, phân mảnh fork, ba lần đại tu API và gần mười bốn năm update một game đóng.

Nó cũng cho thấy open source vừa mạnh vừa dễ tổn thương. Source mở cho phép PMMP hồi sinh năm 2016. Hạ tầng tập trung suýt làm cộng đồng mất dự án. Tài trợ của Lifeboat kéo dài upstream. Quyền truy cập kỹ thuật thu hẹp làm người kế nhiệm hiếm hơn. Không một yếu tố nào tự kể hết câu chuyện.

PocketMine-MP không chết vì PHP bỗng ngừng chạy. Nó kết thúc vì hệ thống con người, tiền bạc và thông tin quanh code không còn tạo đủ điều kiện cho version tiếp theo. Đó là lý do lịch sử này đáng lưu. Nó không chỉ nói về Minecraft. Nó nói về ai được quyền hiểu một nền tảng, ai trả chi phí cho sự tự do và chuyện gì xảy ra khi một commons được cả hệ sinh thái dùng nhưng chỉ vài người còn đứng ra nuôi.

Nguồn và cách đối chiếu

Bài này không coi nguồn chính thức là trần của sự thật. Thông báo, release và commit tốt để xác định mốc. Forum đương thời cho biết người trong cộng đồng đã thấy gì, nghi ngờ gì và chịu tác động ra sao. Hành vi, quyền lợi các bên, thứ tự sự kiện, khoảng im lặng và kết quả về sau được dùng để dựng cách giải thích hợp lý nhất.

Một suy luận không tự động yếu chỉ vì không xuất hiện trong thông cáo của tổ chức liên quan. Ngược lại, lời chính thức cũng không tự động đầy đủ chỉ vì nó mang logo đúng. Bài phân biệt điều được tuyên bố, điều có thể quan sát và phần lập luận, nhưng cho phép ba lớp ấy đứng cạnh nhau để tạo kết luận thay vì dùng thiếu tài liệu nội bộ làm lý do ngừng suy nghĩ.

Đọc nhanh sau bài dài Những câu thường được hỏi về PocketMine-MP
PocketMine-MP là gì?

PocketMine-MP, thường gọi là PMMP, là phần mềm server mã nguồn mở cho Minecraft Bedrock Edition được xây lại chủ yếu bằng PHP. Nó nhận kết nối từ client Bedrock, mô phỏng thế giới và gameplay của riêng mình, đồng thời cung cấp API để mở rộng server bằng plugin.

PocketMine-MP có phải Bedrock Dedicated Server không?

Không. PocketMine-MP không phải bản sửa đổi hay lớp bọc của Bedrock Dedicated Server. Hai phần mềm cùng cho client Bedrock kết nối, nhưng có codebase, cách mô phỏng gameplay và hệ mở rộng khác nhau.

PocketMine-MP đã chết chưa?

Nhóm PMMP đã dừng cung cấp bản cập nhật cho các phiên bản Minecraft mới và archive repo chính ngày 09.07.2026. Vì mã nguồn, bản phát hành và tài liệu vẫn còn mở, các server cũ vẫn có thể chạy và một fork mới vẫn có thể tiếp tục dự án.

Vì sao PocketMine-MP dừng hỗ trợ?

Nguyên nhân trực tiếp là không còn thành viên nào trong nhóm sẵn sàng cập nhật cho các phiên bản Minecraft mới. Sau khi repo bị archive, dktapps nói anh từng thử đào tạo người kế nhiệm nhưng cuối cùng lại phải gánh dự án, rồi chọn để cộng đồng tự fork thay vì trao uy tín của upstream cho một cá nhân.

PocketMine-MP phù hợp với loại server nào?

PocketMine-MP phù hợp nhất với server tùy biến mạnh như minigame, lobby, prison, skyblock hoặc network có luật chơi riêng. Nếu mục tiêu là survival giống Bedrock nguyên bản, Bedrock Dedicated Server thường là lựa chọn phù hợp hơn.

PocketMine Realms là gì?

PocketMine Realms là dịch vụ ra mắt năm 2013 để người chơi tìm và kết nối server PocketMine-MP qua giao diện Realms khi Minecraft PE chưa có nút external server chính thức. Dịch vụ đóng sau yêu cầu của Mojang khi MCPE 0.7.4 bổ sung cách nhập IP và port trực tiếp.

PocketMine, PocketMine-MP và PMMP khác nhau thế nào?

PocketMine là tên dự án và tổ chức ban đầu, PocketMine-MP là phần mềm server, còn PMMP là tổ chức được lập năm 2016 để tiếp tục dự án trên hạ tầng mới. PMMP về sau được người sáng lập cũ công nhận là bên kế nhiệm PocketMine-MP.

Mojang có góp phần khiến PocketMine-MP kết thúc không?

Có, theo nghĩa cấu trúc chứ không phải một lệnh đóng trực tiếp đã được công khai. Các thay đổi protocol, việc thu hẹp debugging symbols và quyền truy cập dữ liệu nghiêng về partner khiến server độc lập ngày càng khó cập nhật, trong khi nguyên nhân trực tiếp vẫn là không còn maintainer sẵn sàng tiếp tục.

- NhanAZ - 30.06.2026, mở rộng 15.07.2026