Skip to content

Commit

Permalink
/xnick auch in der Lobby :)
Browse files Browse the repository at this point in the history
  • Loading branch information
ThexXTURBOXx committed Aug 8, 2016
1 parent 5b359e9 commit bcaf9d1
Show file tree
Hide file tree
Showing 3 changed files with 123 additions and 11 deletions.
56 changes: 45 additions & 11 deletions src/de/thexxturboxx/autonick/AutoNick.java
Original file line number Diff line number Diff line change
@@ -1,15 +1,19 @@
package de.thexxturboxx.autonick;

import java.io.File;
import java.lang.reflect.Field;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Collection;

import org.bukkit.BanList.Type;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.command.CommandMap;
import org.bukkit.craftbukkit.v1_8_R3.CraftServer;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
Expand All @@ -25,6 +29,7 @@ public class AutoNick extends JavaPlugin implements Listener {

public static AutoNick instance;
public static File path = new File("plugins/AutoNick"), dataPath;
private static CommandMap cmap;
MySQL MySQL = null;
Connection c = null;
public static final String TABLE = "AutoNick",
Expand Down Expand Up @@ -53,8 +58,20 @@ public void onEnable() {
getConfig().getString("MySQL.password"));
c = MySQL.openConnection();
Statement s = c.createStatement();
s.executeUpdate("CREATE TABLE IF NOT EXISTS " + TABLE + " (UUID VARCHAR(40) PRIMARY KEY, nicked BOOLEAN);");
s.executeUpdate("CREATE TABLE IF NOT EXISTS " + TABLE + " (UUID VARCHAR(40) PRIMARY KEY, nicked INT, name VARCHAR(40));");
}
try {
if(Bukkit.getServer() instanceof CraftServer) {
final Field f = CraftServer.class.getDeclaredField("commandMap");
f.setAccessible(true);
cmap = (CommandMap) f.get(Bukkit.getServer());
}
} catch (Exception e) {
e.printStackTrace();
}
NickCmd cmd_nick = new NickCmd(this);
cmap.register("", cmd_nick);
cmd_nick.setExecutor(new NickCmdExec(this, c.createStatement()));
getServer().getPluginManager().registerEvents(this, this);
getServer().getScheduler().scheduleSyncRepeatingTask(this, new Runnable() {
public void run() {
Expand All @@ -64,13 +81,16 @@ public void run() {
try {
Statement s = c.createStatement();
ResultSet res = s.executeQuery("SELECT * FROM " + TABLE + " WHERE UUID = '" + p.getName() + "';");
boolean nicked = false;
if(res.next()) {
nicked = res.getBoolean("nicked");
} else {
s.executeUpdate("INSERT INTO " + TABLE + " (UUID, nicked) VALUES ('" + p.getName() + "','0');");
}
p.getInventory().setItem(8, getAutoNickItem(nicked));
int nicked = 0;
if(res.next())
nicked = res.getInt("nicked");
else
s.executeUpdate("INSERT INTO " + TABLE + " (UUID, nicked, name) VALUES ('" + p.getName() + "','0','');");
if(nicked == 2) {
String name = res.getString("name");
p.getInventory().setItem(8, getAutoNickItem(name));
} else
p.getInventory().setItem(8, getAutoNickItem(nicked == 1));
} catch (SQLException e1) {
e1.printStackTrace();
}
Expand Down Expand Up @@ -127,14 +147,20 @@ public void nickSwitch(PlayerInteractEvent e) {
if(e.getAction() == Action.RIGHT_CLICK_AIR || e.getAction() == Action.RIGHT_CLICK_BLOCK) {
try {
Statement s = c.createStatement();
if(e.getPlayer().getItemInHand().isSimilar(getAutoNickItem(true))) {
ResultSet res = s.executeQuery("SELECT * FROM " + TABLE + " WHERE UUID = '" + e.getPlayer().getName() + "';");
String name = null;
if(res.next()) {
name = res.getString("name");
}
if(e.getPlayer().getItemInHand().isSimilar(getAutoNickItem(true)) ||
(name != null && e.getPlayer().getItemInHand().isSimilar(getAutoNickItem(name)))) {
e.getPlayer().getInventory().setItem(8, getAutoNickItem(false));
s.executeUpdate("UPDATE " + TABLE + " SET nicked = '0' WHERE UUID = '" + e.getPlayer().getName() + "'");
e.getPlayer().sendMessage("§7[§5NICK§7] §4AutoNick wurde §cdeaktiviert");
e.getPlayer().sendMessage(getPrefix() + "§4AutoNick wurde §cdeaktiviert");
} else if(e.getPlayer().getItemInHand().isSimilar(getAutoNickItem(false))) {
e.getPlayer().getInventory().setItem(8, getAutoNickItem(true));
s.executeUpdate("UPDATE " + TABLE + " SET nicked = '1' WHERE UUID = '" + e.getPlayer().getName() + "'");
e.getPlayer().sendMessage("§7[§5NICK§7] §4AutoNick wurde §aaktiviert");
e.getPlayer().sendMessage(getPrefix() + "§4AutoNick wurde §aaktiviert");
}
} catch (SQLException e1) {
e1.printStackTrace();
Expand All @@ -150,6 +176,14 @@ private ItemStack getAutoNickItem(boolean autoNick) {
return stack;
}

private ItemStack getAutoNickItem(String name) {
ItemStack stack = new ItemStack(Material.NAME_TAG);
ItemMeta im = stack.getItemMeta();
im.setDisplayName("§6AutoNick: " + "§a" + name);
stack.setItemMeta(im);
return stack;
}

private String booleanToString(boolean b) {
if(b) {
return "§aeingeschaltet";
Expand Down
31 changes: 31 additions & 0 deletions src/de/thexxturboxx/autonick/NickCmd.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package de.thexxturboxx.autonick;

import java.util.Arrays;

import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;

public class NickCmd extends Command {

AutoNick plugin;
CommandExecutor exe = null;

public NickCmd(AutoNick plugin) {
super("xnick", "Sich einen Nickname reservieren", "/xnick <Name>", Arrays.asList(new String[]{}));
this.plugin = plugin;
}

@Override
public boolean execute(CommandSender sender, String commandLabel, String[] args) {
if(exe != null) {
return exe.onCommand(sender, this, commandLabel, args);
}
return false;
}

public void setExecutor(CommandExecutor exe){
this.exe = exe;
}

}
47 changes: 47 additions & 0 deletions src/de/thexxturboxx/autonick/NickCmdExec.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
package de.thexxturboxx.autonick;

import java.sql.SQLException;
import java.sql.Statement;

import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;

public class NickCmdExec implements CommandExecutor {

AutoNick plugin;
Statement s;

public NickCmdExec(AutoNick plugin, Statement s) {
this.plugin = plugin;
this.s = s;
}

@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
if(sender instanceof Player) {
Player p = (Player) sender;
if(p.hasPermission("nick.cmd.nick")) {
if(args.length == 1) {
try {
s.executeUpdate("UPDATE " + AutoNick.TABLE + " SET nicked = '2' WHERE UUID = '" + p.getName() + "'");
s.executeUpdate("UPDATE " + AutoNick.TABLE + " SET name = '" + args[0] + "' WHERE UUID = '" + p.getName() + "'");
p.sendMessage(AutoNick.getPrefix() + ChatColor.DARK_RED + "Du wirst als " + ChatColor.GOLD + args[0] + ChatColor.DARK_RED + " spielen!");
} catch (SQLException e) {
e.printStackTrace();
}
} else {
p.sendMessage(AutoNick.getPrefix() + ChatColor.DARK_RED + "Nutze /xnick <Name>");
}
} else {
p.sendMessage(AutoNick.getPrefix() + ChatColor.DARK_RED + "Dazu hast du keine Erlaubnis!");
}
} else {
plugin.getServer().getLogger().info("Das kann nur ein Spieler machen, du Schlingel ;)");
}
return true;
}

}

0 comments on commit bcaf9d1

Please sign in to comment.