First commit

This commit is contained in:
lukasabbe
2024-07-19 17:42:12 +02:00
commit 31314430f3
13 changed files with 790 additions and 0 deletions
@@ -0,0 +1,52 @@
package me.lukasabbe.voicechatgroupmsg;
import com.mojang.brigadier.CommandDispatcher;
import com.mojang.brigadier.context.CommandContext;
import com.mojang.brigadier.exceptions.CommandSyntaxException;
import de.maxhenkel.voicechat.api.Group;
import net.minecraft.command.CommandRegistryAccess;
import net.minecraft.command.argument.MessageArgumentType;
import net.minecraft.network.message.MessageType;
import net.minecraft.network.message.SentMessage;
import net.minecraft.server.command.CommandManager;
import net.minecraft.server.command.ServerCommandSource;
import net.minecraft.server.network.ServerPlayerEntity;
import net.minecraft.text.Text;
import java.util.List;
public class Commands {
public static void CreateGroupMsgCommand(CommandDispatcher<ServerCommandSource> dispatcher, CommandRegistryAccess commandRegistryAccess, CommandManager.RegistrationEnvironment registrationEnvironment) {
dispatcher.register(
CommandManager
.literal("msgvc")
.then(
CommandManager
.argument("message", MessageArgumentType.message())
.executes(Commands::runCommand)));
}
private static int runCommand(CommandContext<ServerCommandSource> ctx) throws CommandSyntaxException {
final ServerCommandSource source = ctx.getSource();
if(!source.isExecutedByPlayer()) {
source.sendError(Text.literal("You can't send msgvc as the console"));
return 0;
}
final ServerPlayerEntity player = source.getPlayer();
if(!VoiceChatGroupMsg.isPlayerInGroup(player)){
source.sendError(Text.literal("You need to be in a voice chat group to use this command"));
return 0;
}
Group group = VoiceChatGroupMsg.getPlayerGroup(player);
List<ServerPlayerEntity> players = VoiceChatGroupMsg.GroupPlayers(group.getId(), source.getWorld());
MessageArgumentType.getSignedMessage(ctx, "message", signedMessage -> {
player.sendChatMessage(SentMessage.of(signedMessage),true, MessageType.params(MessageType.MSG_COMMAND_OUTGOING,source).withTargetName(Text.of(group.getName())));
players.forEach(player1 -> {
if(!player1.getUuid().equals(source.getPlayer().getUuid())){
player1.sendChatMessage(SentMessage.of(signedMessage),true, MessageType.params(MessageType.MSG_COMMAND_INCOMING,source));
}
});
});
return 1;
}
}
@@ -0,0 +1,60 @@
package me.lukasabbe.voicechatgroupmsg;
import de.maxhenkel.voicechat.api.Group;
import de.maxhenkel.voicechat.api.VoicechatPlugin;
import de.maxhenkel.voicechat.api.VoicechatServerApi;
import de.maxhenkel.voicechat.api.events.EventRegistration;
import de.maxhenkel.voicechat.api.events.VoicechatServerStartedEvent;
import net.fabricmc.api.DedicatedServerModInitializer;
import net.fabricmc.fabric.api.command.v2.CommandRegistrationCallback;
import net.minecraft.server.network.ServerPlayerEntity;
import net.minecraft.server.world.ServerWorld;
import java.util.List;
import java.util.UUID;
public class VoiceChatGroupMsg implements DedicatedServerModInitializer, VoicechatPlugin {
public final static String MOD_ID = "voicechatgroupmsg";
private static VoicechatServerApi API = null;
@Override
public void onInitializeServer() {
CommandRegistrationCallback.EVENT.register(Commands::CreateGroupMsgCommand);
}
@Override
public String getPluginId() {
return MOD_ID;
}
@Override
public void registerEvents(EventRegistration registration) {
registration.registerEvent(VoicechatServerStartedEvent.class, this::onServerStarted);
}
public void onServerStarted(VoicechatServerStartedEvent event) {
API = event.getVoicechat();
}
public static boolean isPlayerInGroup(ServerPlayerEntity player){
try{
return API.getConnectionOf(player.getUuid()).isInGroup();
}catch (NullPointerException ignore){
return false;
}
}
public static boolean isPlayerInGroup(ServerPlayerEntity player, UUID groupID){
try{
if(!API.getConnectionOf(player.getUuid()).isInGroup())return false;
return API.getConnectionOf(player.getUuid()).getGroup().getId().equals(groupID);
}catch (NullPointerException ignore){
return false;
}
}
public static Group getPlayerGroup(ServerPlayerEntity player){
return API.getConnectionOf(player.getUuid()).getGroup();
}
public static List<ServerPlayerEntity> GroupPlayers(UUID groupUUID, ServerWorld serverWorld){
return serverWorld.getPlayers(player -> isPlayerInGroup(player, groupUUID));
}
}
+28
View File
@@ -0,0 +1,28 @@
{
"schemaVersion": 1,
"id": "voicechatgroupmsg",
"version": "${version}",
"name": "VoiceChatGroupMsg",
"description": "",
"authors": [],
"contact": {
"repo": "https://github.com/lukas/VoiceChatGroupMsg"
},
"license": "MIT",
"icon": "assets/voicechatgroupmsg/icon.png",
"environment": "server",
"entrypoints": {
"server": [
"me.lukasabbe.voicechatgroupmsg.VoiceChatGroupMsg"
],
"voicechat": [
"me.lukasabbe.voicechatgroupmsg.VoiceChatGroupMsg"
]
},
"depends": {
"fabricloader": ">=${loader_version}",
"fabric": "*",
"minecraft": "${minecraft_version}",
"voicechat": ">=${minecraft_version}-${voicechat_api_version}"
}
}