Last active
February 10, 2025 21:39
-
-
Save tommyready/fd8b25d651f8dc153b2aa213cd15bc17 to your computer and use it in GitHub Desktop.
Using PHP to read MINECRAFT PlayerData JSON files for Player Stats
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
DEFINE('_MINECRAFT_SERVER_DIRECTORY_','C:\Minecraft Server Files'); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
// Require script config file | |
REQUIRE(__DIR__ . '\config\configs.php'); | |
// Parse List of Players from White List File | |
$playerWhiteListFile = _MINECRAFT_SERVER_DIRECTORY_ . '\whitelist.json'; | |
$playerWhiteListJson = json_decode( file_get_contents( $playerWhiteListFile ) , true ); | |
foreach( $playerWhiteListJson as $player ) { | |
buildPlayerStats($player['uuid'],$player['name']); | |
} | |
/* | |
Return Array of Player Stats | |
@param: $uuid = Players Unique Identifier (generated by Minecraft when player logs in) | |
*/ | |
function buildPlayerStats($uuid) { | |
// Player Stats File | |
$playerStatFile = _MINECRAFT_SERVER_DIRECTORY_ . '/world/stats/' . $uuid . '.json'; | |
// Check if Stat File Exists | |
if(!file_exists($playerStatFile)) return false; | |
// Read Player Stats into an Array | |
$playerStats = json_decode( file_get_contents( $playerStatFile ) , true ); | |
/* STATS TO LOOK FOR | |
stat.mineBlock | |
stat.craftItem | |
stat.deaths | |
stat.fishCaught | |
stat.pickup | |
achievement. | |
*/ | |
$statsArray = array(); | |
$killsArray = array(); | |
$minedArray = array(); | |
$craftArray = array(); | |
$pickupArray = array(); | |
$achievementsArray = array(); | |
$deathByArray = array(); | |
$kills = 0; | |
$deaths = 0; | |
$fishCaught = 0; | |
$mined = 0; | |
$pickedUp = 0; | |
$crafted = 0; | |
$achievements = 0; | |
foreach( $playerStats as $key => $stat ) { | |
// Log Kill | |
if(preg_match('/^stat.killEntity/',$key)) { | |
$keyArray = explode('.',$key); | |
$newKey = $keyArray[count($keyArray)-1]; | |
$killsArray[$newKey] = $stat; | |
$kills = $kills + $stat; | |
continue; | |
} | |
// Log Mined Blocks | |
if(preg_match('/^stat.mineBlock/',$key)) { | |
$keyArray = explode('.',$key); | |
$newKey = $keyArray[count($keyArray)-1]; | |
$minedArray[$newKey] = $stat; | |
$mined = $mined + $stat; | |
continue; | |
} | |
// Log Crafted Items | |
if(preg_match('/^stat.craftItem/',$key)) { | |
$keyArray = explode('.',$key); | |
$newKey = $keyArray[count($keyArray)-1]; | |
$craftArray[$newKey] = $stat; | |
$crafted = $crafted + $stat; | |
continue; | |
} | |
// Log Blocks/Items Picked Up | |
if(preg_match('/^stat.pickup/',$key)) { | |
$keyArray = explode('.',$key); | |
$newKey = $keyArray[count($keyArray)-1]; | |
$pickupArray[$newKey] = $stat; | |
$pickedUp = $pickedUp + $stat; | |
continue; | |
} | |
// Log Deaths | |
if(preg_match('/^stat.deaths/',$key)) { | |
$deaths = $stat; | |
continue; | |
} | |
// Log Deaths By | |
if(preg_match('/^stat.entityKilledBy/',$key)) { | |
$kayArray = explode('.',$key); | |
$newKey = $keyArray[count($keyArray)-1]; | |
$deathByArray[$newKey] = $stat; | |
continue; | |
} | |
// Log Fish Caught | |
if(preg_match('/^stat.fishCaught/',$key)) { | |
$fishCaught = $stat; | |
continue; | |
} | |
// Log Achievements | |
if(preg_match('/^achievement./',$key)) { | |
$keyArray = explode('.',$key); | |
$newKey = $keyArray[count($keyArray)-1]; | |
$achievementsArray[$newKey] = $stat; | |
$achievements++; | |
continue; | |
} | |
} | |
$statsArray['uuid'] = $uuid; | |
$statsArray['kills'] = $killsArray; | |
$statsArray['totalkills'] = $kills; | |
$statsArray['mined'] = $minedArray; | |
$statsArray['totalmined'] = $mined; | |
$statsArray['crafted'] = $craftArray; | |
$statsArray['totalcrafted'] = $crafted; | |
$statsArray['pickedup'] = $pickupArray; | |
$statsArray['totalpickedup'] = $pickedUp; | |
$statsArray['deaths'] = $deaths; | |
$statsArray['fishcaught'] = $fishCaught; | |
$statsArray['achievements'] = $achievementsArray; | |
$statsArray['totalachievements'] = $achievements; | |
return $statsArray; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment