Skip to content

Instantly share code, notes, and snippets.

@xxAROX
Last active August 14, 2022 13:30
Show Gist options
  • Save xxAROX/98a0f5be8cb8223bdf331eaa6205c8a9 to your computer and use it in GitHub Desktop.
Save xxAROX/98a0f5be8cb8223bdf331eaa6205c8a9 to your computer and use it in GitHub Desktop.
[JUST FOR FUN] Headless players
<?php
/*
* Copyright (c) Jan Sohn / xxAROX
* All rights reserved.
* I don't want anyone to steel my source code. (IHR HARZER)
*/
/**
* Function sendHeadlessSkin
* @param \pocketmine\player\ $player
* @return void
*/
private function sendHeadlessSkin(\pocketmine\player\ $player): void{
$skin = $this->getSkin();
$geoData = json_decode($skin->getGeometryData(), true);
foreach ($geoData['minecraft:geometry'] as $_ => $geoObj) {
if ($geoObj['description']['identifier'] == $skin->getGeometryName()) {
foreach ($geoObj['bones'] as $index => $boneObj) {
if (
isset($boneObj['pivot'][1]) && $boneObj['pivot'][1] >= 24
&& (
$boneObj['name'] == 'head'
|| (isset($boneObj['parent']) && $boneObj['parent'] == 'head')
|| $boneObj['name'] == 'hat'
|| (isset($boneObj['parent']) && $boneObj['parent'] == 'hat')
)
) {
unset($geoObj['bones'][$index]);
$geoData['minecraft:geometry'][$_]['bones'] = array_values($geoObj['bones']);
}
}
}
}
$player->getNetworkSession()->sendDataPacket(\pocketmine\network\mcpe\protocol\PlayerSkinPacket::create($this->getUniqueId(), "", "", SkinAdapterSingleton::get()->toSkinData(
new Skin(
$this->getSkin()->getSkinId(),
$this->getSkin()->getSkinData(),
$this->getSkin()->getCapeData(),
$this->getSkin()->getGeometryName(),
json_encode($geoData)
)
)));
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment