mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-06-07 12:18:46 +00:00
Revert "tools/generate-blockstate-upgrade-schema: reduce dependencies for generating blockstate mappings"
This reverts commit 470a3e1a3acfeb3f524e47082160ab6461b2474f. This changes behaviour, so it needs to target minor-next.
This commit is contained in:
parent
470a3e1a3a
commit
74d219dcb6
@ -280,13 +280,15 @@ function processStateGroup(string $oldName, array $upgradeTable, BlockStateUpgra
|
|||||||
* This significantly reduces the output size during flattening when the flattened block has many permutations
|
* This significantly reduces the output size during flattening when the flattened block has many permutations
|
||||||
* (e.g. walls).
|
* (e.g. walls).
|
||||||
*
|
*
|
||||||
|
* @param BlockStateUpgradeSchemaBlockRemap[] $stateRemaps
|
||||||
* @param BlockStateMapping[] $upgradeTable
|
* @param BlockStateMapping[] $upgradeTable
|
||||||
|
* @phpstan-param list<BlockStateUpgradeSchemaBlockRemap> $stateRemaps
|
||||||
* @phpstan-param array<string, BlockStateMapping> $upgradeTable
|
* @phpstan-param array<string, BlockStateMapping> $upgradeTable
|
||||||
*
|
*
|
||||||
* @return BlockStateUpgradeSchemaBlockRemap[]
|
* @return BlockStateUpgradeSchemaBlockRemap[]
|
||||||
* @phpstan-return list<BlockStateUpgradeSchemaBlockRemap>
|
* @phpstan-return list<BlockStateUpgradeSchemaBlockRemap>
|
||||||
*/
|
*/
|
||||||
function processRemappedStates(array $upgradeTable) : array{
|
function compressRemappedStates(array $upgradeTable, array $stateRemaps) : array{
|
||||||
$unchangedStatesByNewName = [];
|
$unchangedStatesByNewName = [];
|
||||||
|
|
||||||
foreach($upgradeTable as $pair){
|
foreach($upgradeTable as $pair){
|
||||||
@ -329,26 +331,21 @@ function processRemappedStates(array $upgradeTable) : array{
|
|||||||
|
|
||||||
$compressedRemaps = [];
|
$compressedRemaps = [];
|
||||||
|
|
||||||
foreach($upgradeTable as $remap){
|
foreach($stateRemaps as $remap){
|
||||||
$oldState = $remap->old->getStates();
|
$oldState = $remap->oldState;
|
||||||
$newState = $remap->new->getStates();
|
$newState = $remap->newState;
|
||||||
|
|
||||||
if(count($oldState) === 0 || count($newState) === 0){
|
if($oldState === null || $newState === null){
|
||||||
//all states have changed in some way - compression not possible
|
//no unchanged states - no compression possible
|
||||||
assert(!isset($unchangedStatesByNewName[$remap->new->getName()]));
|
assert(!isset($unchangedStatesByNewName[$remap->newName]));
|
||||||
$compressedRemaps[$remap->new->getName()][] = new BlockStateUpgradeSchemaBlockRemap(
|
$compressedRemaps[$remap->newName][] = $remap;
|
||||||
$oldState,
|
|
||||||
$remap->new->getName(),
|
|
||||||
$newState,
|
|
||||||
[]
|
|
||||||
);
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
$cleanedOldState = $oldState;
|
$cleanedOldState = $oldState;
|
||||||
$cleanedNewState = $newState;
|
$cleanedNewState = $newState;
|
||||||
|
|
||||||
foreach($unchangedStatesByNewName[$remap->new->getName()] as $propertyName){
|
foreach($unchangedStatesByNewName[$remap->newName] as $propertyName){
|
||||||
unset($cleanedOldState[$propertyName]);
|
unset($cleanedOldState[$propertyName]);
|
||||||
unset($cleanedNewState[$propertyName]);
|
unset($cleanedNewState[$propertyName]);
|
||||||
}
|
}
|
||||||
@ -356,8 +353,10 @@ function processRemappedStates(array $upgradeTable) : array{
|
|||||||
ksort($cleanedNewState);
|
ksort($cleanedNewState);
|
||||||
|
|
||||||
$duplicate = false;
|
$duplicate = false;
|
||||||
$compressedRemaps[$remap->new->getName()] ??= [];
|
$compressedRemaps[$remap->newName] ??= [];
|
||||||
foreach($compressedRemaps[$remap->new->getName()] as $k => $compressedRemap){
|
foreach($compressedRemaps[$remap->newName] as $k => $compressedRemap){
|
||||||
|
assert($compressedRemap->oldState !== null && $compressedRemap->newState !== null);
|
||||||
|
|
||||||
if(
|
if(
|
||||||
count($compressedRemap->oldState) !== count($cleanedOldState) ||
|
count($compressedRemap->oldState) !== count($cleanedOldState) ||
|
||||||
count($compressedRemap->newState) !== count($cleanedNewState)
|
count($compressedRemap->newState) !== count($cleanedNewState)
|
||||||
@ -380,11 +379,11 @@ function processRemappedStates(array $upgradeTable) : array{
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if(!$duplicate){
|
if(!$duplicate){
|
||||||
$compressedRemaps[$remap->new->getName()][] = new BlockStateUpgradeSchemaBlockRemap(
|
$compressedRemaps[$remap->newName][] = new BlockStateUpgradeSchemaBlockRemap(
|
||||||
$cleanedOldState,
|
$cleanedOldState,
|
||||||
$remap->new->getName(),
|
$remap->newName,
|
||||||
$cleanedNewState,
|
$cleanedNewState,
|
||||||
$unchangedStatesByNewName[$remap->new->getName()]
|
$unchangedStatesByNewName[$remap->newName]
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -456,9 +455,21 @@ function generateBlockStateUpgradeSchema(array $upgradeTable) : BlockStateUpgrad
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
//block mapped to multiple different new IDs; we can't guess these, so we just do a plain old remap
|
//block mapped to multiple different new IDs; we can't guess these, so we just do a plain old remap
|
||||||
$result->remappedStates[$oldName] = processRemappedStates($blockStateMappings);
|
foreach($blockStateMappings as $mapping){
|
||||||
|
if(!$mapping->old->equals($mapping->new)){
|
||||||
|
$result->remappedStates[$mapping->old->getName()][] = new BlockStateUpgradeSchemaBlockRemap(
|
||||||
|
$mapping->old->getStates(),
|
||||||
|
$mapping->new->getName(),
|
||||||
|
$mapping->new->getStates(),
|
||||||
|
[]
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
foreach(Utils::stringifyKeys($result->remappedStates) as $oldName => $remap){
|
||||||
|
$result->remappedStates[$oldName] = compressRemappedStates($upgradeTable[$oldName], $remap);
|
||||||
|
}
|
||||||
|
|
||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user