public static function matchList(ListTag $tag1, ListTag $tag2)
{
if ($tag1->getName() !== $tag2->getName() or $tag1->getCount() !== $tag2->getCount()) {
return false;
}
foreach ($tag1 as $k => $v) {
if (!$v instanceof Tag) {
continue;
}
if (!isset($tag2->{$k}) or !$tag2->{$k} instanceof $v) {
return false;
}
if ($v instanceof CompoundTag) {
if (!self::matchTree($v, $tag2->{$k})) {
return false;
}
} elseif ($v instanceof ListTag) {
if (!self::matchList($v, $tag2->{$k})) {
return false;
}
} else {
if ($v->getValue() !== $tag2->{$k}->getValue()) {
return false;
}
}
}
return true;
}