From 2cca2e2096d4b57fe613760727844ad0735eabca Mon Sep 17 00:00:00 2001 From: NorbiPeti Date: Tue, 3 Mar 2020 17:13:35 +0100 Subject: [PATCH] Register chat channels as commands #72 --- .../core/component/channel/Channel.java | 1 + .../component/channel/ChannelComponent.java | 41 +++++++++++++++++++ 2 files changed, 42 insertions(+) diff --git a/Chroma-Core/src/main/java/buttondevteam/core/component/channel/Channel.java b/Chroma-Core/src/main/java/buttondevteam/core/component/channel/Channel.java index 120615c..90a5c84 100755 --- a/Chroma-Core/src/main/java/buttondevteam/core/component/channel/Channel.java +++ b/Chroma-Core/src/main/java/buttondevteam/core/component/channel/Channel.java @@ -195,6 +195,7 @@ public class Channel { if (component == null) throw new RuntimeException("Attempting to register a channel before the component is registered!"); channels.add(channel); + component.registerChannelCommand(channel); Bukkit.getScheduler().runTask(MainPlugin.Instance, () -> Bukkit.getPluginManager().callEvent(new ChatChannelRegisterEvent(channel))); // Wait for server start } diff --git a/Chroma-Core/src/main/java/buttondevteam/core/component/channel/ChannelComponent.java b/Chroma-Core/src/main/java/buttondevteam/core/component/channel/ChannelComponent.java index 5e19ea0..0af3963 100644 --- a/Chroma-Core/src/main/java/buttondevteam/core/component/channel/ChannelComponent.java +++ b/Chroma-Core/src/main/java/buttondevteam/core/component/channel/ChannelComponent.java @@ -2,6 +2,10 @@ package buttondevteam.core.component.channel; import buttondevteam.lib.TBMCSystemChatEvent; import buttondevteam.lib.architecture.Component; +import buttondevteam.lib.chat.*; +import buttondevteam.lib.player.ChromaGamerBase; +import lombok.RequiredArgsConstructor; +import org.bukkit.command.CommandSender; import org.bukkit.plugin.java.JavaPlugin; /** @@ -29,6 +33,43 @@ public class ChannelComponent extends Component { @Override protected void disable() { + } + void registerChannelCommand(Channel channel) { + registerCommand(new ChannelCommand(channel)); + } + + @CommandClass + @RequiredArgsConstructor + private static class ChannelCommand extends ICommand2MC { + private final Channel channel; + @Override + public String getCommandPath() { + return channel.ID; //TODO: IDs + } + + @Command2.Subcommand + public void def(CommandSender sender, @Command2.OptionalArg @Command2.TextArg String message) { + var user = ChromaGamerBase.getFromSender(sender); + if(user==null) { + sender.sendMessage("§cYou can't use channels from this platform."); + return; + } + if(message==null) { + Channel oldch = user.channel().get(); + if (oldch instanceof ChatRoom) + ((ChatRoom) oldch).leaveRoom(sender); + if (oldch.equals(channel)) + user.channel().set(Channel.GlobalChat); + else { + user.channel().set(channel); + if (channel instanceof ChatRoom) + ((ChatRoom) channel).joinRoom(sender); + } + sender.sendMessage("§6You are now talking in: §b" + user.channel().get().DisplayName().get()); + } + else + TBMCChatAPI.SendChatMessage(ChatMessage.builder(sender, user, message).build(), channel); + } } }