update demos

This commit is contained in:
Kieran Wallbanks 2021-03-04 13:41:41 +00:00
parent f2897eedca
commit 35f9161d19
14 changed files with 83 additions and 79 deletions

View File

@ -1,14 +1,12 @@
package demo.commands;
import net.minestom.server.chat.ChatColor;
import net.minestom.server.chat.ColoredText;
import net.kyori.adventure.inventory.Book;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.format.NamedTextColor;
import net.minestom.server.command.CommandSender;
import net.minestom.server.command.builder.Command;
import net.minestom.server.command.builder.CommandContext;
import net.minestom.server.entity.Player;
import net.minestom.server.item.metadata.WrittenBookMeta;
import java.util.List;
public class BookCommand extends Command {
public BookCommand() {
@ -21,7 +19,7 @@ public class BookCommand extends Command {
private boolean playerCondition(CommandSender sender, String commandString) {
if (!sender.isPlayer()) {
sender.sendMessage("The command is only available for players");
sender.sendMessage(Component.text("The command is only available for players"));
return false;
}
return true;
@ -30,16 +28,11 @@ public class BookCommand extends Command {
private void execute(CommandSender sender, CommandContext context) {
Player player = sender.asPlayer();
final WrittenBookMeta bookMeta = new WrittenBookMeta();
bookMeta.setAuthor(player.getUsername());
bookMeta.setGeneration(WrittenBookMeta.WrittenBookGeneration.ORIGINAL);
bookMeta.setTitle(player.getUsername() + "'s Book");
bookMeta.setPages(List.of(
ColoredText.of(ChatColor.RED, "Page one"),
ColoredText.of(ChatColor.BRIGHT_GREEN, "Page two"),
ColoredText.of(ChatColor.BLUE, "Page three")
));
player.openBook(bookMeta);
player.openBook(Book.builder()
.author(Component.text(player.getUsername()))
.title(Component.text(player.getUsername() + "'s Book"))
.pages(Component.text("Page one", NamedTextColor.RED),
Component.text("Page two", NamedTextColor.GREEN),
Component.text("Page three", NamedTextColor.BLUE)));
}
}

View File

@ -1,5 +1,6 @@
package demo.commands;
import net.kyori.adventure.text.Component;
import net.minestom.server.MinecraftServer;
import net.minestom.server.command.CommandProcessor;
import net.minestom.server.command.CommandSender;
@ -38,11 +39,11 @@ public class DimensionCommand implements CommandProcessor {
Optional<Instance> targetInstance = MinecraftServer.getInstanceManager().getInstances().stream().filter(in -> in.getDimensionType() == targetDimensionType).findFirst();
if (targetInstance.isPresent()) {
player.sendMessage("You were in " + instance.getDimensionType());
player.sendMessage(Component.text("You were in " + instance.getDimensionType()));
player.setInstance(targetInstance.get());
player.sendMessage("You are now in " + targetDimensionType);
player.sendMessage(Component.text("You are now in " + targetDimensionType));
} else {
player.sendMessage("Could not find instance with dimension " + targetDimensionType);
player.sendMessage(Component.text("Could not find instance with dimension " + targetDimensionType));
}
return true;

View File

@ -1,5 +1,7 @@
package demo.commands;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.event.ClickEvent;
import net.minestom.server.command.CommandSender;
import net.minestom.server.command.builder.Command;
import net.minestom.server.command.builder.CommandContext;
@ -36,7 +38,9 @@ public class GamemodeCommand extends Command {
}
private void usage(CommandSender sender, CommandContext context) {
sender.sendMessage("Usage: /gamemode [player] <gamemode>");
sender.sendMessage(Component.text("Usage: /gamemode [player] <gamemode>")
.hoverEvent(Component.text("Click to get this command."))
.clickEvent(ClickEvent.suggestCommand("/gamemode player gamemode")));
}
private void executeOnSelf(CommandSender sender, CommandContext context) {
@ -45,7 +49,7 @@ public class GamemodeCommand extends Command {
GameMode gamemode = context.get("gamemode");
assert gamemode != null; // mode is not supposed to be null, because gamemodeName will be valid
player.setGameMode(gamemode);
player.sendMessage("You are now playing in " + gamemode.toString().toLowerCase());
player.sendMessage(Component.text("You are now playing in " + gamemode.toString().toLowerCase()));
}
private void executeOnOther(CommandSender sender, CommandContext context) {
@ -55,20 +59,20 @@ public class GamemodeCommand extends Command {
assert gamemode != null; // mode is not supposed to be null, because gamemodeName will be valid
assert target != null;
target.setGameMode(gamemode);
target.sendMessage("You are now playing in " + gamemode.toString().toLowerCase());
target.sendMessage(Component.text("You are now playing in " + gamemode.toString().toLowerCase()));
}
private void targetCallback(CommandSender sender, ArgumentSyntaxException exception) {
sender.sendMessage("'" + exception.getInput() + "' is not a valid player name.");
sender.sendMessage(Component.text("'" + exception.getInput() + "' is not a valid player name."));
}
private void gameModeCallback(CommandSender sender, ArgumentSyntaxException exception) {
sender.sendMessage("'" + exception.getInput() + "' is not a valid gamemode!");
sender.sendMessage(Component.text("'" + exception.getInput() + "' is not a valid gamemode!"));
}
private boolean isAllowed(CommandSender sender, String commandString) {
if (!sender.isPlayer()) {
sender.sendMessage("The command is only available for player");
sender.sendMessage(Component.text("The command is only available for player"));
return false;
}
return true;

View File

@ -1,5 +1,6 @@
package demo.commands;
import net.kyori.adventure.text.Component;
import net.minestom.server.command.CommandSender;
import net.minestom.server.command.builder.Command;
import net.minestom.server.command.builder.CommandContext;
@ -30,18 +31,18 @@ public class HealthCommand extends Command {
private boolean condition(CommandSender sender, String commandString) {
if (!sender.isPlayer()) {
sender.sendMessage("The command is only available for player");
sender.sendMessage(Component.text("The command is only available for player"));
return false;
}
return true;
}
private void defaultExecutor(CommandSender sender, CommandContext context) {
sender.sendMessage("Correct usage: health [set/add] [number]");
sender.sendMessage(Component.text("Correct usage: health [set/add] [number]"));
}
private void onModeError(CommandSender sender, ArgumentSyntaxException exception) {
sender.sendMessage("SYNTAX ERROR: '" + exception.getInput() + "' should be replaced by 'set' or 'add'");
sender.sendMessage(Component.text("SYNTAX ERROR: '" + exception.getInput() + "' should be replaced by 'set' or 'add'"));
}
private void onValueError(CommandSender sender, ArgumentSyntaxException exception) {
@ -49,16 +50,16 @@ public class HealthCommand extends Command {
final String input = exception.getInput();
switch (error) {
case ArgumentNumber.NOT_NUMBER_ERROR:
sender.sendMessage("SYNTAX ERROR: '" + input + "' isn't a number!");
sender.sendMessage(Component.text("SYNTAX ERROR: '" + input + "' isn't a number!"));
break;
case ArgumentNumber.RANGE_ERROR:
sender.sendMessage("SYNTAX ERROR: " + input + " is not between 0 and 100");
sender.sendMessage(Component.text("SYNTAX ERROR: " + input + " is not between 0 and 100"));
break;
}
}
private void sendSuggestionMessage(CommandSender sender, CommandContext context) {
sender.sendMessage("/health " + context.get("mode") + " [Integer]");
sender.sendMessage(Component.text("/health " + args.get("mode") + " [Integer]"));
}
private void onHealthCommand(CommandSender sender, CommandContext context) {
@ -75,7 +76,7 @@ public class HealthCommand extends Command {
break;
}
player.sendMessage("You have now " + player.getHealth() + " health");
player.sendMessage(Component.text("You have now " + player.getHealth() + " health"));
}
}

View File

@ -1,5 +1,6 @@
package demo.commands;
import net.kyori.adventure.text.Component;
import net.minestom.server.command.CommandSender;
import net.minestom.server.command.builder.Command;
import net.minestom.server.command.builder.CommandContext;
@ -31,7 +32,7 @@ public class HorseCommand extends Command {
private boolean condition(CommandSender sender, String commandString) {
if (!sender.isPlayer()) {
sender.sendMessage("The command is only available for player");
sender.sendMessage(Component.text("The command is only available for player"));
return false;
}
return true;
@ -42,21 +43,21 @@ public class HorseCommand extends Command {
}
private void onBabyError(CommandSender sender, ArgumentSyntaxException exception) {
sender.sendMessage("SYNTAX ERROR: '" + exception.getInput() + "' should be replaced by 'true' or 'false'");
sender.sendMessage(Component.text("SYNTAX ERROR: '" + exception.getInput() + "' should be replaced by 'true' or 'false'"));
}
private void onMarkingError(CommandSender sender, ArgumentSyntaxException exception) {
String values = Stream.of(HorseMeta.Marking.values())
.map(value -> "'" + value.name().toLowerCase(Locale.ROOT) + "'")
.collect(Collectors.joining(", "));
sender.sendMessage("SYNTAX ERROR: '" + exception.getInput() + "' should be replaced by " + values + ".");
sender.sendMessage(Component.text("SYNTAX ERROR: '" + exception.getInput() + "' should be replaced by " + values + "."));
}
private void onColorError(CommandSender sender, ArgumentSyntaxException exception) {
String values = Stream.of(HorseMeta.Color.values())
.map(value -> "'" + value.name().toLowerCase(Locale.ROOT) + "'")
.collect(Collectors.joining(", "));
sender.sendMessage("SYNTAX ERROR: '" + exception.getInput() + "' should be replaced by " + values + ".");
sender.sendMessage(Component.text("SYNTAX ERROR: '" + exception.getInput() + "' should be replaced by " + values + "."));
}
private void onHorseCommand(CommandSender sender, CommandContext context) {

View File

@ -1,5 +1,6 @@
package demo.commands;
import net.kyori.adventure.text.Component;
import net.minestom.server.MinecraftServer;
import net.minestom.server.command.CommandSender;
import net.minestom.server.command.builder.Command;
@ -26,42 +27,42 @@ public class LoadExtensionCommand extends Command {
}
private void usage(CommandSender sender, CommandContext context) {
sender.sendMessage("Usage: /load <extension file name>");
sender.sendMessage(Component.text("Usage: /load <extension file name>"));
}
private void execute(CommandSender sender, CommandContext context) {
String name = join(context.getStringArray("extensionName"));
sender.sendMessage("extensionFile = " + name + "....");
sender.sendMessage(Component.text("extensionFile = "+name+"...."));
ExtensionManager extensionManager = MinecraftServer.getExtensionManager();
Path extensionFolder = extensionManager.getExtensionFolder().toPath().toAbsolutePath();
Path extensionJar = extensionFolder.resolve(name);
try {
if (!extensionJar.toFile().getCanonicalPath().startsWith(extensionFolder.toFile().getCanonicalPath())) {
sender.sendMessage("File name '" + name + "' does not represent a file inside the extensions folder. Will not load");
if(!extensionJar.toFile().getCanonicalPath().startsWith(extensionFolder.toFile().getCanonicalPath())) {
sender.sendMessage(Component.text("File name '"+name+"' does not represent a file inside the extensions folder. Will not load"));
return;
}
} catch (IOException e) {
e.printStackTrace();
sender.sendMessage("Failed to load extension: " + e.getMessage());
sender.sendMessage(Component.text("Failed to load extension: "+e.getMessage()));
return;
}
try {
boolean managed = extensionManager.loadDynamicExtension(extensionJar.toFile());
if (managed) {
sender.sendMessage("Extension loaded!");
if(managed) {
sender.sendMessage(Component.text("Extension loaded!"));
} else {
sender.sendMessage("Failed to load extension, check your logs.");
sender.sendMessage(Component.text("Failed to load extension, check your logs."));
}
} catch (Exception e) {
e.printStackTrace();
sender.sendMessage("Failed to load extension: " + e.getMessage());
sender.sendMessage(Component.text("Failed to load extension: "+e.getMessage()));
}
}
private void extensionCallback(CommandSender sender, ArgumentSyntaxException exception) {
sender.sendMessage("'" + exception.getInput() + "' is not a valid extension name!");
sender.sendMessage(Component.text("'" + exception.getInput() + "' is not a valid extension name!"));
}
private String join(String[] extensionNameParts) {

View File

@ -1,5 +1,6 @@
package demo.commands;
import net.kyori.adventure.text.Component;
import net.minestom.server.MinecraftServer;
import net.minestom.server.command.CommandSender;
import net.minestom.server.command.builder.Command;
@ -19,17 +20,17 @@ public class PlayersCommand extends Command {
private void usage(CommandSender sender, CommandContext context) {
final Collection<Player> players = MinecraftServer.getConnectionManager().getOnlinePlayers();
final int playerCount = players.size();
sender.sendMessage("Total players: " + playerCount);
sender.sendMessage(Component.text("Total players: " + playerCount));
final int limit = 15;
if (playerCount <= limit) {
for (final Player player : players) {
sender.sendMessage(player.getUsername());
sender.sendMessage(Component.text(player.getUsername()));
}
} else {
for (final Player player : players.stream().limit(limit).collect(Collectors.toList())) {
sender.sendMessage(player.getUsername());
sender.sendMessage(Component.text(player.getUsername()));
}
sender.sendMessage("...");
sender.sendMessage(Component.text("..."));
}
}

View File

@ -1,5 +1,6 @@
package demo.commands;
import net.kyori.adventure.text.Component;
import net.minestom.server.MinecraftServer;
import net.minestom.server.command.CommandSender;
import net.minestom.server.command.builder.Command;
@ -17,7 +18,7 @@ public class PotionCommand extends Command {
setCondition(this::condition);
setDefaultExecutor(((sender, args) -> {
sender.sendMessage("Usage: /potion [type] [duration (seconds)]");
sender.sendMessage(Component.text("Usage: /potion [type] [duration (seconds)]"));
}));
var potionArg = ArgumentType.Potion("potion");
@ -28,7 +29,7 @@ public class PotionCommand extends Command {
private boolean condition(CommandSender sender, String commandString) {
if (!sender.isPlayer()) {
sender.sendMessage("The command is only available for players");
sender.sendMessage(Component.text("The command is only available for players"));
return false;
}
return true;
@ -39,7 +40,7 @@ public class PotionCommand extends Command {
final PotionEffect potion = context.get("potion");
final int duration = context.get("duration");
player.sendMessage(player.getActiveEffects().toString());
player.sendMessage(Component.text(player.getActiveEffects().toString()));
player.addEffect(new Potion(
potion,
(byte) 0,

View File

@ -1,5 +1,6 @@
package demo.commands;
import net.kyori.adventure.text.Component;
import net.minestom.server.MinecraftServer;
import net.minestom.server.command.CommandSender;
import net.minestom.server.command.builder.Command;
@ -42,12 +43,12 @@ public class ReloadExtensionCommand extends Command {
}
private void usage(CommandSender sender, CommandContext context) {
sender.sendMessage("Usage: /reload <extension name>");
sender.sendMessage(Component.text("Usage: /reload <extension name>"));
}
private void execute(CommandSender sender, CommandContext context) {
String name = join(context.getStringArray("extensionName"));
sender.sendMessage("extensionName = " + name + "....");
sender.sendMessage(Component.text("extensionName = " + name + "...."));
ExtensionManager extensionManager = MinecraftServer.getExtensionManager();
Extension ext = extensionManager.getExtension(name);
@ -68,12 +69,12 @@ public class ReloadExtensionCommand extends Command {
}
}
} else {
sender.sendMessage("Extension '" + name + "' does not exist.");
sender.sendMessage(Component.text("Extension '" + name + "' does not exist."));
}
}
private void gameModeCallback(CommandSender sender, ArgumentSyntaxException argumentSyntaxException) {
sender.sendMessage("'" + argumentSyntaxException.getInput() + "' is not a valid extension name!");
sender.sendMessage(Component.text("'" + argumentSyntaxException.getInput() + "' is not a valid extension name!"));
}
@Nullable

View File

@ -1,5 +1,6 @@
package demo.commands;
import net.kyori.adventure.text.Component;
import net.minestom.server.command.CommandSender;
import net.minestom.server.command.builder.Command;
import net.minestom.server.command.builder.CommandContext;
@ -25,18 +26,18 @@ public class ShootCommand extends Command {
private boolean condition(CommandSender sender, String commandString) {
if (!sender.isPlayer()) {
sender.sendMessage("The command is only available for player");
sender.sendMessage(Component.text("The command is only available for player"));
return false;
}
return true;
}
private void defaultExecutor(CommandSender sender, CommandContext context) {
sender.sendMessage("Correct usage: shoot [default/spectral/colored]");
sender.sendMessage(Component.text("Correct usage: shoot [default/spectral/colored]"));
}
private void onTypeError(CommandSender sender, ArgumentSyntaxException exception) {
sender.sendMessage("SYNTAX ERROR: '" + exception.getInput() + "' should be replaced by 'default', 'spectral' or 'colored'");
sender.sendMessage(Component.text("SYNTAX ERROR: '" + exception.getInput() + "' should be replaced by 'default', 'spectral' or 'colored'"));
}
private void onShootCommand(CommandSender sender, CommandContext context) {

View File

@ -1,5 +1,6 @@
package demo.commands;
import net.kyori.adventure.text.Component;
import net.minestom.server.MinecraftServer;
import net.minestom.server.command.CommandSender;
import net.minestom.server.command.builder.Command;
@ -14,7 +15,7 @@ public class TeleportCommand extends Command {
public TeleportCommand() {
super("tp");
setDefaultExecutor((source, context) -> source.sendMessage("Usage: /tp x y z"));
setDefaultExecutor((source, context) -> source.sendMessage(Component.text("Usage: /tp x y z")));
var posArg = ArgumentType.RelativeVec3("pos");
var playerArg = ArgumentType.Word("player");
@ -30,7 +31,7 @@ public class TeleportCommand extends Command {
Player player = (Player) sender;
player.teleport(pl.getPosition());
}
sender.sendMessage("Teleported to player " + playerName);
sender.sendMessage(Component.text("Teleported to player "+playerName));
}
private void onPositionTeleport(CommandSender sender, CommandContext context) {
@ -40,7 +41,7 @@ public class TeleportCommand extends Command {
final Position position = relativeVec.from(player).toPosition();
player.teleport(position);
player.sendMessage("You have been teleported to " + position);
player.sendMessage(Component.text("You have been teleported to " + position));
}
}

View File

@ -1,5 +1,7 @@
package demo.commands;
import net.minestom.server.chat.JsonMessage;
import net.kyori.adventure.text.Component;
import net.minestom.server.command.CommandSender;
import net.minestom.server.command.builder.Command;
import net.minestom.server.command.builder.CommandContext;
@ -22,7 +24,7 @@ public class TestCommand extends Command {
}
private void usage(CommandSender sender, CommandContext context) {
sender.sendMessage("Incorrect usage");
sender.sendMessage(Component.text("Incorrect usage"));
}
}

View File

@ -3,6 +3,8 @@ package demo.commands;
import com.google.gson.JsonElement;
import com.google.gson.JsonParseException;
import com.google.gson.JsonParser;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.title.Title;
import net.minestom.server.chat.ColoredText;
import net.minestom.server.chat.JsonMessage;
import net.minestom.server.command.CommandSender;
@ -15,7 +17,7 @@ public class TitleCommand extends Command {
public TitleCommand() {
super("title");
setDefaultExecutor((source, args) -> {
source.sendMessage("Unknown syntax (note: title must be quoted)");
source.sendMessage(Component.text("Unknown syntax (note: title must be quoted)"));
});
var content = ArgumentType.String("content");
@ -25,20 +27,13 @@ public class TitleCommand extends Command {
private void handleTitle(CommandSender source, CommandContext context) {
if (!source.isPlayer()) {
source.sendMessage("Only players can run this command!");
source.sendMessage(Component.text("Only players can run this command!"));
return;
}
Player player = source.asPlayer();
String titleContent = context.get("content");
player.sendTitleTime(10, 100, 10);
try {
JsonElement parsed = JsonParser.parseString(titleContent);
JsonMessage message = new JsonMessage.RawJsonMessage(parsed.getAsJsonObject());
player.sendTitleMessage(message);
} catch (JsonParseException | IllegalStateException ignored) {
player.sendTitleMessage(ColoredText.of(titleContent));
}
player.showTitle(Title.title(Component.text(titleContent), Component.empty(), Title.DEFAULT_TIMES));
}
}

View File

@ -1,5 +1,6 @@
package demo.commands;
import net.kyori.adventure.text.Component;
import net.minestom.server.MinecraftServer;
import net.minestom.server.command.CommandSender;
import net.minestom.server.command.builder.Command;
@ -30,12 +31,12 @@ public class UnloadExtensionCommand extends Command {
}
private void usage(CommandSender sender, CommandContext context) {
sender.sendMessage("Usage: /unload <extension name>");
sender.sendMessage(Component.text("Usage: /unload <extension name>"));
}
private void execute(CommandSender sender, CommandContext context) {
String name = join(context.getStringArray("extensionName"));
sender.sendMessage("extensionName = " + name + "....");
sender.sendMessage(Component.text("extensionName = " + name + "...."));
ExtensionManager extensionManager = MinecraftServer.getExtensionManager();
Extension ext = extensionManager.getExtension(name);
@ -56,12 +57,12 @@ public class UnloadExtensionCommand extends Command {
}
}
} else {
sender.sendMessage("Extension '" + name + "' does not exist.");
sender.sendMessage(Component.text("Extension '" + name + "' does not exist."));
}
}
private void extensionCallback(CommandSender sender, ArgumentSyntaxException exception) {
sender.sendMessage("'" + exception.getInput() + "' is not a valid extension name!");
sender.sendMessage(Component.text("'" + exception.getInput() + "' is not a valid extension name!"));
}
private String join(String[] extensionNameParts) {