diff --git a/README.md b/README.md new file mode 100644 index 0000000..de129ca --- /dev/null +++ b/README.md @@ -0,0 +1,2 @@ +msb3 +----------- diff --git a/api/build.gradle b/api/build.gradle index 6531284..42ac074 100644 --- a/api/build.gradle +++ b/api/build.gradle @@ -2,6 +2,8 @@ plugins { id 'com.github.johnrengelman.shadow' version '7.0.0' } +version = MSB3_VERSION + tasks { shadowJar { manifest { @@ -27,7 +29,7 @@ tasks { dependencies { api project(":resource-compiler") - api 'net.minestom:minestom-snapshots:1_21_4-6490538291' + api 'net.minestom:minestom-snapshots:8209a1d1e9' // stableVersion: 1_21_4-6490538291 api 'org.slf4j:slf4j-api:2.0.16' api 'org.apache.logging.log4j:log4j-slf4j2-impl:2.24.0' @@ -48,3 +50,32 @@ dependencies { implementation 'org.apache.commons:commons-text:1.10.0' } + +publishing { + publications { + maven(MavenPublication) { + groupId = 'ru.dragonestia.msb3' + artifactId = 'msb-api' + version = MSB3_VERSION + + from components.java + } + } + + repositories { + maven { + name = "Gitea" + url = uri(MSB3_MAVEN_REPOSITORY) + allowInsecureProtocol = true + + credentials(HttpHeaderCredentials) { + name = "Authorization" + value = "token ${dragonestiaGiteaToken}" + } + + authentication { + header(HttpHeaderAuthentication) + } + } + } +} diff --git a/api/src/main/java/ru/dragonestia/msb3/api/boot/DefaultBootstrap.java b/api/src/main/java/ru/dragonestia/msb3/api/boot/DefaultBootstrap.java index edc547a..e34b42a 100644 --- a/api/src/main/java/ru/dragonestia/msb3/api/boot/DefaultBootstrap.java +++ b/api/src/main/java/ru/dragonestia/msb3/api/boot/DefaultBootstrap.java @@ -20,7 +20,7 @@ public class DefaultBootstrap extends ServerInitializer { @Override public void onDefaultModulesLoaded() { MotdModule.init("logo.png", "msb3 server"); - FlatWorldModule.init(GameMode.ADVENTURE); + FlatWorldModule.init(GameMode.CREATIVE); PrometheusMetricsModule.init(new InetSocketAddress("0.0.0.0", 7500)); } @@ -33,4 +33,9 @@ public class DefaultBootstrap extends ServerInitializer { public void onResourcePackCompiled(ResourcePack resourcePack) { ResourcePackRepositoryModule.init("0.0.0.0", 7270); } + + @Override + public void onServerStarted() { + + } } diff --git a/api/src/main/java/ru/dragonestia/msb3/api/boot/ServerBootstrap.java b/api/src/main/java/ru/dragonestia/msb3/api/boot/ServerBootstrap.java index c687246..5dcf30b 100644 --- a/api/src/main/java/ru/dragonestia/msb3/api/boot/ServerBootstrap.java +++ b/api/src/main/java/ru/dragonestia/msb3/api/boot/ServerBootstrap.java @@ -12,6 +12,7 @@ import ru.dragonestia.msb3.api.command.DebugCommands; import ru.dragonestia.msb3.api.dialog.DialogRegistry; import ru.dragonestia.msb3.api.dialog.action.CloseDialogActionHandler; import ru.dragonestia.msb3.api.dialog.action.DialogDialogActionHandler; +import ru.dragonestia.msb3.api.dialog.action.ScriptDialogActionHandler; import ru.dragonestia.msb3.api.dialog.condition.AlwaysDialogConditionHandler; import ru.dragonestia.msb3.api.dialog.condition.NeverDialogConditionHandler; import ru.dragonestia.msb3.api.entity.PickableItem; @@ -19,11 +20,11 @@ import ru.dragonestia.msb3.api.event.NPCClickEvent; import ru.dragonestia.msb3.api.item.ItemUtil; import ru.dragonestia.msb3.api.player.MsbPlayer; import ru.dragonestia.msb3.api.player.PlayerContextManager; -import ru.dragonestia.msb3.api.player.defaults.KeyedBossBarContext; -import ru.dragonestia.msb3.api.player.defaults.NavigatorContext; -import ru.dragonestia.msb3.api.player.defaults.TalksContext; +import ru.dragonestia.msb3.api.player.defaults.*; import ru.dragonestia.msb3.api.resource.DialogueResources; import ru.dragonestia.msb3.api.resource.MonologueResources; +import ru.dragonestia.msb3.api.script.ScriptRegistry; +import ru.dragonestia.msb3.api.script.defaults.HelloWorldScript; import ru.dragonestia.msb3.api.skin.SkinStorage; import ru.dragonestia.msb3.api.ui.BlackScreen; import ru.dragonestia.msb3.api.ui.bossbar.KeyedBossBars; @@ -102,6 +103,7 @@ public final class ServerBootstrap { initDefaultDialogActionsAndConditions(); NPCClickEvent.init(); DebugCommands.init(); + initDefaultScripts(); } private void compileResourcePack() { @@ -191,6 +193,8 @@ public final class ServerBootstrap { PlayerContextManager.registerContext(KeyedBossBarContext.class, KeyedBossBarContext::new); PlayerContextManager.registerContext(NavigatorContext.class, NavigatorContext::new); PlayerContextManager.registerContext(TalksContext.class, TalksContext::new); + PlayerContextManager.registerContext(DebugParamsContext.class, DebugParamsContext::new); + PlayerContextManager.registerContext(PlayerScriptContext.class, PlayerScriptContext::new); } private void initDefaultSkins() { @@ -200,8 +204,13 @@ public final class ServerBootstrap { private void initDefaultDialogActionsAndConditions() { DialogRegistry.registerActionHandler("close", new CloseDialogActionHandler()); DialogRegistry.registerActionHandler("dialog", new DialogDialogActionHandler()); + DialogRegistry.registerActionHandler("script", new ScriptDialogActionHandler()); DialogRegistry.registerConditionHandler("always", new AlwaysDialogConditionHandler()); DialogRegistry.registerConditionHandler("never", new NeverDialogConditionHandler()); } + + private void initDefaultScripts() { + ScriptRegistry.register(HelloWorldScript::new); + } } diff --git a/api/src/main/java/ru/dragonestia/msb3/api/command/DebugAICommand.java b/api/src/main/java/ru/dragonestia/msb3/api/command/DebugAICommand.java new file mode 100644 index 0000000..7c2bea1 --- /dev/null +++ b/api/src/main/java/ru/dragonestia/msb3/api/command/DebugAICommand.java @@ -0,0 +1,49 @@ +package ru.dragonestia.msb3.api.command; + +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.format.NamedTextColor; +import net.minestom.server.MinecraftServer; +import net.minestom.server.command.CommandSender; +import net.minestom.server.command.builder.Command; +import net.minestom.server.command.builder.CommandContext; +import net.minestom.server.command.builder.arguments.ArgumentBoolean; +import net.minestom.server.command.builder.arguments.ArgumentType; +import net.minestom.server.entity.Player; +import ru.dragonestia.msb3.api.player.MsbPlayer; +import ru.dragonestia.msb3.api.player.PlayerContext; +import ru.dragonestia.msb3.api.player.defaults.DebugParamsContext; + +public class DebugAICommand extends Command { + + private final ArgumentBoolean argShowPathValue = ArgumentType.Boolean("show"); + + public DebugAICommand() { + super("debug_ai"); + setDefaultExecutor(this::defaultExecutor); + + addSyntax(this::executeShowPath, ArgumentType.Literal("show_path"), argShowPathValue); + } + + public static void register() { + MinecraftServer.getCommandManager().register(new DebugAICommand()); + } + + private void defaultExecutor(CommandSender sender, CommandContext ctx) { + var player = (Player) sender; + + player.sendMessage("Debug Render commands:"); + player.sendMessage("/debug_ai show_path - Change debug renderer for path finder"); + } + + private void executeShowPath(CommandSender sender, CommandContext ctx) { + var player = (MsbPlayer) sender; + var show = ctx.get(argShowPathValue); + + PlayerContext.of(player, DebugParamsContext.class).setShowDebugRendererAiPathFinder(show); + if (show) { + player.sendMessage(Component.text("Enabled debug renderer for path finder", NamedTextColor.YELLOW)); + } else { + player.sendMessage(Component.text("Disabled debug renderer for path finder", NamedTextColor.YELLOW)); + } + } +} diff --git a/api/src/main/java/ru/dragonestia/msb3/api/command/DebugCommands.java b/api/src/main/java/ru/dragonestia/msb3/api/command/DebugCommands.java index 414fac5..80c9852 100644 --- a/api/src/main/java/ru/dragonestia/msb3/api/command/DebugCommands.java +++ b/api/src/main/java/ru/dragonestia/msb3/api/command/DebugCommands.java @@ -29,6 +29,9 @@ public class DebugCommands { registerPosCommand(); registerTeleportCommand(); registerGameModeCommand(); + DebugRendererCommand.register(); + DebugAICommand.register(); + ScriptCommand.register(); log.info("Registered debug commands"); } diff --git a/api/src/main/java/ru/dragonestia/msb3/api/command/DebugRendererCommand.java b/api/src/main/java/ru/dragonestia/msb3/api/command/DebugRendererCommand.java new file mode 100644 index 0000000..acec548 --- /dev/null +++ b/api/src/main/java/ru/dragonestia/msb3/api/command/DebugRendererCommand.java @@ -0,0 +1,62 @@ +package ru.dragonestia.msb3.api.command; + +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.format.NamedTextColor; +import net.minestom.server.MinecraftServer; +import net.minestom.server.command.CommandSender; +import net.minestom.server.command.builder.Command; +import net.minestom.server.command.builder.CommandContext; +import net.minestom.server.command.builder.arguments.ArgumentEnum; +import net.minestom.server.command.builder.arguments.ArgumentString; +import net.minestom.server.command.builder.arguments.ArgumentType; +import net.minestom.server.entity.Player; +import ru.dragonestia.msb3.api.player.MsbPlayer; + +public class DebugRendererCommand extends Command { + + private final ArgumentEnum