Skip to content

Commit

Permalink
Added message command
Browse files Browse the repository at this point in the history
  • Loading branch information
Pedro270707 committed Sep 25, 2023
1 parent 723b880 commit 735e047
Show file tree
Hide file tree
Showing 18 changed files with 223 additions and 92 deletions.
13 changes: 13 additions & 0 deletions src/main/java/net/pedroricardo/commander/CommanderHelper.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,12 @@
import com.mojang.brigadier.suggestion.Suggestion;
import com.mojang.brigadier.suggestion.Suggestions;
import com.mojang.brigadier.suggestion.SuggestionsBuilder;
import net.minecraft.core.entity.Entity;
import net.minecraft.core.entity.EntityDispatcher;
import net.minecraft.core.entity.EntityLiving;
import net.minecraft.core.net.command.Command;
import net.minecraft.core.net.command.Commands;
import net.minecraft.core.util.helper.LogPrintStream;
import net.pedroricardo.commander.content.CommanderCommandManager;

import java.awt.event.KeyEvent;
Expand Down Expand Up @@ -114,4 +118,13 @@ public static boolean matchesKeyString(String checkedString, String input) {
}
return checkedString.substring(checkedString.indexOf('.') + 1).equals(input);
}

public static String getEntityName(Entity entity) {
if (entity instanceof EntityLiving) {
if (!LogPrintStream.removeColorCodes(((EntityLiving) entity).getDisplayName()).isEmpty()) {
return ((EntityLiving) entity).getDisplayName();
}
}
return EntityDispatcher.getEntityString(entity);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,13 @@ public void sendMessage(String message) {
this.mc.ingameGUI.addChatMessage(message);
}

@Override
public void sendMessageToPlayer(EntityPlayer player, String message) {
if (player == this.mc.thePlayer) {
this.sendMessage(message);
}
}

@Override
public World getWorld() {
return this.mc.theWorld;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ public class CommanderCommandManager {
SetBlockCommand.register(DISPATCHER);
SummonCommand.register(DISPATCHER);
TeleportCommand.register(DISPATCHER);
MessageCommand.register(DISPATCHER);

registerLegacyCommands();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,8 @@ default Collection<String> getEntitySuggestions() {

void sendMessage(String message);

void sendMessageToPlayer(EntityPlayer player, String message);

World getWorld();

World getWorld(int dimension);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,11 @@ public void sendMessage(String message) {
LOGGER.info(LogPrintStream.removeColorCodes(message));
}

@Override
public void sendMessageToPlayer(EntityPlayer player, String message) {
this.server.configManager.sendPacketToPlayer(player.username, new Packet3Chat(message, AES.keyChain.get(player.username)));
}

@Override
public World getWorld() {
return this.server.getWorldManager(0);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,11 @@ public void sendMessage(String message) {
this.player.playerNetServerHandler.sendPacket(new Packet3Chat(message, AES.keyChain.get(this.player.username)));
}

@Override
public void sendMessageToPlayer(EntityPlayer player, String message) {
this.server.configManager.sendPacketToPlayer(player.username, new Packet3Chat(message, AES.keyChain.get(player.username)));
}

@Override
public World getWorld() {
return this.getSender().world;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,25 +9,25 @@
import net.minecraft.core.util.phys.Vec3d;
import net.pedroricardo.commander.content.CommanderCommandSource;
import net.pedroricardo.commander.content.exceptions.CommanderExceptions;
import net.pedroricardo.commander.content.helpers.BlockCoordinate;
import net.pedroricardo.commander.content.helpers.BlockCoordinates;
import net.pedroricardo.commander.content.helpers.IntegerCoordinate;
import net.pedroricardo.commander.content.helpers.IntegerCoordinates;

import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import java.util.concurrent.CompletableFuture;

public class BlockCoordinatesArgumentType implements ArgumentType<BlockCoordinates> {
public class BlockCoordinatesArgumentType implements ArgumentType<IntegerCoordinates> {
private static final List<String> EXAMPLES = Arrays.asList("~ ~ ~", "0 0 0", "~ ~60 ~", "~-20 ~10 -25");

public static BlockCoordinatesArgumentType blockCoordinates() {
return new BlockCoordinatesArgumentType();
}

@Override
public BlockCoordinates parse(StringReader reader) throws CommandSyntaxException {
public IntegerCoordinates parse(StringReader reader) throws CommandSyntaxException {
int i = reader.getCursor();
BlockCoordinate x = BlockCoordinate.parse(reader);
IntegerCoordinate x = IntegerCoordinate.parse(reader);
if (!reader.canRead() || reader.peek() != ' ') {
if (reader.peek() == 'f' || reader.peek() == 'd') {
reader.skip();
Expand All @@ -41,7 +41,7 @@ public BlockCoordinates parse(StringReader reader) throws CommandSyntaxException
}
}
reader.skip();
BlockCoordinate y = BlockCoordinate.parse(reader);
IntegerCoordinate y = IntegerCoordinate.parse(reader);
if (!reader.canRead() || reader.peek() != ' ') {
if (reader.peek() == 'f' || reader.peek() == 'd') {
reader.skip();
Expand All @@ -55,8 +55,8 @@ public BlockCoordinates parse(StringReader reader) throws CommandSyntaxException
}
}
reader.skip();
BlockCoordinate z = BlockCoordinate.parse(reader);
return new BlockCoordinates(x, y, z);
IntegerCoordinate z = IntegerCoordinate.parse(reader);
return new IntegerCoordinates(x, y, z);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,60 +28,60 @@ public class AchievementCommand {
public static void register(CommandDispatcher<CommanderCommandSource> dispatcher) {
dispatcher.register((LiteralArgumentBuilder)(((LiteralArgumentBuilder)LiteralArgumentBuilder.literal("achievement"))
.requires(source -> ((CommanderCommandSource)source).hasAdmin())
.then(((LiteralArgumentBuilder)LiteralArgumentBuilder.<CommanderCommandSource>literal("grant")
).then((RequiredArgumentBuilder)RequiredArgumentBuilder.argument("entities", EntityArgumentType.players())
.then(RequiredArgumentBuilder.argument("achievement", AchievementArgumentType.achievement())
.executes(c -> {
List<? extends Entity> entities = c.getArgument("entities", EntitySelector.class).get((CommanderCommandSource) c.getSource());
Achievement achievement = c.getArgument("achievement", Achievement.class);
.then(((LiteralArgumentBuilder)LiteralArgumentBuilder.<CommanderCommandSource>literal("grant"))
.then((RequiredArgumentBuilder)RequiredArgumentBuilder.argument("entities", EntityArgumentType.players())
.then(RequiredArgumentBuilder.argument("achievement", AchievementArgumentType.achievement())
.executes(c -> {
List<? extends Entity> entities = c.getArgument("entities", EntitySelector.class).get((CommanderCommandSource) c.getSource());
Achievement achievement = c.getArgument("achievement", Achievement.class);

if (entities.size() == 1 && ((EntityPlayer)entities.get(0)).getStat(achievement) != 0) {
throw PLAYER_ALREADY_HAS_ACHIEVEMENT.create();
}
if (entities.size() == 0) {
throw CommanderExceptions.emptySelector().create();
}
if (entities.size() == 1 && ((EntityPlayer)entities.get(0)).getStat(achievement) != 0) {
throw PLAYER_ALREADY_HAS_ACHIEVEMENT.create();
}
if (entities.size() == 0) {
throw CommanderExceptions.emptySelector().create();
}

List<Achievement> achievements = new ArrayList<>();
achievements.add(achievement);
List<Achievement> achievements = new ArrayList<>();
achievements.add(achievement);

while (achievements.get(achievements.size() - 1).parent != null) {
achievements.add(achievements.get(achievements.size() - 1).parent);
}
for (int i = 0; i < achievements.size(); i++) {
for (Entity entity : entities) {
((EntityPlayer)entity).triggerAchievement(achievements.get(achievements.size() - 1 - i));
}
}
while (achievements.get(achievements.size() - 1).parent != null) {
achievements.add(achievements.get(achievements.size() - 1).parent);
}
for (int i = 0; i < achievements.size(); i++) {
for (Entity entity : entities) {
((EntityPlayer)entity).triggerAchievement(achievements.get(achievements.size() - 1 - i));
}
}

sendContextualMessage((CommanderCommandSource) c.getSource(), entities, achievement);
sendContextualMessage((CommanderCommandSource) c.getSource(), entities, achievement);

return CommanderCommandManager.SINGLE_SUCCESS;
}))
.then((LiteralArgumentBuilder)LiteralArgumentBuilder.literal("*")
.executes(c -> {
List<? extends Entity> entities = c.getArgument("entities", EntitySelector.class).get((CommanderCommandSource) c.getSource());
return CommanderCommandManager.SINGLE_SUCCESS;
}))
.then((LiteralArgumentBuilder)LiteralArgumentBuilder.literal("*")
.executes(c -> {
List<? extends Entity> entities = c.getArgument("entities", EntitySelector.class).get((CommanderCommandSource) c.getSource());

if (entities.size() == 0) {
throw CommanderExceptions.emptySelector().create();
}
if (entities.size() == 0) {
throw CommanderExceptions.emptySelector().create();
}

for (Achievement achievement : AchievementList.achievementList) {
List<Achievement> achievements = new ArrayList<>();
achievements.add(achievement);
while (achievements.get(achievements.size() - 1).parent != null) {
achievements.add(achievements.get(achievements.size() - 1).parent);
}
for (int i = 0; i < achievements.size(); i++) {
for (Entity entity : entities) {
((EntityPlayer)entity).triggerAchievement(achievements.get(achievements.size() - 1 - i));
for (Achievement achievement : AchievementList.achievementList) {
List<Achievement> achievements = new ArrayList<>();
achievements.add(achievement);
while (achievements.get(achievements.size() - 1).parent != null) {
achievements.add(achievements.get(achievements.size() - 1).parent);
}
for (int i = 0; i < achievements.size(); i++) {
for (Entity entity : entities) {
((EntityPlayer)entity).triggerAchievement(achievements.get(achievements.size() - 1 - i));
}
}
}
}
}

sendWildcardContextualMessage(((CommanderCommandSource)c.getSource()), entities);
sendWildcardContextualMessage(((CommanderCommandSource)c.getSource()), entities);

return CommanderCommandManager.SINGLE_SUCCESS;
return CommanderCommandManager.SINGLE_SUCCESS;
}))))));
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,27 +1,19 @@
package net.pedroricardo.commander.content.commands;

import com.mojang.brigadier.CommandDispatcher;
import com.mojang.brigadier.arguments.IntegerArgumentType;
import com.mojang.brigadier.builder.LiteralArgumentBuilder;
import com.mojang.brigadier.builder.RequiredArgumentBuilder;
import com.mojang.brigadier.context.CommandContext;
import net.minecraft.core.block.Block;
import net.minecraft.core.entity.Entity;
import net.minecraft.core.entity.EntityLiving;
import net.minecraft.core.entity.player.EntityPlayer;
import net.minecraft.core.util.phys.Vec3d;
import net.pedroricardo.commander.Commander;
import net.minecraft.core.lang.I18n;
import net.pedroricardo.commander.CommanderHelper;
import net.pedroricardo.commander.content.CommanderCommandManager;
import net.pedroricardo.commander.content.CommanderCommandSource;
import net.pedroricardo.commander.content.arguments.BlockArgumentType;
import net.pedroricardo.commander.content.arguments.BlockCoordinatesArgumentType;
import net.pedroricardo.commander.content.arguments.EntityArgumentType;
import net.pedroricardo.commander.content.exceptions.CommanderExceptions;
import net.pedroricardo.commander.content.helpers.BlockCoordinates;
import net.pedroricardo.commander.content.helpers.EntitySelector;

import java.util.Collection;
import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;

@SuppressWarnings("unchecked")
Expand All @@ -36,12 +28,21 @@ public static void register(CommandDispatcher<CommanderCommandSource> dispatcher

sender.killPlayer();

((CommanderCommandSource)c.getSource()).sendMessage(I18n.getInstance().translateKeyAndFormat("commands.commander.kill.single_entity", sender.getDisplayName()));

return CommanderCommandManager.SINGLE_SUCCESS;
})
.then(RequiredArgumentBuilder.argument("entities", EntityArgumentType.entities())
.executes(c -> {
EntitySelector entitySelector = c.getArgument("entities", EntitySelector.class);
CopyOnWriteArrayList<? extends Entity> entities = new CopyOnWriteArrayList<>(entitySelector.get((CommanderCommandSource)c.getSource()));

int entityCount = entities.size();

if (entityCount == 0) ((CommanderCommandSource)c.getSource()).sendMessage("§e" + I18n.getInstance().translateKey("commands.commander.kill.failure"));
else if (entityCount == 1) ((CommanderCommandSource)c.getSource()).sendMessage(I18n.getInstance().translateKeyAndFormat("commands.commander.kill.single_entity", CommanderHelper.getEntityName(entities.get(0))));
else ((CommanderCommandSource)c.getSource()).sendMessage(I18n.getInstance().translateKeyAndFormat("commands.commander.kill.multiple_entities", entityCount));

for (Entity entity : entities) {
if (entity instanceof EntityPlayer) {
((EntityPlayer) entity).killPlayer();
Expand All @@ -51,6 +52,7 @@ public static void register(CommandDispatcher<CommanderCommandSource> dispatcher
entity.remove();
}
}

return CommanderCommandManager.SINGLE_SUCCESS;
})));
}
Expand Down
Loading

0 comments on commit 735e047

Please sign in to comment.