Update broadcast message

This commit is contained in:
Surya 2021-01-17 11:01:39 +05:30
parent 65bc83ed60
commit a8a29aaefe
2 changed files with 44 additions and 37 deletions

View File

@ -4,4 +4,4 @@
`/sc "My House"` `/sc "My House"`
`/sc Portal` `/sc Portal`

View File

@ -4,55 +4,62 @@ import static net.minecraft.server.command.CommandManager.literal;
import com.mojang.brigadier.arguments.StringArgumentType; import com.mojang.brigadier.arguments.StringArgumentType;
import com.mojang.brigadier.context.CommandContext; import com.mojang.brigadier.context.CommandContext;
import com.mojang.brigadier.exceptions.CommandSyntaxException;
import net.fabricmc.api.ModInitializer; import net.fabricmc.api.ModInitializer;
import net.fabricmc.fabric.api.command.v1.CommandRegistrationCallback; import net.fabricmc.fabric.api.command.v1.CommandRegistrationCallback;
import net.minecraft.network.MessageType;
import net.minecraft.server.PlayerManager;
import net.minecraft.server.command.CommandManager; import net.minecraft.server.command.CommandManager;
import net.minecraft.server.command.ServerCommandSource; import net.minecraft.server.command.ServerCommandSource;
import net.minecraft.text.LiteralText; import net.minecraft.text.LiteralText;
import net.minecraft.text.Text;
import net.minecraft.util.math.Vec3d; import net.minecraft.util.math.Vec3d;
import net.minecraft.world.dimension.DimensionType; import net.minecraft.world.dimension.DimensionType;
public class SaveCoordinates implements ModInitializer { public class SaveCoordinates implements ModInitializer {
@Override @Override
public void onInitialize() { public void onInitialize() {
CommandRegistrationCallback.EVENT.register((dispatcher, dedicated) -> { CommandRegistrationCallback.EVENT.register((dispatcher, dedicated) -> {
dispatcher.register( dispatcher.register(literal("sc").then(CommandManager.argument("desc", StringArgumentType.string())
literal("sc") .executes(SaveCoordinates::printCoordinates)));
.then(CommandManager.argument("desc", StringArgumentType.string())
.executes(context -> printCoordinates(context, getDescription(context)))));
}); });
} }
private static String getDimensionTypeString(ServerCommandSource source) { private static String getDimensionTypeString(ServerCommandSource source) {
// Does not work with modded dimensions
DimensionType dimensionType = source.getEntity().world.getDimension();
DimensionType dimensionType = source.getEntity().world.getDimension();
if(dimensionType.isNatural()){
return "Overworld"; if (dimensionType.isNatural()) {
} return "Overworld";
}
if(dimensionType.isUltrawarm()){
return "Nether"; if (dimensionType.isUltrawarm()) {
} return "Nether";
}
return "End";
} return "End";
}
private static String getDescription(CommandContext<ServerCommandSource> context) {
return StringArgumentType.getString(context, "desc"); private static String getDescription(CommandContext<ServerCommandSource> context) {
} return StringArgumentType.getString(context, "desc");
}
private static int printCoordinates(CommandContext<ServerCommandSource> context, String description) {
ServerCommandSource source = context.getSource(); private static int printCoordinates(CommandContext<ServerCommandSource> context) throws CommandSyntaxException {
String dimensionTypeString = getDimensionTypeString(source); ServerCommandSource source = context.getSource();
Vec3d pos = source.getEntity().getPos(); String dimensionTypeString = getDimensionTypeString(source);
long x = Math.round(pos.x); String description = getDescription(context);
long y = Math.round(pos.y); Vec3d pos = source.getEntity().getPos();
long z = Math.round(pos.z); long x = Math.round(pos.x);
long y = Math.round(pos.y);
source.sendFeedback(new LiteralText(description + " at " + dimensionTypeString + " [ " + x + " , " + y + " , " + z + " ]"), false); long z = Math.round(pos.z);
Text text = new LiteralText( "<Coordinates> " +
description + " at " + dimensionTypeString + " [ " + x + " , " + y + " , " + z + " ]");
PlayerManager playerManager = source.getMinecraftServer().getPlayerManager();
playerManager.broadcastChatMessage(text, MessageType.CHAT,source.getPlayer().getUuid());
return 1; return 1;
} }
} }