added query events

This commit is contained in:
Jan-Lukas Pagel 2016-07-26 21:42:58 +02:00
parent 12303e6b6f
commit 8ec66238aa
4 changed files with 150 additions and 7 deletions

View File

@ -1,5 +1,7 @@
package cf.semikolon.teamspeak; package cf.semikolon.teamspeak;
import cf.semikolon.teamspeak.query.QueryEvents;
import cf.semikolon.teamspeak.query.ServerQuery;
import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.plugin.java.JavaPlugin;
/** /**
@ -9,8 +11,10 @@ public class MainClass extends JavaPlugin {
private static MainClass INSTANCE; private static MainClass INSTANCE;
private ServerQuery serverQuery; private ServerQuery serverQuery;
private RandomString randomString;
FileSystem cfg = new FileSystem("TeamspekAuth", "config") {
private FileSystem cfg = new FileSystem("TeamSpeakAuth", "config") {
@Override @Override
public void initConfig() { public void initConfig() {
getCfg().set("tsHost", "127.0.0.1"); getCfg().set("tsHost", "127.0.0.1");
@ -25,15 +29,15 @@ public class MainClass extends JavaPlugin {
@Override @Override
public void onEnable() { public void onEnable() {
INSTANCE = this; INSTANCE = this;
System.out.println("Plugin TeamspeakAuth by Semikolon\nconnecting..."); this.randomString = new RandomString(6);
serverQuery = new ServerQuery(cfg.getCfg().getString("tsHost"), System.out.println("Plugin TeamSpeakAuth by Semikolon\nconnecting...");
this.serverQuery = new ServerQuery(cfg.getCfg().getString("tsHost"),
cfg.getCfg().getInt("queryPort"), cfg.getCfg().getInt("queryPort"),
cfg.getCfg().getInt("tsPort"), cfg.getCfg().getInt("tsPort"),
cfg.getCfg().getString("queryUser"), cfg.getCfg().getString("queryUser"),
cfg.getCfg().getString("queryPassword"), cfg.getCfg().getString("queryPassword"),
cfg.getCfg().getString("botNickname")); cfg.getCfg().getString("botNickname"));
this.serverQuery.getApi().addTS3Listeners(new QueryEvents());
} }
@Override @Override
@ -44,4 +48,12 @@ public class MainClass extends JavaPlugin {
public static MainClass getInstance() { public static MainClass getInstance() {
return INSTANCE; return INSTANCE;
} }
public ServerQuery getServerQuery() {
return serverQuery;
}
public RandomString getRandomString() {
return randomString;
}
} }

View File

@ -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);
}
}

View File

@ -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) {
}
}

View File

@ -1,9 +1,8 @@
package cf.semikolon.teamspeak; package cf.semikolon.teamspeak.query;
import com.github.theholywaffle.teamspeak3.TS3ApiAsync; import com.github.theholywaffle.teamspeak3.TS3ApiAsync;
import com.github.theholywaffle.teamspeak3.TS3Config; import com.github.theholywaffle.teamspeak3.TS3Config;
import com.github.theholywaffle.teamspeak3.TS3Query; import com.github.theholywaffle.teamspeak3.TS3Query;
import com.github.theholywaffle.teamspeak3.api.reconnect.ReconnectStrategy;
import java.util.logging.Level; import java.util.logging.Level;