do not rely on GameMode::getMagicNumber() to match protocol IDs

This commit is contained in:
Dylan K. Taylor
2020-06-13 12:26:17 +01:00
parent 5c16261374
commit 465285b3c2
4 changed files with 22 additions and 5 deletions

View File

@ -56,7 +56,7 @@ class TypeConverter{
*
* @internal
*/
public function getClientFriendlyGamemode(GameMode $gamemode) : int{
public function coreGameModeToProtocol(GameMode $gamemode) : int{
switch($gamemode->id()){
case GameMode::SURVIVAL()->id():
return ProtocolGameMode::SURVIVAL;
@ -70,6 +70,22 @@ class TypeConverter{
}
}
public function protocolGameModeToCore(int $gameMode) : GameMode{
switch($gameMode){
case ProtocolGameMode::SURVIVAL:
return GameMode::SURVIVAL();
case ProtocolGameMode::CREATIVE:
return GameMode::CREATIVE();
case ProtocolGameMode::ADVENTURE:
return GameMode::ADVENTURE();
case ProtocolGameMode::CREATIVE_VIEWER:
case ProtocolGameMode::SURVIVAL_VIEWER:
return GameMode::SPECTATOR();
default:
throw new \UnexpectedValueException("Unmapped protocol game mode $gameMode");
}
}
public function coreItemStackToRecipeIngredient(Item $itemStack) : RecipeIngredient{
$meta = $itemStack->getMeta();
return new RecipeIngredient($itemStack->getId(), $meta === -1 ? 0x7fff : $meta, $itemStack->getCount());