Minestom/demo/src/main/java/net/minestom/demo/Main.java

111 lines
5.8 KiB
Java
Raw Normal View History

2022-01-01 18:27:52 +01:00
package net.minestom.demo;
2020-02-17 17:33:53 +01:00
2021-03-25 14:20:58 +01:00
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.format.NamedTextColor;
import net.kyori.adventure.text.format.Style;
import net.kyori.adventure.text.format.TextColor;
import net.kyori.adventure.text.format.TextDecoration;
2022-01-01 18:27:52 +01:00
import net.minestom.demo.commands.*;
2020-04-24 03:25:58 +02:00
import net.minestom.server.MinecraftServer;
import net.minestom.server.command.CommandManager;
import net.minestom.server.event.server.ServerListPingEvent;
2021-04-23 14:38:50 +02:00
import net.minestom.server.extras.lan.OpenToLAN;
import net.minestom.server.extras.lan.OpenToLANConfig;
2020-11-14 04:09:38 +01:00
import net.minestom.server.extras.optifine.OptifineSupport;
2020-04-24 03:25:58 +02:00
import net.minestom.server.instance.block.BlockManager;
import net.minestom.server.instance.block.rule.vanilla.RedstonePlacementRule;
import net.minestom.server.ping.ResponseData;
import net.minestom.server.utils.identity.NamedAndIdentified;
2020-04-24 03:25:58 +02:00
import net.minestom.server.utils.time.TimeUnit;
2021-06-30 00:47:57 +02:00
import java.time.Duration;
2020-04-01 13:16:18 +02:00
2020-02-17 17:33:53 +01:00
public class Main {
public static void main(String[] args) {
MinecraftServer minecraftServer = MinecraftServer.init();
BlockManager blockManager = MinecraftServer.getBlockManager();
2020-04-01 13:16:18 +02:00
2020-04-12 10:24:25 +02:00
blockManager.registerBlockPlacementRule(new RedstonePlacementRule());
2020-04-01 13:16:18 +02:00
CommandManager commandManager = MinecraftServer.getCommandManager();
commandManager.register(new TestCommand());
2020-11-12 03:09:36 +01:00
commandManager.register(new EntitySelectorCommand());
commandManager.register(new HealthCommand());
commandManager.register(new LegacyCommand());
2020-07-24 01:03:24 +02:00
commandManager.register(new DimensionCommand());
commandManager.register(new ShutdownCommand());
2020-11-12 03:09:36 +01:00
commandManager.register(new TeleportCommand());
2020-11-18 19:39:06 +01:00
commandManager.register(new PlayersCommand());
commandManager.register(new FindCommand());
2020-12-31 00:12:03 +01:00
commandManager.register(new PotionCommand());
commandManager.register(new TitleCommand());
2021-01-09 03:40:22 +01:00
commandManager.register(new BookCommand());
2021-02-22 12:42:46 +01:00
commandManager.register(new ShootCommand());
commandManager.register(new HorseCommand());
2021-03-25 14:20:58 +01:00
commandManager.register(new EchoCommand());
commandManager.register(new SummonCommand());
commandManager.register(new RemoveCommand());
2021-04-11 23:43:35 +02:00
commandManager.register(new GiveCommand());
2021-06-16 14:39:11 +02:00
commandManager.register(new SetBlockCommand());
2021-11-01 18:04:00 +01:00
commandManager.register(new AutoViewCommand());
2020-04-01 13:16:18 +02:00
2021-03-25 14:20:58 +01:00
commandManager.setUnknownCommandCallback((sender, command) -> sender.sendMessage(Component.text("Unknown command", NamedTextColor.RED)));
2020-11-02 04:13:43 +01:00
2021-07-05 08:22:51 +02:00
MinecraftServer.getBenchmarkManager().enable(Duration.of(10, TimeUnit.SECOND));
2020-02-17 17:33:53 +01:00
2021-12-16 00:15:55 +01:00
MinecraftServer.getSchedulerManager().buildShutdownTask(() -> System.out.println("Good night"));
2020-04-28 19:22:54 +02:00
2021-07-15 05:23:33 +02:00
MinecraftServer.getGlobalEventHandler().addListener(ServerListPingEvent.class, event -> {
ResponseData responseData = event.getResponseData();
responseData.addEntry(NamedAndIdentified.named("The first line is separated from the others"));
responseData.addEntry(NamedAndIdentified.named("Could be a name, or a message"));
// on modern versions, you can obtain the player connection directly from the event
if (event.getConnection() != null) {
responseData.addEntry(NamedAndIdentified.named("IP test: " + event.getConnection().getRemoteAddress().toString()));
responseData.addEntry(NamedAndIdentified.named("Connection Info:"));
String ip = event.getConnection().getServerAddress();
responseData.addEntry(NamedAndIdentified.named(Component.text('-', NamedTextColor.DARK_GRAY)
.append(Component.text(" IP: ", NamedTextColor.GRAY))
.append(Component.text(ip != null ? ip : "???", NamedTextColor.YELLOW))));
responseData.addEntry(NamedAndIdentified.named(Component.text('-', NamedTextColor.DARK_GRAY)
.append(Component.text(" PORT: ", NamedTextColor.GRAY))
.append(Component.text(event.getConnection().getServerPort()))));
responseData.addEntry(NamedAndIdentified.named(Component.text('-', NamedTextColor.DARK_GRAY)
.append(Component.text(" VERSION: ", NamedTextColor.GRAY))
.append(Component.text(event.getConnection().getProtocolVersion()))));
}
responseData.addEntry(NamedAndIdentified.named(Component.text("Time", NamedTextColor.YELLOW)
.append(Component.text(": ", NamedTextColor.GRAY))
.append(Component.text(System.currentTimeMillis(), Style.style(TextDecoration.ITALIC)))));
// components will be converted the legacy section sign format so they are displayed in the client
responseData.addEntry(NamedAndIdentified.named(Component.text("You can use ").append(Component.text("styling too!", NamedTextColor.RED, TextDecoration.BOLD))));
// the data will be automatically converted to the correct format on response, so you can do RGB and it'll be downsampled!
// on legacy versions, colors will be converted to the section format so it'll work there too
responseData.setDescription(Component.text("This is a Minestom Server", TextColor.color(0x66b3ff)));
//responseData.setPlayersHidden(true);
});
2020-03-20 19:50:22 +01:00
PlayerInit.init();
2020-11-14 04:09:38 +01:00
OptifineSupport.enable();
2020-11-14 23:18:52 +01:00
//VelocityProxy.enable("rBeJJ79W4MVU");
//BungeeCordProxy.enable();
2020-11-09 23:48:34 +01:00
2020-11-16 17:02:40 +01:00
//MojangAuth.init();
2020-06-22 00:57:53 +02:00
2021-04-23 14:38:50 +02:00
// useful for testing - we don't need to worry about event calls so just set this to a long time
2021-06-30 00:47:57 +02:00
OpenToLAN.open(new OpenToLANConfig().eventCallDelay(Duration.of(1, TimeUnit.DAY)));
2021-04-23 14:38:50 +02:00
minecraftServer.start("0.0.0.0", 25565);
2020-12-06 20:20:05 +01:00
//Runtime.getRuntime().addShutdownHook(new Thread(MinecraftServer::stopCleanly));
2020-02-17 17:33:53 +01:00
}
}