- Add teleport command
- Enable ender pearls in lobby - Add /warplist
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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() {
|
||||
|
||||
81
src/de/anura/core/Teleports.java
Normal file
81
src/de/anura/core/Teleports.java
Normal 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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>
|
||||
Reference in New Issue
Block a user