Skip to content

Commit e01bdfb

Browse files
committed
Support private message
1 parent 4b1966c commit e01bdfb

19 files changed

Lines changed: 422 additions & 2 deletions

File tree

blueberry-1.20/src/main/java/net/azisaba/interchatmod/blueberry/Mod.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,11 @@ public void onPostInit() {
120120
JsonArray membersArray = gson.fromJson(makeRequest("interchat/guilds/" + guild.id() + "/members"), JsonArray.class);
121121
guildMembers.put(guild.id(), GuildMember.getGuildMembersFromArray(membersArray));
122122
}
123+
for (Set<GuildMember> memberSet : guildMembers.values()) {
124+
for (GuildMember member : memberSet) {
125+
GuildCommand.KNOWN_PLAYERS.add(member.name());
126+
}
127+
}
123128
} catch (Exception e) {
124129
getLogger().warn("Failed to fetch guild list", e);
125130
}

blueberry-1.20/src/main/java/net/azisaba/interchatmod/blueberry/commands/GuildCommand.java

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,9 @@
1515
import org.jetbrains.annotations.NotNull;
1616

1717
import java.util.Collections;
18+
import java.util.HashSet;
1819
import java.util.Locale;
20+
import java.util.Set;
1921
import java.util.function.Consumer;
2022
import java.util.stream.Collectors;
2123
import java.util.stream.Stream;
@@ -25,6 +27,7 @@
2527

2628
@SuppressWarnings("SameReturnValue")
2729
public class GuildCommand implements ClientCommandHandler {
30+
public static final Set<String> KNOWN_PLAYERS = Collections.synchronizedSet(new HashSet<>());
2831
private final Mod mod;
2932

3033
public GuildCommand(Mod mod) {
@@ -117,6 +120,34 @@ public void register(@NotNull CommandDispatcher<CommandSourceStack> commandDispa
117120
)
118121
)
119122
.then(literal("info").executes(ctx -> executeInfo(ctx.getSource())))
123+
.then(literal("block")
124+
.then(argument("player", StringArgumentType.word())
125+
.executes(ctx -> {
126+
mod.client.block(StringArgumentType.getString(ctx, "player"));
127+
return 0;
128+
})
129+
)
130+
)
131+
.then(literal("unblock")
132+
.then(argument("player", StringArgumentType.word())
133+
.executes(ctx -> {
134+
mod.client.unblock(StringArgumentType.getString(ctx, "player"));
135+
return 0;
136+
})
137+
)
138+
)
139+
.then(literal("tell")
140+
.then(argument("player", StringArgumentType.word())
141+
.suggests((ctx, builder) -> SharedSuggestionProvider.suggest(KNOWN_PLAYERS.stream(), builder))
142+
.then(argument("message", StringArgumentType.greedyString())
143+
.executes(ctx -> {
144+
mod.client.tell(StringArgumentType.getString(ctx, "player"), StringArgumentType.getString(ctx, "message"));
145+
KNOWN_PLAYERS.add(StringArgumentType.getString(ctx, "player"));
146+
return 0;
147+
})
148+
)
149+
)
150+
)
120151
);
121152
}
122153

build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ allprojects {
1212
}
1313

1414
group = "net.azisaba.interchatmod"
15-
version = "0.4.0"
15+
version = "0.5.0"
1616

