mirror of
https://github.com/lukasabbe/VoiceChatGroupMsg.git
synced 2026-04-30 10:50:53 +00:00
Compare commits
15 Commits
1.21-1.0.0
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 0445b23bb2 | |||
| 075bfd21b2 | |||
| dd8cf78b93 | |||
| 9dcededc87 | |||
| 82b94c78ee | |||
| 74a0712878 | |||
| 7075963597 | |||
| 1c487409a1 | |||
| da64223e29 | |||
| e3141bef06 | |||
| 2b650b5e89 | |||
| 7633b6918d | |||
| 434e07e62e | |||
| c3116f0f6f | |||
| 0e084d7e7c |
@@ -1,8 +1,3 @@
|
||||
# Automatically build the project and run any configured tests for every push
|
||||
# and submitted pull request. This can help catch issues that only occur on
|
||||
# certain platforms or Java versions, and provides a first line of defence
|
||||
# against bad commits.
|
||||
|
||||
name: build
|
||||
on: [pull_request, push]
|
||||
|
||||
@@ -34,4 +29,16 @@ jobs:
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: Artifacts
|
||||
path: build/libs/
|
||||
path: build/libs/
|
||||
- name: Read values from gradle properties file
|
||||
id: read_property
|
||||
uses: christian-draeger/read-properties@1.1.1
|
||||
with:
|
||||
path: "./gradle.properties"
|
||||
properties: "mod_version minecraft_version archives_base_name"
|
||||
- name: Upload artifacts to discord
|
||||
uses: tsickert/discord-webhook@v6.0.0
|
||||
with:
|
||||
webhook-url: ${{ secrets.WEBHOOK_URL }}
|
||||
content: "Git hub action build. **THIS MAY NOT BE A FUNCTIONAL BUILD**\nMod: ${{steps.read_property.outputs.archives_base_name}}\nMCVersion: ${{steps.read_property.outputs.minecraft_version}}\nMod version: ${{steps.read_property.outputs.mod_version}}"
|
||||
filename: build/libs/${{ steps.read_property.outputs.archives_base_name }}-${{steps.read_property.outputs.mod_version}}.jar
|
||||
+7
-33
@@ -1,5 +1,5 @@
|
||||
plugins {
|
||||
id 'fabric-loom' version '1.6-SNAPSHOT'
|
||||
id 'net.fabricmc.fabric-loom' version '1.15-SNAPSHOT'
|
||||
id 'maven-publish'
|
||||
}
|
||||
|
||||
@@ -24,13 +24,12 @@ repositories {
|
||||
dependencies {
|
||||
// To change the versions see the gradle.properties file
|
||||
minecraft "com.mojang:minecraft:${project.minecraft_version}"
|
||||
mappings "net.fabricmc:yarn:${project.yarn_mappings}:v2"
|
||||
modImplementation "net.fabricmc:fabric-loader:${project.loader_version}"
|
||||
modRuntimeOnly "maven.modrinth:simple-voice-chat:fabric-${voicechat_version}"
|
||||
implementation "net.fabricmc:fabric-loader:${project.loader_version}"
|
||||
implementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}"
|
||||
|
||||
// Fabric API. This is technically optional, but you probably want it anyway.
|
||||
modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}"
|
||||
// Simple Voice chat
|
||||
implementation "de.maxhenkel.voicechat:voicechat-api:${voicechat_api_version}"
|
||||
runtimeOnly "maven.modrinth:simple-voice-chat:fabric-${voicechat_version}"
|
||||
}
|
||||
|
||||
processResources {
|
||||
@@ -48,12 +47,8 @@ processResources {
|
||||
}
|
||||
}
|
||||
|
||||
def targetJavaVersion = 21
|
||||
def targetJavaVersion = 25
|
||||
tasks.withType(JavaCompile).configureEach {
|
||||
// ensure that the encoding is set to UTF-8, no matter what the system default is
|
||||
// this fixes some edge cases with special characters not displaying correctly
|
||||
// see http://yodaconditions.net/blog/fix-for-java-file-encoding-problems-with-gradle.html
|
||||
// If Javadoc is generated, this must be specified in that task too.
|
||||
it.options.encoding = "UTF-8"
|
||||
if (targetJavaVersion >= 10 || JavaVersion.current().isJava10Compatible()) {
|
||||
it.options.release.set(targetJavaVersion)
|
||||
@@ -65,32 +60,11 @@ java {
|
||||
if (JavaVersion.current() < javaVersion) {
|
||||
toolchain.languageVersion = JavaLanguageVersion.of(targetJavaVersion)
|
||||
}
|
||||
// Loom will automatically attach sourcesJar to a RemapSourcesJar task and to the "build" task
|
||||
// if it is present.
|
||||
// If you remove this line, sources will not be generated.
|
||||
withSourcesJar()
|
||||
}
|
||||
|
||||
jar {
|
||||
from("LICENSE") {
|
||||
rename { "${it}_${project.archivesBaseName}"}
|
||||
}
|
||||
}
|
||||
|
||||
// configure the maven publication
|
||||
publishing {
|
||||
publications {
|
||||
create("mavenJava", MavenPublication) {
|
||||
artifactId = project.archives_base_name
|
||||
from components.java
|
||||
}
|
||||
}
|
||||
|
||||
// See https://docs.gradle.org/current/userguide/publishing_maven.html for information on how to set up publishing.
|
||||
repositories {
|
||||
// Add repositories to publish to here.
|
||||
// Notice: This block does NOT have the same function as the block in the top level.
|
||||
// The repositories here will be used for publishing your artifact, not for
|
||||
// retrieving dependencies.
|
||||
rename { "${it}_${project.archives_base_name}"}
|
||||
}
|
||||
}
|
||||
|
||||
+11
-11
@@ -2,20 +2,20 @@
|
||||
org.gradle.jvmargs=-Xmx1G
|
||||
|
||||
# Fabric Properties
|
||||
# check these on https://modmuss50.me/fabric.html
|
||||
minecraft_version=1.21
|
||||
yarn_mappings=1.21+build.9
|
||||
loader_version=0.15.11
|
||||
# check these on https://modmuss50.me/fabric.html
|
||||
minecraft_version=26.1
|
||||
loader_version=0.18.5
|
||||
|
||||
# Mod Properties
|
||||
mod_version = 1.0
|
||||
maven_group = me.lukasabbe
|
||||
archives_base_name = VoiceChatGroupMsg
|
||||
mod_version = 1.1+26.1
|
||||
maven_group = me.lukasabbe
|
||||
archives_base_name = VoiceChatGroupMsg
|
||||
|
||||
#mod dev
|
||||
voicechat_version=1.21-2.5.17
|
||||
voicechat_version=2.6.12+26.1
|
||||
|
||||
# Dependencies
|
||||
# check this on https://modmuss50.me/fabric.html
|
||||
fabric_version=0.100.7+1.21
|
||||
voicechat_api_version=2.5.0
|
||||
# check this on https://modmuss50.me/fabric.html
|
||||
fabric_version=0.144.3+26.1
|
||||
#https://maven.maxhenkel.de/#/releases/de/maxhenkel/voicechat/voicechat-api
|
||||
voicechat_api_version=2.6.0
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-9.2.1-bin.zip
|
||||
networkTimeout=10000
|
||||
validateDistributionUrl=true
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
|
||||
@@ -1,52 +0,0 @@
|
||||
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.TEAM_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.TEAM_MSG_COMMAND_INCOMING,source).withTargetName(Text.of(group.getName())));
|
||||
}
|
||||
});
|
||||
});
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
@@ -1,60 +1,19 @@
|
||||
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 me.lukasabbe.voicechatgroupmsg.command.MsgVcCommand;
|
||||
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 {
|
||||
|
||||
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);
|
||||
registerCommands();
|
||||
}
|
||||
|
||||
@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));
|
||||
private static void registerCommands() {
|
||||
CommandRegistrationCallback.EVENT.register(MsgVcCommand::CreateGroupMsgCommand);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,64 @@
|
||||
package me.lukasabbe.voicechatgroupmsg.command;
|
||||
|
||||
import com.mojang.brigadier.CommandDispatcher;
|
||||
import com.mojang.brigadier.context.CommandContext;
|
||||
import com.mojang.brigadier.exceptions.CommandSyntaxException;
|
||||
import de.maxhenkel.voicechat.api.Group;
|
||||
import me.lukasabbe.voicechatgroupmsg.util.VoiceChatUtil;
|
||||
import net.minecraft.commands.CommandBuildContext;
|
||||
import net.minecraft.commands.CommandSourceStack;
|
||||
import net.minecraft.commands.Commands;
|
||||
import net.minecraft.commands.arguments.MessageArgument;
|
||||
import net.minecraft.network.chat.ChatType;
|
||||
import net.minecraft.network.chat.Component;
|
||||
import net.minecraft.network.chat.OutgoingChatMessage;
|
||||
import net.minecraft.network.chat.PlayerChatMessage;
|
||||
import net.minecraft.resources.ResourceKey;
|
||||
import net.minecraft.server.level.ServerPlayer;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class MsgVcCommand {
|
||||
public static void CreateGroupMsgCommand(CommandDispatcher<CommandSourceStack> dispatcher, CommandBuildContext commandRegistryAccess, Commands.CommandSelection registrationEnvironment) {
|
||||
dispatcher.register(
|
||||
Commands
|
||||
.literal("msgvc")
|
||||
.requires(CommandSourceStack::isPlayer)
|
||||
.then(
|
||||
Commands
|
||||
.argument("message", MessageArgument.message())
|
||||
.executes(MsgVcCommand::runCommand)));
|
||||
}
|
||||
|
||||
private static int runCommand(CommandContext<CommandSourceStack> ctx) throws CommandSyntaxException {
|
||||
final CommandSourceStack source = ctx.getSource();
|
||||
|
||||
final ServerPlayer player = source.getPlayer();
|
||||
if(!VoiceChatUtil.isPlayerInGroup(player)){
|
||||
source.sendFailure(Component.literal("You need to be in a voice chat group to use this command"));
|
||||
return 0;
|
||||
}
|
||||
|
||||
Group group = VoiceChatUtil.getPlayerGroup(player);
|
||||
|
||||
List<ServerPlayer> players = VoiceChatUtil.GroupPlayers(group.getId(), source.getLevel());
|
||||
|
||||
MessageArgument.resolveChatMessage(ctx, "message", signedMessage -> {
|
||||
sendMessage(player, signedMessage, ChatType.TEAM_MSG_COMMAND_OUTGOING, source, group);
|
||||
players.forEach(voiceChatMember -> {
|
||||
if(voiceChatMember.getUUID().equals(player.getUUID())) return;
|
||||
sendMessage(voiceChatMember, signedMessage, ChatType.TEAM_MSG_COMMAND_INCOMING, source, group);
|
||||
});
|
||||
});
|
||||
return 1;
|
||||
}
|
||||
|
||||
private static void sendMessage(ServerPlayer player, PlayerChatMessage signedMessage, ResourceKey<ChatType> teamMsgCommandOutgoing, CommandSourceStack source, Group group) {
|
||||
player.sendChatMessage(
|
||||
OutgoingChatMessage.create(signedMessage),
|
||||
true,
|
||||
ChatType.bind(teamMsgCommandOutgoing, source)
|
||||
.withTargetName(Component.nullToEmpty(group.getName()))
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,56 @@
|
||||
package me.lukasabbe.voicechatgroupmsg.util;
|
||||
|
||||
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.minecraft.server.level.ServerLevel;
|
||||
import net.minecraft.server.level.ServerPlayer;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
import static me.lukasabbe.voicechatgroupmsg.VoiceChatGroupMsg.MOD_ID;
|
||||
|
||||
public class VoiceChatUtil implements VoicechatPlugin {
|
||||
|
||||
private static VoicechatServerApi API = null;
|
||||
|
||||
@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(ServerPlayer player){
|
||||
try{
|
||||
return API.getConnectionOf(player.getUUID()).isInGroup();
|
||||
}catch (NullPointerException ignore){
|
||||
return false;
|
||||
}
|
||||
}
|
||||
public static boolean isPlayerInGroup(ServerPlayer 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(ServerPlayer player){
|
||||
return API.getConnectionOf(player.getUUID()).getGroup();
|
||||
}
|
||||
public static List<ServerPlayer> GroupPlayers(UUID groupUUID, ServerLevel serverWorld){
|
||||
return serverWorld.getPlayers(player -> isPlayerInGroup(player, groupUUID));
|
||||
}
|
||||
}
|
||||
@@ -2,11 +2,11 @@
|
||||
"schemaVersion": 1,
|
||||
"id": "voicechatgroupmsg",
|
||||
"version": "${version}",
|
||||
"name": "VoiceChatGroupMsg",
|
||||
"description": "",
|
||||
"authors": [],
|
||||
"name": "Voice Chat Group Msg",
|
||||
"description": "Adds a way to message a whole group if you don't have a microphone. When you are in a group you can now use /msgvc <message>",
|
||||
"authors": ["Lukasabbe"],
|
||||
"contact": {
|
||||
"repo": "https://github.com/lukas/VoiceChatGroupMsg"
|
||||
"repo": "https://github.com/lukasabbe/VoiceChatGroupMsg"
|
||||
},
|
||||
"license": "MIT",
|
||||
"icon": "assets/voicechatgroupmsg/icon.png",
|
||||
@@ -16,13 +16,11 @@
|
||||
"me.lukasabbe.voicechatgroupmsg.VoiceChatGroupMsg"
|
||||
],
|
||||
"voicechat": [
|
||||
"me.lukasabbe.voicechatgroupmsg.VoiceChatGroupMsg"
|
||||
"me.lukasabbe.voicechatgroupmsg.util.VoiceChatUtil"
|
||||
]
|
||||
},
|
||||
"depends": {
|
||||
"fabricloader": ">=${loader_version}",
|
||||
"fabric": "*",
|
||||
"minecraft": "${minecraft_version}",
|
||||
"voicechat": ">=${minecraft_version}-${voicechat_api_version}"
|
||||
"minecraft": ">=${minecraft_version}"
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user