Merge status and query player data

This commit is contained in:
Jacob Gunther 2023-08-12 22:47:07 -05:00
parent 2782ac52e6
commit b72d026f52
No known key found for this signature in database
GPG Key ID: 9E6F3F4BF45EC433
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 {
parsedName, err := description.ParseFormatting(playerName)
for _, username := range query.Players {
parsedName, err := description.ParseFormatting(username)
if err == nil {
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

View File

@ -255,3 +255,25 @@ func SHA256(input string) string {
func PointerOf[T any](v T) *T {
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
}