- Add teleport command

- Enable ender pearls in lobby
- Add /warplist
This commit is contained in:
kaenganxt
2014-12-12 21:36:16 +01:00
parent 8a01533e0d
commit 3de5f55c85
8 changed files with 121 additions and 2 deletions

View File

@@ -1,6 +1,8 @@
package de.anura.core.API;
import de.anura.core.AnuraCore;
import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.sql.ResultSet;
import java.util.HashMap;
import java.util.Map;
@@ -241,4 +243,16 @@ public class Core {
public static Level getLevel() {
return getMainClass().level;
}
public static void kickToLobby(Player P) {
try {
ByteArrayOutputStream b = new ByteArrayOutputStream();
DataOutputStream out = new DataOutputStream(b);
out.writeUTF("Connect");
out.writeUTF("lobby");
P.sendPluginMessage(getMainClass(), "BungeeCord", b.toByteArray());
} catch (Throwable ex) {
Errors.reportException(ex);
}
}
}

View File

@@ -70,6 +70,7 @@ public class AnuraCore extends JavaPlugin {
Setup.setupTasks();
Setup.setupCommands();
this.getServer().getMessenger().registerIncomingPluginChannel(this, "BungeeCord", signs);
this.getServer().getMessenger().registerIncomingPluginChannel(this, "BungeeCord", new Teleports());
sql.queryUpdate("DELETE FROM coreServers WHERE name = '" + this.getConfig().getString("server-name") + "'");
sql.queryUpdate("INSERT INTO coreServers (name, maxPlayers) VALUES ('" + this.getConfig().getString("server-name") + "','" + this.getServer().getMaxPlayers() + "')");
} else {

View File

@@ -216,6 +216,7 @@ public class Setup {
Core.getMainClass().getCommand("toggleboat").setExecutor(pc);
Core.getMainClass().getCommand("toggleboatflight").setExecutor(tc);
Core.getMainClass().getCommand("bug").setExecutor(pc);
Core.getMainClass().getCommand("warplist").setExecutor(tc);
}
private static void setupInventories() {

View File

@@ -0,0 +1,81 @@
package de.anura.core;
import de.anura.core.API.Errors;
import java.io.ByteArrayInputStream;
import java.io.DataInputStream;
import java.util.HashMap;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.World;
import org.bukkit.entity.Player;
import org.bukkit.plugin.messaging.PluginMessageListener;
public class Teleports implements PluginMessageListener {
public final static HashMap<String, Location> queuedLocs = new HashMap<>();
@Override
public void onPluginMessageReceived(String channel, Player player, byte[] bytes) {
try {
if (!channel.equalsIgnoreCase("BungeeCord")) {
return;
}
DataInputStream in = new DataInputStream(new ByteArrayInputStream(bytes));
String subchannel = in.readUTF();
if (subchannel.equalsIgnoreCase("teleport")) {
String subsubChannel = in.readUTF();
switch (subsubChannel) {
case "player":
String p = in.readUTF();
String tar = in.readUTF();
Player P = Bukkit.getPlayer(p);
Player target = Bukkit.getPlayer(tar);
if (target == null) return;
if (P == null) {
queuedLocs.put(p, target.getLocation());
return;
}
P.teleport(target);
break;
case "coords":
String p2 = in.readUTF();
int x = in.readInt();
int y = in.readInt();
int z = in.readInt();
Player P2 = Bukkit.getPlayer(p2);
String mode = in.readUTF();
Location loc;
if (mode.equalsIgnoreCase("main-world")) {
loc = new Location(Bukkit.getWorlds().get(0), x, y, z);
} else {
loc = new Location(P2.getWorld(), x, y, z);
}
if (P2 == null) {
queuedLocs.put(p2, loc);
} else {
P2.teleport(loc);
}
break;
case "worldcoords":
String p3 = in.readUTF();
int X = in.readInt();
int Y = in.readInt();
int Z = in.readInt();
Player P3 = Bukkit.getPlayer(p3);
String world = in.readUTF();
World w = Bukkit.getWorld(world);
if (w == null) return;
Location l = new Location(w, X, Y, Z);
if (P3 == null) {
queuedLocs.put(p3, l);
} else {
P3.teleport(l);
}
break;
}
}
} catch (Throwable ex) {
Errors.reportException(ex);
}
}
}

View File

@@ -319,6 +319,13 @@ public class TeamCommands implements CommandExecutor {
Core.statusMsg(P, "no_perms", false);
return true;
}
} else if (cmd.getName().equalsIgnoreCase("warplist")) {
if (P == null) return false;
ResultSet rs = Core.getMySql().querySelect("SELECT name, userWarp FROM coreWarps WHERE server = '" + Core.getMainClass().getConfig().getString("server-name") + "'");
while (rs.next()) {
Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "tellraw " + P.getName() + " {color:\"" + (rs.getBoolean("userWarp") ? "green" : "blue") + "\",text:\"" + rs.getString("name") + "\",clickEvent:{action:run_command,value:\"/warp " + rs.getString("name") + "\"}}");
}
return true;
}
} catch(Throwable e) {
Errors.reportException(e);

View File

@@ -161,6 +161,8 @@ public class PlayerInteract implements Listener {
cancelled = false;
} else if (event.getPlayer().getItemInHand().getType().equals(Material.EXP_BOTTLE)) {
cancelled = false;
} else if (event.getPlayer().getItemInHand().getType().equals(Material.ENDER_PEARL)) {
cancelled = false;
}
}
event.setCancelled(cancelled);

View File

@@ -3,6 +3,7 @@ package de.anura.core.events;
import de.anura.core.API.Core;
import de.anura.core.API.Errors;
import de.anura.core.AnuraCore;
import de.anura.core.Teleports;
import java.sql.ResultSet;
import java.util.UUID;
@@ -24,7 +25,11 @@ public class PlayerJoin implements Listener {
ResultSet rs;
rs = AnuraCore.getSql().querySelect("SELECT name FROM players WHERE uuid LIKE '" + uuid.toString() + "'");
if (rs == null) {
event.getPlayer().kickPlayer("Please try again");
if (plugin.getConfig().getBoolean("is-main-lobby")) {
event.getPlayer().kickPlayer("Please try again");
} else {
Core.kickToLobby(event.getPlayer());
}
event.setJoinMessage(null);
return;
}
@@ -44,6 +49,11 @@ public class PlayerJoin implements Listener {
if (plugin.getConfig().getBoolean("on-join-to-spawn")) {
event.getPlayer().teleport(event.getPlayer().getWorld().getSpawnLocation());
}
String name = event.getPlayer().getName();
if (Teleports.queuedLocs.containsKey(name)) {
event.getPlayer().teleport(Teleports.queuedLocs.get(name));
Teleports.queuedLocs.remove(name);
}
} catch(Throwable e) {
Errors.reportException(e);
}

View File

@@ -90,4 +90,7 @@ commands:
usage: /<command>
bug:
description: Reports a bug and collects some server specific server data
usage: /<command> <message>...
usage: /<command> <message>...
warplist:
description: Prints a list of warps
usage: /<command>