Implement new error handler and bug reporting system
This commit is contained in:
@@ -2,7 +2,6 @@ package de.anura.core.API;
|
||||
|
||||
import de.anura.core.AnuraCore;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
@@ -27,6 +26,9 @@ public class Core {
|
||||
* @return The working MySQL Object
|
||||
*/
|
||||
public static MySQL getMySql() {
|
||||
if (AnuraCore.getSql() == null) {
|
||||
return null;
|
||||
}
|
||||
if (!AnuraCore.getSql().isValid) {
|
||||
return null;
|
||||
}
|
||||
@@ -111,21 +113,23 @@ public class Core {
|
||||
* @return Returns the short language name of the player (like de or en)
|
||||
*/
|
||||
public static String getPlayerLang(CommandSender P) {
|
||||
if (!(P instanceof Player)) {
|
||||
return "en";
|
||||
}
|
||||
Player p = (Player) P;
|
||||
if (!Core.cachedPlayerLanguage.containsKey(p)) {
|
||||
ResultSet rs = AnuraCore.sql.querySelect("SELECT lang FROM players WHERE uuid = '" + p.getUniqueId().toString() + "'");
|
||||
try {
|
||||
rs.first();
|
||||
Core.cachedPlayerLanguage.put(p, rs.getString("lang"));
|
||||
return rs.getString("lang");
|
||||
} catch (SQLException ex) {
|
||||
System.out.println("SQLException in getPlayerLang of API: " + ex.getLocalizedMessage());
|
||||
try {
|
||||
if (!(P instanceof Player)) {
|
||||
return "en";
|
||||
}
|
||||
} else {
|
||||
return Core.cachedPlayerLanguage.get(p);
|
||||
Player p = (Player) P;
|
||||
if (!Core.cachedPlayerLanguage.containsKey(p)) {
|
||||
ResultSet rs = AnuraCore.sql.querySelect("SELECT lang FROM players WHERE uuid = '" + p.getUniqueId().toString() + "'");
|
||||
|
||||
rs.first();
|
||||
Core.cachedPlayerLanguage.put(p, rs.getString("lang"));
|
||||
return rs.getString("lang");
|
||||
|
||||
} else {
|
||||
return Core.cachedPlayerLanguage.get(p);
|
||||
}
|
||||
} catch (Throwable e) {
|
||||
Errors.reportException(e);
|
||||
}
|
||||
return "en";
|
||||
}
|
||||
@@ -187,23 +191,27 @@ public class Core {
|
||||
}
|
||||
|
||||
public static void endSitting(Player P) {
|
||||
if (getMainClass().sittingPlayer.containsKey(P)) {
|
||||
MaterialData md = getMainClass().sittingBlocks.get(P).getState().getData();
|
||||
if (md instanceof Stairs) {
|
||||
Stairs s = (Stairs) md;
|
||||
Location loc = getMainClass().sittingBlocks.get(P).getRelative(s.getFacing()).getLocation();
|
||||
Entity a = (Entity) getMainClass().sittingPlayer.get(P);
|
||||
P.teleport(loc);
|
||||
a.remove();
|
||||
getMainClass().sittingPlayer.remove(P);
|
||||
getMainClass().sittingBlocks.remove(P);
|
||||
} else {
|
||||
Location loc = getMainClass().sittingPlayer.get(P).getLocation();
|
||||
P.teleport(loc);
|
||||
getMainClass().sittingPlayer.get(P).remove();
|
||||
getMainClass().sittingPlayer.remove(P);
|
||||
getMainClass().sittingBlocks.remove(P);
|
||||
try {
|
||||
if (getMainClass().sittingPlayer.containsKey(P)) {
|
||||
MaterialData md = getMainClass().sittingBlocks.get(P).getState().getData();
|
||||
if (md instanceof Stairs) {
|
||||
Stairs s = (Stairs) md;
|
||||
Location loc = getMainClass().sittingBlocks.get(P).getRelative(s.getFacing()).getLocation();
|
||||
Entity a = (Entity) getMainClass().sittingPlayer.get(P);
|
||||
P.teleport(loc);
|
||||
a.remove();
|
||||
getMainClass().sittingPlayer.remove(P);
|
||||
getMainClass().sittingBlocks.remove(P);
|
||||
} else {
|
||||
Location loc = getMainClass().sittingPlayer.get(P).getLocation();
|
||||
P.teleport(loc);
|
||||
getMainClass().sittingPlayer.get(P).remove();
|
||||
getMainClass().sittingPlayer.remove(P);
|
||||
getMainClass().sittingBlocks.remove(P);
|
||||
}
|
||||
}
|
||||
} catch (Throwable e) {
|
||||
Errors.reportException(e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
58
src/de/anura/core/API/Errors.java
Normal file
58
src/de/anura/core/API/Errors.java
Normal file
@@ -0,0 +1,58 @@
|
||||
package de.anura.core.API;
|
||||
|
||||
import java.sql.ResultSet;
|
||||
import java.util.AbstractMap;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.UUID;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
public class Errors {
|
||||
|
||||
public static void reportException(Throwable exc, String info) {
|
||||
if (Core.getMySql() == null) {
|
||||
System.err.println("FATAL ERROR: Error handler fired before init of mysql connection!!");
|
||||
return;
|
||||
}
|
||||
try {
|
||||
String message = exc.getLocalizedMessage();
|
||||
String name = exc.getClass().toString();
|
||||
String server = Core.getMainClass() == null ? "~not available~" : Core.getMainClass().getConfig().getString("server-name");
|
||||
String errorSql = "INSERT INTO coreErrors (server, exception, msg, info, timestamp) VALUES('" + server + "', '" + name + "', '" + message + "', '" + info + "', '" + System.currentTimeMillis() / 1000 + "')";
|
||||
Core.getMySql().queryUpdate(errorSql);
|
||||
ResultSet rs = Core.getMySql().querySelect("SELECT id FROM coreErrors ORDER BY id DESC LIMIT 1");
|
||||
rs.first();
|
||||
int id = rs.getInt("id");
|
||||
String elemSql = "INSERT INTO coreErrorStack(errorId, className, fileName, methodName, lineNumber, nativeMethod) VALUES";
|
||||
boolean first = true;
|
||||
for(StackTraceElement elem : exc.getStackTrace()) {
|
||||
if (!first) {
|
||||
elemSql += ",";
|
||||
} else {
|
||||
first = false;
|
||||
}
|
||||
elemSql += "('" + id + "', '" + elem.getClassName() + "', '" + elem.getFileName() + "', '" + elem.getMethodName() + "', '" + elem.getLineNumber() + "', " + elem.isNativeMethod() + ")";
|
||||
}
|
||||
Core.getMySql().queryUpdate(elemSql);
|
||||
} catch (Throwable ex) {
|
||||
System.err.println("FATAL ERROR: Error handler generated an exception!! (" + ex.getLocalizedMessage() + ")");
|
||||
ex.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
public static void reportException(Throwable exc) {
|
||||
reportException(exc, "");
|
||||
}
|
||||
|
||||
public static void bugReport(Player P, String msg, Entry<String, Object>... data) {
|
||||
UUID uuid = P.getUniqueId();
|
||||
String dataText = "";
|
||||
for(Entry<String, Object> date : data) {
|
||||
dataText += date.getKey() + ":" + date.getValue().toString() + ";";
|
||||
}
|
||||
Core.getMySql().queryUpdate("INSERT INTO serverBugs(player, msg, data, timestamp) VALUES ((SELECT id FROM players WHERE uuid = '" + uuid.toString() + "'), '" + msg + "', '" + dataText + "', '" + System.currentTimeMillis() / 1000 + "')");
|
||||
}
|
||||
|
||||
public static Entry<String, Object> make(String key, Object value) {
|
||||
return new AbstractMap.SimpleEntry<>(key, value);
|
||||
}
|
||||
}
|
||||
@@ -3,7 +3,6 @@ package de.anura.core.API;
|
||||
import de.anura.core.AnuraCore;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.DataOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.util.AbstractMap;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
@@ -192,34 +191,34 @@ public class Inventories implements Listener {
|
||||
itemActions.put(type, new AbstractMap.SimpleEntry<>(action, data));
|
||||
}
|
||||
|
||||
public static void executeAction(Player P, Action action, Object data) {
|
||||
if (action == Action.SERVER) {
|
||||
try {
|
||||
public static void executeAction(Player P, Action action, Object data) {
|
||||
try {
|
||||
if (action == Action.SERVER) {
|
||||
ByteArrayOutputStream b = new ByteArrayOutputStream();
|
||||
DataOutputStream out = new DataOutputStream(b);
|
||||
out.writeUTF("Connect");
|
||||
out.writeUTF((String) data);
|
||||
P.sendPluginMessage(AnuraCore.getInstance(), "BungeeCord", b.toByteArray());
|
||||
} catch (IOException ex) {
|
||||
System.err.println("IOException whilst trying to connect to " + data);
|
||||
} else if (action == Action.MESSAGE) {
|
||||
Core.statusMsg(P, (String) data, true);
|
||||
} else if (action == Action.OPEN_INV) {
|
||||
P.openInventory(getInventory((String) data, P));
|
||||
} else if (action == Action.TELEPORT) {
|
||||
P.teleport((Location) data);
|
||||
} else if (action == Action.COMMAND) {
|
||||
Bukkit.getServer().dispatchCommand(P, (String) data);
|
||||
} else if (action == Action.LANGUAGE) {
|
||||
String lang = (String) data;
|
||||
Core.cachedPlayerLanguage.put(P, lang);
|
||||
AnuraCore.sql.queryUpdate("UPDATE players SET lang = '" + lang + "' WHERE uuid = '" + P.getUniqueId().toString() + "'");
|
||||
PlayerInventory pi = P.getInventory();
|
||||
for (Entry<String, Integer> item : itemPositions.entrySet()) {
|
||||
pi.setItem(item.getValue(), getItem(item.getKey(), P));
|
||||
}
|
||||
Core.statusMsg(P, "lang_changed", true);
|
||||
}
|
||||
} else if (action == Action.MESSAGE) {
|
||||
Core.statusMsg(P, (String) data, true);
|
||||
} else if (action == Action.OPEN_INV) {
|
||||
P.openInventory(getInventory((String) data, P));
|
||||
} else if (action == Action.TELEPORT) {
|
||||
P.teleport((Location) data);
|
||||
} else if (action == Action.COMMAND) {
|
||||
Bukkit.getServer().dispatchCommand(P, (String) data);
|
||||
} else if (action == Action.LANGUAGE) {
|
||||
String lang = (String) data;
|
||||
Core.cachedPlayerLanguage.put(P, lang);
|
||||
AnuraCore.sql.queryUpdate("UPDATE players SET lang = '" + lang + "' WHERE uuid = '" + P.getUniqueId().toString() + "'");
|
||||
PlayerInventory pi = P.getInventory();
|
||||
for (Entry<String, Integer> item : itemPositions.entrySet()) {
|
||||
pi.setItem(item.getValue(), getItem(item.getKey(), P));
|
||||
}
|
||||
Core.statusMsg(P, "lang_changed", true);
|
||||
} catch(Throwable e) {
|
||||
Errors.reportException(e);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -235,57 +234,65 @@ public class Inventories implements Listener {
|
||||
|
||||
@EventHandler
|
||||
public void onInvClick(InventoryClickEvent event) {
|
||||
if (checkInteracts.containsKey((Player) event.getWhoClicked()) && !checkInteracts.get((Player) event.getWhoClicked())) {
|
||||
return;
|
||||
}
|
||||
final Player player = (Player) event.getWhoClicked();
|
||||
Inventory inventory = event.getClickedInventory();
|
||||
if (inventory == null) return;
|
||||
String invName = inventory.getName();
|
||||
if (invNames.containsKey(invName)) {
|
||||
event.setCancelled(true);
|
||||
player.setItemOnCursor(new ItemStack(Material.AIR));
|
||||
player.updateInventory();
|
||||
if (invActions.get(invNames.get(invName)).containsKey(event.getSlot())) {
|
||||
player.closeInventory();
|
||||
Entry<Action, Object> action = invActions.get(invNames.get(invName)).get(event.getSlot());
|
||||
executeAction(player, action.getKey(), action.getValue());
|
||||
} else {
|
||||
Bukkit.getScheduler().scheduleSyncDelayedTask(AnuraCore.getInstance(), new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
player.setItemOnCursor(new ItemStack(Material.AIR));
|
||||
player.updateInventory();
|
||||
}
|
||||
}, 1);
|
||||
try {
|
||||
if (checkInteracts.containsKey((Player) event.getWhoClicked()) && !checkInteracts.get((Player) event.getWhoClicked())) {
|
||||
return;
|
||||
}
|
||||
} else if (invNames.containsKey(event.getInventory().getName())) {
|
||||
event.setCancelled(true);
|
||||
player.setItemOnCursor(new ItemStack(Material.AIR));
|
||||
player.updateInventory();
|
||||
final Player player = (Player) event.getWhoClicked();
|
||||
Inventory inventory = event.getClickedInventory();
|
||||
if (inventory == null) return;
|
||||
String invName = inventory.getName();
|
||||
if (invNames.containsKey(invName)) {
|
||||
event.setCancelled(true);
|
||||
player.setItemOnCursor(new ItemStack(Material.AIR));
|
||||
player.updateInventory();
|
||||
if (invActions.get(invNames.get(invName)).containsKey(event.getSlot())) {
|
||||
player.closeInventory();
|
||||
Entry<Action, Object> action = invActions.get(invNames.get(invName)).get(event.getSlot());
|
||||
executeAction(player, action.getKey(), action.getValue());
|
||||
} else {
|
||||
Bukkit.getScheduler().scheduleSyncDelayedTask(AnuraCore.getInstance(), new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
player.setItemOnCursor(new ItemStack(Material.AIR));
|
||||
player.updateInventory();
|
||||
}
|
||||
}, 1);
|
||||
}
|
||||
} else if (invNames.containsKey(event.getInventory().getName())) {
|
||||
event.setCancelled(true);
|
||||
player.setItemOnCursor(new ItemStack(Material.AIR));
|
||||
player.updateInventory();
|
||||
}
|
||||
} catch(Throwable e) {
|
||||
Errors.reportException(e);
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onPlayerInteract(PlayerInteractEvent event) {
|
||||
if (checkInteracts.containsKey((Player) event.getPlayer()) && !checkInteracts.get((Player) event.getPlayer())) {
|
||||
return;
|
||||
}
|
||||
if (event.hasItem()) {
|
||||
if (event.getAction().equals(org.bukkit.event.block.Action.RIGHT_CLICK_AIR) || event.getAction().equals(org.bukkit.event.block.Action.RIGHT_CLICK_BLOCK)) {
|
||||
final Player P = event.getPlayer();
|
||||
String type = itemNames.get(P.getItemInHand().getItemMeta().getDisplayName());
|
||||
if (itemActions.containsKey(type)) {
|
||||
event.setCancelled(true);
|
||||
executeAction(P, itemActions.get(type).getKey(), itemActions.get(type).getValue());
|
||||
Bukkit.getScheduler().scheduleSyncDelayedTask(AnuraCore.getInstance(), new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
P.updateInventory();
|
||||
}
|
||||
}, 1);
|
||||
try {
|
||||
if (checkInteracts.containsKey((Player) event.getPlayer()) && !checkInteracts.get((Player) event.getPlayer())) {
|
||||
return;
|
||||
}
|
||||
if (event.hasItem()) {
|
||||
if (event.getAction().equals(org.bukkit.event.block.Action.RIGHT_CLICK_AIR) || event.getAction().equals(org.bukkit.event.block.Action.RIGHT_CLICK_BLOCK)) {
|
||||
final Player P = event.getPlayer();
|
||||
String type = itemNames.get(P.getItemInHand().getItemMeta().getDisplayName());
|
||||
if (itemActions.containsKey(type)) {
|
||||
event.setCancelled(true);
|
||||
executeAction(P, itemActions.get(type).getKey(), itemActions.get(type).getValue());
|
||||
Bukkit.getScheduler().scheduleSyncDelayedTask(AnuraCore.getInstance(), new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
P.updateInventory();
|
||||
}
|
||||
}, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch(Throwable e) {
|
||||
Errors.reportException(e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
package de.anura.core.API;
|
||||
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.util.HashMap;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Statistic;
|
||||
@@ -14,19 +13,23 @@ public final class Level {
|
||||
private static final HashMap<Player, Integer> ffLevel = new HashMap<>();
|
||||
|
||||
public Level() {
|
||||
for (Player P : Bukkit.getOnlinePlayers()) {
|
||||
Core.getMainClass().joinTime.put(P, (int) (System.currentTimeMillis() / 1000));
|
||||
Core.getMainClass().aimTheWaterWins.put(P, 0);
|
||||
}
|
||||
loadLevelAll();
|
||||
Bukkit.getScheduler().scheduleSyncRepeatingTask(Core.getMainClass(), new Runnable() {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
update();
|
||||
try {
|
||||
for (Player P : Bukkit.getOnlinePlayers()) {
|
||||
Core.getMainClass().joinTime.put(P, (int) (System.currentTimeMillis() / 1000));
|
||||
Core.getMainClass().aimTheWaterWins.put(P, 0);
|
||||
}
|
||||
loadLevelAll();
|
||||
Bukkit.getScheduler().scheduleSyncRepeatingTask(Core.getMainClass(), new Runnable() {
|
||||
|
||||
}, 20 * 60, 20 * 60);
|
||||
@Override
|
||||
public void run() {
|
||||
update();
|
||||
}
|
||||
|
||||
}, 20 * 60, 20 * 60);
|
||||
} catch(Throwable e) {
|
||||
Errors.reportException(e);
|
||||
}
|
||||
}
|
||||
|
||||
public void saveStuffAll() {
|
||||
@@ -61,8 +64,8 @@ public final class Level {
|
||||
anuraLevel.put(P, (int) rs.getDouble("level"));
|
||||
smashLevel.put(P, rs.getInt("smashLevel"));
|
||||
ffLevel.put(P, rs.getInt("ffLevel"));
|
||||
} catch (SQLException ex) {
|
||||
System.err.println("Error whilst loading player level");
|
||||
} catch(Throwable e) {
|
||||
Errors.reportException(e);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -71,18 +74,18 @@ public final class Level {
|
||||
update(P);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void update(Player P) {
|
||||
if (!anuraLevel.containsKey(P)) {
|
||||
return;
|
||||
}
|
||||
saveStuff(P);
|
||||
try {
|
||||
if (!anuraLevel.containsKey(P)) {
|
||||
return;
|
||||
}
|
||||
saveStuff(P);
|
||||
String whereClause = " = (SELECT id FROM players WHERE uuid = '" + P.getUniqueId().toString() + "')";
|
||||
ResultSet stats = Core.getMySql().querySelect("SELECT * FROM coreStats WHERE player" + whereClause);
|
||||
ResultSet features = Core.getMySql().querySelect("SELECT count(*) as features FROM coreFeatures WHERE playerId" + whereClause);
|
||||
ResultSet pots = Core.getMySql().querySelect("SELECT count(*) as pots FROM coreFoundPots WHERE player" + whereClause);
|
||||
ResultSet stages = Core.getMySql().querySelect("SELECT count(*) as stages FROM jumpUsers WHERE userId" + whereClause);
|
||||
ResultSet stages = Core.getMySql().querySelect("SELECT count(*) as stages FROM jumpUsers WHERE playerId" + whereClause);
|
||||
ResultSet smashClasses = Core.getMySql().querySelect("SELECT count(*) as classes FROM smashClasses WHERE playerId" + whereClause);
|
||||
stats.first();
|
||||
features.first();
|
||||
@@ -105,8 +108,8 @@ public final class Level {
|
||||
anuraLevel.put(P, (int) level);
|
||||
smashLevel.put(P, (int) sLevel);
|
||||
Core.getMySql().queryUpdate("UPDATE coreStats SET level = '" + level + "', smashLevel = '" + sLevel + "' WHERE player" + whereClause);
|
||||
} catch (SQLException ex) {
|
||||
System.err.println("SQLException whilst updating player level (" + ex.getLocalizedMessage() + ")");
|
||||
} catch(Throwable e) {
|
||||
Errors.reportException(e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
package de.anura.core.API;
|
||||
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.util.HashMap;
|
||||
import org.bukkit.OfflinePlayer;
|
||||
|
||||
@@ -27,13 +26,13 @@ public class Money {
|
||||
}
|
||||
|
||||
public static boolean loadMoney(OfflinePlayer P) {
|
||||
ResultSet rs = Core.getMySql().querySelect("SELECT money FROM coreStats WHERE player = (SELECT id FROM players WHERE uuid = '" + P.getUniqueId().toString() + "')");
|
||||
try {
|
||||
ResultSet rs = Core.getMySql().querySelect("SELECT money FROM coreStats WHERE player = (SELECT id FROM players WHERE uuid = '" + P.getUniqueId().toString() + "')");
|
||||
rs.first();
|
||||
playerMoney.put(P, rs.getInt("money"));
|
||||
return true;
|
||||
} catch (SQLException ex) {
|
||||
System.err.println("Could not load money for player " + P.getName());
|
||||
} catch(Throwable e) {
|
||||
Errors.reportException(e);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -40,7 +40,8 @@ public class MySQL {
|
||||
cfg.options().copyDefaults(true);
|
||||
try {
|
||||
cfg.save(file);
|
||||
} catch (IOException e) {
|
||||
} catch(Throwable e) {
|
||||
Errors.reportException(e);
|
||||
}
|
||||
this.host = cfg.getString(dbLoc + "host");
|
||||
this.port = cfg.getInt(dbLoc + "port");
|
||||
@@ -65,9 +66,10 @@ public class MySQL {
|
||||
Connection connLoc = DriverManager.getConnection("jdbc:mysql://" + this.host + ":" + this.port + "/" + this.db, this.username, this.pw);
|
||||
this.conn = connLoc;
|
||||
return true;
|
||||
} catch (ClassNotFoundException | SQLException e) {
|
||||
return false;
|
||||
} catch(Throwable e) {
|
||||
Errors.reportException(e);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private boolean hasConnection() {
|
||||
@@ -79,9 +81,10 @@ public class MySQL {
|
||||
validConn = false;
|
||||
}
|
||||
return validConn;
|
||||
} catch (SQLException e) {
|
||||
return false;
|
||||
} catch(Throwable e) {
|
||||
Errors.reportException(e);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private Boolean reconnect() {
|
||||
@@ -128,8 +131,8 @@ public class MySQL {
|
||||
try {
|
||||
st = connLoc.prepareStatement(query);
|
||||
st.executeUpdate();
|
||||
} catch (SQLException e) {
|
||||
System.err.println("Failed to send Update '" + query + "'! (" + e.getLocalizedMessage() + ")");
|
||||
} catch(Throwable e) {
|
||||
Errors.reportException(e);
|
||||
}
|
||||
this.closeRessources(null, st);
|
||||
}
|
||||
@@ -147,8 +150,8 @@ public class MySQL {
|
||||
} else {
|
||||
return returns;
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
System.err.println("Unknown error whilst trying to build Prepared Statement!");
|
||||
} catch(Throwable e) {
|
||||
Errors.reportException(e);
|
||||
queryRedo(query, "select");
|
||||
}
|
||||
return null;
|
||||
@@ -161,28 +164,23 @@ public class MySQL {
|
||||
ResultSet rs;
|
||||
try {
|
||||
rs = st.executeQuery();
|
||||
} catch (SQLException e) {
|
||||
System.err.println("Failed to send 'SELECT'-Query!(" + st.toString() + ") Will try to reconnect to database just in case... you know...");
|
||||
System.err.println("Caused by: " + e.getMessage());
|
||||
} catch(Throwable e) {
|
||||
Errors.reportException(e);
|
||||
return null;
|
||||
}
|
||||
return rs;
|
||||
}
|
||||
|
||||
private void closeRessources(ResultSet rs, PreparedStatement st) {
|
||||
if (rs != null) {
|
||||
try {
|
||||
try {
|
||||
if (rs != null) {
|
||||
rs.close();
|
||||
} catch (SQLException e) {
|
||||
|
||||
}
|
||||
}
|
||||
if (st != null) {
|
||||
try {
|
||||
if (st != null) {
|
||||
st.close();
|
||||
} catch (SQLException e) {
|
||||
|
||||
}
|
||||
}
|
||||
} catch(Throwable e) {
|
||||
Errors.reportException(e);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -191,7 +189,8 @@ public class MySQL {
|
||||
if (this.conn != null) {
|
||||
this.conn.close();
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
} catch (Throwable e) {
|
||||
Errors.reportException(e);
|
||||
} finally {
|
||||
this.conn = null;
|
||||
}
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
package de.anura.core;
|
||||
|
||||
import de.anura.core.API.Core;
|
||||
import de.anura.core.API.Errors;
|
||||
import de.anura.core.API.Level;
|
||||
import de.anura.core.API.Money;
|
||||
import de.anura.core.API.MySQL;
|
||||
import de.anura.core.API.Tools;
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import org.bukkit.Bukkit;
|
||||
@@ -50,52 +50,57 @@ public class AnuraCore extends JavaPlugin {
|
||||
|
||||
@Override
|
||||
public void onEnable() {
|
||||
AnuraCore.sql = new MySQL(this);
|
||||
AnuraCore.instance = this;
|
||||
if (AnuraCore.sql.isValid) {
|
||||
if (AnuraCore.getInstance().getConfig().getBoolean("is-main-lobby")) {
|
||||
for (World w : Bukkit.getWorlds()) {
|
||||
for (Entity e : w.getEntities()) {
|
||||
if (e.getType().equals(EntityType.BOAT)) {
|
||||
e.remove();
|
||||
try {
|
||||
AnuraCore.sql = new MySQL(this);
|
||||
AnuraCore.instance = this;
|
||||
if (AnuraCore.sql.isValid) {
|
||||
if (AnuraCore.getInstance().getConfig().getBoolean("is-main-lobby")) {
|
||||
for (World w : Bukkit.getWorlds()) {
|
||||
for (Entity e : w.getEntities()) {
|
||||
if (e.getType().equals(EntityType.BOAT)) {
|
||||
e.remove();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
this.getServer().getMessenger().registerOutgoingPluginChannel(this, "BungeeCord");
|
||||
Setup.setupConfig();
|
||||
Setup.setupEvents();
|
||||
Setup.setupClasses();
|
||||
Setup.setupTasks();
|
||||
Setup.setupCommands();
|
||||
this.getServer().getMessenger().registerIncomingPluginChannel(this, "BungeeCord", signs);
|
||||
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 {
|
||||
Bukkit.getPluginManager().disablePlugin(this);
|
||||
}
|
||||
this.getServer().getMessenger().registerOutgoingPluginChannel(this, "BungeeCord");
|
||||
Setup.setupConfig();
|
||||
Setup.setupEvents();
|
||||
Setup.setupClasses();
|
||||
Setup.setupTasks();
|
||||
Setup.setupCommands();
|
||||
this.getServer().getMessenger().registerIncomingPluginChannel(this, "BungeeCord", signs);
|
||||
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 {
|
||||
Bukkit.getPluginManager().disablePlugin(this);
|
||||
} catch (Throwable e) {
|
||||
Errors.reportException(e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDisable() {
|
||||
if (!AnuraCore.sql.isValid) {
|
||||
return;
|
||||
}
|
||||
for (Player P : getServer().getOnlinePlayers()) {
|
||||
Money.saveMoney(P);
|
||||
}
|
||||
File configFile = new File("plugins/Core/", "config.yml");
|
||||
File dbFile = new File("plugins/Core", "database.yml");
|
||||
try {
|
||||
if (!AnuraCore.sql.isValid) {
|
||||
return;
|
||||
}
|
||||
for (Player P : getServer().getOnlinePlayers()) {
|
||||
Money.saveMoney(P);
|
||||
}
|
||||
File configFile = new File("plugins/Core/", "config.yml");
|
||||
File dbFile = new File("plugins/Core", "database.yml");
|
||||
AnuraCore.sql.config.save(dbFile);
|
||||
this.getConfig().save(configFile);
|
||||
} catch (IOException e) {
|
||||
}
|
||||
sql.queryUpdate("DELETE FROM coreServers WHERE name = '" + this.getConfig().getString("server-name") + "'");
|
||||
features.reset();
|
||||
level.update();
|
||||
for (Player P : this.sittingPlayer.keySet()) {
|
||||
Core.endSitting(P);
|
||||
sql.queryUpdate("DELETE FROM coreServers WHERE name = '" + this.getConfig().getString("server-name") + "'");
|
||||
features.reset();
|
||||
level.update();
|
||||
for (Player P : this.sittingPlayer.keySet()) {
|
||||
Core.endSitting(P);
|
||||
}
|
||||
} catch (Throwable e) {
|
||||
Errors.reportException(e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
package de.anura.core;
|
||||
|
||||
import de.anura.core.API.Core;
|
||||
import de.anura.core.API.Errors;
|
||||
import de.anura.core.API.Inventories;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.UUID;
|
||||
@@ -56,10 +56,10 @@ public class Features implements Listener {
|
||||
public static ArrayList<UUID> wantFlight = new ArrayList<>();
|
||||
|
||||
public void updateFeatures(Player P) {
|
||||
if (!mainLobby()) {
|
||||
return;
|
||||
}
|
||||
try {
|
||||
if (!mainLobby()) {
|
||||
return;
|
||||
}
|
||||
ResultSet rs = Core.getMySql().querySelect("SELECT featureId FROM coreFeatures WHERE playerId = (SELECT id FROM players WHERE uuid = '" + P.getUniqueId().toString() + "')");
|
||||
resetPlayerFeatures(P);
|
||||
playerFeatures.put(P, new ArrayList<Feature>());
|
||||
@@ -75,8 +75,8 @@ public class Features implements Listener {
|
||||
featureEnabled.get(P).put(Feature.getById(rs.getInt("featureId")), true);
|
||||
}
|
||||
}
|
||||
} catch (SQLException ex) {
|
||||
System.err.println("Could not update player features because of a sql exception: " + ex.getLocalizedMessage());
|
||||
} catch (Throwable e) {
|
||||
Errors.reportException(e);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -96,50 +96,58 @@ public class Features implements Listener {
|
||||
}
|
||||
|
||||
public void disableFeature(Player P, Feature f) {
|
||||
if (!mainLobby()) {
|
||||
return;
|
||||
}
|
||||
if (f == Feature.DOUBLE_JUMP) {
|
||||
if (!hasFeature(P, f)) {
|
||||
Core.statusMsg(P, "dont_have_dbl_jump", false);
|
||||
try {
|
||||
if (!mainLobby()) {
|
||||
return;
|
||||
}
|
||||
featureEnabled.get(P).put(f, false);
|
||||
canDoubleJump.put(P, false);
|
||||
Core.statusMsg(P, "dbl_jump_off", true);
|
||||
P.setExp(0);
|
||||
if (P.getGameMode() != GameMode.CREATIVE) {
|
||||
P.setAllowFlight(false);
|
||||
if (f == Feature.DOUBLE_JUMP) {
|
||||
if (!hasFeature(P, f)) {
|
||||
Core.statusMsg(P, "dont_have_dbl_jump", false);
|
||||
return;
|
||||
}
|
||||
featureEnabled.get(P).put(f, false);
|
||||
canDoubleJump.put(P, false);
|
||||
Core.statusMsg(P, "dbl_jump_off", true);
|
||||
P.setExp(0);
|
||||
if (P.getGameMode() != GameMode.CREATIVE) {
|
||||
P.setAllowFlight(false);
|
||||
}
|
||||
} else if (f == Feature.BOAT) {
|
||||
if (!hasFeature(P, f)) {
|
||||
Core.statusMsg(P, "dont_have_boats", false);
|
||||
}
|
||||
featureEnabled.get(P).put(f, false);
|
||||
Core.statusMsg(P, "boat_off", true);
|
||||
}
|
||||
} else if (f == Feature.BOAT) {
|
||||
if (!hasFeature(P, f)) {
|
||||
Core.statusMsg(P, "dont_have_boats", false);
|
||||
}
|
||||
featureEnabled.get(P).put(f, false);
|
||||
Core.statusMsg(P, "boat_off", true);
|
||||
} catch (Throwable e) {
|
||||
Errors.reportException(e);
|
||||
}
|
||||
}
|
||||
|
||||
public void enableFeature(Player P, Feature f) {
|
||||
if (!mainLobby()) {
|
||||
return;
|
||||
}
|
||||
if (f == Feature.DOUBLE_JUMP) {
|
||||
if (!hasFeature(P, f)) {
|
||||
Core.statusMsg(P, "dont_have_dbl_jump", false);
|
||||
try {
|
||||
if (!mainLobby()) {
|
||||
return;
|
||||
}
|
||||
featureEnabled.get(P).put(f, true);
|
||||
P.setAllowFlight(true);
|
||||
P.setExp(1);
|
||||
canDoubleJump.put(P, true);
|
||||
Core.statusMsg(P, "dbl_jump_on", true);
|
||||
} else if (f == Feature.BOAT) {
|
||||
if (!hasFeature(P, f)) {
|
||||
Core.statusMsg(P, "dont_have_boats", false);
|
||||
if (f == Feature.DOUBLE_JUMP) {
|
||||
if (!hasFeature(P, f)) {
|
||||
Core.statusMsg(P, "dont_have_dbl_jump", false);
|
||||
return;
|
||||
}
|
||||
featureEnabled.get(P).put(f, true);
|
||||
P.setAllowFlight(true);
|
||||
P.setExp(1);
|
||||
canDoubleJump.put(P, true);
|
||||
Core.statusMsg(P, "dbl_jump_on", true);
|
||||
} else if (f == Feature.BOAT) {
|
||||
if (!hasFeature(P, f)) {
|
||||
Core.statusMsg(P, "dont_have_boats", false);
|
||||
}
|
||||
featureEnabled.get(P).put(f, true);
|
||||
Core.statusMsg(P, "boat_on", true);
|
||||
}
|
||||
featureEnabled.get(P).put(f, true);
|
||||
Core.statusMsg(P, "boat_on", true);
|
||||
} catch (Throwable e) {
|
||||
Errors.reportException(e);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -198,63 +206,79 @@ public class Features implements Listener {
|
||||
|
||||
@EventHandler
|
||||
public void onPlayerMove(PlayerMoveEvent event) {
|
||||
if (!mainLobby()) {
|
||||
return;
|
||||
}
|
||||
Player P = event.getPlayer();
|
||||
if (this.hasFeature(P, Feature.DOUBLE_JUMP)) {
|
||||
if (this.canDoubleJump.containsKey(P) && !this.canDoubleJump.get(P) && ((Entity) P).isOnGround() && this.featureEnabled.get(P).get(Feature.DOUBLE_JUMP)) {
|
||||
this.canDoubleJump.put(P, true);
|
||||
P.setExp(1);
|
||||
try {
|
||||
if (!mainLobby()) {
|
||||
return;
|
||||
}
|
||||
Player P = event.getPlayer();
|
||||
if (this.hasFeature(P, Feature.DOUBLE_JUMP)) {
|
||||
if (this.canDoubleJump.containsKey(P) && !this.canDoubleJump.get(P) && ((Entity) P).isOnGround() && this.featureEnabled.get(P).get(Feature.DOUBLE_JUMP)) {
|
||||
this.canDoubleJump.put(P, true);
|
||||
P.setExp(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (this.hasFeature(P, Feature.BOAT) && featureEnabled.get(P).get(Feature.BOAT)) {
|
||||
if (P.getLocation().getBlock().getType().equals(Material.STATIONARY_WATER) && P.getVehicle() == null) {
|
||||
Boat b = (Boat) P.getWorld().spawnEntity(event.getTo(), EntityType.BOAT);
|
||||
b.setPassenger(P);
|
||||
if (this.hasFeature(P, Feature.BOAT) && featureEnabled.get(P).get(Feature.BOAT)) {
|
||||
if (P.getLocation().getBlock().getType().equals(Material.STATIONARY_WATER) && P.getVehicle() == null) {
|
||||
Boat b = (Boat) P.getWorld().spawnEntity(event.getTo(), EntityType.BOAT);
|
||||
b.setPassenger(P);
|
||||
}
|
||||
}
|
||||
} catch (Throwable e) {
|
||||
Errors.reportException(e);
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onToggleFlight(PlayerToggleFlightEvent event) {
|
||||
if (!mainLobby()) {
|
||||
return;
|
||||
}
|
||||
Player P = event.getPlayer();
|
||||
|
||||
if (this.hasFeature(P, Feature.DOUBLE_JUMP) && !P.getGameMode().equals(GameMode.CREATIVE)) {
|
||||
if (this.canDoubleJump.containsKey(P) && this.canDoubleJump.get(P)) {
|
||||
this.canDoubleJump.put(P, false);
|
||||
P.setExp(0);
|
||||
Vector v = P.getLocation().getDirection();
|
||||
P.setVelocity(v.multiply(new Vector(1, 2, 1)));
|
||||
P.setVelocity(P.getVelocity().setY(1));
|
||||
} else {
|
||||
Vector v = P.getVelocity();
|
||||
P.setVelocity(v.setY(-0.4));
|
||||
try {
|
||||
if (!mainLobby()) {
|
||||
return;
|
||||
}
|
||||
event.setCancelled(true);
|
||||
Player P = event.getPlayer();
|
||||
|
||||
if (this.hasFeature(P, Feature.DOUBLE_JUMP) && !P.getGameMode().equals(GameMode.CREATIVE)) {
|
||||
if (this.canDoubleJump.containsKey(P) && this.canDoubleJump.get(P)) {
|
||||
this.canDoubleJump.put(P, false);
|
||||
P.setExp(0);
|
||||
Vector v = P.getLocation().getDirection();
|
||||
P.setVelocity(v.multiply(new Vector(1, 2, 1)));
|
||||
P.setVelocity(P.getVelocity().setY(1));
|
||||
} else {
|
||||
Vector v = P.getVelocity();
|
||||
P.setVelocity(v.setY(-0.4));
|
||||
}
|
||||
event.setCancelled(true);
|
||||
}
|
||||
} catch (Throwable e) {
|
||||
Errors.reportException(e);
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onBoatDestory(VehicleDestroyEvent event) {
|
||||
if (event.getVehicle().getType().equals(EntityType.BOAT) && AnuraCore.getInstance().getConfig().getBoolean("is-main-lobby")) {
|
||||
event.setCancelled(true);
|
||||
try {
|
||||
if (event.getVehicle().getType().equals(EntityType.BOAT) && AnuraCore.getInstance().getConfig().getBoolean("is-main-lobby")) {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
} catch (Throwable e) {
|
||||
Errors.reportException(e);
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onExit(VehicleExitEvent event) {
|
||||
if (event.getVehicle().getType().equals(EntityType.BOAT) && AnuraCore.getInstance().getConfig().getBoolean("is-main-lobby")) {
|
||||
event.getVehicle().remove();
|
||||
Player p = (Player) event.getExited();
|
||||
p.setVelocity(p.getVelocity().add(new Vector(0D, 1D, 0D)));
|
||||
if (p.getGameMode().equals(GameMode.CREATIVE) && wantFlight.contains(p.getUniqueId())) {
|
||||
p.setFlying(true);
|
||||
try {
|
||||
if (event.getVehicle().getType().equals(EntityType.BOAT) && AnuraCore.getInstance().getConfig().getBoolean("is-main-lobby")) {
|
||||
event.getVehicle().remove();
|
||||
Player p = (Player) event.getExited();
|
||||
p.setVelocity(p.getVelocity().add(new Vector(0D, 1D, 0D)));
|
||||
if (p.getGameMode().equals(GameMode.CREATIVE) && wantFlight.contains(p.getUniqueId())) {
|
||||
p.setFlying(true);
|
||||
}
|
||||
}
|
||||
} catch (Throwable e) {
|
||||
Errors.reportException(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
package de.anura.core;
|
||||
|
||||
import de.anura.core.API.Core;
|
||||
import de.anura.core.API.Errors;
|
||||
import de.anura.core.API.Money;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import org.bukkit.ChatColor;
|
||||
@@ -56,8 +56,8 @@ public class FlowerPots {
|
||||
}
|
||||
this.foundCache.put(P, list);
|
||||
this.foundTimestamp.put(P, listTimes);
|
||||
} catch (SQLException ex) {
|
||||
System.out.println("Error refreshCache(FlowerPots)");
|
||||
} catch (Throwable e) {
|
||||
Errors.reportException(e);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -88,31 +88,31 @@ public class FlowerPots {
|
||||
}
|
||||
|
||||
public void playerFoundPot(Player P, Integer pot) {
|
||||
if (!foundPot(P, pot)) {
|
||||
Integer time = getPotWaitTime(pot);
|
||||
boolean alreadyFound = foundCache.get(P).containsKey(pot);
|
||||
int type = 0;
|
||||
if (time == -1) {
|
||||
foundCache.get(P).put(pot, false);
|
||||
} else {
|
||||
type = 1;
|
||||
foundCache.get(P).put(pot, true);
|
||||
foundTimestamp.get(P).put(pot, (int) (System.currentTimeMillis() / 1000));
|
||||
}
|
||||
String sql;
|
||||
if (alreadyFound) {
|
||||
sql = "UPDATE coreFoundPots SET timestamp = '" + (System.currentTimeMillis() / 1000) + "', type = 1 WHERE player = (SELECT id FROM players WHERE uuid = '" + P.getUniqueId().toString() + "') AND id = '" + pot + "'";
|
||||
} else {
|
||||
sql = "INSERT INTO coreFoundPots(id, player, timestamp, type) VALUES('" + pot + "', (SELECT id FROM players WHERE uuid = '" + P.getUniqueId().toString() + "'),'" + (int) (System.currentTimeMillis() / 1000) + "'," + type + ")";
|
||||
}
|
||||
AnuraCore.getSql().queryUpdate(sql);
|
||||
Location loc = AnuraCore.getInstance().flowerPots.get(pot);
|
||||
for (int i = 0; i < 20; i++) {
|
||||
loc.getWorld().playEffect(loc, Effect.FIREWORKS_SPARK, 4);
|
||||
}
|
||||
P.playSound(loc, Sound.LEVEL_UP, 1, (float) 1.5);
|
||||
ResultSet rs = AnuraCore.getSql().querySelect("SELECT url, name, money FROM corePots WHERE id = '" + pot + "'");
|
||||
try {
|
||||
try {
|
||||
if (!foundPot(P, pot)) {
|
||||
Integer time = getPotWaitTime(pot);
|
||||
boolean alreadyFound = foundCache.get(P).containsKey(pot);
|
||||
int type = 0;
|
||||
if (time == -1) {
|
||||
foundCache.get(P).put(pot, false);
|
||||
} else {
|
||||
type = 1;
|
||||
foundCache.get(P).put(pot, true);
|
||||
foundTimestamp.get(P).put(pot, (int) (System.currentTimeMillis() / 1000));
|
||||
}
|
||||
String sql;
|
||||
if (alreadyFound) {
|
||||
sql = "UPDATE coreFoundPots SET timestamp = '" + (System.currentTimeMillis() / 1000) + "', type = 1 WHERE player = (SELECT id FROM players WHERE uuid = '" + P.getUniqueId().toString() + "') AND id = '" + pot + "'";
|
||||
} else {
|
||||
sql = "INSERT INTO coreFoundPots(id, player, timestamp, type) VALUES('" + pot + "', (SELECT id FROM players WHERE uuid = '" + P.getUniqueId().toString() + "'),'" + (int) (System.currentTimeMillis() / 1000) + "'," + type + ")";
|
||||
}
|
||||
AnuraCore.getSql().queryUpdate(sql);
|
||||
Location loc = AnuraCore.getInstance().flowerPots.get(pot);
|
||||
for (int i = 0; i < 20; i++) {
|
||||
loc.getWorld().playEffect(loc, Effect.FIREWORKS_SPARK, 4);
|
||||
}
|
||||
P.playSound(loc, Sound.LEVEL_UP, 1, (float) 1.5);
|
||||
ResultSet rs = AnuraCore.getSql().querySelect("SELECT url, name, money FROM corePots WHERE id = '" + pot + "'");
|
||||
rs.first();
|
||||
Money.payMoney(P, rs.getInt("money"));
|
||||
P.sendMessage(ChatColor.RED + "---------- " + ChatColor.YELLOW + "Achievement" + ChatColor.RED + " ----------");
|
||||
@@ -120,30 +120,30 @@ public class FlowerPots {
|
||||
P.sendMessage("" + ChatColor.GOLD + ChatColor.UNDERLINE + rs.getString("url"));
|
||||
P.sendMessage("");
|
||||
P.sendMessage(ChatColor.RED + "---------- " + ChatColor.YELLOW + "Achievement" + ChatColor.RED + " ----------");
|
||||
} catch (SQLException ex) {
|
||||
System.out.println("Error playerFoundPot(FlowerPot)");
|
||||
}
|
||||
} else if (getPotWaitTime(pot) != -1 && foundCache.containsKey(P) && foundCache.get(P).containsKey(pot) && foundTimestamp.containsKey(P) && foundTimestamp.get(P).containsKey(pot)) {
|
||||
int current = (int) (System.currentTimeMillis() / 1000);
|
||||
int found = foundTimestamp.get(P).get(pot);
|
||||
int waitTime = getPotWaitTime(pot);
|
||||
int toWait = (found + waitTime) - current;
|
||||
if (toWait <= 0) {
|
||||
return;
|
||||
}
|
||||
String text = ChatColor.RED + Core.getl("ach_wait_1", P);
|
||||
if (toWait < 60) {
|
||||
text += " " + ChatColor.GREEN + toWait + " " + ChatColor.RED + Core.getl("ach_wait_seconds", P);
|
||||
} else if (toWait < 60 * 60) {
|
||||
text += " " + ChatColor.GREEN + Math.round(toWait / 60) + " " + ChatColor.RED + Core.getl("ach_wait_minutes", P);
|
||||
} else if (toWait < 60 * 60 * 24) {
|
||||
text += " " + ChatColor.GREEN + Math.round(toWait / 60 / 60) + " " + ChatColor.RED + Core.getl("ach_wait_hours", P);
|
||||
} else {
|
||||
text += " " + ChatColor.GREEN + Math.round(toWait / 60 / 60 / 24) + " " + ChatColor.RED + Core.getl("ach_wait_days", P);
|
||||
}
|
||||
text += " " + Core.getl("ach_wait_2", P);
|
||||
} else if (getPotWaitTime(pot) != -1 && foundCache.containsKey(P) && foundCache.get(P).containsKey(pot) && foundTimestamp.containsKey(P) && foundTimestamp.get(P).containsKey(pot)) {
|
||||
int current = (int) (System.currentTimeMillis() / 1000);
|
||||
int found = foundTimestamp.get(P).get(pot);
|
||||
int waitTime = getPotWaitTime(pot);
|
||||
int toWait = (found + waitTime) - current;
|
||||
if (toWait <= 0) {
|
||||
return;
|
||||
}
|
||||
String text = ChatColor.RED + Core.getl("ach_wait_1", P);
|
||||
if (toWait < 60) {
|
||||
text += " " + ChatColor.GREEN + toWait + " " + ChatColor.RED + Core.getl("ach_wait_seconds", P);
|
||||
} else if (toWait < 60 * 60) {
|
||||
text += " " + ChatColor.GREEN + Math.round(toWait / 60) + " " + ChatColor.RED + Core.getl("ach_wait_minutes", P);
|
||||
} else if (toWait < 60 * 60 * 24) {
|
||||
text += " " + ChatColor.GREEN + Math.round(toWait / 60 / 60) + " " + ChatColor.RED + Core.getl("ach_wait_hours", P);
|
||||
} else {
|
||||
text += " " + ChatColor.GREEN + Math.round(toWait / 60 / 60 / 24) + " " + ChatColor.RED + Core.getl("ach_wait_days", P);
|
||||
}
|
||||
text += " " + Core.getl("ach_wait_2", P);
|
||||
|
||||
P.sendMessage(text);
|
||||
P.sendMessage(text);
|
||||
}
|
||||
} catch (Throwable e) {
|
||||
Errors.reportException(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package de.anura.core;
|
||||
|
||||
import de.anura.core.API.Errors;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.util.HashMap;
|
||||
import org.bukkit.ChatColor;
|
||||
|
||||
@@ -13,8 +13,8 @@ public class LanguageSupport {
|
||||
|
||||
public LanguageSupport(AnuraCore plugin) {
|
||||
this.plugin = plugin;
|
||||
ResultSet al = AnuraCore.sql.querySelect("SELECT name, short_name FROM coreAvailableLanguages");
|
||||
try {
|
||||
ResultSet al = AnuraCore.sql.querySelect("SELECT name, short_name FROM coreAvailableLanguages");
|
||||
if (!al.next()) {
|
||||
return;
|
||||
}
|
||||
@@ -31,8 +31,8 @@ public class LanguageSupport {
|
||||
languageValues.get(lang).put(lv.getString("id"), lv.getString(lang));
|
||||
}
|
||||
}
|
||||
} catch (SQLException ex) {
|
||||
System.out.println("Language data could not be loaded: " + ex.getLocalizedMessage());
|
||||
} catch (Throwable e) {
|
||||
Errors.reportException(e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package de.anura.core;
|
||||
|
||||
import de.anura.core.API.Errors;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
@@ -81,43 +81,47 @@ public final class Permissions implements Listener {
|
||||
}
|
||||
|
||||
public void updatePlayer(Player P) {
|
||||
PermissionAttachment pa = this.permAttachments.get(P);
|
||||
for (String p : pa.getPermissions().keySet()) {
|
||||
pa.unsetPermission(p);
|
||||
try {
|
||||
PermissionAttachment pa = this.permAttachments.get(P);
|
||||
for (String p : pa.getPermissions().keySet()) {
|
||||
pa.unsetPermission(p);
|
||||
}
|
||||
if (!this.playerGroups.containsKey(P.getUniqueId())) {
|
||||
this.playerGroups.put(P.getUniqueId(), new ArrayList<Integer>());
|
||||
}
|
||||
ArrayList<Integer> groups = this.playerGroups.get(P.getUniqueId());
|
||||
ArrayList<Integer> assignedGroups = new ArrayList<>();
|
||||
String prefixes = "";
|
||||
String suffixes = "";
|
||||
String listColor = "";
|
||||
for (Integer g : groups) {
|
||||
if (assignedGroups.contains(g)) {
|
||||
continue;
|
||||
}
|
||||
assignedGroups.add(g);
|
||||
for (String perm : this.groupPerms.get(g)) {
|
||||
pa.setPermission(perm, true);
|
||||
}
|
||||
ArrayList<String> perms = this.getParentPerms(g, assignedGroups);
|
||||
for (String perm : perms) {
|
||||
pa.setPermission(perm, true);
|
||||
}
|
||||
if (this.groupPrefix.containsKey(g)) {
|
||||
prefixes += this.groupPrefix.get(g);
|
||||
}
|
||||
if (this.groupSuffix.containsKey(g)) {
|
||||
suffixes += this.groupSuffix.get(g);
|
||||
}
|
||||
if (this.groupListColor.containsKey(g)) {
|
||||
listColor = this.groupListColor.get(g);
|
||||
}
|
||||
}
|
||||
String name = prefixes + P.getName() + suffixes;
|
||||
P.setDisplayName(name);
|
||||
P.setPlayerListName(listColor + P.getName());
|
||||
} catch (Throwable e) {
|
||||
Errors.reportException(e);
|
||||
}
|
||||
if (!this.playerGroups.containsKey(P.getUniqueId())) {
|
||||
this.playerGroups.put(P.getUniqueId(), new ArrayList<Integer>());
|
||||
}
|
||||
ArrayList<Integer> groups = this.playerGroups.get(P.getUniqueId());
|
||||
ArrayList<Integer> assignedGroups = new ArrayList<>();
|
||||
String prefixes = "";
|
||||
String suffixes = "";
|
||||
String listColor = "";
|
||||
for (Integer g : groups) {
|
||||
if (assignedGroups.contains(g)) {
|
||||
continue;
|
||||
}
|
||||
assignedGroups.add(g);
|
||||
for (String perm : this.groupPerms.get(g)) {
|
||||
pa.setPermission(perm, true);
|
||||
}
|
||||
ArrayList<String> perms = this.getParentPerms(g, assignedGroups);
|
||||
for (String perm : perms) {
|
||||
pa.setPermission(perm, true);
|
||||
}
|
||||
if (this.groupPrefix.containsKey(g)) {
|
||||
prefixes += this.groupPrefix.get(g);
|
||||
}
|
||||
if (this.groupSuffix.containsKey(g)) {
|
||||
suffixes += this.groupSuffix.get(g);
|
||||
}
|
||||
if (this.groupListColor.containsKey(g)) {
|
||||
listColor = this.groupListColor.get(g);
|
||||
}
|
||||
}
|
||||
String name = prefixes + P.getName() + suffixes;
|
||||
P.setDisplayName(name);
|
||||
P.setPlayerListName(listColor + P.getName());
|
||||
}
|
||||
|
||||
private ArrayList<String> getParentPerms(Integer group, ArrayList<Integer> assigned) {
|
||||
@@ -138,18 +142,18 @@ public final class Permissions implements Listener {
|
||||
}
|
||||
|
||||
public String reload() {
|
||||
ResultSet groupsRs = AnuraCore.sql.querySelect("SELECT prefix, suffix, parent, name, id, listColor FROM permGroups");
|
||||
ResultSet permsRs = AnuraCore.sql.querySelect("SELECT `group`, name FROM permPerms");
|
||||
ResultSet userRs = AnuraCore.sql.querySelect("SELECT playerUUID, `group` FROM permPlayerGroups");
|
||||
this.groupNames.clear();
|
||||
this.groupPerms.clear();
|
||||
this.playerGroups.clear();
|
||||
this.groupParents.clear();
|
||||
this.groupPrefix.clear();
|
||||
this.groupSuffix.clear();
|
||||
HashMap<Integer, Integer> groupIds = new HashMap<>();
|
||||
this.groupAutoIncrement = 0;
|
||||
try {
|
||||
ResultSet groupsRs = AnuraCore.sql.querySelect("SELECT prefix, suffix, parent, name, id, listColor FROM permGroups");
|
||||
ResultSet permsRs = AnuraCore.sql.querySelect("SELECT `group`, name FROM permPerms");
|
||||
ResultSet userRs = AnuraCore.sql.querySelect("SELECT playerUUID, `group` FROM permPlayerGroups");
|
||||
this.groupNames.clear();
|
||||
this.groupPerms.clear();
|
||||
this.playerGroups.clear();
|
||||
this.groupParents.clear();
|
||||
this.groupPrefix.clear();
|
||||
this.groupSuffix.clear();
|
||||
HashMap<Integer, Integer> groupIds = new HashMap<>();
|
||||
this.groupAutoIncrement = 0;
|
||||
groupsRs.last();
|
||||
if (groupsRs.getRow() != 0) {
|
||||
groupsRs.beforeFirst();
|
||||
@@ -198,8 +202,8 @@ public final class Permissions implements Listener {
|
||||
}
|
||||
|
||||
}
|
||||
} catch (SQLException ex) {
|
||||
System.err.println("Was not able to load permissions. Sorry. (" + ex.getLocalizedMessage() + ")");
|
||||
} catch (Throwable e) {
|
||||
Errors.reportException(e);
|
||||
}
|
||||
return ChatColor.GREEN + "Permissions reloaded!";
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package de.anura.core;
|
||||
|
||||
import de.anura.core.API.Core;
|
||||
import de.anura.core.API.Errors;
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
import java.util.GregorianCalendar;
|
||||
@@ -10,19 +11,23 @@ import org.bukkit.World;
|
||||
public class RealTime {
|
||||
|
||||
public static void setup() {
|
||||
if (Core.getMainClass().getConfig().getBoolean("realtime-day")) {
|
||||
for (World world : Bukkit.getWorlds()) {
|
||||
world.setGameRuleValue("doDaylightCycle", "false");
|
||||
world.setTime(0);
|
||||
}
|
||||
Bukkit.getScheduler().scheduleSyncRepeatingTask(Core.getMainClass(), new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
Integer[] time = getSystemTime();
|
||||
int TTime = convertTime(time[0], time[1]);
|
||||
setWorldTime(TTime);
|
||||
try {
|
||||
if (Core.getMainClass().getConfig().getBoolean("realtime-day")) {
|
||||
for (World world : Bukkit.getWorlds()) {
|
||||
world.setGameRuleValue("doDaylightCycle", "false");
|
||||
world.setTime(0);
|
||||
}
|
||||
}, 0, (20 * 60 * 10));
|
||||
Bukkit.getScheduler().scheduleSyncRepeatingTask(Core.getMainClass(), new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
Integer[] time = getSystemTime();
|
||||
int TTime = convertTime(time[0], time[1]);
|
||||
setWorldTime(TTime);
|
||||
}
|
||||
}, 0, (20 * 60 * 10));
|
||||
}
|
||||
} catch (Throwable e) {
|
||||
Errors.reportException(e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package de.anura.core;
|
||||
|
||||
import de.anura.core.API.Core;
|
||||
import de.anura.core.API.Errors;
|
||||
import de.anura.core.API.Inventories;
|
||||
import de.anura.core.API.Level;
|
||||
import de.anura.core.API.Tools;
|
||||
@@ -31,7 +32,6 @@ import de.anura.core.events.PlayerTeleport;
|
||||
import de.anura.core.events.SignChange;
|
||||
import de.anura.core.events.WeatherChange;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Location;
|
||||
@@ -53,7 +53,7 @@ public class Setup {
|
||||
Core.getMainClass().getConfig().addDefault("no-hunger", false);
|
||||
Core.getMainClass().getConfig().addDefault("no-rain", false);
|
||||
Core.getMainClass().getConfig().addDefault("enable-leaves-decay", true);
|
||||
Core.getMainClass().getConfig().addDefault("server-name", "lobby");
|
||||
Core.getMainClass().getConfig().addDefault("server-name", "none");
|
||||
Core.getMainClass().getConfig().addDefault("allow-stairs-sit", false);
|
||||
Core.getMainClass().getConfig().addDefault("disable-mushroom-spread", false);
|
||||
Core.getMainClass().getConfig().addDefault("on-join-to-spawn", false);
|
||||
@@ -88,17 +88,17 @@ public class Setup {
|
||||
}
|
||||
|
||||
public static void setupClasses() {
|
||||
Core.getMainClass().lang = new LanguageSupport(Core.getMainClass());
|
||||
new Inventories(Core.getMainClass());
|
||||
setupInventories();
|
||||
Core.getMainClass().perms = new Permissions(Core.getMainClass());
|
||||
Core.getMainClass().tools = new Tools();
|
||||
Core.getMainClass().pots = new FlowerPots();
|
||||
Core.getMainClass().signs = new Signs();
|
||||
Core.getMainClass().level = new Level();
|
||||
RealTime.setup();
|
||||
ResultSet rs = sql.querySelect("SELECT id, X, Y, Z, world, type, waitTime FROM corePots");
|
||||
try {
|
||||
Core.getMainClass().lang = new LanguageSupport(Core.getMainClass());
|
||||
new Inventories(Core.getMainClass());
|
||||
setupInventories();
|
||||
Core.getMainClass().perms = new Permissions(Core.getMainClass());
|
||||
Core.getMainClass().tools = new Tools();
|
||||
Core.getMainClass().pots = new FlowerPots();
|
||||
Core.getMainClass().signs = new Signs();
|
||||
Core.getMainClass().level = new Level();
|
||||
RealTime.setup();
|
||||
ResultSet rs = sql.querySelect("SELECT id, X, Y, Z, world, type, waitTime FROM corePots");
|
||||
while (rs.next()) {
|
||||
World w = Bukkit.getWorld(rs.getString("world"));
|
||||
if (w == null) {
|
||||
@@ -111,39 +111,39 @@ public class Setup {
|
||||
}
|
||||
l.getBlock().setType(Material.BROWN_MUSHROOM);
|
||||
}
|
||||
} catch (SQLException ex) {
|
||||
System.err.println("Error whilst trying to setup flower pots");
|
||||
Core.getMainClass().features = new Features();
|
||||
Core.getMainClass().features.updateFeaturesAll();
|
||||
} catch (Throwable e) {
|
||||
Errors.reportException(e);
|
||||
}
|
||||
Core.getMainClass().features = new Features();
|
||||
Core.getMainClass().features.updateFeaturesAll();
|
||||
}
|
||||
|
||||
public static void setupTasks() {
|
||||
Bukkit.getScheduler().scheduleSyncRepeatingTask(Core.getMainClass(), new Runnable() {
|
||||
try {
|
||||
Bukkit.getScheduler().scheduleSyncRepeatingTask(Core.getMainClass(), new Runnable() {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
for (Player P : Core.getMainClass().golfPower.keySet()) {
|
||||
if (Core.getMainClass().releaseGolf.get(P)) {
|
||||
P.setExp(0);
|
||||
int power = Core.getMainClass().golfPower.get(P);
|
||||
Entity i = Core.getMainClass().golfBall.get(P);
|
||||
if (i != null && i.isValid()) {
|
||||
Vector v = P.getLocation().getDirection();
|
||||
v.multiply(new Vector(power / 10 + 1, 1.2, power / 10 + 1));
|
||||
i.setVelocity(v);
|
||||
@Override
|
||||
public void run() {
|
||||
for (Player P : Core.getMainClass().golfPower.keySet()) {
|
||||
if (Core.getMainClass().releaseGolf.get(P)) {
|
||||
P.setExp(0);
|
||||
int power = Core.getMainClass().golfPower.get(P);
|
||||
Entity i = Core.getMainClass().golfBall.get(P);
|
||||
if (i != null && i.isValid()) {
|
||||
Vector v = P.getLocation().getDirection();
|
||||
v.multiply(new Vector(power / 10 + 1, 1.2, power / 10 + 1));
|
||||
i.setVelocity(v);
|
||||
}
|
||||
Core.getMainClass().golfPower.remove(P);
|
||||
Core.getMainClass().releaseGolf.remove(P);
|
||||
} else {
|
||||
Core.getMainClass().releaseGolf.put(P, true);
|
||||
}
|
||||
Core.getMainClass().golfPower.remove(P);
|
||||
Core.getMainClass().releaseGolf.remove(P);
|
||||
} else {
|
||||
Core.getMainClass().releaseGolf.put(P, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}, 5, 5);
|
||||
ResultSet rs = sql.querySelect("SELECT world, X, Y, Z FROM coreStairs WHERE server = '" + Core.getMainClass().getConfig().getString("server-name") + "'");
|
||||
try {
|
||||
}, 5, 5);
|
||||
ResultSet rs = sql.querySelect("SELECT world, X, Y, Z FROM coreStairs WHERE server = '" + Core.getMainClass().getConfig().getString("server-name") + "'");
|
||||
while (rs.next()) {
|
||||
World w = Bukkit.getWorld(rs.getString("world"));
|
||||
if (w == null) {
|
||||
@@ -154,30 +154,30 @@ public class Setup {
|
||||
Core.getMainClass().sittableBlocks.add(l.getBlock());
|
||||
}
|
||||
}
|
||||
} catch (SQLException ex) {
|
||||
System.err.println("Error whilst trying to setup stairs");
|
||||
}
|
||||
|
||||
Bukkit.getScheduler().scheduleSyncRepeatingTask(Core.getMainClass(), new Runnable() {
|
||||
|
||||
Bukkit.getScheduler().scheduleSyncRepeatingTask(Core.getMainClass(), new Runnable() {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
for (Player p : AnuraCore.getInstance().sittingPlayer.keySet()) {
|
||||
Location loc = AnuraCore.getInstance().sittingPlayer.get(p).getLocation();
|
||||
Arrow a = loc.getWorld().spawnArrow(loc, new Vector(0, 0, 0), 0, 0);
|
||||
a.setPassenger(p);
|
||||
AnuraCore.getInstance().sittingPlayer.get(p).remove();
|
||||
AnuraCore.getInstance().sittingPlayer.put(p, a);
|
||||
@Override
|
||||
public void run() {
|
||||
for (Player p : AnuraCore.getInstance().sittingPlayer.keySet()) {
|
||||
Location loc = AnuraCore.getInstance().sittingPlayer.get(p).getLocation();
|
||||
Arrow a = loc.getWorld().spawnArrow(loc, new Vector(0, 0, 0), 0, 0);
|
||||
a.setPassenger(p);
|
||||
AnuraCore.getInstance().sittingPlayer.get(p).remove();
|
||||
AnuraCore.getInstance().sittingPlayer.put(p, a);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}, 600, 600);
|
||||
Bukkit.getScheduler().scheduleSyncRepeatingTask(Core.getMainClass(), new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
AnuraCore.getInstance().signs.updateServerSigns();
|
||||
}
|
||||
}, 20 * 5, 20 * 5);
|
||||
}, 600, 600);
|
||||
Bukkit.getScheduler().scheduleSyncRepeatingTask(Core.getMainClass(), new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
AnuraCore.getInstance().signs.updateServerSigns();
|
||||
}
|
||||
}, 20 * 5, 20 * 5);
|
||||
} catch (Throwable e) {
|
||||
Errors.reportException(e);
|
||||
}
|
||||
}
|
||||
|
||||
public static void setupCommands() {
|
||||
@@ -218,69 +218,73 @@ public class Setup {
|
||||
}
|
||||
|
||||
private static void setupInventories() {
|
||||
Inventories.registerInventory("GAMEMODES", "select_gamemode_inv", ChatColor.DARK_BLUE);
|
||||
Inventories.putIntoInventory("GAMEMODES", 0, Inventories.buildItems(Material.RED_ROSE, "inv_lobby_tps", ChatColor.DARK_GREEN));
|
||||
Inventories.putIntoInventory("GAMEMODES", 2, Inventories.buildItems(Material.CARROT_STICK, "inv_lobby_minigames", ChatColor.BLUE));
|
||||
Inventories.putIntoInventory("GAMEMODES", 4, Inventories.buildItems(Material.IRON_PICKAXE, "inv_lobby_freebuild", ChatColor.GOLD));
|
||||
try {
|
||||
Inventories.registerInventory("GAMEMODES", "select_gamemode_inv", ChatColor.DARK_BLUE);
|
||||
Inventories.putIntoInventory("GAMEMODES", 0, Inventories.buildItems(Material.RED_ROSE, "inv_lobby_tps", ChatColor.DARK_GREEN));
|
||||
Inventories.putIntoInventory("GAMEMODES", 2, Inventories.buildItems(Material.CARROT_STICK, "inv_lobby_minigames", ChatColor.BLUE));
|
||||
Inventories.putIntoInventory("GAMEMODES", 4, Inventories.buildItems(Material.IRON_PICKAXE, "inv_lobby_freebuild", ChatColor.GOLD));
|
||||
|
||||
Inventories.registerAction("GAMEMODES", 0, Inventories.Action.OPEN_INV, "LOBBY");
|
||||
Inventories.registerAction("GAMEMODES", 2, Inventories.Action.OPEN_INV, "MINIGAMES");
|
||||
Inventories.registerAction("GAMEMODES", 4, Inventories.Action.SERVER, "freebuild");
|
||||
Inventories.registerAction("GAMEMODES", 0, Inventories.Action.OPEN_INV, "LOBBY");
|
||||
Inventories.registerAction("GAMEMODES", 2, Inventories.Action.OPEN_INV, "MINIGAMES");
|
||||
Inventories.registerAction("GAMEMODES", 4, Inventories.Action.SERVER, "freebuild");
|
||||
|
||||
Inventories.registerInventory("MINIGAMES", "minigames_inv", ChatColor.DARK_BLUE);
|
||||
Inventories.putIntoInventory("MINIGAMES", 0, Inventories.buildItems(Material.BOW, "inv_lobby_smash", ChatColor.GREEN, ChatColor.BLUE, "smash_description_1", "smash_description_2", "smash_description_3", "smash_description_4", "smash_description_5", "smash_description_6"));
|
||||
Inventories.putIntoInventory("MINIGAMES", 2, Inventories.buildItems(Material.WHEAT, "inv_lobby_farmfight", ChatColor.YELLOW));
|
||||
Inventories.putIntoInventory("MINIGAMES", 4, Inventories.buildItems(Material.FIREWORK, "inv_lobby_rocketmatch", ChatColor.DARK_AQUA));
|
||||
Inventories.putIntoInventory("MINIGAMES", 8, Inventories.buildItems(Material.ENDER_PEARL, "inv_lobby_back", ChatColor.YELLOW));
|
||||
Inventories.registerInventory("MINIGAMES", "minigames_inv", ChatColor.DARK_BLUE);
|
||||
Inventories.putIntoInventory("MINIGAMES", 0, Inventories.buildItems(Material.BOW, "inv_lobby_smash", ChatColor.GREEN, ChatColor.BLUE, "smash_description_1", "smash_description_2", "smash_description_3", "smash_description_4", "smash_description_5", "smash_description_6"));
|
||||
Inventories.putIntoInventory("MINIGAMES", 2, Inventories.buildItems(Material.WHEAT, "inv_lobby_farmfight", ChatColor.YELLOW));
|
||||
Inventories.putIntoInventory("MINIGAMES", 4, Inventories.buildItems(Material.FIREWORK, "inv_lobby_rocketmatch", ChatColor.DARK_AQUA));
|
||||
Inventories.putIntoInventory("MINIGAMES", 8, Inventories.buildItems(Material.ENDER_PEARL, "inv_lobby_back", ChatColor.YELLOW));
|
||||
|
||||
Inventories.registerAction("MINIGAMES", 0, Inventories.Action.SERVER, "smash");
|
||||
Inventories.registerAction("MINIGAMES", 2, Inventories.Action.SERVER, "farmfight");
|
||||
Inventories.registerAction("MINIGAMES", 4, Inventories.Action.SERVER, "rocketmatch");
|
||||
Inventories.registerAction("MINIGAMES", 8, Inventories.Action.OPEN_INV, "GAMEMODES");
|
||||
Inventories.registerAction("MINIGAMES", 0, Inventories.Action.SERVER, "smash");
|
||||
Inventories.registerAction("MINIGAMES", 2, Inventories.Action.SERVER, "farmfight");
|
||||
Inventories.registerAction("MINIGAMES", 4, Inventories.Action.SERVER, "rocketmatch");
|
||||
Inventories.registerAction("MINIGAMES", 8, Inventories.Action.OPEN_INV, "GAMEMODES");
|
||||
|
||||
Inventories.registerInventory("LOBBY", "lobby_inv", ChatColor.DARK_BLUE);
|
||||
Inventories.putIntoInventory("LOBBY", 0, Inventories.buildItems(Material.SLIME_BALL, "inv_lobby_jump", ChatColor.DARK_GREEN));
|
||||
Inventories.putIntoInventory("LOBBY", 1, Inventories.buildItems(Material.WATER_BUCKET, "inv_lobby_swim", ChatColor.DARK_AQUA));
|
||||
Inventories.putIntoInventory("LOBBY", 3, Inventories.buildItems(Material.EXP_BOTTLE, "inv_lobby_xpbattle", ChatColor.GREEN));
|
||||
Inventories.putIntoInventory("LOBBY", 4, Inventories.buildItems(Material.POTION, "inv_lobby_pool", ChatColor.BLUE));
|
||||
Inventories.putIntoInventory("LOBBY", 6, Inventories.buildItems(Material.WOOD_DOOR, "tp_to_spawn", ChatColor.GOLD));
|
||||
Inventories.putIntoInventory("LOBBY", 8, Inventories.buildItems(Material.ENDER_PEARL, "inv_lobby_back", ChatColor.YELLOW));
|
||||
Inventories.registerInventory("LOBBY", "lobby_inv", ChatColor.DARK_BLUE);
|
||||
Inventories.putIntoInventory("LOBBY", 0, Inventories.buildItems(Material.SLIME_BALL, "inv_lobby_jump", ChatColor.DARK_GREEN));
|
||||
Inventories.putIntoInventory("LOBBY", 1, Inventories.buildItems(Material.WATER_BUCKET, "inv_lobby_swim", ChatColor.DARK_AQUA));
|
||||
Inventories.putIntoInventory("LOBBY", 3, Inventories.buildItems(Material.EXP_BOTTLE, "inv_lobby_xpbattle", ChatColor.GREEN));
|
||||
Inventories.putIntoInventory("LOBBY", 4, Inventories.buildItems(Material.POTION, "inv_lobby_pool", ChatColor.BLUE));
|
||||
Inventories.putIntoInventory("LOBBY", 6, Inventories.buildItems(Material.WOOD_DOOR, "tp_to_spawn", ChatColor.GOLD));
|
||||
Inventories.putIntoInventory("LOBBY", 8, Inventories.buildItems(Material.ENDER_PEARL, "inv_lobby_back", ChatColor.YELLOW));
|
||||
|
||||
Inventories.registerAction("LOBBY", 0, Inventories.Action.COMMAND, "jumpinv");
|
||||
Inventories.registerAction("LOBBY", 1, Inventories.Action.TELEPORT, new Location(Bukkit.getWorld("lobby"), -288, 32, -1714));
|
||||
Inventories.registerAction("LOBBY", 3, Inventories.Action.COMMAND, "toggleminigame xpbattle");
|
||||
Inventories.registerAction("LOBBY", 1, Inventories.Action.COMMAND, "toggleminigame pool");
|
||||
Inventories.registerAction("LOBBY", 6, Inventories.Action.COMMAND, "spawn");
|
||||
Inventories.registerAction("LOBBY", 8, Inventories.Action.OPEN_INV, "GAMEMODES");
|
||||
Inventories.registerAction("LOBBY", 0, Inventories.Action.COMMAND, "jumpinv");
|
||||
Inventories.registerAction("LOBBY", 1, Inventories.Action.TELEPORT, new Location(Bukkit.getWorld("lobby"), -288, 32, -1714));
|
||||
Inventories.registerAction("LOBBY", 3, Inventories.Action.COMMAND, "toggleminigame xpbattle");
|
||||
Inventories.registerAction("LOBBY", 1, Inventories.Action.COMMAND, "toggleminigame pool");
|
||||
Inventories.registerAction("LOBBY", 6, Inventories.Action.COMMAND, "spawn");
|
||||
Inventories.registerAction("LOBBY", 8, Inventories.Action.OPEN_INV, "GAMEMODES");
|
||||
|
||||
Inventories.registerInventory("FEATURES", "features_inv", ChatColor.DARK_BLUE);
|
||||
Inventories.putIntoInventory("FEATURES", 2, Inventories.buildItems(Material.LEATHER_BOOTS, "inv_lobby_double_jump", ChatColor.DARK_AQUA));
|
||||
Inventories.putIntoInventory("FEATURES", 4, Inventories.buildItems(Material.BOAT, "inv_lobby_boat", ChatColor.DARK_AQUA));
|
||||
Inventories.registerAction("FEATURES", 2, Inventories.Action.COMMAND, "toggledbljump");
|
||||
Inventories.registerAction("FEATURES", 4, Inventories.Action.COMMAND, "toggleboat");
|
||||
Inventories.registerInventory("FEATURES", "features_inv", ChatColor.DARK_BLUE);
|
||||
Inventories.putIntoInventory("FEATURES", 2, Inventories.buildItems(Material.LEATHER_BOOTS, "inv_lobby_double_jump", ChatColor.DARK_AQUA));
|
||||
Inventories.putIntoInventory("FEATURES", 4, Inventories.buildItems(Material.BOAT, "inv_lobby_boat", ChatColor.DARK_AQUA));
|
||||
Inventories.registerAction("FEATURES", 2, Inventories.Action.COMMAND, "toggledbljump");
|
||||
Inventories.registerAction("FEATURES", 4, Inventories.Action.COMMAND, "toggleboat");
|
||||
|
||||
Inventories.registerInventory("LANGUAGE", "Select language", ChatColor.DARK_BLUE);
|
||||
int i = 0;
|
||||
for (String langu : Core.getMainClass().lang.languages.keySet()) {
|
||||
Inventories.putIntoInventory("LANGUAGE", i, Inventories.buildItems(Material.BOOK_AND_QUILL, Core.getMainClass().lang.languages.get(langu), ChatColor.DARK_GREEN, ChatColor.GOLD, "set_lang_to", Core.getMainClass().lang.languages.get(langu)));
|
||||
Inventories.registerAction("LANGUAGE", i, Inventories.Action.LANGUAGE, langu);
|
||||
i++;
|
||||
Inventories.registerInventory("LANGUAGE", "Select language", ChatColor.DARK_BLUE);
|
||||
int i = 0;
|
||||
for (String langu : Core.getMainClass().lang.languages.keySet()) {
|
||||
Inventories.putIntoInventory("LANGUAGE", i, Inventories.buildItems(Material.BOOK_AND_QUILL, Core.getMainClass().lang.languages.get(langu), ChatColor.DARK_GREEN, ChatColor.GOLD, "set_lang_to", Core.getMainClass().lang.languages.get(langu)));
|
||||
Inventories.registerAction("LANGUAGE", i, Inventories.Action.LANGUAGE, langu);
|
||||
i++;
|
||||
}
|
||||
|
||||
Inventories.buildInvItem("COMPASS", Material.COMPASS, "select_game", ChatColor.DARK_AQUA);
|
||||
Inventories.buildInvItem("SIGN", Material.SIGN, "Change language", ChatColor.DARK_GREEN);
|
||||
Inventories.buildInvItem("CHARGE", Material.FIREBALL, "features_item", ChatColor.BLUE);
|
||||
Inventories.buildInvItem("DOOR", Material.WOOD_DOOR, "tp_to_spawn", ChatColor.YELLOW);
|
||||
Inventories.buildInvItem("EYE", Material.EYE_OF_ENDER, "inv_to_lobby", ChatColor.YELLOW);
|
||||
if (Core.getMainClass().getConfig().getString("server-name").equals("lobby")) {
|
||||
Inventories.setItemInPlayerInv("COMPASS", 0);
|
||||
Inventories.setItemInPlayerInv("SIGN", 1);
|
||||
Inventories.setItemInPlayerInv("DOOR", 8);
|
||||
}
|
||||
Inventories.registerItemAction("COMPASS", Inventories.Action.OPEN_INV, "GAMEMODES");
|
||||
Inventories.registerItemAction("SIGN", Inventories.Action.OPEN_INV, "LANGUAGE");
|
||||
Inventories.registerItemAction("CHARGE", Inventories.Action.OPEN_INV, "FEATURES");
|
||||
Inventories.registerItemAction("DOOR", Inventories.Action.COMMAND, "spawn");
|
||||
Inventories.registerItemAction("EYE", Inventories.Action.SERVER, "lobby");
|
||||
} catch (Throwable e) {
|
||||
Errors.reportException(e);
|
||||
}
|
||||
|
||||
Inventories.buildInvItem("COMPASS", Material.COMPASS, "select_game", ChatColor.DARK_AQUA);
|
||||
Inventories.buildInvItem("SIGN", Material.SIGN, "Change language", ChatColor.DARK_GREEN);
|
||||
Inventories.buildInvItem("CHARGE", Material.FIREBALL, "features_item", ChatColor.BLUE);
|
||||
Inventories.buildInvItem("DOOR", Material.WOOD_DOOR, "tp_to_spawn", ChatColor.YELLOW);
|
||||
Inventories.buildInvItem("EYE", Material.EYE_OF_ENDER, "inv_to_lobby", ChatColor.YELLOW);
|
||||
if (Core.getMainClass().getConfig().getString("server-name").equals("lobby")) {
|
||||
Inventories.setItemInPlayerInv("COMPASS", 0);
|
||||
Inventories.setItemInPlayerInv("SIGN", 1);
|
||||
Inventories.setItemInPlayerInv("DOOR", 8);
|
||||
}
|
||||
Inventories.registerItemAction("COMPASS", Inventories.Action.OPEN_INV, "GAMEMODES");
|
||||
Inventories.registerItemAction("SIGN", Inventories.Action.OPEN_INV, "LANGUAGE");
|
||||
Inventories.registerItemAction("CHARGE", Inventories.Action.OPEN_INV, "FEATURES");
|
||||
Inventories.registerItemAction("DOOR", Inventories.Action.COMMAND, "spawn");
|
||||
Inventories.registerItemAction("EYE", Inventories.Action.SERVER, "lobby");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package de.anura.core;
|
||||
|
||||
import de.anura.core.API.Core;
|
||||
import de.anura.core.API.Errors;
|
||||
import static de.anura.core.AnuraCore.sql;
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
@@ -21,11 +22,11 @@ import org.bukkit.plugin.messaging.PluginMessageListener;
|
||||
public class Signs implements PluginMessageListener {
|
||||
|
||||
public void updateServerSigns() {
|
||||
if (Bukkit.getOnlinePlayers().length == 0) {
|
||||
return;
|
||||
}
|
||||
ResultSet rs = sql.querySelect("SELECT DISTINCT value FROM coreWarpSigns WHERE type = 'server' AND server = '" + Core.getMainClass().getConfig().getString("server-name") + "'");
|
||||
try {
|
||||
if (Bukkit.getOnlinePlayers().length == 0) {
|
||||
return;
|
||||
}
|
||||
ResultSet rs = sql.querySelect("SELECT DISTINCT value FROM coreWarpSigns WHERE type = 'server' AND server = '" + Core.getMainClass().getConfig().getString("server-name") + "'");
|
||||
rs.last();
|
||||
if (rs.getRow() == 0) {
|
||||
return;
|
||||
@@ -92,21 +93,19 @@ public class Signs implements PluginMessageListener {
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (SQLException | IOException ex) {
|
||||
System.err.println("Exception in updateServerSigns()(Core): " + ex.getLocalizedMessage());
|
||||
} catch (Throwable e) {
|
||||
Errors.reportException(e);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPluginMessageReceived(String channel, Player player, byte[] message) {
|
||||
if (!channel.equals("BungeeCord")) {
|
||||
return;
|
||||
}
|
||||
|
||||
DataInputStream in = new DataInputStream(new ByteArrayInputStream(message));
|
||||
|
||||
try {
|
||||
if (!channel.equals("BungeeCord")) {
|
||||
return;
|
||||
}
|
||||
|
||||
DataInputStream in = new DataInputStream(new ByteArrayInputStream(message));
|
||||
String subchannel = in.readUTF();
|
||||
if (subchannel.equals("PlayerCount")) {
|
||||
String server = in.readUTF();
|
||||
@@ -165,8 +164,8 @@ public class Signs implements PluginMessageListener {
|
||||
Core.getMainClass().perms.reload();
|
||||
Core.getMainClass().perms.updateAllPlayers();
|
||||
}
|
||||
} catch (IOException | SQLException ex) {
|
||||
System.err.println("Exception in updateServerSigns()(Core): " + ex.getLocalizedMessage());
|
||||
} catch (Throwable e) {
|
||||
Errors.reportException(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package de.anura.core.commands;
|
||||
|
||||
import de.anura.core.API.Core;
|
||||
import de.anura.core.API.Errors;
|
||||
import de.anura.core.AnuraCore;
|
||||
import de.anura.core.LanguageSupport;
|
||||
import java.io.File;
|
||||
@@ -17,66 +18,70 @@ public class AdminCommands implements CommandExecutor {
|
||||
|
||||
@Override
|
||||
public boolean onCommand(CommandSender sender, Command cmd, String alias, String[] args) {
|
||||
Player P = null;
|
||||
if (sender instanceof Player) {
|
||||
P = (Player) sender;
|
||||
}
|
||||
if (cmd.getName().equalsIgnoreCase("clearArrows")) {
|
||||
if (P == null) {
|
||||
Core.statusMsg(sender, "only_player_cmd", false);
|
||||
return true;
|
||||
try {
|
||||
Player P = null;
|
||||
if (sender instanceof Player) {
|
||||
P = (Player) sender;
|
||||
}
|
||||
if (!sender.hasPermission("core.commands.cleararrows")) {
|
||||
Core.statusMsg(sender, "no_perms", false);
|
||||
return true;
|
||||
}
|
||||
for (Player pl : Core.getMainClass().sittingPlayer.keySet()) {
|
||||
Core.endSitting(pl);
|
||||
}
|
||||
for (Arrow a : P.getWorld().getEntitiesByClass(Arrow.class)) {
|
||||
a.remove();
|
||||
}
|
||||
Core.getTools().sendStatusMsg(sender, "Done!", true);
|
||||
return true;
|
||||
} else if (cmd.getName().equalsIgnoreCase("core")) {
|
||||
if (!sender.hasPermission("core.commands.core")) {
|
||||
Core.statusMsg(sender, "no_perms", false);
|
||||
return true;
|
||||
}
|
||||
if (args.length != 1) {
|
||||
Core.statusMsg(sender, "wrong_args_count", false);
|
||||
return false;
|
||||
}
|
||||
if ((args[0].equalsIgnoreCase("reload") || args[0].equalsIgnoreCase("rl")) && sender.isOp()) {
|
||||
try {
|
||||
Core.getMainClass().getConfig().load(new File("plugins/Core/", "config.yml"));
|
||||
Core.getMainClass().lang = new LanguageSupport(Core.getMainClass());
|
||||
Core.statusMsg(sender, "config_rl_done", true);
|
||||
} catch (IOException ex) {
|
||||
Core.statusMsg(sender, "config_rl_error_io", false);
|
||||
} catch (InvalidConfigurationException ex) {
|
||||
Core.statusMsg(sender, "config_rl_invalid", false);
|
||||
if (cmd.getName().equalsIgnoreCase("clearArrows")) {
|
||||
if (P == null) {
|
||||
Core.statusMsg(sender, "only_player_cmd", false);
|
||||
return true;
|
||||
}
|
||||
return true;
|
||||
} else if (args[0].equalsIgnoreCase("save") && sender.isOp()) {
|
||||
try {
|
||||
Core.getMainClass().getConfig().save(new File("plugins/Core/", "config.yml"));
|
||||
Core.statusMsg(sender, "config_save", true);
|
||||
} catch (IOException ex) {
|
||||
Core.statusMsg(sender, "config_save_io_err", false);
|
||||
if (!sender.hasPermission("core.commands.cleararrows")) {
|
||||
Core.statusMsg(sender, "no_perms", false);
|
||||
return true;
|
||||
}
|
||||
} else if (args[0].equalsIgnoreCase("debugclosemysql") && sender.isOp()) {
|
||||
AnuraCore.sql.closeConnection();
|
||||
Core.statusMsg(sender, "debug_mysql_closed", true);
|
||||
return true;
|
||||
}
|
||||
} else if (cmd.getName().equalsIgnoreCase("setspawn")) {
|
||||
if (P != null && P.hasPermission("core.commands.setspawn")) {
|
||||
Location l = P.getLocation();
|
||||
l.getWorld().setSpawnLocation((int) l.getX(), (int) l.getY(), (int) l.getZ());
|
||||
Core.statusMsg(P, "spawn_set", true);
|
||||
for (Player pl : Core.getMainClass().sittingPlayer.keySet()) {
|
||||
Core.endSitting(pl);
|
||||
}
|
||||
for (Arrow a : P.getWorld().getEntitiesByClass(Arrow.class)) {
|
||||
a.remove();
|
||||
}
|
||||
Core.getTools().sendStatusMsg(sender, "Done!", true);
|
||||
return true;
|
||||
} else if (cmd.getName().equalsIgnoreCase("core")) {
|
||||
if (!sender.hasPermission("core.commands.core")) {
|
||||
Core.statusMsg(sender, "no_perms", false);
|
||||
return true;
|
||||
}
|
||||
if (args.length != 1) {
|
||||
Core.statusMsg(sender, "wrong_args_count", false);
|
||||
return false;
|
||||
}
|
||||
if ((args[0].equalsIgnoreCase("reload") || args[0].equalsIgnoreCase("rl")) && sender.isOp()) {
|
||||
try {
|
||||
Core.getMainClass().getConfig().load(new File("plugins/Core/", "config.yml"));
|
||||
Core.getMainClass().lang = new LanguageSupport(Core.getMainClass());
|
||||
Core.statusMsg(sender, "config_rl_done", true);
|
||||
} catch (IOException ex) {
|
||||
Core.statusMsg(sender, "config_rl_error_io", false);
|
||||
} catch (InvalidConfigurationException ex) {
|
||||
Core.statusMsg(sender, "config_rl_invalid", false);
|
||||
}
|
||||
return true;
|
||||
} else if (args[0].equalsIgnoreCase("save") && sender.isOp()) {
|
||||
try {
|
||||
Core.getMainClass().getConfig().save(new File("plugins/Core/", "config.yml"));
|
||||
Core.statusMsg(sender, "config_save", true);
|
||||
} catch (IOException ex) {
|
||||
Core.statusMsg(sender, "config_save_io_err", false);
|
||||
}
|
||||
} else if (args[0].equalsIgnoreCase("debugclosemysql") && sender.isOp()) {
|
||||
AnuraCore.sql.closeConnection();
|
||||
Core.statusMsg(sender, "debug_mysql_closed", true);
|
||||
return true;
|
||||
}
|
||||
} else if (cmd.getName().equalsIgnoreCase("setspawn")) {
|
||||
if (P != null && P.hasPermission("core.commands.setspawn")) {
|
||||
Location l = P.getLocation();
|
||||
l.getWorld().setSpawnLocation((int) l.getX(), (int) l.getY(), (int) l.getZ());
|
||||
Core.statusMsg(P, "spawn_set", true);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
} catch(Throwable e) {
|
||||
Errors.reportException(e);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package de.anura.core.commands;
|
||||
|
||||
import de.anura.core.API.Core;
|
||||
import de.anura.core.API.Errors;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.OfflinePlayer;
|
||||
import org.bukkit.command.BlockCommandSender;
|
||||
@@ -14,45 +15,48 @@ public class OtherCommands implements CommandExecutor {
|
||||
|
||||
@Override
|
||||
public boolean onCommand(CommandSender sender, Command cmd, String alias, String[] args) {
|
||||
Player P = null;
|
||||
if (sender instanceof Player) {
|
||||
P = (Player) sender;
|
||||
}
|
||||
if (cmd.getName().equalsIgnoreCase("togglecommands")) {
|
||||
if (!(sender instanceof BlockCommandSender) && !(sender instanceof ConsoleCommandSender)) {
|
||||
Core.getTools().sendStatusMsg(sender, "Only command block cmd!", false);
|
||||
try {
|
||||
Player P = null;
|
||||
if (sender instanceof Player) {
|
||||
P = (Player) sender;
|
||||
}
|
||||
if (cmd.getName().equalsIgnoreCase("togglecommands")) {
|
||||
if (!(sender instanceof BlockCommandSender) && !(sender instanceof ConsoleCommandSender)) {
|
||||
Core.getTools().sendStatusMsg(sender, "Only command block cmd!", false);
|
||||
return true;
|
||||
}
|
||||
if (args.length != 2) {
|
||||
return false;
|
||||
}
|
||||
String action = args[1];
|
||||
if (!action.equals("disable") && !action.equals("enable")) {
|
||||
return true;
|
||||
}
|
||||
OfflinePlayer op = Bukkit.getOfflinePlayer(args[0]);
|
||||
if (!op.isOnline()) {
|
||||
return true;
|
||||
}
|
||||
Boolean b = action.equals("disable");
|
||||
Core.getMainClass().disableCommandsAdventure.put(op.getPlayer(), b);
|
||||
return true;
|
||||
}
|
||||
if (args.length != 2) {
|
||||
return false;
|
||||
}
|
||||
String action = args[1];
|
||||
if (!action.equals("disable") && !action.equals("enable")) {
|
||||
} else if (cmd.getName().equalsIgnoreCase("none")) {
|
||||
Core.statusMsg(sender, "cmd_not_found", false);
|
||||
return true;
|
||||
} else if (cmd.getName().equalsIgnoreCase("addAimTWWin")) {
|
||||
if (!(sender instanceof BlockCommandSender) && !(sender instanceof ConsoleCommandSender)) {
|
||||
Core.getTools().sendStatusMsg(sender, "Only command block cmd!", false);
|
||||
return true;
|
||||
}
|
||||
if (args.length != 1) return false;
|
||||
String p = args[0];
|
||||
if (Bukkit.getOfflinePlayer(p).isOnline()) {
|
||||
Player player = Bukkit.getPlayer(p);
|
||||
Core.getMainClass().aimTheWaterWins.put(player, Core.getMainClass().aimTheWaterWins.get(player) + 1);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
OfflinePlayer op = Bukkit.getOfflinePlayer(args[0]);
|
||||
if (!op.isOnline()) {
|
||||
return true;
|
||||
}
|
||||
Boolean b = action.equals("disable");
|
||||
Core.getMainClass().disableCommandsAdventure.put(op.getPlayer(), b);
|
||||
return true;
|
||||
} else if (cmd.getName().equalsIgnoreCase("none")) {
|
||||
Core.statusMsg(sender, "cmd_not_found", false);
|
||||
return true;
|
||||
} else if (cmd.getName().equalsIgnoreCase("addAimTWWin")) {
|
||||
if (!(sender instanceof BlockCommandSender) && !(sender instanceof ConsoleCommandSender)) {
|
||||
Core.getTools().sendStatusMsg(sender, "Only command block cmd!", false);
|
||||
return true;
|
||||
}
|
||||
if (args.length != 1) return false;
|
||||
String p = args[0];
|
||||
if (Bukkit.getOfflinePlayer(p).isOnline()) {
|
||||
Player player = Bukkit.getPlayer(p);
|
||||
Core.getMainClass().aimTheWaterWins.put(player, Core.getMainClass().aimTheWaterWins.get(player) + 1);
|
||||
return true;
|
||||
}
|
||||
|
||||
} catch(Throwable e) {
|
||||
Errors.reportException(e);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
package de.anura.core.commands;
|
||||
|
||||
import de.anura.core.API.Core;
|
||||
import de.anura.core.API.Errors;
|
||||
import de.anura.core.API.Money;
|
||||
import static de.anura.core.AnuraCore.sql;
|
||||
import de.anura.core.Features;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Location;
|
||||
@@ -22,172 +22,172 @@ public class PlayerCommands implements CommandExecutor {
|
||||
|
||||
@Override
|
||||
public boolean onCommand(CommandSender sender, Command cmd, String cmdLabel, String[] args) {
|
||||
Player P = null;
|
||||
if (sender instanceof Player) {
|
||||
P = (Player) sender;
|
||||
}
|
||||
if (cmd.getName().equalsIgnoreCase("toggledbljump")) {
|
||||
if (P == null) {
|
||||
Core.statusMsg(sender, "only_player_cmd", false);
|
||||
return true;
|
||||
try {
|
||||
Player P = null;
|
||||
if (sender instanceof Player) {
|
||||
P = (Player) sender;
|
||||
}
|
||||
if (P.getAllowFlight()) {
|
||||
Core.getMainClass().getFeatures().disableFeature(P, Features.Feature.DOUBLE_JUMP);
|
||||
} else {
|
||||
Core.getMainClass().getFeatures().enableFeature(P, Features.Feature.DOUBLE_JUMP);
|
||||
}
|
||||
return true;
|
||||
} else if (cmd.getName().equalsIgnoreCase("toggleboat")) {
|
||||
if (P == null) {
|
||||
Core.statusMsg(sender, "only_player_cmd", false);
|
||||
return true;
|
||||
}
|
||||
if (Core.getMainClass().getFeatures().featureEnabled.get(P).get(Features.Feature.BOAT)) {
|
||||
Core.getMainClass().getFeatures().disableFeature(P, Features.Feature.BOAT);
|
||||
} else {
|
||||
Core.getMainClass().getFeatures().enableFeature(P, Features.Feature.BOAT);
|
||||
}
|
||||
return true;
|
||||
} else if (cmd.getName().equalsIgnoreCase("joinminigame")) {
|
||||
if (P == null) {
|
||||
Core.statusMsg(sender, "only_player_cmd", false);
|
||||
return true;
|
||||
}
|
||||
if (args.length != 1) {
|
||||
return false;
|
||||
}
|
||||
if (args[0].equalsIgnoreCase("xpbattle")) {
|
||||
Objective o = Bukkit.getScoreboardManager().getMainScoreboard().getObjective("xpBattleJoin");
|
||||
if (o == null) {
|
||||
if (cmd.getName().equalsIgnoreCase("toggledbljump")) {
|
||||
if (P == null) {
|
||||
Core.statusMsg(sender, "only_player_cmd", false);
|
||||
return true;
|
||||
}
|
||||
o.getScore(P).setScore(1);
|
||||
Core.statusMsg(sender, "joined_xpBattle", true);
|
||||
return true;
|
||||
} else if (args[0].equalsIgnoreCase("pool")) {
|
||||
Objective o = Bukkit.getScoreboardManager().getMainScoreboard().getObjective("poolJoin");
|
||||
if (o == null) {
|
||||
return true;
|
||||
}
|
||||
o.getScore(P).setScore(1);
|
||||
Core.statusMsg(sender, "joined_pool", true);
|
||||
return true;
|
||||
}
|
||||
} else if (cmd.getName().equalsIgnoreCase("leaveminigame")) {
|
||||
if (P == null) {
|
||||
Core.statusMsg(sender, "only_player_cmd", false);
|
||||
return true;
|
||||
}
|
||||
if (args.length != 1) {
|
||||
return false;
|
||||
}
|
||||
if (args[0].equalsIgnoreCase("xpbattle")) {
|
||||
Objective o = Bukkit.getScoreboardManager().getMainScoreboard().getObjective("xpBattleJoin");
|
||||
if (o == null) {
|
||||
return true;
|
||||
}
|
||||
o.getScore(P).setScore(0);
|
||||
Core.statusMsg(sender, "left_xpBattle", true);
|
||||
return true;
|
||||
} else if (args[0].equalsIgnoreCase("pool")) {
|
||||
Objective o = Bukkit.getScoreboardManager().getMainScoreboard().getObjective("poolJoin");
|
||||
if (o == null) {
|
||||
return true;
|
||||
}
|
||||
o.getScore(P).setScore(0);
|
||||
Core.statusMsg(sender, "left_pool", true);
|
||||
return true;
|
||||
}
|
||||
} else if (cmd.getName().equalsIgnoreCase("toggleminigame")) {
|
||||
if (P == null) {
|
||||
Core.statusMsg(sender, "only_player_cmd", false);
|
||||
return true;
|
||||
}
|
||||
if (args.length != 1) {
|
||||
return false;
|
||||
}
|
||||
if (args[0].equalsIgnoreCase("xpbattle")) {
|
||||
Objective o = Bukkit.getScoreboardManager().getMainScoreboard().getObjective("xpBattleJoin");
|
||||
if (o == null) {
|
||||
return true;
|
||||
}
|
||||
if (o.getScore(P).getScore() == 0) {
|
||||
Bukkit.dispatchCommand(sender, "joinminigame xpBattle");
|
||||
return true;
|
||||
if (P.getAllowFlight()) {
|
||||
Core.getMainClass().getFeatures().disableFeature(P, Features.Feature.DOUBLE_JUMP);
|
||||
} else {
|
||||
Bukkit.dispatchCommand(sender, "leaveminigame xpBattle");
|
||||
Core.getMainClass().getFeatures().enableFeature(P, Features.Feature.DOUBLE_JUMP);
|
||||
}
|
||||
return true;
|
||||
} else if (cmd.getName().equalsIgnoreCase("toggleboat")) {
|
||||
if (P == null) {
|
||||
Core.statusMsg(sender, "only_player_cmd", false);
|
||||
return true;
|
||||
}
|
||||
} else if (args[0].equalsIgnoreCase("pool")) {
|
||||
Objective o = Bukkit.getScoreboardManager().getMainScoreboard().getObjective("poolJoin");
|
||||
if (o == null) {
|
||||
return true;
|
||||
}
|
||||
if (o.getScore(P).getScore() == 0) {
|
||||
Bukkit.dispatchCommand(sender, "joinminigame pool");
|
||||
return true;
|
||||
if (Core.getMainClass().getFeatures().featureEnabled.get(P).get(Features.Feature.BOAT)) {
|
||||
Core.getMainClass().getFeatures().disableFeature(P, Features.Feature.BOAT);
|
||||
} else {
|
||||
Bukkit.dispatchCommand(sender, "leaveminigame pool");
|
||||
Core.getMainClass().getFeatures().enableFeature(P, Features.Feature.BOAT);
|
||||
}
|
||||
return true;
|
||||
} else if (cmd.getName().equalsIgnoreCase("joinminigame")) {
|
||||
if (P == null) {
|
||||
Core.statusMsg(sender, "only_player_cmd", false);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
} else if (cmd.getName().equalsIgnoreCase("hilfe")) {
|
||||
if (!cmdLabel.equals("hilfe") && !cmdLabel.equals("help") && !cmdLabel.equals("?")) {
|
||||
cmdLabel = "hilfe";
|
||||
}
|
||||
if (sender.hasPermission("core.commands.help")) {
|
||||
sender.sendMessage(ChatColor.RED + "Achtung: " + ChatColor.YELLOW + "Die echte Hilfe gibts mit " + ChatColor.BLUE + "/?" + ChatColor.YELLOW + "!");
|
||||
}
|
||||
if (args.length == 0) {
|
||||
sender.sendMessage(ChatColor.YELLOW + "-----------" + ChatColor.AQUA + "Hilfe" + ChatColor.YELLOW + "-----------");
|
||||
sender.sendMessage(ChatColor.GREEN + "Hilfe zu den Befehlen gibt es mit " + ChatColor.BLUE + "/" + cmdLabel + " commands");
|
||||
sender.sendMessage(ChatColor.GOLD + "Informationen zu unseren GameModes erhälst du mit " + ChatColor.BLUE + "/" + cmdLabel + " gamemodes");
|
||||
} else if (args.length == 1) {
|
||||
if (args[0].equalsIgnoreCase("commands")) {
|
||||
sender.sendMessage(ChatColor.YELLOW + "-----------" + ChatColor.AQUA + "Befehle" + ChatColor.YELLOW + "-----------");
|
||||
sender.sendMessage(ChatColor.BLUE + "/lobby " + ChatColor.GREEN + "Bringt dich jederzeit zurück zur Lobby.");
|
||||
sender.sendMessage(ChatColor.BLUE + "/spawn " + ChatColor.GOLD + "Teleportiert dich zum Spawn.");
|
||||
sender.sendMessage(ChatColor.BLUE + "/money " + ChatColor.GREEN + "Zeigt dein Geld an.");
|
||||
sender.sendMessage(ChatColor.RED + "Befehle für den Smash-Gamemode siehst du mit " + ChatColor.BLUE + "/" + cmdLabel + " commands smash");
|
||||
} else if (args[0].equalsIgnoreCase("gamemodes")) {
|
||||
sender.sendMessage(ChatColor.YELLOW + "-----------" + ChatColor.AQUA + "Gamemodes" + ChatColor.YELLOW + "-----------");
|
||||
sender.sendMessage(ChatColor.GRAY + "----------" + ChatColor.GREEN + "Smash PvP" + ChatColor.GRAY + "-----------");
|
||||
sender.sendMessage(ChatColor.BLUE + "In Smash PvP geht es darum, mithilfe von verschiedenen Klassen deine "
|
||||
+ "Gegner ins Wasser, in die Lava oder aus der Welt zu schlagen. "
|
||||
+ "Du kannst verschiedenen Arenen beitreten. Es gibt keine Begrenzung, wie "
|
||||
+ "lange du spielen kannst. Jeder Kill gibt dir Münzen. Stirbst du, verlierst du "
|
||||
+ "eine Münze.");
|
||||
sender.sendMessage(ChatColor.GOLD + "Mit " + ChatColor.RED + "/" + cmdLabel + " commands smash" + ChatColor.GOLD + " kannst du dir");
|
||||
sender.sendMessage(ChatColor.GOLD + "alle Befehle des Minigames anzeigen lassen.");
|
||||
if (args.length != 1) {
|
||||
return false;
|
||||
}
|
||||
} else if (args.length == 2) {
|
||||
if (args[0].equalsIgnoreCase("commands") && args[1].equalsIgnoreCase("smash")) {
|
||||
sender.sendMessage(ChatColor.YELLOW + "-----------" + ChatColor.AQUA + "Smash Befehle" + ChatColor.YELLOW + "-----------");
|
||||
sender.sendMessage(ChatColor.BLUE + "/join <Arena> " + ChatColor.GREEN + "Hiermit kannst du einem Smash Game beitreten.");
|
||||
sender.sendMessage(ChatColor.BLUE + "/leave " + ChatColor.GREEN + "Lässt dich ein Spiel verlassen.");
|
||||
sender.sendMessage(ChatColor.BLUE + "/class " + ChatColor.GREEN + "Damit kannst du während eines Spiels die Klasse wechseln.");
|
||||
sender.sendMessage(ChatColor.BLUE + "/classes " + ChatColor.GREEN + "Teleportiert dich in einen Raum, in dem du Klassen kaufen kannst.");
|
||||
sender.sendMessage(ChatColor.BLUE + "/bug <Beschreibung> " + ChatColor.GREEN + "Wenn du einen Bug gefunden hast, kannst du ihn so reporten.");
|
||||
if (args[0].equalsIgnoreCase("xpbattle")) {
|
||||
Objective o = Bukkit.getScoreboardManager().getMainScoreboard().getObjective("xpBattleJoin");
|
||||
if (o == null) {
|
||||
return true;
|
||||
}
|
||||
o.getScore(P).setScore(1);
|
||||
Core.statusMsg(sender, "joined_xpBattle", true);
|
||||
return true;
|
||||
} else if (args[0].equalsIgnoreCase("pool")) {
|
||||
Objective o = Bukkit.getScoreboardManager().getMainScoreboard().getObjective("poolJoin");
|
||||
if (o == null) {
|
||||
return true;
|
||||
}
|
||||
o.getScore(P).setScore(1);
|
||||
Core.statusMsg(sender, "joined_pool", true);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
} else if (cmd.getName().equalsIgnoreCase("spawn")) {
|
||||
if (args.length == 1) {
|
||||
if (sender.hasPermission("core.commands.spawn-other") || sender instanceof BlockCommandSender) {
|
||||
if (Bukkit.getOfflinePlayer(args[0]).isOnline()) {
|
||||
P = Bukkit.getPlayer(args[0]);
|
||||
} else if (cmd.getName().equalsIgnoreCase("leaveminigame")) {
|
||||
if (P == null) {
|
||||
Core.statusMsg(sender, "only_player_cmd", false);
|
||||
return true;
|
||||
}
|
||||
if (args.length != 1) {
|
||||
return false;
|
||||
}
|
||||
if (args[0].equalsIgnoreCase("xpbattle")) {
|
||||
Objective o = Bukkit.getScoreboardManager().getMainScoreboard().getObjective("xpBattleJoin");
|
||||
if (o == null) {
|
||||
return true;
|
||||
}
|
||||
o.getScore(P).setScore(0);
|
||||
Core.statusMsg(sender, "left_xpBattle", true);
|
||||
return true;
|
||||
} else if (args[0].equalsIgnoreCase("pool")) {
|
||||
Objective o = Bukkit.getScoreboardManager().getMainScoreboard().getObjective("poolJoin");
|
||||
if (o == null) {
|
||||
return true;
|
||||
}
|
||||
o.getScore(P).setScore(0);
|
||||
Core.statusMsg(sender, "left_pool", true);
|
||||
return true;
|
||||
}
|
||||
} else if (cmd.getName().equalsIgnoreCase("toggleminigame")) {
|
||||
if (P == null) {
|
||||
Core.statusMsg(sender, "only_player_cmd", false);
|
||||
return true;
|
||||
}
|
||||
if (args.length != 1) {
|
||||
return false;
|
||||
}
|
||||
if (args[0].equalsIgnoreCase("xpbattle")) {
|
||||
Objective o = Bukkit.getScoreboardManager().getMainScoreboard().getObjective("xpBattleJoin");
|
||||
if (o == null) {
|
||||
return true;
|
||||
}
|
||||
if (o.getScore(P).getScore() == 0) {
|
||||
Bukkit.dispatchCommand(sender, "joinminigame xpBattle");
|
||||
return true;
|
||||
} else {
|
||||
Bukkit.dispatchCommand(sender, "leaveminigame xpBattle");
|
||||
return true;
|
||||
}
|
||||
} else if (args[0].equalsIgnoreCase("pool")) {
|
||||
Objective o = Bukkit.getScoreboardManager().getMainScoreboard().getObjective("poolJoin");
|
||||
if (o == null) {
|
||||
return true;
|
||||
}
|
||||
if (o.getScore(P).getScore() == 0) {
|
||||
Bukkit.dispatchCommand(sender, "joinminigame pool");
|
||||
return true;
|
||||
} else {
|
||||
Bukkit.dispatchCommand(sender, "leaveminigame pool");
|
||||
return true;
|
||||
}
|
||||
}
|
||||
} else if (cmd.getName().equalsIgnoreCase("hilfe")) {
|
||||
if (!cmdLabel.equals("hilfe") && !cmdLabel.equals("help") && !cmdLabel.equals("?")) {
|
||||
cmdLabel = "hilfe";
|
||||
}
|
||||
if (sender.hasPermission("core.commands.help")) {
|
||||
sender.sendMessage(ChatColor.RED + "Achtung: " + ChatColor.YELLOW + "Die echte Hilfe gibts mit " + ChatColor.BLUE + "/?" + ChatColor.YELLOW + "!");
|
||||
}
|
||||
if (args.length == 0) {
|
||||
sender.sendMessage(ChatColor.YELLOW + "-----------" + ChatColor.AQUA + "Hilfe" + ChatColor.YELLOW + "-----------");
|
||||
sender.sendMessage(ChatColor.GREEN + "Hilfe zu den Befehlen gibt es mit " + ChatColor.BLUE + "/" + cmdLabel + " commands");
|
||||
sender.sendMessage(ChatColor.GOLD + "Informationen zu unseren GameModes erhälst du mit " + ChatColor.BLUE + "/" + cmdLabel + " gamemodes");
|
||||
} else if (args.length == 1) {
|
||||
if (args[0].equalsIgnoreCase("commands")) {
|
||||
sender.sendMessage(ChatColor.YELLOW + "-----------" + ChatColor.AQUA + "Befehle" + ChatColor.YELLOW + "-----------");
|
||||
sender.sendMessage(ChatColor.BLUE + "/lobby " + ChatColor.GREEN + "Bringt dich jederzeit zurück zur Lobby.");
|
||||
sender.sendMessage(ChatColor.BLUE + "/spawn " + ChatColor.GOLD + "Teleportiert dich zum Spawn.");
|
||||
sender.sendMessage(ChatColor.BLUE + "/money " + ChatColor.GREEN + "Zeigt dein Geld an.");
|
||||
sender.sendMessage(ChatColor.RED + "Befehle für den Smash-Gamemode siehst du mit " + ChatColor.BLUE + "/" + cmdLabel + " commands smash");
|
||||
} else if (args[0].equalsIgnoreCase("gamemodes")) {
|
||||
sender.sendMessage(ChatColor.YELLOW + "-----------" + ChatColor.AQUA + "Gamemodes" + ChatColor.YELLOW + "-----------");
|
||||
sender.sendMessage(ChatColor.GRAY + "----------" + ChatColor.GREEN + "Smash PvP" + ChatColor.GRAY + "-----------");
|
||||
sender.sendMessage(ChatColor.BLUE + "In Smash PvP geht es darum, mithilfe von verschiedenen Klassen deine "
|
||||
+ "Gegner ins Wasser, in die Lava oder aus der Welt zu schlagen. "
|
||||
+ "Du kannst verschiedenen Arenen beitreten. Es gibt keine Begrenzung, wie "
|
||||
+ "lange du spielen kannst. Jeder Kill gibt dir Münzen. Stirbst du, verlierst du "
|
||||
+ "eine Münze.");
|
||||
sender.sendMessage(ChatColor.GOLD + "Mit " + ChatColor.RED + "/" + cmdLabel + " commands smash" + ChatColor.GOLD + " kannst du dir");
|
||||
sender.sendMessage(ChatColor.GOLD + "alle Befehle des Minigames anzeigen lassen.");
|
||||
}
|
||||
} else if (args.length == 2) {
|
||||
if (args[0].equalsIgnoreCase("commands") && args[1].equalsIgnoreCase("smash")) {
|
||||
sender.sendMessage(ChatColor.YELLOW + "-----------" + ChatColor.AQUA + "Smash Befehle" + ChatColor.YELLOW + "-----------");
|
||||
sender.sendMessage(ChatColor.BLUE + "/join <Arena> " + ChatColor.GREEN + "Hiermit kannst du einem Smash Game beitreten.");
|
||||
sender.sendMessage(ChatColor.BLUE + "/leave " + ChatColor.GREEN + "Lässt dich ein Spiel verlassen.");
|
||||
sender.sendMessage(ChatColor.BLUE + "/class " + ChatColor.GREEN + "Damit kannst du während eines Spiels die Klasse wechseln.");
|
||||
sender.sendMessage(ChatColor.BLUE + "/classes " + ChatColor.GREEN + "Teleportiert dich in einen Raum, in dem du Klassen kaufen kannst.");
|
||||
sender.sendMessage(ChatColor.BLUE + "/bug <Beschreibung> " + ChatColor.GREEN + "Wenn du einen Bug gefunden hast, kannst du ihn so reporten.");
|
||||
}
|
||||
}
|
||||
}
|
||||
if (P == null) {
|
||||
Core.statusMsg(sender, "only_player_cmd", false);
|
||||
return true;
|
||||
}
|
||||
P.teleport(P.getLocation().getWorld().getSpawnLocation());
|
||||
Core.statusMsg(P, "spawn_tp_done", true);
|
||||
return true;
|
||||
} else if (cmd.getName().equalsIgnoreCase("warp")) {
|
||||
try {
|
||||
} else if (cmd.getName().equalsIgnoreCase("spawn")) {
|
||||
if (args.length == 1) {
|
||||
if (sender.hasPermission("core.commands.spawn-other") || sender instanceof BlockCommandSender) {
|
||||
if (Bukkit.getOfflinePlayer(args[0]).isOnline()) {
|
||||
P = Bukkit.getPlayer(args[0]);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (P == null) {
|
||||
Core.statusMsg(sender, "only_player_cmd", false);
|
||||
return true;
|
||||
}
|
||||
P.teleport(P.getLocation().getWorld().getSpawnLocation());
|
||||
Core.statusMsg(P, "spawn_tp_done", true);
|
||||
return true;
|
||||
} else if (cmd.getName().equalsIgnoreCase("warp")) {
|
||||
if (args.length == 0 || args.length > 2) {
|
||||
Core.statusMsg(P, "wrong_args_count", false);
|
||||
return false;
|
||||
@@ -240,76 +240,76 @@ public class PlayerCommands implements CommandExecutor {
|
||||
P.teleport(loc);
|
||||
Core.statusMsg(P, "warp_tp_done", true);
|
||||
return true;
|
||||
} catch (SQLException ex) {
|
||||
System.out.println("Error: " + ex.getLocalizedMessage());
|
||||
}
|
||||
} else if (cmd.getName().equalsIgnoreCase("money")) {
|
||||
if (args.length == 0) {
|
||||
if (P == null) {
|
||||
Core.getTools().sendStatusMsg(sender, "only_player_cmd", false);
|
||||
return true;
|
||||
}
|
||||
Integer money = Money.getMoney(P);
|
||||
Core.getTools().sendStatusMsg(P, Core.getl("you_have", P) + " " + money + " " + Core.getl("coins", P), true);
|
||||
return true;
|
||||
} else if ((args[0].equalsIgnoreCase("pay")) && (args.length == 3)) {
|
||||
Integer money = Integer.parseInt(args[2]);
|
||||
boolean canPay;
|
||||
Integer geld = 0;
|
||||
if (sender.hasPermission("core.money.endless")) {
|
||||
if (P != null) {
|
||||
canPay = P.hasPermission("core.money.endless");
|
||||
} else {
|
||||
canPay = true;
|
||||
}
|
||||
} else {
|
||||
} else if (cmd.getName().equalsIgnoreCase("money")) {
|
||||
if (args.length == 0) {
|
||||
if (P == null) {
|
||||
Core.statusMsg(sender, "only_player_cmd", false);
|
||||
Core.getTools().sendStatusMsg(sender, "only_player_cmd", false);
|
||||
return true;
|
||||
}
|
||||
if (P.getName().equals(args[1])) {
|
||||
Core.statusMsg(P, "money_pay_yourself", false);
|
||||
return true;
|
||||
}
|
||||
if (!(money > 0)) {
|
||||
Core.statusMsg(P, "number_must_positive", false);
|
||||
return true;
|
||||
}
|
||||
int currentMoney = Money.getMoney(P);
|
||||
if (currentMoney < money) {
|
||||
Core.statusMsg(P, "not_enough_money", false);
|
||||
canPay = false;
|
||||
} else {
|
||||
geld = currentMoney;
|
||||
canPay = true;
|
||||
}
|
||||
}
|
||||
if (canPay) {
|
||||
OfflinePlayer oP = Bukkit.getOfflinePlayer(args[1]);
|
||||
if (!oP.hasPlayedBefore() && !oP.isOnline()) {
|
||||
Core.statusMsg(P, "never_seen_player", false);
|
||||
return true;
|
||||
}
|
||||
int currentMoney2 = Money.getMoney(oP);
|
||||
if (currentMoney2 != -1) {
|
||||
Money.payMoney(oP, money);
|
||||
if (P == null) {
|
||||
} else if (!P.hasPermission("core.money.endless")) {
|
||||
Money.payMoney(P, -money);
|
||||
}
|
||||
Core.getTools().sendStatusMsg(sender, Core.getl("money_payed_1", sender) + " " + args[1] + " " + Core.getl("money_payed_2", sender) + " " + args[2] + " " + Core.getl("money_payed_3", sender), true);
|
||||
if (oP.isOnline()) {
|
||||
Core.getTools().sendStatusMsg(oP.getPlayer(), Core.getl("money_got_1", oP.getPlayer()) + " " + args[2] + " " + Core.getl("money_got_2", oP.getPlayer()) + " " + sender.getName() + " " + Core.getl("money_got_3", oP.getPlayer()), true);
|
||||
}
|
||||
return true;
|
||||
} else {
|
||||
Core.statusMsg(sender, "never_seen_player", false);
|
||||
return true;
|
||||
}
|
||||
} else {
|
||||
Integer money = Money.getMoney(P);
|
||||
Core.getTools().sendStatusMsg(P, Core.getl("you_have", P) + " " + money + " " + Core.getl("coins", P), true);
|
||||
return true;
|
||||
} else if ((args[0].equalsIgnoreCase("pay")) && (args.length == 3)) {
|
||||
Integer money = Integer.parseInt(args[2]);
|
||||
boolean canPay;
|
||||
Integer geld = 0;
|
||||
if (sender.hasPermission("core.money.endless")) {
|
||||
if (P != null) {
|
||||
canPay = P.hasPermission("core.money.endless");
|
||||
} else {
|
||||
canPay = true;
|
||||
}
|
||||
} else {
|
||||
if (P == null) {
|
||||
Core.statusMsg(sender, "only_player_cmd", false);
|
||||
return true;
|
||||
}
|
||||
if (P.getName().equals(args[1])) {
|
||||
Core.statusMsg(P, "money_pay_yourself", false);
|
||||
return true;
|
||||
}
|
||||
if (!(money > 0)) {
|
||||
Core.statusMsg(P, "number_must_positive", false);
|
||||
return true;
|
||||
}
|
||||
int currentMoney = Money.getMoney(P);
|
||||
if (currentMoney < money) {
|
||||
Core.statusMsg(P, "not_enough_money", false);
|
||||
canPay = false;
|
||||
} else {
|
||||
geld = currentMoney;
|
||||
canPay = true;
|
||||
}
|
||||
}
|
||||
if (canPay) {
|
||||
OfflinePlayer oP = Bukkit.getOfflinePlayer(args[1]);
|
||||
if (!oP.hasPlayedBefore() && !oP.isOnline()) {
|
||||
Core.statusMsg(P, "never_seen_player", false);
|
||||
return true;
|
||||
}
|
||||
int currentMoney2 = Money.getMoney(oP);
|
||||
if (currentMoney2 != -1) {
|
||||
Money.payMoney(oP, money);
|
||||
if (P == null) {
|
||||
} else if (!P.hasPermission("core.money.endless")) {
|
||||
Money.payMoney(P, -money);
|
||||
}
|
||||
Core.getTools().sendStatusMsg(sender, Core.getl("money_payed_1", sender) + " " + args[1] + " " + Core.getl("money_payed_2", sender) + " " + args[2] + " " + Core.getl("money_payed_3", sender), true);
|
||||
if (oP.isOnline()) {
|
||||
Core.getTools().sendStatusMsg(oP.getPlayer(), Core.getl("money_got_1", oP.getPlayer()) + " " + args[2] + " " + Core.getl("money_got_2", oP.getPlayer()) + " " + sender.getName() + " " + Core.getl("money_got_3", oP.getPlayer()), true);
|
||||
}
|
||||
return true;
|
||||
} else {
|
||||
Core.statusMsg(sender, "never_seen_player", false);
|
||||
return true;
|
||||
}
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch(Throwable e) {
|
||||
Errors.reportException(e);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package de.anura.core.commands;
|
||||
|
||||
import de.anura.core.API.Core;
|
||||
import de.anura.core.API.Errors;
|
||||
import de.anura.core.AnuraCore;
|
||||
import static de.anura.core.AnuraCore.sql;
|
||||
import de.anura.core.Features;
|
||||
@@ -12,7 +13,6 @@ import java.net.MalformedURLException;
|
||||
import java.net.URI;
|
||||
import java.net.URL;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import javax.imageio.ImageIO;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
@@ -33,230 +33,225 @@ public class TeamCommands implements CommandExecutor {
|
||||
|
||||
@Override
|
||||
public boolean onCommand(CommandSender sender, Command cmd, String alias, String[] args) {
|
||||
Player P = null;
|
||||
if (sender instanceof Player) {
|
||||
P = (Player) sender;
|
||||
}
|
||||
if (cmd.getName().equalsIgnoreCase("setcmd")) {
|
||||
if (P == null) {
|
||||
Core.statusMsg(sender, "only_player_cmd", false);
|
||||
return true;
|
||||
try {
|
||||
Player P = null;
|
||||
if (sender instanceof Player) {
|
||||
P = (Player) sender;
|
||||
}
|
||||
if (!sender.hasPermission("core.commands.editcmd")) {
|
||||
Core.statusMsg(sender, "no_perms", false);
|
||||
return true;
|
||||
}
|
||||
if (args.length < 1) {
|
||||
Core.statusMsg(sender, "wrong_args_count", false);
|
||||
return false;
|
||||
}
|
||||
Block b = P.getTargetBlock(null, 100);
|
||||
if (b.getType().equals(Material.COMMAND)) {
|
||||
String command = "";
|
||||
for (String arg : args) {
|
||||
if (!command.equals("")) {
|
||||
command += " ";
|
||||
}
|
||||
command += arg;
|
||||
if (cmd.getName().equalsIgnoreCase("setcmd")) {
|
||||
if (P == null) {
|
||||
Core.statusMsg(sender, "only_player_cmd", false);
|
||||
return true;
|
||||
}
|
||||
CommandBlock cb = (CommandBlock) b.getState();
|
||||
cb.setCommand(command);
|
||||
cb.update();
|
||||
}
|
||||
return true;
|
||||
} else if (cmd.getName().equalsIgnoreCase("addcmd")) {
|
||||
if (P == null) {
|
||||
Core.statusMsg(sender, "only_player_cmd", false);
|
||||
return true;
|
||||
}
|
||||
if (!sender.hasPermission("core.commands.editcmd")) {
|
||||
Core.statusMsg(sender, "no_perms", false);
|
||||
return true;
|
||||
}
|
||||
if (args.length != 1) {
|
||||
Core.statusMsg(sender, "wrong_args_count", false);
|
||||
return false;
|
||||
}
|
||||
Block b = P.getTargetBlock(null, 100);
|
||||
if (b.getType().equals(Material.COMMAND)) {
|
||||
CommandBlock cb = (CommandBlock) b.getState();
|
||||
String command = "";
|
||||
for (String arg : args) {
|
||||
if (!command.equals("")) {
|
||||
command += " ";
|
||||
}
|
||||
command += arg;
|
||||
if (!sender.hasPermission("core.commands.editcmd")) {
|
||||
Core.statusMsg(sender, "no_perms", false);
|
||||
return true;
|
||||
}
|
||||
if (args.length < 1) {
|
||||
Core.statusMsg(sender, "wrong_args_count", false);
|
||||
return false;
|
||||
}
|
||||
Block b = P.getTargetBlock(null, 100);
|
||||
if (b.getType().equals(Material.COMMAND)) {
|
||||
String command = "";
|
||||
for (String arg : args) {
|
||||
if (!command.equals("")) {
|
||||
command += " ";
|
||||
}
|
||||
command += arg;
|
||||
}
|
||||
CommandBlock cb = (CommandBlock) b.getState();
|
||||
cb.setCommand(command);
|
||||
cb.update();
|
||||
}
|
||||
command = cb.getCommand() + command;
|
||||
cb.setCommand(command);
|
||||
cb.update();
|
||||
}
|
||||
return true;
|
||||
} else if (cmd.getName().equalsIgnoreCase("gm")) {
|
||||
String command = "gamemode ";
|
||||
for (String arg : args) {
|
||||
command += arg + " ";
|
||||
}
|
||||
Bukkit.dispatchCommand(sender, command);
|
||||
return true;
|
||||
} else if (cmd.getName().equalsIgnoreCase("stairmode")) {
|
||||
if (P == null) {
|
||||
Core.statusMsg(sender, "only_player_cmd", false);
|
||||
return true;
|
||||
}
|
||||
if (!P.hasPermission("core.commands.stairmode")) {
|
||||
Core.statusMsg(sender, "no_perms", false);
|
||||
} else if (cmd.getName().equalsIgnoreCase("addcmd")) {
|
||||
if (P == null) {
|
||||
Core.statusMsg(sender, "only_player_cmd", false);
|
||||
return true;
|
||||
}
|
||||
if (!sender.hasPermission("core.commands.editcmd")) {
|
||||
Core.statusMsg(sender, "no_perms", false);
|
||||
return true;
|
||||
}
|
||||
if (args.length != 1) {
|
||||
Core.statusMsg(sender, "wrong_args_count", false);
|
||||
return false;
|
||||
}
|
||||
Block b = P.getTargetBlock(null, 100);
|
||||
if (b.getType().equals(Material.COMMAND)) {
|
||||
CommandBlock cb = (CommandBlock) b.getState();
|
||||
String command = "";
|
||||
for (String arg : args) {
|
||||
if (!command.equals("")) {
|
||||
command += " ";
|
||||
}
|
||||
command += arg;
|
||||
}
|
||||
command = cb.getCommand() + command;
|
||||
cb.setCommand(command);
|
||||
cb.update();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
if (Core.getMainClass().stairMode.contains(P)) {
|
||||
Core.getMainClass().stairMode.remove(P);
|
||||
} else {
|
||||
Core.getMainClass().stairMode.add(P);
|
||||
}
|
||||
Core.getTools().sendStatusMsg(sender, "Done!", true);
|
||||
return true;
|
||||
} else if (cmd.getName().equalsIgnoreCase("flowerpot")) {
|
||||
if (P == null) {
|
||||
Core.statusMsg(sender, "only_player_cmd", false);
|
||||
} else if (cmd.getName().equalsIgnoreCase("gm")) {
|
||||
String command = "gamemode ";
|
||||
for (String arg : args) {
|
||||
command += arg + " ";
|
||||
}
|
||||
Bukkit.dispatchCommand(sender, command);
|
||||
return true;
|
||||
}
|
||||
if (!P.hasPermission("core.commands.flowerpot")) {
|
||||
Core.statusMsg(sender, "no_perms", false);
|
||||
} else if (cmd.getName().equalsIgnoreCase("stairmode")) {
|
||||
if (P == null) {
|
||||
Core.statusMsg(sender, "only_player_cmd", false);
|
||||
return true;
|
||||
}
|
||||
if (!P.hasPermission("core.commands.stairmode")) {
|
||||
Core.statusMsg(sender, "no_perms", false);
|
||||
return true;
|
||||
}
|
||||
if (Core.getMainClass().stairMode.contains(P)) {
|
||||
Core.getMainClass().stairMode.remove(P);
|
||||
} else {
|
||||
Core.getMainClass().stairMode.add(P);
|
||||
}
|
||||
Core.getTools().sendStatusMsg(sender, "Done!", true);
|
||||
return true;
|
||||
}
|
||||
if (args.length != 1) {
|
||||
Core.statusMsg(sender, "wrong_args_count", false);
|
||||
return false;
|
||||
}
|
||||
Location l = P.getLocation();
|
||||
if (Core.getMainClass().flowerPots.containsValue(l)) {
|
||||
Core.statusMsg(sender, "set_arch_exists", false);
|
||||
return true;
|
||||
}
|
||||
Core.getMySql().queryUpdate("INSERT INTO corePots(X,Y,Z,world,url,name,money,type) VALUES('" + l.getBlockX() + "','" + l.getBlockY() + "','" + l.getBlockZ() + "','" + l.getWorld().getName() + "','http://mc-anura.de','" + args[0] + "','1','0')");
|
||||
ResultSet rs = Core.getMySql().querySelect("SELECT id FROM corePots WHERE X = '" + l.getBlockX() + "' AND Y = '" + l.getBlockY() + "' AND Z = '" + l.getBlockZ() + "' AND world = '" + l.getWorld().getName() + "'");
|
||||
try {
|
||||
} else if (cmd.getName().equalsIgnoreCase("flowerpot")) {
|
||||
if (P == null) {
|
||||
Core.statusMsg(sender, "only_player_cmd", false);
|
||||
return true;
|
||||
}
|
||||
if (!P.hasPermission("core.commands.flowerpot")) {
|
||||
Core.statusMsg(sender, "no_perms", false);
|
||||
return true;
|
||||
}
|
||||
if (args.length != 1) {
|
||||
Core.statusMsg(sender, "wrong_args_count", false);
|
||||
return false;
|
||||
}
|
||||
Location l = P.getLocation();
|
||||
if (Core.getMainClass().flowerPots.containsValue(l)) {
|
||||
Core.statusMsg(sender, "set_arch_exists", false);
|
||||
return true;
|
||||
}
|
||||
Core.getMySql().queryUpdate("INSERT INTO corePots(X,Y,Z,world,url,name,money,type) VALUES('" + l.getBlockX() + "','" + l.getBlockY() + "','" + l.getBlockZ() + "','" + l.getWorld().getName() + "','http://mc-anura.de','" + args[0] + "','1','0')");
|
||||
ResultSet rs = Core.getMySql().querySelect("SELECT id FROM corePots WHERE X = '" + l.getBlockX() + "' AND Y = '" + l.getBlockY() + "' AND Z = '" + l.getBlockZ() + "' AND world = '" + l.getWorld().getName() + "'");
|
||||
rs.first();
|
||||
Core.getMainClass().flowerPots.put(rs.getInt("id"), new Location(l.getWorld(), l.getBlockX(), l.getBlockY(), l.getBlockZ()));
|
||||
l.getBlock().setType(Material.BROWN_MUSHROOM);
|
||||
Core.getMainClass().pots.refreshPot(rs.getInt("id"));
|
||||
Core.statusMsg(sender, "set_arch_ok", true);
|
||||
return true;
|
||||
} catch (SQLException ex) {
|
||||
System.out.println("Error onCommand. Setpot");
|
||||
|
||||
}
|
||||
} else if (cmd.getName().equalsIgnoreCase("renderMap")) {
|
||||
if (!sender.hasPermission("core.commands.addmap")) {
|
||||
Core.statusMsg(sender, "no_perms", false);
|
||||
return true;
|
||||
}
|
||||
if (args.length != 2) {
|
||||
Core.statusMsg(sender, "wrong_args_count", false);
|
||||
return false;
|
||||
}
|
||||
final CommandSender cs = sender;
|
||||
final String url = args[0];
|
||||
final String name = args[1];
|
||||
Core.getTools().sendStatusMsg(cs, "The rendering is starting...", true);
|
||||
Bukkit.getScheduler().scheduleSyncDelayedTask(Core.getMainClass(), new Runnable() {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
try {
|
||||
URI uri = URI.create(url);
|
||||
URL locUrl = uri.toURL();
|
||||
BufferedImage imgSrc = ImageIO.read(locUrl.openStream());
|
||||
Image i = imgSrc.getScaledInstance(128, 128, Image.SCALE_SMOOTH);
|
||||
BufferedImage imgScaled = new BufferedImage(128, 128, BufferedImage.TYPE_INT_ARGB);
|
||||
imgScaled.getGraphics().drawImage(i, 0, 0, null);
|
||||
AnuraCore.getInstance().renderedImgs.put(name, imgScaled);
|
||||
Core.getTools().sendStatusMsg(cs, "The rendering has finished!", true);
|
||||
} catch (MalformedURLException ex) {
|
||||
Core.getTools().sendStatusMsg(cs, "Please provide a valid image url!", false);
|
||||
} catch (IOException ex) {
|
||||
Core.getTools().sendStatusMsg(cs, "Image rendering not working! Did you provide a valid url?", false);
|
||||
}
|
||||
}
|
||||
|
||||
}, 1);
|
||||
return true;
|
||||
} else if (cmd.getName().equalsIgnoreCase("addMap")) {
|
||||
if (P == null) {
|
||||
Core.statusMsg(sender, "only_player_cmd", false);
|
||||
return true;
|
||||
}
|
||||
if (!P.hasPermission("core.commands.addmap")) {
|
||||
Core.statusMsg(sender, "no_perms", false);
|
||||
return true;
|
||||
}
|
||||
if (args.length != 1) {
|
||||
Core.statusMsg(sender, "wrong_args_count", false);
|
||||
return false;
|
||||
}
|
||||
if (!Core.getMainClass().renderedImgs.containsKey(args[0])) {
|
||||
Core.getTools().sendStatusMsg(sender, "The image with the given name does not exist or this not rendered yet.", true);
|
||||
return true;
|
||||
}
|
||||
MapView mv = Bukkit.createMap(P.getWorld());
|
||||
for (MapRenderer mr : mv.getRenderers()) {
|
||||
mv.removeRenderer(mr);
|
||||
}
|
||||
mv.addRenderer(new ImgRenderer(args[0]));
|
||||
P.setItemInHand(new ItemStack(Material.MAP, 0, mv.getId()));
|
||||
Core.statusMsg(sender, "addmap_done", true);
|
||||
return true;
|
||||
} else if (cmd.getName().equalsIgnoreCase("sun")) {
|
||||
if (P != null) {
|
||||
if (P.hasPermission("core.commands.sun")) {
|
||||
World w = P.getLocation().getWorld();
|
||||
w.setTime(2000);
|
||||
w.setThundering(false);
|
||||
w.setStorm(false);
|
||||
Core.getMainClass().tools.sendStatusMsg(sender, "Sun!", true);
|
||||
} else if (cmd.getName().equalsIgnoreCase("renderMap")) {
|
||||
if (!sender.hasPermission("core.commands.addmap")) {
|
||||
Core.statusMsg(sender, "no_perms", false);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
} else if (cmd.getName().equalsIgnoreCase("setjumper")) {
|
||||
if (P == null) {
|
||||
Core.statusMsg(sender, "only_player_cmd", false);
|
||||
if (args.length != 2) {
|
||||
Core.statusMsg(sender, "wrong_args_count", false);
|
||||
return false;
|
||||
}
|
||||
final CommandSender cs = sender;
|
||||
final String url = args[0];
|
||||
final String name = args[1];
|
||||
Core.getTools().sendStatusMsg(cs, "The rendering is starting...", true);
|
||||
Bukkit.getScheduler().scheduleSyncDelayedTask(Core.getMainClass(), new Runnable() {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
try {
|
||||
URI uri = URI.create(url);
|
||||
URL locUrl = uri.toURL();
|
||||
BufferedImage imgSrc = ImageIO.read(locUrl.openStream());
|
||||
Image i = imgSrc.getScaledInstance(128, 128, Image.SCALE_SMOOTH);
|
||||
BufferedImage imgScaled = new BufferedImage(128, 128, BufferedImage.TYPE_INT_ARGB);
|
||||
imgScaled.getGraphics().drawImage(i, 0, 0, null);
|
||||
AnuraCore.getInstance().renderedImgs.put(name, imgScaled);
|
||||
Core.getTools().sendStatusMsg(cs, "The rendering has finished!", true);
|
||||
} catch (MalformedURLException ex) {
|
||||
Core.getTools().sendStatusMsg(cs, "Please provide a valid image url!", false);
|
||||
} catch (IOException ex) {
|
||||
Core.getTools().sendStatusMsg(cs, "Image rendering not working! Did you provide a valid url?", false);
|
||||
}
|
||||
}
|
||||
|
||||
}, 1);
|
||||
return true;
|
||||
}
|
||||
if (args.length != 1) {
|
||||
return false;
|
||||
}
|
||||
if (!P.hasPermission("core.commands.setjumper")) {
|
||||
Core.statusMsg(sender, "no_perms", false);
|
||||
} else if (cmd.getName().equalsIgnoreCase("addMap")) {
|
||||
if (P == null) {
|
||||
Core.statusMsg(sender, "only_player_cmd", false);
|
||||
return true;
|
||||
}
|
||||
if (!P.hasPermission("core.commands.addmap")) {
|
||||
Core.statusMsg(sender, "no_perms", false);
|
||||
return true;
|
||||
}
|
||||
if (args.length != 1) {
|
||||
Core.statusMsg(sender, "wrong_args_count", false);
|
||||
return false;
|
||||
}
|
||||
if (!Core.getMainClass().renderedImgs.containsKey(args[0])) {
|
||||
Core.getTools().sendStatusMsg(sender, "The image with the given name does not exist or this not rendered yet.", true);
|
||||
return true;
|
||||
}
|
||||
MapView mv = Bukkit.createMap(P.getWorld());
|
||||
for (MapRenderer mr : mv.getRenderers()) {
|
||||
mv.removeRenderer(mr);
|
||||
}
|
||||
mv.addRenderer(new ImgRenderer(args[0]));
|
||||
P.setItemInHand(new ItemStack(Material.MAP, 0, mv.getId()));
|
||||
Core.statusMsg(sender, "addmap_done", true);
|
||||
return true;
|
||||
}
|
||||
if (Double.valueOf(args[0]) > 10 || Double.valueOf(args[0]) < 0.2) {
|
||||
Core.statusMsg(sender, "setjumper_wrong_number", false);
|
||||
} else if (cmd.getName().equalsIgnoreCase("sun")) {
|
||||
if (P != null) {
|
||||
if (P.hasPermission("core.commands.sun")) {
|
||||
World w = P.getLocation().getWorld();
|
||||
w.setTime(2000);
|
||||
w.setThundering(false);
|
||||
w.setStorm(false);
|
||||
Core.getMainClass().tools.sendStatusMsg(sender, "Sun!", true);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
} else if (cmd.getName().equalsIgnoreCase("setjumper")) {
|
||||
if (P == null) {
|
||||
Core.statusMsg(sender, "only_player_cmd", false);
|
||||
return true;
|
||||
}
|
||||
if (args.length != 1) {
|
||||
return false;
|
||||
}
|
||||
if (!P.hasPermission("core.commands.setjumper")) {
|
||||
Core.statusMsg(sender, "no_perms", false);
|
||||
return true;
|
||||
}
|
||||
if (Double.valueOf(args[0]) > 10 || Double.valueOf(args[0]) < 0.2) {
|
||||
Core.statusMsg(sender, "setjumper_wrong_number", false);
|
||||
return true;
|
||||
}
|
||||
Core.getMainClass().selectableJumper.put(P, Double.valueOf(args[0]));
|
||||
sender.sendMessage(ChatColor.GRAY + "[Anura] " + ChatColor.GREEN + Core.getl("setjumper_select_now", sender) + " " + Double.valueOf(args[0]) + ")");
|
||||
return true;
|
||||
}
|
||||
Core.getMainClass().selectableJumper.put(P, Double.valueOf(args[0]));
|
||||
sender.sendMessage(ChatColor.GRAY + "[Anura] " + ChatColor.GREEN + Core.getl("setjumper_select_now", sender) + " " + Double.valueOf(args[0]) + ")");
|
||||
return true;
|
||||
} else if (cmd.getName().equalsIgnoreCase("flyspeed")) {
|
||||
if (P == null) {
|
||||
Core.statusMsg(sender, "only_player_cmd", false);
|
||||
} else if (cmd.getName().equalsIgnoreCase("flyspeed")) {
|
||||
if (P == null) {
|
||||
Core.statusMsg(sender, "only_player_cmd", false);
|
||||
return true;
|
||||
}
|
||||
if (!P.hasPermission("core.commands.flyspeed")) {
|
||||
Core.statusMsg(P, "no_perms", false);
|
||||
return true;
|
||||
}
|
||||
if (args.length != 1) {
|
||||
return false;
|
||||
}
|
||||
if (Float.parseFloat(args[0]) >= 10 || Float.parseFloat(args[0]) < 0) {
|
||||
Core.statusMsg(P, "flyspeed_wrong_number", false);
|
||||
return true;
|
||||
}
|
||||
P.setFlySpeed(Float.parseFloat(args[0]) / 10);
|
||||
Core.getTools().sendStatusMsg(P, Core.getl("flyspeed_set_1", P) + " " + args[0] + Core.getl("flyspeed_set_2", P), true);
|
||||
return true;
|
||||
}
|
||||
if (!P.hasPermission("core.commands.flyspeed")) {
|
||||
Core.statusMsg(P, "no_perms", false);
|
||||
return true;
|
||||
}
|
||||
if (args.length != 1) {
|
||||
return false;
|
||||
}
|
||||
if (Float.parseFloat(args[0]) >= 10 || Float.parseFloat(args[0]) < 0) {
|
||||
Core.statusMsg(P, "flyspeed_wrong_number", false);
|
||||
return true;
|
||||
}
|
||||
P.setFlySpeed(Float.parseFloat(args[0]) / 10);
|
||||
Core.getTools().sendStatusMsg(P, Core.getl("flyspeed_set_1", P) + " " + args[0] + Core.getl("flyspeed_set_2", P), true);
|
||||
return true;
|
||||
} else if (cmd.getName().equalsIgnoreCase("setwarp")) {
|
||||
try {
|
||||
} else if (cmd.getName().equalsIgnoreCase("setwarp")) {
|
||||
if (P == null) {
|
||||
Core.statusMsg(sender, "only_player_cmd", false);
|
||||
return true;
|
||||
@@ -291,21 +286,17 @@ public class TeamCommands implements CommandExecutor {
|
||||
sql.queryUpdate("INSERT INTO coreWarps(`name`, server, world, X, Y, Z, userWarp) VALUES('" + name + "', '" + server + "', '" + world + "', '" + X + "', '" + Y + "', '" + Z + "', '" + userWarp + "')");
|
||||
Core.statusMsg(P, "warp_set", true);
|
||||
return true;
|
||||
} catch (SQLException ex) {
|
||||
System.out.println("Error: " + ex.getLocalizedMessage());
|
||||
}
|
||||
} else if (cmd.getName().equalsIgnoreCase("remwarp")) {
|
||||
if (args.length != 1) {
|
||||
Core.statusMsg(P, "wrong_args_count", false);
|
||||
return false;
|
||||
}
|
||||
if (!sender.hasPermission("core.commands.remwarp")) {
|
||||
Core.statusMsg(P, "no_perms", false);
|
||||
return true;
|
||||
}
|
||||
String map = args[0];
|
||||
ResultSet rs = sql.querySelect("SELECT name FROM coreWarps WHERE name = '" + map + "'");
|
||||
try {
|
||||
} else if (cmd.getName().equalsIgnoreCase("remwarp")) {
|
||||
if (args.length != 1) {
|
||||
Core.statusMsg(P, "wrong_args_count", false);
|
||||
return false;
|
||||
}
|
||||
if (!sender.hasPermission("core.commands.remwarp")) {
|
||||
Core.statusMsg(P, "no_perms", false);
|
||||
return true;
|
||||
}
|
||||
String map = args[0];
|
||||
ResultSet rs = sql.querySelect("SELECT name FROM coreWarps WHERE name = '" + map + "'");
|
||||
rs.last();
|
||||
if (rs.getRow() == 0) {
|
||||
Core.statusMsg(P, "warp_not_exist", false);
|
||||
@@ -314,25 +305,24 @@ public class TeamCommands implements CommandExecutor {
|
||||
sql.queryUpdate("DELETE FROM coreWarps WHERE name = '" + map + "'");
|
||||
Core.statusMsg(P, "warp_rem_done", true);
|
||||
return true;
|
||||
} catch (SQLException ex) {
|
||||
System.out.println("Error: " + ex.getLocalizedMessage());
|
||||
}
|
||||
|
||||
} else if (cmd.getName().equalsIgnoreCase("toggleBoatFlight")) {
|
||||
if (P != null && P.hasPermission("core.boat.toggleflight")) {
|
||||
if (Features.wantFlight.contains(P.getUniqueId())) {
|
||||
Features.wantFlight.remove(P.getUniqueId());
|
||||
P.sendMessage("Du wurdest aus der Liste entfernt!");
|
||||
} else if (cmd.getName().equalsIgnoreCase("toggleBoatFlight")) {
|
||||
if (P != null && P.hasPermission("core.boat.toggleflight")) {
|
||||
if (Features.wantFlight.contains(P.getUniqueId())) {
|
||||
Features.wantFlight.remove(P.getUniqueId());
|
||||
P.sendMessage("Du wurdest aus der Liste entfernt!");
|
||||
} else {
|
||||
Features.wantFlight.add(P.getUniqueId());
|
||||
P.sendMessage("Du wurdest zu der Liste hinzugefügt!");
|
||||
}
|
||||
return true;
|
||||
} else {
|
||||
Features.wantFlight.add(P.getUniqueId());
|
||||
P.sendMessage("Du wurdest zu der Liste hinzugefügt!");
|
||||
Core.statusMsg(P, "no_perms", false);
|
||||
return true;
|
||||
}
|
||||
return true;
|
||||
} else {
|
||||
Core.statusMsg(P, "no_perms", false);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
} catch(Throwable e) {
|
||||
Errors.reportException(e);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package de.anura.core.events;
|
||||
|
||||
import de.anura.core.API.Errors;
|
||||
import de.anura.core.AnuraCore;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
@@ -18,35 +19,39 @@ public class BlockBreak implements Listener {
|
||||
|
||||
@EventHandler
|
||||
public void onBlockBreak(BlockBreakEvent event) {
|
||||
if (plugin.getConfig().getBoolean("no-change-blocks")) {
|
||||
if (!event.getPlayer().hasPermission("core.rules.blocks.break")) {
|
||||
event.setCancelled(true);
|
||||
return;
|
||||
try {
|
||||
if (plugin.getConfig().getBoolean("no-change-blocks")) {
|
||||
if (!event.getPlayer().hasPermission("core.rules.blocks.break")) {
|
||||
event.setCancelled(true);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (plugin.flowerPots.containsValue(event.getBlock().getLocation())) {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
if ((event.getBlock().getType() == Material.ENDER_CHEST || event.getBlock().getType() == Material.RAILS)) {
|
||||
int X = (int) event.getBlock().getLocation().getX();
|
||||
int Y = (int) event.getBlock().getLocation().getY();
|
||||
int Z = (int) event.getBlock().getLocation().getZ();
|
||||
String world = event.getBlock().getLocation().getWorld().getName();
|
||||
String sql = "DELETE FROM coreJumpers WHERE X = '" + X + "' AND Y = '" + Y + "' AND Z = '" + Z + "' AND world = '" + world + "'";
|
||||
AnuraCore.getSql().queryUpdate(sql);
|
||||
} else if (event.getBlock().getState() instanceof Sign) {
|
||||
Sign s = (Sign) event.getBlock().getState();
|
||||
Location loc = s.getLocation();
|
||||
int X = loc.getBlockX();
|
||||
int Y = loc.getBlockY();
|
||||
int Z = loc.getBlockZ();
|
||||
String world = loc.getWorld().getName();
|
||||
String server = plugin.getConfig().getString("server-name");
|
||||
AnuraCore.sql.queryUpdate("DELETE FROM coreWarpSigns WHERE X = '" + X + "' AND Y = '" + Y + "' AND Z = '" + Z + "' AND world = '" + world + "' AND server = '" + server + "'");
|
||||
} else if (event.getBlock().getState().getData() instanceof Stairs) {
|
||||
if (plugin.sittingBlocks.containsValue(event.getBlock())) {
|
||||
if (plugin.flowerPots.containsValue(event.getBlock().getLocation())) {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
if ((event.getBlock().getType() == Material.ENDER_CHEST || event.getBlock().getType() == Material.RAILS)) {
|
||||
int X = (int) event.getBlock().getLocation().getX();
|
||||
int Y = (int) event.getBlock().getLocation().getY();
|
||||
int Z = (int) event.getBlock().getLocation().getZ();
|
||||
String world = event.getBlock().getLocation().getWorld().getName();
|
||||
String sql = "DELETE FROM coreJumpers WHERE X = '" + X + "' AND Y = '" + Y + "' AND Z = '" + Z + "' AND world = '" + world + "'";
|
||||
AnuraCore.getSql().queryUpdate(sql);
|
||||
} else if (event.getBlock().getState() instanceof Sign) {
|
||||
Sign s = (Sign) event.getBlock().getState();
|
||||
Location loc = s.getLocation();
|
||||
int X = loc.getBlockX();
|
||||
int Y = loc.getBlockY();
|
||||
int Z = loc.getBlockZ();
|
||||
String world = loc.getWorld().getName();
|
||||
String server = plugin.getConfig().getString("server-name");
|
||||
AnuraCore.sql.queryUpdate("DELETE FROM coreWarpSigns WHERE X = '" + X + "' AND Y = '" + Y + "' AND Z = '" + Z + "' AND world = '" + world + "' AND server = '" + server + "'");
|
||||
} else if (event.getBlock().getState().getData() instanceof Stairs) {
|
||||
if (plugin.sittingBlocks.containsValue(event.getBlock())) {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
} catch(Throwable e) {
|
||||
Errors.reportException(e);
|
||||
}
|
||||
}
|
||||
private final AnuraCore plugin;
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package de.anura.core.events;
|
||||
|
||||
import de.anura.core.API.Core;
|
||||
import de.anura.core.API.Errors;
|
||||
import de.anura.core.AnuraCore;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
||||
@@ -17,24 +18,28 @@ public class BlockPlace implements Listener {
|
||||
|
||||
@EventHandler
|
||||
public void onBlockPlace(BlockPlaceEvent event) {
|
||||
if (plugin.getConfig().getBoolean("no-change-blocks")) {
|
||||
if (!event.getPlayer().hasPermission("core.rules.blocks.place")) {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
if (plugin.flowerPots.containsValue(event.getBlock().getLocation())) {
|
||||
event.setCancelled(true);
|
||||
final Block b = event.getBlock();
|
||||
final int pot = Core.getKeyByValue(plugin.flowerPots, b.getLocation());
|
||||
plugin.getServer().getScheduler().scheduleSyncDelayedTask(plugin, new Runnable() {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
b.setType(Material.BROWN_MUSHROOM);
|
||||
AnuraCore.getInstance().pots.refreshPot(pot);
|
||||
try {
|
||||
if (plugin.getConfig().getBoolean("no-change-blocks")) {
|
||||
if (!event.getPlayer().hasPermission("core.rules.blocks.place")) {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
if (plugin.flowerPots.containsValue(event.getBlock().getLocation())) {
|
||||
event.setCancelled(true);
|
||||
final Block b = event.getBlock();
|
||||
final int pot = Core.getKeyByValue(plugin.flowerPots, b.getLocation());
|
||||
plugin.getServer().getScheduler().scheduleSyncDelayedTask(plugin, new Runnable() {
|
||||
|
||||
}, 3);
|
||||
@Override
|
||||
public void run() {
|
||||
b.setType(Material.BROWN_MUSHROOM);
|
||||
AnuraCore.getInstance().pots.refreshPot(pot);
|
||||
}
|
||||
|
||||
}, 3);
|
||||
}
|
||||
} catch(Throwable e) {
|
||||
Errors.reportException(e);
|
||||
}
|
||||
}
|
||||
private final AnuraCore plugin;
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package de.anura.core.events;
|
||||
|
||||
import de.anura.core.API.Errors;
|
||||
import de.anura.core.AnuraCore;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.event.EventHandler;
|
||||
@@ -15,8 +16,12 @@ public class BlockSpread implements Listener {
|
||||
|
||||
@EventHandler
|
||||
public void onBlockSpread(BlockSpreadEvent event) {
|
||||
if (event.getNewState().getType().equals(Material.BROWN_MUSHROOM) && plugin.getConfig().getBoolean("disable-mushroom-spread")) {
|
||||
event.setCancelled(true);
|
||||
try {
|
||||
if (event.getNewState().getType().equals(Material.BROWN_MUSHROOM) && plugin.getConfig().getBoolean("disable-mushroom-spread")) {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
} catch(Throwable e) {
|
||||
Errors.reportException(e);
|
||||
}
|
||||
}
|
||||
private final AnuraCore plugin;
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package de.anura.core.events;
|
||||
|
||||
import de.anura.core.API.Core;
|
||||
import de.anura.core.API.Errors;
|
||||
import de.anura.core.AnuraCore;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.event.EventHandler;
|
||||
@@ -16,14 +17,18 @@ public class CmdPreprocess implements Listener {
|
||||
|
||||
@EventHandler
|
||||
public void onCommandPreprocess(PlayerCommandPreprocessEvent event) {
|
||||
if (event.getMessage().startsWith("/?")) {
|
||||
if (!event.getPlayer().hasPermission("core.commands.help")) {
|
||||
try {
|
||||
if (event.getMessage().startsWith("/?")) {
|
||||
if (!event.getPlayer().hasPermission("core.commands.help")) {
|
||||
event.setCancelled(true);
|
||||
Core.statusMsg(event.getPlayer(), "help_command_info", true);
|
||||
}
|
||||
} else if (plugin.disableCommandsAdventure.containsKey(event.getPlayer()) && plugin.disableCommandsAdventure.get(event.getPlayer())) {
|
||||
event.setCancelled(true);
|
||||
Core.statusMsg(event.getPlayer(), "help_command_info", true);
|
||||
Core.statusMsg(event.getPlayer(), "no_command_red_mg", ChatColor.YELLOW);
|
||||
}
|
||||
} else if (plugin.disableCommandsAdventure.containsKey(event.getPlayer()) && plugin.disableCommandsAdventure.get(event.getPlayer())) {
|
||||
event.setCancelled(true);
|
||||
Core.statusMsg(event.getPlayer(), "no_command_red_mg", ChatColor.YELLOW);
|
||||
} catch(Throwable e) {
|
||||
Errors.reportException(e);
|
||||
}
|
||||
}
|
||||
private final AnuraCore plugin;
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package de.anura.core.events;
|
||||
|
||||
import de.anura.core.API.Errors;
|
||||
import de.anura.core.AnuraCore;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Player;
|
||||
@@ -15,15 +16,19 @@ public class DropItem implements Listener {
|
||||
|
||||
@EventHandler
|
||||
public void onPlayerDropItem(PlayerDropItemEvent event) {
|
||||
if (AnuraCore.getInstance().getConfig().getBoolean("is-main-lobby") && !event.getPlayer().hasPermission("core.inventory.interact")) {
|
||||
event.setCancelled(true);
|
||||
final Player P = event.getPlayer();
|
||||
Bukkit.getScheduler().scheduleSyncDelayedTask(AnuraCore.getInstance(), new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
P.updateInventory();
|
||||
}
|
||||
}, 2);
|
||||
try {
|
||||
if (AnuraCore.getInstance().getConfig().getBoolean("is-main-lobby") && !event.getPlayer().hasPermission("core.inventory.interact")) {
|
||||
event.setCancelled(true);
|
||||
final Player P = event.getPlayer();
|
||||
Bukkit.getScheduler().scheduleSyncDelayedTask(AnuraCore.getInstance(), new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
P.updateInventory();
|
||||
}
|
||||
}, 2);
|
||||
}
|
||||
} catch(Throwable e) {
|
||||
Errors.reportException(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package de.anura.core.events;
|
||||
|
||||
import de.anura.core.API.Errors;
|
||||
import de.anura.core.AnuraCore;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
@@ -15,8 +16,12 @@ public class EntityDamage implements Listener {
|
||||
|
||||
@EventHandler
|
||||
public void onEntityDamage(EntityDamageEvent event) {
|
||||
if (event.getEntity() instanceof Player && plugin.getConfig().getBoolean("no-damage")) {
|
||||
event.setCancelled(true);
|
||||
try {
|
||||
if (event.getEntity() instanceof Player && plugin.getConfig().getBoolean("no-damage")) {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
} catch(Throwable e) {
|
||||
Errors.reportException(e);
|
||||
}
|
||||
}
|
||||
private final AnuraCore plugin;
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package de.anura.core.events;
|
||||
|
||||
import de.anura.core.API.Errors;
|
||||
import de.anura.core.AnuraCore;
|
||||
import org.bukkit.entity.ItemFrame;
|
||||
import org.bukkit.entity.Player;
|
||||
@@ -16,12 +17,16 @@ public class EntityDamageByE implements Listener {
|
||||
|
||||
@EventHandler
|
||||
public void onEntityDamageByE(EntityDamageByEntityEvent event) {
|
||||
if (event.getEntity() instanceof ItemFrame && plugin.getConfig().getBoolean("no-change-blocks")) {
|
||||
if (event.getDamager() instanceof Player) {
|
||||
if (!((Player) event.getDamager()).hasPermission("core.rules.blocks.break")) {
|
||||
event.setCancelled(true);
|
||||
try {
|
||||
if (event.getEntity() instanceof ItemFrame && plugin.getConfig().getBoolean("no-change-blocks")) {
|
||||
if (event.getDamager() instanceof Player) {
|
||||
if (!((Player) event.getDamager()).hasPermission("core.rules.blocks.break")) {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch(Throwable e) {
|
||||
Errors.reportException(e);
|
||||
}
|
||||
}
|
||||
private final AnuraCore plugin;
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package de.anura.core.events;
|
||||
|
||||
import de.anura.core.API.Errors;
|
||||
import de.anura.core.AnuraCore;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
@@ -15,11 +16,15 @@ public class FoodChange implements Listener {
|
||||
|
||||
@EventHandler
|
||||
public void onFoodLChange(FoodLevelChangeEvent event) {
|
||||
if (plugin.getConfig().getBoolean("no-hunger")) {
|
||||
if (event.getEntity() instanceof Player) {
|
||||
((Player) event.getEntity()).setFoodLevel(20);
|
||||
try {
|
||||
if (plugin.getConfig().getBoolean("no-hunger")) {
|
||||
if (event.getEntity() instanceof Player) {
|
||||
((Player) event.getEntity()).setFoodLevel(20);
|
||||
}
|
||||
event.setCancelled(true);
|
||||
}
|
||||
event.setCancelled(true);
|
||||
} catch(Throwable e) {
|
||||
Errors.reportException(e);
|
||||
}
|
||||
}
|
||||
private final AnuraCore plugin;
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package de.anura.core.events;
|
||||
|
||||
import de.anura.core.API.Errors;
|
||||
import de.anura.core.AnuraCore;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
@@ -15,16 +16,20 @@ public class HangingEBreak implements Listener {
|
||||
|
||||
@EventHandler
|
||||
public void onHangingBreakByE(HangingBreakByEntityEvent event) {
|
||||
Player P;
|
||||
if (event.getRemover() instanceof Player) {
|
||||
P = (Player) event.getRemover();
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
if (plugin.getConfig().getBoolean("no-change-blocks")) {
|
||||
if (!P.hasPermission("core.rules.blocks.break")) {
|
||||
event.setCancelled(true);
|
||||
try {
|
||||
Player P;
|
||||
if (event.getRemover() instanceof Player) {
|
||||
P = (Player) event.getRemover();
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
if (plugin.getConfig().getBoolean("no-change-blocks")) {
|
||||
if (!P.hasPermission("core.rules.blocks.break")) {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
} catch(Throwable e) {
|
||||
Errors.reportException(e);
|
||||
}
|
||||
}
|
||||
private final AnuraCore plugin;
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package de.anura.core.events;
|
||||
|
||||
import de.anura.core.API.Errors;
|
||||
import de.anura.core.AnuraCore;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Material;
|
||||
@@ -20,17 +21,21 @@ public class InvClick implements Listener {
|
||||
|
||||
@EventHandler
|
||||
public void onInvClick(InventoryClickEvent event) {
|
||||
Player player = (Player) event.getWhoClicked();
|
||||
if (!player.hasPermission("core.inventory.interact") && plugin.getConfig().getBoolean("is-main-lobby")) {
|
||||
event.setCancelled(true);
|
||||
final Player p = player;
|
||||
Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
p.setItemOnCursor(new ItemStack(Material.AIR));
|
||||
p.updateInventory();
|
||||
}
|
||||
}, 1);
|
||||
try {
|
||||
Player player = (Player) event.getWhoClicked();
|
||||
if (!player.hasPermission("core.inventory.interact") && plugin.getConfig().getBoolean("is-main-lobby")) {
|
||||
event.setCancelled(true);
|
||||
final Player p = player;
|
||||
Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
p.setItemOnCursor(new ItemStack(Material.AIR));
|
||||
p.updateInventory();
|
||||
}
|
||||
}, 1);
|
||||
}
|
||||
} catch(Throwable e) {
|
||||
Errors.reportException(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package de.anura.core.events;
|
||||
|
||||
import de.anura.core.API.Errors;
|
||||
import de.anura.core.AnuraCore;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.event.EventHandler;
|
||||
@@ -15,14 +16,18 @@ public class LeavesDecay implements Listener {
|
||||
|
||||
@EventHandler
|
||||
public void onLeavesDecay(LeavesDecayEvent event) {
|
||||
if (!plugin.getConfig().getBoolean("enable-leaves-decay")) {
|
||||
Block b = event.getBlock();
|
||||
byte data = b.getData();
|
||||
if ((data & 0x4) == 0) {
|
||||
data = (byte) (data | 0x4);
|
||||
try {
|
||||
if (!plugin.getConfig().getBoolean("enable-leaves-decay")) {
|
||||
Block b = event.getBlock();
|
||||
byte data = b.getData();
|
||||
if ((data & 0x4) == 0) {
|
||||
data = (byte) (data | 0x4);
|
||||
}
|
||||
b.setData(data);
|
||||
event.setCancelled(true);
|
||||
}
|
||||
b.setData(data);
|
||||
event.setCancelled(true);
|
||||
} catch(Throwable e) {
|
||||
Errors.reportException(e);
|
||||
}
|
||||
}
|
||||
private final AnuraCore plugin;
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
package de.anura.core.events;
|
||||
|
||||
import de.anura.core.API.Errors;
|
||||
import de.anura.core.AnuraCore;
|
||||
import java.util.IllegalFormatException;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
@@ -15,8 +17,12 @@ public class PlayerChat implements Listener {
|
||||
|
||||
@EventHandler
|
||||
public void onPlayerChat(AsyncPlayerChatEvent event) {
|
||||
if (event.isAsynchronous()) {
|
||||
event.setFormat(event.getPlayer().getDisplayName() + ChatColor.GRAY + ":" + ChatColor.WHITE + " " + event.getMessage());
|
||||
try {
|
||||
if (event.isAsynchronous()) {
|
||||
event.setFormat(event.getPlayer().getDisplayName() + ChatColor.GRAY + ":" + ChatColor.WHITE + " " + event.getMessage());
|
||||
}
|
||||
} catch(IllegalFormatException | NullPointerException e) {
|
||||
Errors.reportException(e);
|
||||
}
|
||||
}
|
||||
private final AnuraCore plugin;
|
||||
|
||||
@@ -1,12 +1,11 @@
|
||||
package de.anura.core.events;
|
||||
|
||||
import de.anura.core.API.Core;
|
||||
import de.anura.core.API.Errors;
|
||||
import de.anura.core.AnuraCore;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.DataOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
||||
@@ -29,43 +28,43 @@ public class PlayerInteract implements Listener {
|
||||
|
||||
@EventHandler
|
||||
public void onPlayerInteract(PlayerInteractEvent event) {
|
||||
final Block block = event.getClickedBlock();
|
||||
if (plugin.selectableJumper.containsKey(event.getPlayer())) {
|
||||
if (event.getPlayer().hasPermission("core.commands.setjumper")) {
|
||||
if (event.getAction().equals(Action.RIGHT_CLICK_BLOCK) || event.getAction().equals(Action.LEFT_CLICK_BLOCK)) {
|
||||
String type;
|
||||
if (event.getClickedBlock().getType().equals(Material.ENDER_CHEST)) {
|
||||
type = "high";
|
||||
} else if (event.getClickedBlock().getType().equals(Material.RAILS)) {
|
||||
type = "far";
|
||||
} else {
|
||||
Core.statusMsg(event.getPlayer(), "setjumper_block_not_supported", false);
|
||||
try {
|
||||
final Block block = event.getClickedBlock();
|
||||
if (plugin.selectableJumper.containsKey(event.getPlayer())) {
|
||||
if (event.getPlayer().hasPermission("core.commands.setjumper")) {
|
||||
if (event.getAction().equals(Action.RIGHT_CLICK_BLOCK) || event.getAction().equals(Action.LEFT_CLICK_BLOCK)) {
|
||||
String type;
|
||||
if (event.getClickedBlock().getType().equals(Material.ENDER_CHEST)) {
|
||||
type = "high";
|
||||
} else if (event.getClickedBlock().getType().equals(Material.RAILS)) {
|
||||
type = "far";
|
||||
} else {
|
||||
Core.statusMsg(event.getPlayer(), "setjumper_block_not_supported", false);
|
||||
plugin.selectableJumper.remove(event.getPlayer());
|
||||
return;
|
||||
}
|
||||
Double X = event.getClickedBlock().getLocation().getX();
|
||||
Double Y = event.getClickedBlock().getLocation().getY();
|
||||
Double Z = event.getClickedBlock().getLocation().getZ();
|
||||
String world = event.getClickedBlock().getLocation().getWorld().getName();
|
||||
String sql = "INSERT INTO coreJumpers(X,Y,Z,world,height,type) VALUES('" + X + "','" + Y + "','" + Z + "','" + world + "','" + plugin.selectableJumper.get(event.getPlayer()) + "','" + type + "')";
|
||||
AnuraCore.getSql().queryUpdate(sql);
|
||||
plugin.selectableJumper.remove(event.getPlayer());
|
||||
return;
|
||||
Core.statusMsg(event.getPlayer(), "setjumper_done", true);
|
||||
event.setCancelled(true);
|
||||
}
|
||||
Double X = event.getClickedBlock().getLocation().getX();
|
||||
Double Y = event.getClickedBlock().getLocation().getY();
|
||||
Double Z = event.getClickedBlock().getLocation().getZ();
|
||||
String world = event.getClickedBlock().getLocation().getWorld().getName();
|
||||
String sql = "INSERT INTO coreJumpers(X,Y,Z,world,height,type) VALUES('" + X + "','" + Y + "','" + Z + "','" + world + "','" + plugin.selectableJumper.get(event.getPlayer()) + "','" + type + "')";
|
||||
AnuraCore.getSql().queryUpdate(sql);
|
||||
plugin.selectableJumper.remove(event.getPlayer());
|
||||
Core.statusMsg(event.getPlayer(), "setjumper_done", true);
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
} else if (block != null) {
|
||||
if (block.getState() instanceof Sign && event.getAction().equals(Action.RIGHT_CLICK_BLOCK)) {
|
||||
Sign sign = (Sign) block.getState();
|
||||
Location loc = sign.getLocation();
|
||||
Player P = event.getPlayer();
|
||||
int X = loc.getBlockX();
|
||||
int Y = loc.getBlockY();
|
||||
int Z = loc.getBlockZ();
|
||||
String world = loc.getWorld().getName();
|
||||
String server = plugin.getConfig().getString("server-name");
|
||||
ResultSet rs = AnuraCore.sql.querySelect("SELECT type, value FROM coreWarpSigns WHERE X = '" + X + "' AND Y = '" + Y + "' AND Z = '" + Z + "' AND world = '" + world + "' AND server = '" + server + "'");
|
||||
try {
|
||||
} else if (block != null) {
|
||||
if (block.getState() instanceof Sign && event.getAction().equals(Action.RIGHT_CLICK_BLOCK)) {
|
||||
Sign sign = (Sign) block.getState();
|
||||
Location loc = sign.getLocation();
|
||||
Player P = event.getPlayer();
|
||||
int X = loc.getBlockX();
|
||||
int Y = loc.getBlockY();
|
||||
int Z = loc.getBlockZ();
|
||||
String world = loc.getWorld().getName();
|
||||
String server = plugin.getConfig().getString("server-name");
|
||||
ResultSet rs = AnuraCore.sql.querySelect("SELECT type, value FROM coreWarpSigns WHERE X = '" + X + "' AND Y = '" + Y + "' AND Z = '" + Z + "' AND world = '" + world + "' AND server = '" + server + "'");
|
||||
rs.last();
|
||||
if (rs.getRow() != 0) {
|
||||
rs.first();
|
||||
@@ -92,86 +91,83 @@ public class PlayerInteract implements Listener {
|
||||
P.sendPluginMessage(plugin, "BungeeCord", b.toByteArray());
|
||||
}
|
||||
}
|
||||
} catch (SQLException ex) {
|
||||
System.out.println("SQLException in playerInteract: " + ex.getLocalizedMessage());
|
||||
} catch (IOException ex) {
|
||||
System.out.println("IOException in playerInteract: " + ex.getLocalizedMessage());
|
||||
}
|
||||
|
||||
event.setCancelled(true);
|
||||
} else if (block.getState().getData() instanceof Stairs) {
|
||||
if (plugin.stairMode.contains(event.getPlayer()) && event.getAction().equals(Action.RIGHT_CLICK_BLOCK)) {
|
||||
event.setCancelled(true);
|
||||
if (plugin.sittableBlocks.contains(block)) {
|
||||
plugin.sittableBlocks.remove(block);
|
||||
Core.getTools().sendStatusMsg(event.getPlayer(), "Removed!", false);
|
||||
int X = block.getLocation().getBlockX();
|
||||
int Y = block.getLocation().getBlockY();
|
||||
int Z = block.getLocation().getBlockZ();
|
||||
Core.getMySql().queryUpdate("DELETE FROM coreStairs WHERE server = '" + plugin.getConfig().getString("server-name") + "' AND world = '" + block.getWorld().getName() + "' AND X = '" + X + "' AND Y = '" + Y + "' AND Z = '" + Z + "'");
|
||||
} else {
|
||||
plugin.sittableBlocks.add(block);
|
||||
Core.getTools().sendStatusMsg(event.getPlayer(), "Added!", true);
|
||||
int X = block.getLocation().getBlockX();
|
||||
int Y = block.getLocation().getBlockY();
|
||||
int Z = block.getLocation().getBlockZ();
|
||||
Core.getMySql().queryUpdate("INSERT INTO coreStairs(server,world,X,Y,Z) VALUES('" + plugin.getConfig().getString("server-name") + "','" + block.getWorld().getName() + "','" + X + "','" + Y + "','" + Z + "')");
|
||||
}
|
||||
} else if (plugin.getConfig().getBoolean("allow-stairs-sit") && event.getAction().equals(Action.RIGHT_CLICK_BLOCK) && plugin.sittableBlocks.contains(block)) {
|
||||
if (plugin.sittingPlayer.containsKey(event.getPlayer())) {
|
||||
Core.statusMsg(event.getPlayer(), "sitting_already", false);
|
||||
} else if (block.getState().getData() instanceof Stairs) {
|
||||
if (plugin.stairMode.contains(event.getPlayer()) && event.getAction().equals(Action.RIGHT_CLICK_BLOCK)) {
|
||||
event.setCancelled(true);
|
||||
} else if (plugin.sittingBlocks.containsValue(block)) {
|
||||
Core.statusMsg(event.getPlayer(), "sitting_occupied", false);
|
||||
event.setCancelled(true);
|
||||
} else {
|
||||
Stairs s = (Stairs) block.getState().getData();
|
||||
if (!s.isInverted()) {
|
||||
Location loc = block.getLocation();
|
||||
loc = loc.add(0.5, 0.05, 0.5);
|
||||
loc.add(s.getFacing().getModX() * 0.2, 0, s.getFacing().getModZ() * 0.2);
|
||||
Arrow a = loc.getWorld().spawnArrow(loc, new Vector(0, 0, 0), 0, 0);
|
||||
a.setPassenger(event.getPlayer());
|
||||
plugin.sittingPlayer.put(event.getPlayer(), a);
|
||||
plugin.sittingBlocks.put(event.getPlayer(), block);
|
||||
if (plugin.sittableBlocks.contains(block)) {
|
||||
plugin.sittableBlocks.remove(block);
|
||||
Core.getTools().sendStatusMsg(event.getPlayer(), "Removed!", false);
|
||||
int X = block.getLocation().getBlockX();
|
||||
int Y = block.getLocation().getBlockY();
|
||||
int Z = block.getLocation().getBlockZ();
|
||||
Core.getMySql().queryUpdate("DELETE FROM coreStairs WHERE server = '" + plugin.getConfig().getString("server-name") + "' AND world = '" + block.getWorld().getName() + "' AND X = '" + X + "' AND Y = '" + Y + "' AND Z = '" + Z + "'");
|
||||
} else {
|
||||
plugin.sittableBlocks.add(block);
|
||||
Core.getTools().sendStatusMsg(event.getPlayer(), "Added!", true);
|
||||
int X = block.getLocation().getBlockX();
|
||||
int Y = block.getLocation().getBlockY();
|
||||
int Z = block.getLocation().getBlockZ();
|
||||
Core.getMySql().queryUpdate("INSERT INTO coreStairs(server,world,X,Y,Z) VALUES('" + plugin.getConfig().getString("server-name") + "','" + block.getWorld().getName() + "','" + X + "','" + Y + "','" + Z + "')");
|
||||
}
|
||||
} else if (plugin.getConfig().getBoolean("allow-stairs-sit") && event.getAction().equals(Action.RIGHT_CLICK_BLOCK) && plugin.sittableBlocks.contains(block)) {
|
||||
if (plugin.sittingPlayer.containsKey(event.getPlayer())) {
|
||||
Core.statusMsg(event.getPlayer(), "sitting_already", false);
|
||||
event.setCancelled(true);
|
||||
} else if (plugin.sittingBlocks.containsValue(block)) {
|
||||
Core.statusMsg(event.getPlayer(), "sitting_occupied", false);
|
||||
event.setCancelled(true);
|
||||
} else {
|
||||
Stairs s = (Stairs) block.getState().getData();
|
||||
if (!s.isInverted()) {
|
||||
Location loc = block.getLocation();
|
||||
loc = loc.add(0.5, 0.05, 0.5);
|
||||
loc.add(s.getFacing().getModX() * 0.2, 0, s.getFacing().getModZ() * 0.2);
|
||||
Arrow a = loc.getWorld().spawnArrow(loc, new Vector(0, 0, 0), 0, 0);
|
||||
a.setPassenger(event.getPlayer());
|
||||
plugin.sittingPlayer.put(event.getPlayer(), a);
|
||||
plugin.sittingBlocks.put(event.getPlayer(), block);
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (plugin.flowerPots.containsValue(block.getLocation())) {
|
||||
event.setCancelled(true);
|
||||
final Player p = event.getPlayer();
|
||||
plugin.getServer().getScheduler().scheduleSyncDelayedTask(plugin, new Runnable() {
|
||||
} else if (plugin.flowerPots.containsValue(block.getLocation())) {
|
||||
event.setCancelled(true);
|
||||
final Player p = event.getPlayer();
|
||||
plugin.getServer().getScheduler().scheduleSyncDelayedTask(plugin, new Runnable() {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
p.sendBlockChange(block.getLocation(), Material.AIR, (byte) 0);
|
||||
}
|
||||
@Override
|
||||
public void run() {
|
||||
p.sendBlockChange(block.getLocation(), Material.AIR, (byte) 0);
|
||||
}
|
||||
|
||||
}, 3);
|
||||
plugin.pots.playerFoundPot(event.getPlayer(), Core.getKeyByValue(plugin.flowerPots, block.getLocation()));
|
||||
}
|
||||
}
|
||||
if (plugin.getConfig().getBoolean("no-change-blocks")) {
|
||||
if (!event.getPlayer().hasPermission("core.rules.blocks.interact")) {
|
||||
Boolean cancelled = true;
|
||||
if (event.getAction().equals(Action.RIGHT_CLICK_BLOCK)) {
|
||||
if (event.getClickedBlock().getType().equals(Material.STONE_BUTTON)) {
|
||||
cancelled = false;
|
||||
} else if (event.getClickedBlock().getType().equals(Material.WOOD_BUTTON)) {
|
||||
cancelled = false;
|
||||
}
|
||||
} else if (event.getAction().equals(Action.PHYSICAL)) {
|
||||
cancelled = false;
|
||||
} else if (event.getAction().equals(Action.RIGHT_CLICK_AIR)) {
|
||||
if (event.getPlayer().getItemInHand().getType().equals(Material.BOW)) {
|
||||
cancelled = false;
|
||||
} else if (event.getPlayer().getItemInHand().getType().equals(Material.EXP_BOTTLE)) {
|
||||
cancelled = false;
|
||||
}
|
||||
}, 3);
|
||||
plugin.pots.playerFoundPot(event.getPlayer(), Core.getKeyByValue(plugin.flowerPots, block.getLocation()));
|
||||
}
|
||||
event.setCancelled(cancelled);
|
||||
}
|
||||
if (plugin.getConfig().getBoolean("no-change-blocks")) {
|
||||
if (!event.getPlayer().hasPermission("core.rules.blocks.interact")) {
|
||||
Boolean cancelled = true;
|
||||
if (event.getAction().equals(Action.RIGHT_CLICK_BLOCK)) {
|
||||
if (event.getClickedBlock().getType().equals(Material.STONE_BUTTON)) {
|
||||
cancelled = false;
|
||||
} else if (event.getClickedBlock().getType().equals(Material.WOOD_BUTTON)) {
|
||||
cancelled = false;
|
||||
}
|
||||
} else if (event.getAction().equals(Action.PHYSICAL)) {
|
||||
cancelled = false;
|
||||
} else if (event.getAction().equals(Action.RIGHT_CLICK_AIR)) {
|
||||
if (event.getPlayer().getItemInHand().getType().equals(Material.BOW)) {
|
||||
cancelled = false;
|
||||
} else if (event.getPlayer().getItemInHand().getType().equals(Material.EXP_BOTTLE)) {
|
||||
cancelled = false;
|
||||
}
|
||||
}
|
||||
event.setCancelled(cancelled);
|
||||
}
|
||||
}
|
||||
} catch(Throwable e) {
|
||||
Errors.reportException(e);
|
||||
}
|
||||
}
|
||||
private final AnuraCore plugin;
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package de.anura.core.events;
|
||||
|
||||
import de.anura.core.API.Errors;
|
||||
import de.anura.core.AnuraCore;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Chicken;
|
||||
@@ -18,31 +19,35 @@ public class PlayerInteractE implements Listener {
|
||||
|
||||
@EventHandler
|
||||
public void onPlayerInteractE(PlayerInteractEntityEvent event) {
|
||||
if (event.getRightClicked().getType().equals(EntityType.ITEM_FRAME) && plugin.getConfig().getBoolean("no-change-blocks")) {
|
||||
if (!event.getPlayer().hasPermission("core.rules.blocks.interact")) {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
} else if (event.getRightClicked().getType().equals(EntityType.CHICKEN) && plugin.getConfig().getBoolean("golf")) {
|
||||
Player P = event.getPlayer();
|
||||
Chicken b = (Chicken) event.getRightClicked();
|
||||
if (P.getItemInHand().getType().equals(Material.STICK)) {
|
||||
int power;
|
||||
|
||||
if (!plugin.golfPower.containsKey(P)) {
|
||||
power = 1;
|
||||
} else {
|
||||
power = plugin.golfPower.get(P);
|
||||
power++;
|
||||
try {
|
||||
if (event.getRightClicked().getType().equals(EntityType.ITEM_FRAME) && plugin.getConfig().getBoolean("no-change-blocks")) {
|
||||
if (!event.getPlayer().hasPermission("core.rules.blocks.interact")) {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
if (power > 40) {
|
||||
power = 40;
|
||||
}
|
||||
System.out.println(power);
|
||||
plugin.golfPower.put(P, power);
|
||||
plugin.releaseGolf.put(P, false);
|
||||
plugin.golfBall.put(P, b);
|
||||
} else if (event.getRightClicked().getType().equals(EntityType.CHICKEN) && plugin.getConfig().getBoolean("golf")) {
|
||||
Player P = event.getPlayer();
|
||||
Chicken b = (Chicken) event.getRightClicked();
|
||||
if (P.getItemInHand().getType().equals(Material.STICK)) {
|
||||
int power;
|
||||
|
||||
if (!plugin.golfPower.containsKey(P)) {
|
||||
power = 1;
|
||||
} else {
|
||||
power = plugin.golfPower.get(P);
|
||||
power++;
|
||||
}
|
||||
if (power > 40) {
|
||||
power = 40;
|
||||
}
|
||||
System.out.println(power);
|
||||
plugin.golfPower.put(P, power);
|
||||
plugin.releaseGolf.put(P, false);
|
||||
plugin.golfBall.put(P, b);
|
||||
|
||||
}
|
||||
}
|
||||
} catch(Throwable e) {
|
||||
Errors.reportException(e);
|
||||
}
|
||||
}
|
||||
private final AnuraCore plugin;
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package de.anura.core.events;
|
||||
|
||||
import de.anura.core.API.Core;
|
||||
import de.anura.core.API.Errors;
|
||||
import de.anura.core.AnuraCore;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
@@ -19,9 +20,9 @@ public class PlayerJoin implements Listener {
|
||||
|
||||
@EventHandler
|
||||
public void onPlayerJoin(PlayerJoinEvent event) {
|
||||
UUID uuid = event.getPlayer().getUniqueId();
|
||||
ResultSet rs;
|
||||
try {
|
||||
UUID uuid = event.getPlayer().getUniqueId();
|
||||
ResultSet rs;
|
||||
rs = AnuraCore.getSql().querySelect("SELECT name FROM players WHERE uuid LIKE '" + uuid.toString() + "'");
|
||||
if (rs == null) {
|
||||
event.getPlayer().kickPlayer("Please try again");
|
||||
@@ -32,19 +33,20 @@ public class PlayerJoin implements Listener {
|
||||
if (rs.getRow() != 1) {
|
||||
AnuraCore.getSql().queryUpdate("INSERT INTO players(`uuid`,`game`,`waiting`,`gameName`) VALUES('" + uuid.toString() + "','none','none','')");
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
}
|
||||
event.setJoinMessage(null);
|
||||
event.getPlayer().getInventory().clear();
|
||||
plugin.pots.refreshCache(event.getPlayer());
|
||||
plugin.pots.refreshPlayer(event.getPlayer());
|
||||
plugin.getFeatures().updateFeatures(event.getPlayer());
|
||||
plugin.disableCommandsAdventure.put(event.getPlayer(), false);
|
||||
plugin.joinTime.put(event.getPlayer(), (int) (System.currentTimeMillis() / 1000));
|
||||
plugin.aimTheWaterWins.put(event.getPlayer(), 0);
|
||||
Core.getLevel().loadLevel(event.getPlayer());
|
||||
if (plugin.getConfig().getBoolean("on-join-to-spawn")) {
|
||||
event.getPlayer().teleport(event.getPlayer().getWorld().getSpawnLocation());
|
||||
event.setJoinMessage(null);
|
||||
event.getPlayer().getInventory().clear();
|
||||
plugin.pots.refreshCache(event.getPlayer());
|
||||
plugin.pots.refreshPlayer(event.getPlayer());
|
||||
plugin.getFeatures().updateFeatures(event.getPlayer());
|
||||
plugin.disableCommandsAdventure.put(event.getPlayer(), false);
|
||||
plugin.joinTime.put(event.getPlayer(), (int) (System.currentTimeMillis() / 1000));
|
||||
plugin.aimTheWaterWins.put(event.getPlayer(), 0);
|
||||
Core.getLevel().loadLevel(event.getPlayer());
|
||||
if (plugin.getConfig().getBoolean("on-join-to-spawn")) {
|
||||
event.getPlayer().teleport(event.getPlayer().getWorld().getSpawnLocation());
|
||||
}
|
||||
} catch(Throwable e) {
|
||||
Errors.reportException(e);
|
||||
}
|
||||
}
|
||||
private final AnuraCore plugin;
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
package de.anura.core.events;
|
||||
|
||||
import de.anura.core.API.Core;
|
||||
import de.anura.core.API.Errors;
|
||||
import de.anura.core.AnuraCore;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.DataOutputStream;
|
||||
import java.io.IOException;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.player.PlayerKickEvent;
|
||||
@@ -18,9 +18,9 @@ public class PlayerKick implements Listener {
|
||||
|
||||
@EventHandler
|
||||
public void onPlayerKick(PlayerKickEvent event) {
|
||||
AnuraCore.getInstance().disableCommandsAdventure.remove(event.getPlayer());
|
||||
if (!plugin.getConfig().getBoolean("is-main-lobby")) {
|
||||
try {
|
||||
try {
|
||||
AnuraCore.getInstance().disableCommandsAdventure.remove(event.getPlayer());
|
||||
if (!plugin.getConfig().getBoolean("is-main-lobby")) {
|
||||
Core.endSitting(event.getPlayer());
|
||||
event.setCancelled(true);
|
||||
ByteArrayOutputStream b = new ByteArrayOutputStream();
|
||||
@@ -28,11 +28,11 @@ public class PlayerKick implements Listener {
|
||||
out.writeUTF("Connect");
|
||||
out.writeUTF("lobby");
|
||||
event.getPlayer().sendPluginMessage(plugin, "BungeeCord", b.toByteArray());
|
||||
|
||||
} catch (IOException ex) {
|
||||
}
|
||||
event.setLeaveMessage(null);
|
||||
} catch(Throwable e) {
|
||||
Errors.reportException(e);
|
||||
}
|
||||
event.setLeaveMessage(null);
|
||||
}
|
||||
private final AnuraCore plugin;
|
||||
}
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
package de.anura.core.events;
|
||||
|
||||
import de.anura.core.API.Errors;
|
||||
import de.anura.core.AnuraCore;
|
||||
import de.anura.core.ParticleEffect;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.Sound;
|
||||
import org.bukkit.block.Block;
|
||||
@@ -26,17 +26,17 @@ public class PlayerMove implements Listener {
|
||||
|
||||
@EventHandler
|
||||
public void onPlayerMove(PlayerMoveEvent event) {
|
||||
Player p = event.getPlayer();
|
||||
Block block = event.getTo().clone().getBlock();
|
||||
Block under = block.getLocation().subtract(0, 1, 0).getBlock();
|
||||
try {
|
||||
Player p = event.getPlayer();
|
||||
Block block = event.getTo().clone().getBlock();
|
||||
Block under = block.getLocation().subtract(0, 1, 0).getBlock();
|
||||
|
||||
if (event.getTo().getY() <= -40 && plugin.getConfig().getBoolean("no-void-death")) {
|
||||
p.performCommand("spawn");
|
||||
}
|
||||
if (block.getType().equals(Material.CARPET) && under.getType().equals(Material.SIGN_POST)) {
|
||||
p.setWalkSpeed(0.6F);
|
||||
} else if (block.getType().equals(Material.CARPET) && under.getType().equals(Material.ENDER_CHEST)) {
|
||||
try {
|
||||
if (event.getTo().getY() <= -40 && plugin.getConfig().getBoolean("no-void-death")) {
|
||||
p.performCommand("spawn");
|
||||
}
|
||||
if (block.getType().equals(Material.CARPET) && under.getType().equals(Material.SIGN_POST)) {
|
||||
p.setWalkSpeed(0.6F);
|
||||
} else if (block.getType().equals(Material.CARPET) && under.getType().equals(Material.ENDER_CHEST)) {
|
||||
double X = under.getLocation().getX();
|
||||
double Y = under.getLocation().getY();
|
||||
double Z = under.getLocation().getZ();
|
||||
@@ -49,12 +49,8 @@ public class PlayerMove implements Listener {
|
||||
ParticleEffect.FIREWORKS_SPARK.display(p.getLocation(), (float) 0.1, (float) 0.1, (float) 0.1, (float) 0.3, 10);
|
||||
}
|
||||
p.setWalkSpeed(0.2F);
|
||||
} catch (SQLException ex) {
|
||||
System.err.println(ex.getLocalizedMessage());
|
||||
}
|
||||
|
||||
} else if (block.getType().equals(Material.CARPET) && under.getType().equals(Material.RAILS)) {
|
||||
try {
|
||||
} else if (block.getType().equals(Material.CARPET) && under.getType().equals(Material.RAILS)) {
|
||||
double X = under.getLocation().getX();
|
||||
double Y = under.getLocation().getY();
|
||||
double Z = under.getLocation().getZ();
|
||||
@@ -69,38 +65,37 @@ public class PlayerMove implements Listener {
|
||||
p.playSound(p.getLocation(), Sound.EXPLODE, 1, 1);
|
||||
}
|
||||
p.setWalkSpeed(0.2F);
|
||||
} catch (SQLException ex) {
|
||||
System.err.println(ex.getLocalizedMessage());
|
||||
} else {
|
||||
p.setWalkSpeed(0.2F);
|
||||
}
|
||||
} else {
|
||||
p.setWalkSpeed(0.2F);
|
||||
Block sign = null;
|
||||
Block isSign = block.getLocation().getWorld().getBlockAt(block.getLocation().add(0, 1, 0));
|
||||
if (isSign.getType().equals(Material.WALL_SIGN)) {
|
||||
sign = isSign;
|
||||
} else if (block.getType().equals(Material.WALL_SIGN)) {
|
||||
sign = block;
|
||||
}
|
||||
if (sign != null && !event.getPlayer().hasPermission("core.rules.hideSign")) {
|
||||
Sign s = (Sign) sign.getState().getData();
|
||||
BlockFace bf = s.getFacing();
|
||||
if (bf.equals(BlockFace.EAST)) {
|
||||
event.getPlayer().setVelocity(new Vector(0.3, 0, 0));
|
||||
}
|
||||
if (bf.equals(BlockFace.WEST)) {
|
||||
event.getPlayer().setVelocity(new Vector(-0.3, 0, 0));
|
||||
}
|
||||
if (bf.equals(BlockFace.SOUTH)) {
|
||||
event.getPlayer().setVelocity(new Vector(0, 0, 0.3));
|
||||
}
|
||||
if (bf.equals(BlockFace.NORTH)) {
|
||||
event.getPlayer().setVelocity(new Vector(0, 0, -0.3));
|
||||
}
|
||||
}
|
||||
if (!plugin.lastLoc.containsKey(p) || !plugin.lastLoc.get(p).getWorld().equals(p.getLocation().getWorld()) || plugin.lastLoc.get(p).distance(p.getLocation()) > 1) {
|
||||
plugin.pots.refreshPlayer(p);
|
||||
}
|
||||
} catch(Throwable e) {
|
||||
Errors.reportException(e);
|
||||
}
|
||||
Block sign = null;
|
||||
Block isSign = block.getLocation().getWorld().getBlockAt(block.getLocation().add(0, 1, 0));
|
||||
if (isSign.getType().equals(Material.WALL_SIGN)) {
|
||||
sign = isSign;
|
||||
} else if (block.getType().equals(Material.WALL_SIGN)) {
|
||||
sign = block;
|
||||
}
|
||||
if (sign != null && !event.getPlayer().hasPermission("core.rules.hideSign")) {
|
||||
Sign s = (Sign) sign.getState().getData();
|
||||
BlockFace bf = s.getFacing();
|
||||
if (bf.equals(BlockFace.EAST)) {
|
||||
event.getPlayer().setVelocity(new Vector(0.3, 0, 0));
|
||||
}
|
||||
if (bf.equals(BlockFace.WEST)) {
|
||||
event.getPlayer().setVelocity(new Vector(-0.3, 0, 0));
|
||||
}
|
||||
if (bf.equals(BlockFace.SOUTH)) {
|
||||
event.getPlayer().setVelocity(new Vector(0, 0, 0.3));
|
||||
}
|
||||
if (bf.equals(BlockFace.NORTH)) {
|
||||
event.getPlayer().setVelocity(new Vector(0, 0, -0.3));
|
||||
}
|
||||
}
|
||||
if (!plugin.lastLoc.containsKey(p) || !plugin.lastLoc.get(p).getWorld().equals(p.getLocation().getWorld()) || plugin.lastLoc.get(p).distance(p.getLocation()) > 1) {
|
||||
plugin.pots.refreshPlayer(p);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package de.anura.core.events;
|
||||
|
||||
import de.anura.core.API.Core;
|
||||
import de.anura.core.API.Errors;
|
||||
import de.anura.core.API.Money;
|
||||
import de.anura.core.AnuraCore;
|
||||
import org.bukkit.entity.Boat;
|
||||
@@ -17,16 +18,20 @@ public class PlayerQuit implements Listener {
|
||||
|
||||
@EventHandler
|
||||
public void onPlayerQuit(PlayerQuitEvent event) {
|
||||
if(event.getPlayer().getVehicle() != null){
|
||||
if(event.getPlayer().getVehicle().getType().equals(EntityType.BOAT)){
|
||||
Boat b = (Boat) event.getPlayer().getVehicle();
|
||||
b.remove();
|
||||
try {
|
||||
if(event.getPlayer().getVehicle() != null){
|
||||
if(event.getPlayer().getVehicle().getType().equals(EntityType.BOAT)){
|
||||
Boat b = (Boat) event.getPlayer().getVehicle();
|
||||
b.remove();
|
||||
}
|
||||
}
|
||||
event.setQuitMessage(null);
|
||||
Core.endSitting(event.getPlayer());
|
||||
AnuraCore.getInstance().disableCommandsAdventure.remove(event.getPlayer());
|
||||
Money.saveMoney(event.getPlayer());
|
||||
Core.getLevel().update(event.getPlayer());
|
||||
} catch(Throwable e) {
|
||||
Errors.reportException(e);
|
||||
}
|
||||
event.setQuitMessage(null);
|
||||
Core.endSitting(event.getPlayer());
|
||||
AnuraCore.getInstance().disableCommandsAdventure.remove(event.getPlayer());
|
||||
Money.saveMoney(event.getPlayer());
|
||||
Core.getLevel().update(event.getPlayer());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,6 +22,7 @@ public class PlayerTeleport implements Listener {
|
||||
|
||||
@EventHandler(priority = EventPriority.LOWEST)
|
||||
public void onPlayerTeleport(PlayerTeleportEvent event) {
|
||||
|
||||
if (plugin.sittingPlayer.containsKey(event.getPlayer()) && !event.getCause().equals(TeleportCause.PLUGIN)) {
|
||||
if (event.getPlayer().isSneaking()) {
|
||||
Player P = event.getPlayer();
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
package de.anura.core.events;
|
||||
|
||||
import de.anura.core.API.Core;
|
||||
import de.anura.core.API.Errors;
|
||||
import de.anura.core.AnuraCore;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.util.AbstractMap.SimpleEntry;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Map.Entry;
|
||||
@@ -22,18 +22,17 @@ public class SignChange implements Listener {
|
||||
|
||||
@EventHandler
|
||||
public void onSignChange(SignChangeEvent event) {
|
||||
|
||||
if (event.getLine(0).equalsIgnoreCase("[Warp]")) {
|
||||
if (!event.getPlayer().hasPermission("core.signs.warp")) {
|
||||
event.setLine(0, ChatColor.STRIKETHROUGH + "[Warp]");
|
||||
event.setLine(1, ChatColor.RED + "You don't");
|
||||
event.setLine(2, ChatColor.RED + "have");
|
||||
event.setLine(3, ChatColor.RED + "Permission!");
|
||||
return;
|
||||
}
|
||||
if (event.getLine(1).equalsIgnoreCase("warp")) {
|
||||
ResultSet rs = AnuraCore.sql.querySelect("SELECT name FROM coreWarps WHERE name = '" + event.getLine(2) + "'");
|
||||
try {
|
||||
try {
|
||||
if (event.getLine(0).equalsIgnoreCase("[Warp]")) {
|
||||
if (!event.getPlayer().hasPermission("core.signs.warp")) {
|
||||
event.setLine(0, ChatColor.STRIKETHROUGH + "[Warp]");
|
||||
event.setLine(1, ChatColor.RED + "You don't");
|
||||
event.setLine(2, ChatColor.RED + "have");
|
||||
event.setLine(3, ChatColor.RED + "Permission!");
|
||||
return;
|
||||
}
|
||||
if (event.getLine(1).equalsIgnoreCase("warp")) {
|
||||
ResultSet rs = AnuraCore.sql.querySelect("SELECT name FROM coreWarps WHERE name = '" + event.getLine(2) + "'");
|
||||
rs.last();
|
||||
if (rs.getRow() == 0) {
|
||||
event.setLine(0, ChatColor.STRIKETHROUGH + "[Warp]");
|
||||
@@ -54,64 +53,64 @@ public class SignChange implements Listener {
|
||||
event.setLine(3, ChatColor.BLUE + event.getLine(3));
|
||||
Core.statusMsg(event.getPlayer(), "warpsign_created", true);
|
||||
}
|
||||
} catch (SQLException ex) {
|
||||
System.out.println("Error: " + ex.getLocalizedMessage());
|
||||
} else if (event.getLine(1).equalsIgnoreCase("spawn")) {
|
||||
Location loc = event.getBlock().getLocation();
|
||||
int X = loc.getBlockX();
|
||||
int Y = loc.getBlockY();
|
||||
int Z = loc.getBlockZ();
|
||||
String world = loc.getWorld().getName();
|
||||
String server = plugin.getConfig().getString("server-name");
|
||||
AnuraCore.sql.queryUpdate("INSERT INTO coreWarpSigns(X,Y,Z,world,server,type,value,info) VALUES('" + X + "','" + Y + "','" + Z + "','" + world + "','" + server + "','spawn','none','" + event.getLine(3) + "')");
|
||||
event.setLine(0, ChatColor.DARK_GRAY + "---------");
|
||||
event.setLine(1, ChatColor.BLACK + "[" + ChatColor.GREEN + "Spawn" + ChatColor.BLACK + "]");
|
||||
event.setLine(2, ChatColor.DARK_GRAY + "---------");
|
||||
event.setLine(3, ChatColor.BLUE + event.getLine(3));
|
||||
Core.statusMsg(event.getPlayer(), "spawnsign_created", true);
|
||||
} else if (event.getLine(1).equalsIgnoreCase("server")) {
|
||||
Location loc = event.getBlock().getLocation();
|
||||
int X = loc.getBlockX();
|
||||
int Y = loc.getBlockY();
|
||||
int Z = loc.getBlockZ();
|
||||
String world = loc.getWorld().getName();
|
||||
String server = event.getLine(2);
|
||||
String curServer = plugin.getConfig().getString("server-name");
|
||||
AnuraCore.sql.queryUpdate("INSERT INTO coreWarpSigns(X,Y,Z,world,server,type,value,info) VALUES('" + X + "','" + Y + "','" + Z + "','" + world + "','" + curServer + "','server','" + server + "','" + event.getLine(3) + "')");
|
||||
event.setLine(0, ChatColor.BLACK + "[" + ChatColor.GREEN + "Server" + ChatColor.BLACK + "]");
|
||||
event.setLine(1, ChatColor.GREEN + "--" + ChatColor.DARK_GRAY + "/" + ChatColor.GREEN + "--");
|
||||
event.setLine(2, ChatColor.AQUA + event.getLine(2));
|
||||
event.setLine(3, ChatColor.BLUE + event.getLine(3));
|
||||
Core.statusMsg(event.getPlayer(), "serversign_created", true);
|
||||
}
|
||||
} else if (event.getLine(1).equalsIgnoreCase("spawn")) {
|
||||
Location loc = event.getBlock().getLocation();
|
||||
int X = loc.getBlockX();
|
||||
int Y = loc.getBlockY();
|
||||
int Z = loc.getBlockZ();
|
||||
String world = loc.getWorld().getName();
|
||||
String server = plugin.getConfig().getString("server-name");
|
||||
AnuraCore.sql.queryUpdate("INSERT INTO coreWarpSigns(X,Y,Z,world,server,type,value,info) VALUES('" + X + "','" + Y + "','" + Z + "','" + world + "','" + server + "','spawn','none','" + event.getLine(3) + "')");
|
||||
event.setLine(0, ChatColor.DARK_GRAY + "---------");
|
||||
event.setLine(1, ChatColor.BLACK + "[" + ChatColor.GREEN + "Spawn" + ChatColor.BLACK + "]");
|
||||
event.setLine(2, ChatColor.DARK_GRAY + "---------");
|
||||
event.setLine(3, ChatColor.BLUE + event.getLine(3));
|
||||
Core.statusMsg(event.getPlayer(), "spawnsign_created", true);
|
||||
} else if (event.getLine(1).equalsIgnoreCase("server")) {
|
||||
Location loc = event.getBlock().getLocation();
|
||||
int X = loc.getBlockX();
|
||||
int Y = loc.getBlockY();
|
||||
int Z = loc.getBlockZ();
|
||||
String world = loc.getWorld().getName();
|
||||
String server = event.getLine(2);
|
||||
String curServer = plugin.getConfig().getString("server-name");
|
||||
AnuraCore.sql.queryUpdate("INSERT INTO coreWarpSigns(X,Y,Z,world,server,type,value,info) VALUES('" + X + "','" + Y + "','" + Z + "','" + world + "','" + curServer + "','server','" + server + "','" + event.getLine(3) + "')");
|
||||
event.setLine(0, ChatColor.BLACK + "[" + ChatColor.GREEN + "Server" + ChatColor.BLACK + "]");
|
||||
event.setLine(1, ChatColor.GREEN + "--" + ChatColor.DARK_GRAY + "/" + ChatColor.GREEN + "--");
|
||||
event.setLine(2, ChatColor.AQUA + event.getLine(2));
|
||||
event.setLine(3, ChatColor.BLUE + event.getLine(3));
|
||||
Core.statusMsg(event.getPlayer(), "serversign_created", true);
|
||||
}
|
||||
} else {
|
||||
if (event.getPlayer().hasPermission("core.signs.chars")) {
|
||||
for (int i = 0; i < 4; i++) {
|
||||
String l = event.getLine(i);
|
||||
l = ChatColor.translateAlternateColorCodes('&', l);
|
||||
if (l.contains("%")) {
|
||||
String[] parts = l.split("%");
|
||||
ArrayList<Entry<String, String>> toReplace = new ArrayList<>();
|
||||
Boolean first = true;
|
||||
for (String s : parts) {
|
||||
if (!first) {
|
||||
String num = s.split(" ")[0];
|
||||
if (Core.isInteger(num)) {
|
||||
int number = Integer.valueOf(num);
|
||||
Entry<String, String> e = new SimpleEntry<>("%" + number, Character.toString((char) number));
|
||||
toReplace.add(e);
|
||||
} else {
|
||||
if (event.getPlayer().hasPermission("core.signs.chars")) {
|
||||
for (int i = 0; i < 4; i++) {
|
||||
String l = event.getLine(i);
|
||||
l = ChatColor.translateAlternateColorCodes('&', l);
|
||||
if (l.contains("%")) {
|
||||
String[] parts = l.split("%");
|
||||
ArrayList<Entry<String, String>> toReplace = new ArrayList<>();
|
||||
Boolean first = true;
|
||||
for (String s : parts) {
|
||||
if (!first) {
|
||||
String num = s.split(" ")[0];
|
||||
if (Core.isInteger(num)) {
|
||||
int number = Integer.valueOf(num);
|
||||
Entry<String, String> e = new SimpleEntry<>("%" + number, Character.toString((char) number));
|
||||
toReplace.add(e);
|
||||
}
|
||||
}
|
||||
first = false;
|
||||
}
|
||||
for (Entry<String, String> entry : toReplace) {
|
||||
l = l.replace(entry.getKey(), entry.getValue());
|
||||
}
|
||||
first = false;
|
||||
}
|
||||
for (Entry<String, String> entry : toReplace) {
|
||||
l = l.replace(entry.getKey(), entry.getValue());
|
||||
}
|
||||
event.setLine(i, l);
|
||||
}
|
||||
event.setLine(i, l);
|
||||
}
|
||||
}
|
||||
} catch(Throwable e) {
|
||||
Errors.reportException(e);
|
||||
}
|
||||
}
|
||||
private final AnuraCore plugin;
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package de.anura.core.events;
|
||||
|
||||
import de.anura.core.API.Errors;
|
||||
import de.anura.core.AnuraCore;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
@@ -14,9 +15,12 @@ public class WeatherChange implements Listener {
|
||||
|
||||
@EventHandler
|
||||
public void onWeatherChange(WeatherChangeEvent event) {
|
||||
if (event.toWeatherState() && plugin.getConfig().getBoolean("no-rain")) {
|
||||
event.setCancelled(true);
|
||||
System.out.println("Stopped rain!");
|
||||
try {
|
||||
if (event.toWeatherState() && plugin.getConfig().getBoolean("no-rain")) {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
} catch(Throwable e) {
|
||||
Errors.reportException(e);
|
||||
}
|
||||
}
|
||||
private final AnuraCore plugin;
|
||||
|
||||
Reference in New Issue
Block a user