From c7b36aadcaabed6bd13cc40d2dfe4ce352733543 Mon Sep 17 00:00:00 2001 From: arzumify Date: Thu, 27 Feb 2025 17:06:16 +0000 Subject: [PATCH] Made matchmaker null safe, bump the version --- gradle.properties | 2 +- .../presence/matchmaker/MatchMaker.java | 35 ++++++++++++------- 2 files changed, 24 insertions(+), 13 deletions(-) diff --git a/gradle.properties b/gradle.properties index ad96809..9429eba 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,6 +2,6 @@ org.gradle.jvmargs=-Xmx1G org.gradle.parallel=true # Properties -mod_version=1.1.0 +mod_version=1.1.1 maven_group=arzumify.presence archives_base_name=presence \ No newline at end of file diff --git a/src/main/java/arzumify/presence/matchmaker/MatchMaker.java b/src/main/java/arzumify/presence/matchmaker/MatchMaker.java index 768eeff..c6c11df 100644 --- a/src/main/java/arzumify/presence/matchmaker/MatchMaker.java +++ b/src/main/java/arzumify/presence/matchmaker/MatchMaker.java @@ -25,26 +25,37 @@ public class MatchMaker

, T extends PresenceProvider

> { } public Set Search(T match, Channel channel) { - Set matches = new HashSet<>(); - Set presenceChunks = match.presence().GetCollisionChunks(); - if (!Collections.disjoint(presenceChunks, channels.get(channel).keySet())) { - presenceChunks.retainAll(channels.get(channel).keySet()); - for (Vec2i chunk : presenceChunks) { - for (T matching : channels.get(channel).get(chunk)) { - if (match != matching) { - if (match.presence().Matches(matching.presence())) { - matches.add(matching); + var matches = new HashSet(); + var presenceChunks = match.presence().GetCollisionChunks(); + var chunks = channels.get(channel); + if (chunks != null) { + if (!Collections.disjoint(presenceChunks, chunks.keySet())) { + presenceChunks.retainAll(chunks.keySet()); + for (Vec2i chunk : presenceChunks) { + if (chunks.get(chunk) != null) { + for (T matching : chunks.get(chunk)) { + if (match != matching) { + if (match.presence().Matches(matching.presence())) { + matches.add(matching); + } + } } } } } + return matches; + } else { + return null; } - return matches; } public void Remove(T match, Channel channel) { for (Vec2i chunk : match.presence().GetChunks()) { - channels.get(channel).get(chunk).remove(match); + if (channels.get(channel) != null) { + if (channels.get(channel).get(chunk) != null) { + channels.get(channel).get(chunk).remove(match); + } + } } } -} +} \ No newline at end of file