1717
repositories {
1818
// mavenLocal()

common/src/main/java/net/azisaba/interchatmod/common/AbstractWebSocketChatClient.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,25 @@ public void role(@NotNull String member, @NotNull String role) {
161161
send(gson.toJson(obj));
162162
}
163163

164+
public void block(@NotNull String player) {
165+
JsonObject obj = createPacket("block");
166+
obj.addProperty("player", player);
167+
send(gson.toJson(obj));
168+
}
169+
170+
public void unblock(@NotNull String player) {
171+
JsonObject obj = createPacket("unblock");
172+
obj.addProperty("player", player);
173+
send(gson.toJson(obj));
174+
}
175+
176+
public void tell(@NotNull String player, @NotNull String message) {
177+
JsonObject obj = createPacket("tell");
178+
obj.addProperty("player", player);
179+
obj.addProperty("message", message);
180+
send(gson.toJson(obj));
181+
}
182+
164183
public void toggleInvites() {
165184
send(gson.toJson(createPacket("toggle_invites")));
166185
}

fabric-1.16/src/main/java/net/azisaba/interchatmod/fabric/Commands.java

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,10 @@
1313
import net.minecraft.text.LiteralText;
1414
import net.minecraft.text.Text;
1515
import net.minecraft.util.Formatting;
16+
import org.jetbrains.annotations.NotNull;
1617

1718
import java.util.Collections;
19+
import java.util.HashSet;
1820
import java.util.Locale;
1921
import java.util.Set;
2022
import java.util.function.Consumer;
@@ -25,6 +27,22 @@
2527
import static net.fabricmc.fabric.api.client.command.v1.ClientCommandManager.literal;
2628

2729
public class Commands {
30+
public static final @NotNull Set<String> KNOWN_PLAYERS = new HashSet<>();
31+
32+
public static LiteralArgumentBuilder<FabricClientCommandSource> builderGTell() {
33+
return literal("cgtell")
34+
.then(argument("player", StringArgumentType.word())
35+
.suggests((ctx, builder) -> CommandSource.suggestMatching(KNOWN_PLAYERS.stream(), builder))
36+
.then(argument("message", StringArgumentType.greedyString())
37+
.executes(ctx -> {
38+
Mod.client.tell(StringArgumentType.getString(ctx, "player"), StringArgumentType.getString(ctx, "message"));
39+
KNOWN_PLAYERS.add(StringArgumentType.getString(ctx, "player"));
40+
return 0;
41+
})
42+
)
43+
);
44+
}
45+
2846
public static LiteralArgumentBuilder<FabricClientCommandSource> builderGS() {
2947
return ClientCommandManager.literal("cgs")
3048
.then(ClientCommandManager.argument("guild", StringArgumentType.word())
@@ -157,6 +175,34 @@ public static LiteralArgumentBuilder<FabricClientCommandSource> builderGuild() {
157175
)
158176
)
159177
.then(literal("info").executes(ctx -> executeInfo(ctx.getSource())))
178+
.then(literal("block")
179+
.then(argument("player", StringArgumentType.word())
180+
.executes(ctx -> {
181+
Mod.client.block(StringArgumentType.getString(ctx, "player"));
182+
return 0;
183+
})
184+
)
185+
)
186+
.then(literal("unblock")
187+
.then(argument("player", StringArgumentType.word())
188+
.executes(ctx -> {
189+
Mod.client.unblock(StringArgumentType.getString(ctx, "player"));
190+
return 0;
191+
})
192+
)
193+
)
194+
.then(literal("tell")
195+
.then(argument("player", StringArgumentType.word())
196+
.suggests((ctx, builder) -> CommandSource.suggestMatching(KNOWN_PLAYERS.stream(), builder))
197+
.then(argument("message", StringArgumentType.greedyString())
198+
.executes(ctx -> {
199+
Mod.client.tell(StringArgumentType.getString(ctx, "player"), StringArgumentType.getString(ctx, "message"));
200+
KNOWN_PLAYERS.add(StringArgumentType.getString(ctx, "player"));
201+
return 0;
202+
})
203+
)
204+
)
205+
)
160206
;
161207
}
162208

fabric-1.16/src/main/java/net/azisaba/interchatmod/fabric/Mod.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ public class Mod implements ModInitializer, ModMenuApi {
3333

3434
@Override
3535
public void onInitialize() {
36+
ClientCommandManager.DISPATCHER.register(Commands.builderGTell());
3637
ClientCommandManager.DISPATCHER.register(Commands.builderGS());
3738
ClientCommandManager.DISPATCHER.register(Commands.builderG());
3839
ClientCommandManager.DISPATCHER.register(Commands.builderReconnectInterChat());
@@ -53,6 +54,11 @@ public void run() {
5354
JsonArray membersArray = gson.fromJson(makeRequest("interchat/guilds/" + guild.id() + "/members"), JsonArray.class);
5455
guildMembers.put(guild.id(), GuildMember.getGuildMembersFromArray(membersArray));
5556
}
57+
for (Set<GuildMember> memberSet : guildMembers.values()) {
58+
for (GuildMember member : memberSet) {
59+
Commands.KNOWN_PLAYERS.add(member.name());
60+
}
61+
}
5662
} catch (Exception e) {
5763
System.err.println("Failed to fetch guild list");
5864
e.printStackTrace();

fabric-1.17/src/main/java/net/azisaba/interchatmod/fabric/Commands.java

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,10 @@
1212
import net.minecraft.text.LiteralText;
1313
import net.minecraft.text.Text;
1414
import net.minecraft.util.Formatting;
15+
import org.jetbrains.annotations.NotNull;
1516

1617
import java.util.Collections;
18+
import java.util.HashSet;
1719
import java.util.Locale;
1820
import java.util.Set;
1921
import java.util.function.Consumer;
@@ -24,6 +26,22 @@
2426
import static net.fabricmc.fabric.api.client.command.v1.ClientCommandManager.literal;
2527

2628
public class Commands {
29+
public static final @NotNull Set<String> KNOWN_PLAYERS = new HashSet<>();
30+
31+
public static LiteralArgumentBuilder<FabricClientCommandSource> builderGTell() {
32+
return literal("cgtell")
33+
.then(argument("player", StringArgumentType.word())
34+
.suggests((ctx, builder) -> CommandSource.suggestMatching(KNOWN_PLAYERS.stream(), builder))
35+
.then(argument("message", StringArgumentType.greedyString())
36+
.executes(ctx -> {
37+
Mod.client.tell(StringArgumentType.getString(ctx, "player"), StringArgumentType.getString(ctx, "message"));
38+
KNOWN_PLAYERS.add(StringArgumentType.getString(ctx, "player"));
39+
return 0;
40+
})
41+
)
42+
);
43+
}
44+
2745
public static LiteralArgumentBuilder<FabricClientCommandSource> builderGS() {
2846
return literal("cgs")
2947
.then(argument("guild", StringArgumentType.word())
@@ -156,6 +174,34 @@ public static LiteralArgumentBuilder<FabricClientCommandSource> builderGuild() {
156174
)
157175
)
158176
.then(literal("info").executes(ctx -> executeInfo(ctx.getSource())))
177+
.then(literal("block")
178+
.then(argument("player", StringArgumentType.word())
179+
.executes(ctx -> {
180+
Mod.client.block(StringArgumentType.getString(ctx, "player"));
181+
return 0;
182+
})
183+
)
184+
)
185+
.then(literal("unblock")
186+
.then(argument("player", StringArgumentType.word())
187+
.executes(ctx -> {
188+
Mod.client.unblock(StringArgumentType.getString(ctx, "player"));
189+
return 0;
190+
})
191+
)
192+
)
193+
.then(literal("tell")
194+
.then(argument("player", StringArgumentType.word())
195+
.suggests((ctx, builder) -> CommandSource.suggestMatching(KNOWN_PLAYERS.stream(), builder))
196+
.then(argument("message", StringArgumentType.greedyString())
197+
.executes(ctx -> {
198+
Mod.client.tell(StringArgumentType.getString(ctx, "player"), StringArgumentType.getString(ctx, "message"));
199+
KNOWN_PLAYERS.add(StringArgumentType.getString(ctx, "player"));
200+
return 0;
201+
})
202+
)
203+
)
204+
)
159205
;
160206
}
161207

fabric-1.17/src/main/java/net/azisaba/interchatmod/fabric/Mod.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ public class Mod implements ModInitializer, ModMenuApi {
3636

3737
@Override
3838
public void onInitialize() {
39+
ClientCommandManager.DISPATCHER.register(Commands.builderGTell());
3940
ClientCommandManager.DISPATCHER.register(Commands.builderGS());
4041
ClientCommandManager.DISPATCHER.register(Commands.builderG());
4142
ClientCommandManager.DISPATCHER.register(Commands.builderReconnectInterChat());
@@ -56,6 +57,11 @@ public void run() {
5657
JsonArray membersArray = gson.fromJson(makeRequest("interchat/guilds/" + guild.id() + "/members"), JsonArray.class);
5758
guildMembers.put(guild.id(), GuildMember.getGuildMembersFromArray(membersArray));
5859
}
60+
for (Set<GuildMember> memberSet : guildMembers.values()) {
61+
for (GuildMember member : memberSet) {
62+
Commands.KNOWN_PLAYERS.add(member.name());
63+
}
64+
}
5965
} catch (Exception e) {
6066
LOGGER.warn("Failed to fetch guild list", e);
6167
}

fabric-1.18/src/main/java/net/azisaba/interchatmod/fabric/Commands.java

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,10 @@
1212
import net.minecraft.text.LiteralText;
1313
import net.minecraft.text.Text;
1414
import net.minecraft.util.Formatting;
15+
import org.jetbrains.annotations.NotNull;
1516

1617
import java.util.Collections;
18+
import java.util.HashSet;
1719
import java.util.Locale;
1820
import java.util.Set;
1921
import java.util.function.Consumer;
@@ -24,6 +26,22 @@
2426
import static net.fabricmc.fabric.api.client.command.v1.ClientCommandManager.literal;
2527

2628
public class Commands {
29+
public static final @NotNull Set<String> KNOWN_PLAYERS = new HashSet<>();
30+
31+
public static LiteralArgumentBuilder<FabricClientCommandSource> builderGTell() {
32+
return literal("cgtell")
33+
.then(argument("player", StringArgumentType.word())
34+
.suggests((ctx, builder) -> CommandSource.suggestMatching(KNOWN_PLAYERS.stream(), builder))
35+
.then(argument("message", StringArgumentType.greedyString())
36+
.executes(ctx -> {
37+
Mod.client.tell(StringArgumentType.getString(ctx, "player"), StringArgumentType.getString(ctx, "message"));
38+
KNOWN_PLAYERS.add(StringArgumentType.getString(ctx, "player"));
39+
return 0;
40+
})
41+
)
42+
);
43+
}
44+
2745
public static LiteralArgumentBuilder<FabricClientCommandSource> builderGS() {
2846
return literal("cgs")
2947
.then(argument("guild", StringArgumentType.word())
@@ -156,6 +174,34 @@ public static LiteralArgumentBuilder<FabricClientCommandSource> builderGuild() {
156174
)
157175
)
158176
.then(literal("info").executes(ctx -> executeInfo(ctx.getSource())))
177+
.then(literal("block")
178+
.then(argument("player", StringArgumentType.word())
179+
.executes(ctx -> {
180+
Mod.client.block(StringArgumentType.getString(ctx, "player"));
181+
return 0;
182+
})
183+
)
184+
)
185+
.then(literal("unblock")
186+
.then(argument("player", StringArgumentType.word())
187+
.executes(ctx -> {
188+
Mod.client.unblock(StringArgumentType.getString(ctx, "player"));
189+
return 0;
190+
})
191+
)
192+
)
193+
.then(literal("tell")
194+
.then(argument("player", StringArgumentType.word())
195+
.suggests((ctx, builder) -> CommandSource.suggestMatching(KNOWN_PLAYERS.stream(), builder))
196+
.then(argument("message", StringArgumentType.greedyString())
197+
.executes(ctx -> {
198+
Mod.client.tell(StringArgumentType.getString(ctx, "player"), StringArgumentType.getString(ctx, "message"));
199+
KNOWN_PLAYERS.add(StringArgumentType.getString(ctx, "player"));
200+
return 0;
201+
})
202+
)
203+
)
204+
)
159205
;
160206
}
161207

fabric-1.18/src/main/java/net/azisaba/interchatmod/fabric/Mod.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ public class Mod implements ModInitializer, ModMenuApi {
3636

3737
@Override
3838
public void onInitialize() {
39+
ClientCommandManager.DISPATCHER.register(Commands.builderGTell());
3940
ClientCommandManager.DISPATCHER.register(Commands.builderGS());
4041
ClientCommandManager.DISPATCHER.register(Commands.builderG());
4142
ClientCommandManager.DISPATCHER.register(Commands.builderReconnectInterChat());
@@ -56,6 +57,11 @@ public void run() {
5657
JsonArray membersArray = gson.fromJson(makeRequest("interchat/guilds/" + guild.id() + "/members"), JsonArray.class);
5758
guildMembers.put(guild.id(), GuildMember.getGuildMembersFromArray(membersArray));
5859
}
60+
for (Set<GuildMember> memberSet : guildMembers.values()) {
61+
for (GuildMember member : memberSet) {
62+
Commands.KNOWN_PLAYERS.add(member.name());
63+
}
64+
}
5965
} catch (Exception e) {
6066
LOGGER.warn("Failed to fetch guild list", e);
6167
}

0 commit comments

Comments
 (0)