diff --git a/src/main/java/cf/semikolon/teamspeak/MainClass.java b/src/main/java/cf/semikolon/teamspeak/MainClass.java index 91bb56e..42ec325 100644 --- a/src/main/java/cf/semikolon/teamspeak/MainClass.java +++ b/src/main/java/cf/semikolon/teamspeak/MainClass.java @@ -1,5 +1,7 @@ package cf.semikolon.teamspeak; +import cf.semikolon.teamspeak.query.QueryEvents; +import cf.semikolon.teamspeak.query.ServerQuery; import org.bukkit.plugin.java.JavaPlugin; /** @@ -9,8 +11,10 @@ public class MainClass extends JavaPlugin { private static MainClass INSTANCE; private ServerQuery serverQuery; + private RandomString randomString; - FileSystem cfg = new FileSystem("TeamspekAuth", "config") { + + private FileSystem cfg = new FileSystem("TeamSpeakAuth", "config") { @Override public void initConfig() { getCfg().set("tsHost", "127.0.0.1"); @@ -25,15 +29,15 @@ public class MainClass extends JavaPlugin { @Override public void onEnable() { INSTANCE = this; - System.out.println("Plugin TeamspeakAuth by Semikolon\nconnecting..."); - serverQuery = new ServerQuery(cfg.getCfg().getString("tsHost"), + this.randomString = new RandomString(6); + System.out.println("Plugin TeamSpeakAuth by Semikolon\nconnecting..."); + this.serverQuery = new ServerQuery(cfg.getCfg().getString("tsHost"), cfg.getCfg().getInt("queryPort"), cfg.getCfg().getInt("tsPort"), cfg.getCfg().getString("queryUser"), cfg.getCfg().getString("queryPassword"), cfg.getCfg().getString("botNickname")); - - + this.serverQuery.getApi().addTS3Listeners(new QueryEvents()); } @Override @@ -44,4 +48,12 @@ public class MainClass extends JavaPlugin { public static MainClass getInstance() { return INSTANCE; } + + public ServerQuery getServerQuery() { + return serverQuery; + } + + public RandomString getRandomString() { + return randomString; + } } diff --git a/src/main/java/cf/semikolon/teamspeak/RandomString.java b/src/main/java/cf/semikolon/teamspeak/RandomString.java new file mode 100644 index 0000000..d70ffb2 --- /dev/null +++ b/src/main/java/cf/semikolon/teamspeak/RandomString.java @@ -0,0 +1,38 @@ +package cf.semikolon.teamspeak; + +import java.util.Random; + +/** + * Created by jan on 26.07.16. + * from StackOverflow + */ +public class RandomString { + + private static final char[] symbols; + + static { + StringBuilder tmp = new StringBuilder(); + for (char ch = '0'; ch <= '9'; ++ch) + tmp.append(ch); + for (char ch = 'a'; ch <= 'z'; ++ch) + tmp.append(ch); + symbols = tmp.toString().toCharArray(); + } + + private final Random random = new Random(); + + private final char[] buf; + + public RandomString(int length) { + if (length < 1) + throw new IllegalArgumentException("length < 1: " + length); + buf = new char[length]; + } + + public String nextString() { + for (int idx = 0; idx < buf.length; ++idx) + buf[idx] = symbols[random.nextInt(symbols.length)]; + return new String(buf); + } + +} diff --git a/src/main/java/cf/semikolon/teamspeak/query/QueryEvents.java b/src/main/java/cf/semikolon/teamspeak/query/QueryEvents.java new file mode 100644 index 0000000..05d727e --- /dev/null +++ b/src/main/java/cf/semikolon/teamspeak/query/QueryEvents.java @@ -0,0 +1,94 @@ +package cf.semikolon.teamspeak.query; + +import cf.semikolon.teamspeak.MainClass; +import com.github.theholywaffle.teamspeak3.api.TextMessageTargetMode; +import com.github.theholywaffle.teamspeak3.api.event.*; +import org.bukkit.Bukkit; +import org.bukkit.entity.Player; + +/** + * Created by jan on 26.07.16. + */ +public class QueryEvents implements TS3Listener { + + @Override + public void onTextMessage(TextMessageEvent textMessageEvent) { + if (textMessageEvent.getTargetMode() == TextMessageTargetMode.CLIENT) { + String message = textMessageEvent.getMessage().toLowerCase(); + switch (message) { + case "!botversion": + MainClass.getInstance().getServerQuery().getApi().sendPrivateMessage(textMessageEvent.getInvokerId(), ""); + break; + case "!botinfo": + MainClass.getInstance().getServerQuery().getApi().sendPrivateMessage(textMessageEvent.getInvokerId(), ""); + break; + } + if (message.contains("!verify")) { + String[] array = message.split(" "); + if (array.length == 2) { + String mcNick = array[1]; + Player player = Bukkit.getPlayer(mcNick); + if (player != null) { + String authKey = MainClass.getInstance().getRandomString().nextString(); + player.sendMessage("§9[TeamSpeakAuth] §7Dein Verifizierungscode:" + authKey); + } + } + } + } + } + + @Override + public void onClientJoin(ClientJoinEvent clientJoinEvent) { + + } + + @Override + public void onClientLeave(ClientLeaveEvent clientLeaveEvent) { + + } + + @Override + public void onServerEdit(ServerEditedEvent serverEditedEvent) { + + } + + @Override + public void onChannelEdit(ChannelEditedEvent channelEditedEvent) { + + } + + @Override + public void onChannelDescriptionChanged(ChannelDescriptionEditedEvent channelDescriptionEditedEvent) { + + } + + @Override + public void onClientMoved(ClientMovedEvent clientMovedEvent) { + + } + + @Override + public void onChannelCreate(ChannelCreateEvent channelCreateEvent) { + + } + + @Override + public void onChannelDeleted(ChannelDeletedEvent channelDeletedEvent) { + + } + + @Override + public void onChannelMoved(ChannelMovedEvent channelMovedEvent) { + + } + + @Override + public void onChannelPasswordChanged(ChannelPasswordChangedEvent channelPasswordChangedEvent) { + + } + + @Override + public void onPrivilegeKeyUsed(PrivilegeKeyUsedEvent privilegeKeyUsedEvent) { + + } +} diff --git a/src/main/java/cf/semikolon/teamspeak/ServerQuery.java b/src/main/java/cf/semikolon/teamspeak/query/ServerQuery.java similarity index 90% rename from src/main/java/cf/semikolon/teamspeak/ServerQuery.java rename to src/main/java/cf/semikolon/teamspeak/query/ServerQuery.java index 70d0b5e..bcb6b43 100644 --- a/src/main/java/cf/semikolon/teamspeak/ServerQuery.java +++ b/src/main/java/cf/semikolon/teamspeak/query/ServerQuery.java @@ -1,9 +1,8 @@ -package cf.semikolon.teamspeak; +package cf.semikolon.teamspeak.query; import com.github.theholywaffle.teamspeak3.TS3ApiAsync; import com.github.theholywaffle.teamspeak3.TS3Config; import com.github.theholywaffle.teamspeak3.TS3Query; -import com.github.theholywaffle.teamspeak3.api.reconnect.ReconnectStrategy; import java.util.logging.Level;