Merge status and query player data (#7)

This commit is contained in:
Jacob
2023-08-13 10:40:10 -05:00
committed by GitHub
parent 2782ac52e6
commit 06da2df1b0
2 changed files with 41 additions and 2 deletions

View File

@@ -524,8 +524,8 @@ func BuildJavaResponse(host string, port uint16, status interface{}, query *resp
} }
} }
for _, playerName := range query.Players { for _, username := range query.Players {
parsedName, err := description.ParseFormatting(playerName) parsedName, err := description.ParseFormatting(username)
if err == nil { if err == nil {
result.Players.List = append(result.Players.List, Player{ result.Players.List = append(result.Players.List, Player{
@@ -559,6 +559,23 @@ func BuildJavaResponse(host string, port uint16, status interface{}, query *resp
} }
} }
} }
for _, username := range query.Players {
if Contains(Map(result.Players.List, func(v Player) string { return v.NameRaw }), username) {
continue
}
parsedName, err := description.ParseFormatting(username)
if err == nil {
result.Players.List = append(result.Players.List, Player{
UUID: "",
NameRaw: parsedName.Raw,
NameClean: parsedName.Clean,
NameHTML: parsedName.HTML,
})
}
}
} }
return return

View File

@@ -255,3 +255,25 @@ func SHA256(input string) string {
func PointerOf[T any](v T) *T { func PointerOf[T any](v T) *T {
return &v return &v
} }
// Contains returns true if the array contains the value.
func Contains[T comparable](arr []T, v T) bool {
for _, value := range arr {
if value == v {
return true
}
}
return false
}
// Map applies the provided map function to all of the values in the array and returns the result.
func Map[I, O any](arr []I, f func(I) O) []O {
result := make([]O, len(arr))
for i, v := range arr {
result[i] = f(v)
}
return result
}