- Refactoring
- Update to JDK 8 - Fixes - Fixed stair seat spawning in a block
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
package de.anura.core.API;
|
||||
|
||||
import de.anura.core.AnuraCore;
|
||||
import de.anura.core.util.Data;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.DataOutputStream;
|
||||
import java.sql.ResultSet;
|
||||
@@ -34,7 +35,7 @@ public class Core {
|
||||
if (AnuraCore.getSql() == null) {
|
||||
return null;
|
||||
}
|
||||
if (!AnuraCore.getSql().isValid) {
|
||||
if (!AnuraCore.getSql().hasConnection()) {
|
||||
return null;
|
||||
}
|
||||
return AnuraCore.getSql();
|
||||
@@ -48,9 +49,9 @@ public class Core {
|
||||
* @return Returns the text for this id
|
||||
*/
|
||||
public static String getl(String id, String lang) {
|
||||
String val = AnuraCore.getInstance().lang.get(id, lang);
|
||||
String val = AnuraCore.lang.get(id, lang);
|
||||
if (val == null || val.isEmpty()) {
|
||||
val = AnuraCore.getInstance().lang.get(id, "en");
|
||||
val = AnuraCore.lang.get(id, "en");
|
||||
}
|
||||
return val;
|
||||
}
|
||||
@@ -124,7 +125,7 @@ public class Core {
|
||||
}
|
||||
Player p = (Player) P;
|
||||
if (!Core.cachedPlayerLanguage.containsKey(p)) {
|
||||
ResultSet rs = AnuraCore.sql.querySelect("SELECT lang FROM players WHERE uuid = '" + p.getUniqueId().toString() + "'");
|
||||
ResultSet rs = Core.getMySql().querySelect("SELECT lang FROM players WHERE uuid = '" + p.getUniqueId().toString() + "'");
|
||||
if (!rs.next()) {
|
||||
//This is a weird bug
|
||||
Core.cachedPlayerLanguage.put(p, "de");
|
||||
@@ -148,7 +149,7 @@ public class Core {
|
||||
* @return Returns an iterable set of strings like de or en
|
||||
*/
|
||||
public static Set<String> getAvailLangs() {
|
||||
return AnuraCore.getInstance().lang.languages.keySet();
|
||||
return AnuraCore.lang.languages.keySet();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -196,26 +197,26 @@ public class Core {
|
||||
*/
|
||||
public static void endSitting(Player P, boolean noRemove) {
|
||||
try {
|
||||
if (getMainClass().sittingPlayer.containsKey(P)) {
|
||||
MaterialData md = getMainClass().sittingBlocks.get(P).getState().getData();
|
||||
if (Data.sittingPlayer.containsKey(P)) {
|
||||
MaterialData md = Data.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 = getMainClass().sittingPlayer.get(P);
|
||||
Location loc = Data.sittingBlocks.get(P).getRelative(s.getFacing()).getLocation();
|
||||
Entity a = Data.sittingPlayer.get(P);
|
||||
P.teleport(loc);
|
||||
a.remove();
|
||||
if (!noRemove) {
|
||||
getMainClass().sittingPlayer.remove(P);
|
||||
Data.sittingPlayer.remove(P);
|
||||
}
|
||||
getMainClass().sittingBlocks.remove(P);
|
||||
Data.sittingBlocks.remove(P);
|
||||
} else {
|
||||
Location loc = getMainClass().sittingPlayer.get(P).getLocation();
|
||||
Location loc = Data.sittingPlayer.get(P).getLocation();
|
||||
P.teleport(loc);
|
||||
getMainClass().sittingPlayer.get(P).remove();
|
||||
Data.sittingPlayer.get(P).remove();
|
||||
if (!noRemove) {
|
||||
getMainClass().sittingPlayer.remove(P);
|
||||
Data.sittingPlayer.remove(P);
|
||||
}
|
||||
getMainClass().sittingBlocks.remove(P);
|
||||
Data.sittingBlocks.remove(P);
|
||||
}
|
||||
}
|
||||
} catch (Throwable e) {
|
||||
@@ -264,7 +265,7 @@ public class Core {
|
||||
* @return The level class object
|
||||
*/
|
||||
public static Level getLevel() {
|
||||
return getMainClass().level;
|
||||
return AnuraCore.level;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -7,7 +7,7 @@ import java.util.UUID;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
public class Errors {
|
||||
|
||||
|
||||
/**
|
||||
* Reports an exception to the database
|
||||
* @param exc A Throwable to get the error data from
|
||||
@@ -16,6 +16,7 @@ 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!!");
|
||||
exc.printStackTrace();
|
||||
return;
|
||||
}
|
||||
try {
|
||||
@@ -25,7 +26,7 @@ public class Errors {
|
||||
String errorSql = "INSERT INTO coreErrors (server, exception, msg, info, timestamp) VALUES('" + server + "', '" + name + "', '" + Core.getMySql().escapeString(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();
|
||||
rs.first();
|
||||
int id = rs.getInt("id");
|
||||
String elemSql = "INSERT INTO coreErrorStack(errorId, className, fileName, methodName, lineNumber, nativeMethod) VALUES";
|
||||
boolean first = true;
|
||||
@@ -43,7 +44,7 @@ public class Errors {
|
||||
ex.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Reports an exception to the database
|
||||
* @param exc A Throwable to get the error from
|
||||
@@ -51,7 +52,7 @@ public class Errors {
|
||||
public static void reportException(Throwable exc) {
|
||||
reportException(exc, "");
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Method to report a bug
|
||||
* @param P The reporter
|
||||
@@ -66,7 +67,7 @@ public class Errors {
|
||||
}
|
||||
Core.getMySql().queryUpdate("INSERT INTO serverBugs(player, msg, data, timestamp) VALUES ((SELECT id FROM players WHERE uuid = '" + uuid.toString() + "'), '" + Core.getMySql().escapeString(msg) + "', '" + dataText + "', '" + System.currentTimeMillis() / 1000 + "')");
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Generates an error entry
|
||||
* @param key The key for this object
|
||||
|
||||
@@ -59,7 +59,7 @@ public class Inventories implements Listener {
|
||||
}
|
||||
invs.put(type, langInvs);
|
||||
invType.put(type, true);
|
||||
invActions.put(type, new HashMap<Integer, Entry<Action, Object>>());
|
||||
invActions.put(type, new HashMap<>());
|
||||
}
|
||||
|
||||
public static void registerInventory(String type, String name, ChatColor nameColor, boolean multilang, String lang) {
|
||||
@@ -74,9 +74,9 @@ public class Inventories implements Listener {
|
||||
invNames.put(nameColor + Core.getl(name, lang), type);
|
||||
invs.put(type, langInvs);
|
||||
invLang.put(type, lang);
|
||||
invActions.put(type, new HashMap<Integer, Entry<Action, Object>>());
|
||||
}
|
||||
|
||||
invActions.put(type, new HashMap<>());
|
||||
}
|
||||
|
||||
public static void buildInvItem(String type, Material m, String name, ChatColor nameColor, ChatColor loreColor, String... lores) { //INV!!
|
||||
HashMap<String, ItemStack> stacks = new HashMap<>();
|
||||
for (String lang : Core.getAvailLangs()) {
|
||||
@@ -93,7 +93,7 @@ public class Inventories implements Listener {
|
||||
itemNames.put(display, type);
|
||||
stack.setItemMeta(meta);
|
||||
stacks.put(lang, stack);
|
||||
}
|
||||
}
|
||||
items.put(type, stacks);
|
||||
}
|
||||
|
||||
@@ -134,11 +134,11 @@ public class Inventories implements Listener {
|
||||
stacks.put("global", stack);
|
||||
return stacks;
|
||||
}
|
||||
|
||||
|
||||
public static HashMap<String, ItemStack> buildItems(Material m, String name, ChatColor nameColor, String lang) {
|
||||
return buildItems(m, name, nameColor, lang, null, "none");
|
||||
}
|
||||
|
||||
|
||||
public static HashMap<String, ItemStack> buildItems(Material m, String name, ChatColor nameColor) {
|
||||
return buildItems(m, name, nameColor, null, "none");
|
||||
}
|
||||
@@ -191,7 +191,7 @@ public class Inventories implements Listener {
|
||||
itemActions.put(type, new AbstractMap.SimpleEntry<>(action, data));
|
||||
}
|
||||
|
||||
public static void executeAction(Player P, Action action, Object data) {
|
||||
public static void executeAction(Player P, Action action, Object data) {
|
||||
try {
|
||||
if (action == Action.SERVER) {
|
||||
ByteArrayOutputStream b = new ByteArrayOutputStream();
|
||||
@@ -210,7 +210,7 @@ public class Inventories implements Listener {
|
||||
} 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() + "'");
|
||||
Core.getMySql().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));
|
||||
@@ -254,12 +254,9 @@ public class Inventories implements Listener {
|
||||
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();
|
||||
}
|
||||
Bukkit.getScheduler().scheduleSyncDelayedTask(AnuraCore.getInstance(), () -> {
|
||||
player.setItemOnCursor(new ItemStack(Material.AIR));
|
||||
player.updateInventory();
|
||||
}, 1);
|
||||
}
|
||||
} else if (invNames.containsKey(event.getInventory().getName())) {
|
||||
@@ -275,7 +272,7 @@ public class Inventories implements Listener {
|
||||
@EventHandler
|
||||
public void onPlayerInteract(PlayerInteractEvent event) {
|
||||
try {
|
||||
if (checkInteracts.containsKey((Player) event.getPlayer()) && !checkInteracts.get((Player) event.getPlayer())) {
|
||||
if (checkInteracts.containsKey(event.getPlayer()) && !checkInteracts.get(event.getPlayer())) {
|
||||
return;
|
||||
}
|
||||
if (event.hasItem()) {
|
||||
@@ -285,12 +282,7 @@ public class Inventories implements Listener {
|
||||
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);
|
||||
Bukkit.getScheduler().scheduleSyncDelayedTask(AnuraCore.getInstance(), P::updateInventory, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package de.anura.core.API;
|
||||
|
||||
import de.anura.core.util.Data;
|
||||
import java.sql.ResultSet;
|
||||
import java.util.HashMap;
|
||||
import org.bukkit.Bukkit;
|
||||
@@ -15,18 +16,11 @@ public final class Level {
|
||||
public Level() {
|
||||
try {
|
||||
for (Player P : Bukkit.getOnlinePlayers()) {
|
||||
Core.getMainClass().joinTime.put(P, (int) (System.currentTimeMillis() / 1000));
|
||||
Core.getMainClass().aimTheWaterWins.put(P, 0);
|
||||
Data.joinTime.put(P, (int) (System.currentTimeMillis() / 1000));
|
||||
Data.aimTheWaterWins.put(P, 0);
|
||||
}
|
||||
loadLevelAll();
|
||||
Bukkit.getScheduler().scheduleSyncRepeatingTask(Core.getMainClass(), new Runnable() {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
update();
|
||||
}
|
||||
|
||||
}, 20 * 60, 20 * 60);
|
||||
Bukkit.getScheduler().scheduleSyncRepeatingTask(Core.getMainClass(), this::update, 20 * 60, 20 * 60);
|
||||
} catch(Throwable e) {
|
||||
Errors.reportException(e);
|
||||
}
|
||||
@@ -40,15 +34,15 @@ public final class Level {
|
||||
|
||||
public void saveStuff(Player P) {
|
||||
int walkedMeters = P.getStatistic(Statistic.WALK_ONE_CM) / 100;
|
||||
int playedTime = (int) ((System.currentTimeMillis() / 1000 - Core.getMainClass().joinTime.get(P)) / 60);
|
||||
int playedTime = (int) ((System.currentTimeMillis() / 1000 - Data.joinTime.get(P)) / 60);
|
||||
Core.getMySql().queryUpdate("UPDATE coreStats "
|
||||
+ "SET onlineTime = onlineTime + " + playedTime + ""
|
||||
+ ", walkedMeters = walkedMeters + " + walkedMeters + ""
|
||||
+ ", aimTheWaterWins = aimTheWaterWins + " + Core.getMainClass().aimTheWaterWins.get(P) + " "
|
||||
+ ", aimTheWaterWins = aimTheWaterWins + " + Data.aimTheWaterWins.get(P) + " "
|
||||
+ "WHERE player = (SELECT id FROM players WHERE uuid = '" + P.getUniqueId().toString() + "')");
|
||||
Core.getMainClass().joinTime.put(P, (int) (System.currentTimeMillis() / 1000));
|
||||
Data.joinTime.put(P, (int) (System.currentTimeMillis() / 1000));
|
||||
P.setStatistic(Statistic.WALK_ONE_CM, 0);
|
||||
Core.getMainClass().aimTheWaterWins.put(P, 0);
|
||||
Data.aimTheWaterWins.put(P, 0);
|
||||
}
|
||||
|
||||
public void loadLevelAll() {
|
||||
@@ -74,7 +68,7 @@ public final class Level {
|
||||
update(P);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void update(Player P) {
|
||||
try {
|
||||
if (!anuraLevel.containsKey(P)) {
|
||||
@@ -132,7 +126,7 @@ public final class Level {
|
||||
}
|
||||
|
||||
public static void updateLevel(Player P) {
|
||||
Core.getMainClass().level.update(P);
|
||||
Core.getLevel().update(P);
|
||||
}
|
||||
|
||||
public static int getSmashLevel(Player P) {
|
||||
|
||||
@@ -10,28 +10,19 @@ import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
import org.bukkit.configuration.file.YamlConfiguration;
|
||||
|
||||
public class MySQL {
|
||||
|
||||
private final String host;
|
||||
private final int port;
|
||||
private final String username;
|
||||
private final String pw;
|
||||
private final String db;
|
||||
private Connection conn;
|
||||
private static final String dbLoc = "database.";
|
||||
public FileConfiguration config;
|
||||
private final AnuraCore plugin;
|
||||
public boolean isValid = true;
|
||||
private boolean reconnecting = false;
|
||||
|
||||
public MySQL(AnuraCore plugin) {
|
||||
this.plugin = plugin;
|
||||
public MySQL() {
|
||||
File file = new File("plugins/Core/", "database.yml");
|
||||
FileConfiguration cfg = YamlConfiguration.loadConfiguration(file);
|
||||
String dbLoc = "database.";
|
||||
cfg.addDefault(dbLoc + "host", "localhost");
|
||||
cfg.addDefault(dbLoc + "port", 3306);
|
||||
cfg.addDefault(dbLoc + "username", "username");
|
||||
@@ -42,17 +33,10 @@ public class MySQL {
|
||||
cfg.save(file);
|
||||
} catch (IOException e) {
|
||||
}
|
||||
this.host = cfg.getString(dbLoc + "host");
|
||||
this.port = cfg.getInt(dbLoc + "port");
|
||||
this.username = cfg.getString(dbLoc + "username");
|
||||
this.pw = cfg.getString(dbLoc + "pw");
|
||||
this.db = cfg.getString(dbLoc + "db");
|
||||
this.config = cfg;
|
||||
if (!this.openConnection()) {
|
||||
Bukkit.broadcastMessage(ChatColor.RED + "No database connection available, please contact a server administrator!");
|
||||
this.isValid = false;
|
||||
return;
|
||||
}
|
||||
this.config = cfg;
|
||||
}
|
||||
|
||||
public String escapeString(String text) {
|
||||
@@ -60,9 +44,14 @@ public class MySQL {
|
||||
}
|
||||
|
||||
private Boolean openConnection() {
|
||||
String host = config.getString(dbLoc + "host");
|
||||
int port = config.getInt(dbLoc + "port");
|
||||
String username = config.getString(dbLoc + "username");
|
||||
String pw = config.getString(dbLoc + "pw");
|
||||
String db = config.getString(dbLoc + "db");
|
||||
try {
|
||||
Class.forName("com.mysql.jdbc.Driver");
|
||||
Connection connLoc = DriverManager.getConnection("jdbc:mysql://" + this.host + ":" + this.port + "/" + this.db, this.username, this.pw);
|
||||
Connection connLoc = DriverManager.getConnection("jdbc:mysql://" + host + ":" + port + "/" + db, username, pw);
|
||||
this.conn = connLoc;
|
||||
return true;
|
||||
} catch (ClassNotFoundException | SQLException e) {
|
||||
@@ -70,7 +59,7 @@ public class MySQL {
|
||||
}
|
||||
}
|
||||
|
||||
private boolean hasConnection() {
|
||||
public boolean hasConnection() {
|
||||
try {
|
||||
Boolean validConn = true;
|
||||
if (this.conn == null) {
|
||||
@@ -90,7 +79,6 @@ public class MySQL {
|
||||
}
|
||||
this.reconnecting = true;
|
||||
System.out.println("Reconnecting...");
|
||||
Bukkit.broadcastMessage(ChatColor.YELLOW + "Bitte warten... Plugin-Daten werden geladen...");
|
||||
this.closeConnection();
|
||||
if (!this.openConnection()) {
|
||||
Bukkit.broadcastMessage(ChatColor.RED + "Database reconnect failed! Please contact a server administrator!");
|
||||
@@ -101,27 +89,17 @@ public class MySQL {
|
||||
return true;
|
||||
}
|
||||
|
||||
private void queryRedo(final String query, final String type) {
|
||||
private void queryRedo(final String query) {
|
||||
if (!this.reconnect()) {
|
||||
this.plugin.getServer().getScheduler().scheduleSyncDelayedTask(this.plugin, new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
switch (type) {
|
||||
case "update":
|
||||
AnuraCore.sql.queryUpdate(query);
|
||||
break;
|
||||
case "select":
|
||||
AnuraCore.sql.querySelect(query);
|
||||
break;
|
||||
}
|
||||
}
|
||||
Bukkit.getScheduler().scheduleSyncDelayedTask(AnuraCore.getInstance(), () -> {
|
||||
Core.getMySql().queryUpdate(query);
|
||||
}, 4);
|
||||
}
|
||||
}
|
||||
|
||||
public void queryUpdate(String query) {
|
||||
if (!this.hasConnection()) {
|
||||
queryRedo(query, "update");
|
||||
queryRedo(query);
|
||||
}
|
||||
Connection connLoc = this.conn;
|
||||
PreparedStatement st = null;
|
||||
@@ -136,33 +114,27 @@ public class MySQL {
|
||||
|
||||
public ResultSet querySelect(final String query) {
|
||||
if (!this.hasConnection()) {
|
||||
queryRedo(query, "select");
|
||||
return null;
|
||||
reconnect();
|
||||
}
|
||||
try {
|
||||
PreparedStatement st = this.conn.prepareStatement(query);
|
||||
ResultSet returns = this.querySelect(st);
|
||||
if (returns == null) {
|
||||
queryRedo(query, "select");
|
||||
} else {
|
||||
return returns;
|
||||
}
|
||||
return returns;
|
||||
} catch (SQLException e) {
|
||||
System.err.println("Unknown error whilst trying to build Prepared Statement!");
|
||||
queryRedo(query, "select");
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private ResultSet querySelect(PreparedStatement st) {
|
||||
if (!this.hasConnection()) {
|
||||
return null;
|
||||
reconnect();
|
||||
}
|
||||
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("Failed to send 'SELECT'-Query!(" + st.toString() + ")");
|
||||
System.err.println("Caused by: " + e.getMessage());
|
||||
return null;
|
||||
}
|
||||
@@ -173,16 +145,12 @@ public class MySQL {
|
||||
if (rs != null) {
|
||||
try {
|
||||
rs.close();
|
||||
} catch (SQLException e) {
|
||||
|
||||
}
|
||||
} catch (SQLException e) {}
|
||||
}
|
||||
if (st != null) {
|
||||
try {
|
||||
st.close();
|
||||
} catch (SQLException e) {
|
||||
|
||||
}
|
||||
} catch (SQLException e) {}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -6,15 +6,10 @@ 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 de.anura.core.util.Data;
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.entity.Arrow;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.Player;
|
||||
@@ -22,39 +17,22 @@ import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
public class AnuraCore extends JavaPlugin {
|
||||
|
||||
public static MySQL sql;
|
||||
public HashMap<Player, Double> selectableJumper = new HashMap<>();
|
||||
public HashMap<Player, String> permGroup = new HashMap<>();
|
||||
private static MySQL sql;
|
||||
private static AnuraCore instance;
|
||||
public HashMap<Player, Arrow> sittingPlayer = new HashMap<>();
|
||||
public HashMap<Player, Block> sittingBlocks = new HashMap<>();
|
||||
public LanguageSupport lang;
|
||||
public HashMap<Integer, Location> flowerPots = new HashMap<>();
|
||||
public HashMap<Integer, Integer> flowerPotsWait = new HashMap<>();
|
||||
public HashMap<Player, Location> lastLoc = new HashMap<>();
|
||||
public FlowerPots pots;
|
||||
public HashMap<String, BufferedImage> renderedImgs = new HashMap<>();
|
||||
public ArrayList<Player> stairMode = new ArrayList<>();
|
||||
public ArrayList<Block> sittableBlocks = new ArrayList<>();
|
||||
public HashMap<Player, Integer> golfPower = new HashMap<>();
|
||||
public HashMap<Player, Boolean> releaseGolf = new HashMap<>();
|
||||
public HashMap<Player, Entity> golfBall = new HashMap<>();
|
||||
public HashMap<Player, Boolean> disableCommandsAdventure = new HashMap<>();
|
||||
public HashMap<Player, Integer> joinTime = new HashMap<>();
|
||||
public HashMap<Player, Integer> aimTheWaterWins = new HashMap<>();
|
||||
public ArrayList<Player> denySit = new ArrayList<>();
|
||||
public Features features;
|
||||
public Permissions perms;
|
||||
public Signs signs;
|
||||
public Tools tools;
|
||||
public Level level;
|
||||
public static Features features;
|
||||
public static Permissions perms;
|
||||
public static Signs signs;
|
||||
public static Tools tools;
|
||||
public static Level level;
|
||||
public static LanguageSupport lang;
|
||||
public static FlowerPots pots;
|
||||
|
||||
@Override
|
||||
public void onEnable() {
|
||||
try {
|
||||
AnuraCore.sql = new MySQL(this);
|
||||
AnuraCore.instance = this;
|
||||
if (AnuraCore.sql.isValid) {
|
||||
sql = new MySQL();
|
||||
instance = this;
|
||||
if (sql.hasConnection()) {
|
||||
if (AnuraCore.getInstance().getConfig().getBoolean("is-main-lobby")) {
|
||||
for (World w : Bukkit.getWorlds()) {
|
||||
for (Entity e : w.getEntities()) {
|
||||
@@ -94,7 +72,7 @@ public class AnuraCore extends JavaPlugin {
|
||||
@Override
|
||||
public void onDisable() {
|
||||
try {
|
||||
if (!AnuraCore.sql.isValid) {
|
||||
if (!sql.hasConnection()) {
|
||||
return;
|
||||
}
|
||||
for (Player P : getServer().getOnlinePlayers()) {
|
||||
@@ -107,10 +85,11 @@ public class AnuraCore extends JavaPlugin {
|
||||
sql.queryUpdate("DELETE FROM coreServers WHERE name = '" + this.getConfig().getString("server-name") + "'");
|
||||
features.reset();
|
||||
level.update();
|
||||
for (Player P : this.sittingPlayer.keySet()) {
|
||||
for (Player P : Data.sittingPlayer.keySet()) {
|
||||
Core.endSitting(P, true);
|
||||
}
|
||||
sittingPlayer.clear();
|
||||
Data.sittingPlayer.clear();
|
||||
sql.closeConnection();
|
||||
} catch (Throwable e) {
|
||||
Errors.reportException(e);
|
||||
}
|
||||
|
||||
@@ -8,41 +8,41 @@ import org.bukkit.ChatColor;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.potion.PotionEffect;
|
||||
import org.bukkit.potion.PotionEffectType;
|
||||
import org.bukkit.entity.Villager;
|
||||
import org.bukkit.entity.Villager.Profession;
|
||||
import org.bukkit.potion.PotionEffect;
|
||||
import org.bukkit.potion.PotionEffectType;
|
||||
|
||||
public class AnuraVillager {
|
||||
|
||||
|
||||
private final VillagerType type;
|
||||
private Villager villager;
|
||||
private Location loc;
|
||||
|
||||
|
||||
public AnuraVillager(VillagerType type) {
|
||||
this.type = type;
|
||||
villagers.put(type, this);
|
||||
}
|
||||
|
||||
|
||||
public AnuraVillager(VillagerType type, Villager villager) {
|
||||
this(type);
|
||||
setVillager(villager);
|
||||
loc = villager.getLocation();
|
||||
}
|
||||
|
||||
|
||||
public void spawn(Location loc) {
|
||||
Villager v = buildVillager(loc, type.getName());
|
||||
setVillager(v);
|
||||
this.loc = loc;
|
||||
}
|
||||
|
||||
|
||||
private void setVillager(Villager v) {
|
||||
villager = v;
|
||||
byEntity.put(v, this);
|
||||
}
|
||||
|
||||
|
||||
private Villager buildVillager(Location loc, String name) {
|
||||
Villager vi = (Villager) loc.getWorld().spawn(loc, Villager.class);
|
||||
Villager vi = loc.getWorld().spawn(loc, Villager.class);
|
||||
vi.setProfession(Profession.PRIEST);
|
||||
vi.setBaby();
|
||||
vi.setAgeLock(true);
|
||||
@@ -53,24 +53,24 @@ public class AnuraVillager {
|
||||
vi.addPotionEffect(new PotionEffect(PotionEffectType.SLOW, 999999999, 999));
|
||||
return vi;
|
||||
}
|
||||
|
||||
|
||||
public void remove() {
|
||||
byEntity.remove(villager);
|
||||
villagers.remove(type);
|
||||
}
|
||||
|
||||
|
||||
public VillagerType getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
|
||||
public void tp() {
|
||||
villager.teleport(loc);
|
||||
}
|
||||
|
||||
|
||||
public static void addVillagers(Entity[] entities) {
|
||||
addVillagers(Arrays.asList(entities));
|
||||
}
|
||||
|
||||
|
||||
public static void addVillagers(List<Entity> entities) {
|
||||
for (Entity e : entities) {
|
||||
if (e.isValid() && e.getType().equals(EntityType.VILLAGER)) {
|
||||
@@ -81,7 +81,7 @@ public class AnuraVillager {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public static void removeVillagers(Entity[] entities) {
|
||||
for (Entity e : entities) {
|
||||
if (e.isValid() && e.getType().equals(EntityType.VILLAGER)) {
|
||||
@@ -94,53 +94,53 @@ public class AnuraVillager {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public static AnuraVillager getByEntity(Villager v) {
|
||||
return byEntity.get(v);
|
||||
}
|
||||
|
||||
|
||||
public static AnuraVillager getByType(VillagerType type) {
|
||||
return villagers.get(type);
|
||||
}
|
||||
|
||||
|
||||
private static final HashMap<Villager, AnuraVillager> byEntity = new HashMap<>();
|
||||
public static final HashMap<VillagerType, AnuraVillager> villagers = new HashMap<>();
|
||||
|
||||
|
||||
|
||||
|
||||
public enum VillagerType {
|
||||
DOUBLE_JUMP(Feature.DOUBLE_JUMP, "Double jump"),
|
||||
AUTO_BOAT(Feature.BOAT, "AutoBoat");
|
||||
|
||||
|
||||
private VillagerType(Feature feature, String name) {
|
||||
this.feature = feature;
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
|
||||
private final Feature feature;
|
||||
private final String name;
|
||||
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
|
||||
public Feature getFeature() {
|
||||
return feature;
|
||||
}
|
||||
|
||||
|
||||
private final static HashMap<Feature, VillagerType> BY_FEATURE = new HashMap<>();
|
||||
private final static HashMap<String, VillagerType> BY_NAME = new HashMap<>();
|
||||
|
||||
|
||||
static {
|
||||
for (VillagerType type : values()) {
|
||||
BY_FEATURE.put(type.getFeature(), type);
|
||||
BY_NAME.put(type.getName(), type);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public static VillagerType getByFeature(Feature feature) {
|
||||
return BY_FEATURE.get(feature);
|
||||
}
|
||||
|
||||
|
||||
public static VillagerType getByName(String name) {
|
||||
return BY_NAME.containsKey(name) ? BY_NAME.get(name) : BY_NAME.get(name.substring(2));
|
||||
}
|
||||
|
||||
@@ -12,7 +12,6 @@ import org.bukkit.GameMode;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Boat;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
@@ -24,7 +23,7 @@ import org.bukkit.event.vehicle.VehicleExitEvent;
|
||||
import org.bukkit.util.Vector;
|
||||
|
||||
public class Features implements Listener {
|
||||
|
||||
|
||||
private final Location atwCenter;
|
||||
|
||||
public enum Feature {
|
||||
@@ -35,9 +34,9 @@ public class Features implements Listener {
|
||||
private Feature(int id) {
|
||||
this.featureId = id;
|
||||
}
|
||||
private final int featureId;
|
||||
public final int featureId;
|
||||
private static final HashMap<Integer, Feature> BY_ID = new HashMap<>();
|
||||
|
||||
|
||||
public int getId() {
|
||||
return featureId;
|
||||
}
|
||||
@@ -54,7 +53,7 @@ public class Features implements Listener {
|
||||
}
|
||||
|
||||
public Features() {
|
||||
Bukkit.getPluginManager().registerEvents(this, AnuraCore.getInstance());
|
||||
Bukkit.getPluginManager().registerEvents(this, AnuraCore.getInstance());
|
||||
atwCenter = new Location(Bukkit.getWorld("lobby"), -297, 31, -1742);
|
||||
}
|
||||
|
||||
@@ -70,8 +69,8 @@ public class Features implements Listener {
|
||||
}
|
||||
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>());
|
||||
featureEnabled.put(P, new HashMap<Feature, Boolean>());
|
||||
playerFeatures.put(P, new ArrayList<>());
|
||||
featureEnabled.put(P, new HashMap<>());
|
||||
boolean added = false;
|
||||
while (rs.next()) {
|
||||
if (!added) {
|
||||
@@ -169,11 +168,12 @@ public class Features implements Listener {
|
||||
return false;
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
private void resetPlayerFeatures(Player P) {
|
||||
if (!playerFeatures.containsKey(P)) {
|
||||
return;
|
||||
}
|
||||
for (Feature f : (ArrayList<Feature>) playerFeatures.get(P).clone()) {
|
||||
for (Feature f : (Iterable<? extends Feature>) playerFeatures.get(P).clone()) {
|
||||
removeFeature(P, f);
|
||||
}
|
||||
}
|
||||
@@ -220,7 +220,7 @@ public class Features implements Listener {
|
||||
}
|
||||
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)) {
|
||||
if (this.canDoubleJump.containsKey(P) && !this.canDoubleJump.get(P) && P.isOnGround() && this.featureEnabled.get(P).get(Feature.DOUBLE_JUMP)) {
|
||||
this.canDoubleJump.put(P, true);
|
||||
P.setExp(1);
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ package de.anura.core;
|
||||
import de.anura.core.API.Core;
|
||||
import de.anura.core.API.Errors;
|
||||
import de.anura.core.API.Money;
|
||||
import de.anura.core.util.Data;
|
||||
import java.sql.ResultSet;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
@@ -15,10 +16,10 @@ import org.bukkit.entity.Player;
|
||||
|
||||
public class FlowerPots {
|
||||
|
||||
private final HashMap<Player, HashMap<Integer, Boolean>> foundCache = new HashMap<>();
|
||||
private final HashMap<Player, HashMap<Integer, Integer>> foundTimestamp = new HashMap<>();
|
||||
private final static HashMap<Player, HashMap<Integer, Boolean>> foundCache = new HashMap<>();
|
||||
private final static HashMap<Player, HashMap<Integer, Integer>> foundTimestamp = new HashMap<>();
|
||||
|
||||
public boolean foundPot(Player P, Integer pot) {
|
||||
public static boolean foundPot(Player P, Integer pot) {
|
||||
if (!foundCache.containsKey(P)) {
|
||||
refreshCache(P);
|
||||
}
|
||||
@@ -32,18 +33,18 @@ public class FlowerPots {
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private int getPotWaitTime(Integer pot) {
|
||||
if (AnuraCore.getInstance().flowerPots.containsKey(pot)) {
|
||||
if (AnuraCore.getInstance().flowerPotsWait.containsKey(pot)) {
|
||||
return AnuraCore.getInstance().flowerPotsWait.get(pot);
|
||||
|
||||
private static int getPotWaitTime(Integer pot) {
|
||||
if (Data.flowerPots.containsKey(pot)) {
|
||||
if (Data.flowerPotsWait.containsKey(pot)) {
|
||||
return Data.flowerPotsWait.get(pot);
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
public void refreshCache(Player P) {
|
||||
public static void refreshCache(Player P) {
|
||||
try {
|
||||
ResultSet rs = AnuraCore.getSql().querySelect("SELECT id, timestamp, type FROM coreFoundPots WHERE player = (SELECT id FROM players WHERE uuid = '" + P.getUniqueId().toString() + "')");
|
||||
HashMap<Integer, Boolean> list = new HashMap<>();
|
||||
@@ -54,15 +55,15 @@ public class FlowerPots {
|
||||
listTimes.put(rs.getInt("id"), rs.getInt("timestamp"));
|
||||
}
|
||||
}
|
||||
this.foundCache.put(P, list);
|
||||
this.foundTimestamp.put(P, listTimes);
|
||||
foundCache.put(P, list);
|
||||
foundTimestamp.put(P, listTimes);
|
||||
} catch (Throwable e) {
|
||||
Errors.reportException(e);
|
||||
}
|
||||
}
|
||||
|
||||
public void refreshPot(Integer pot) {
|
||||
Location l = AnuraCore.getInstance().flowerPots.get(pot);
|
||||
public static void refreshPot(Integer pot) {
|
||||
Location l = Data.flowerPots.get(pot);
|
||||
for (Player P : l.getWorld().getPlayers()) {
|
||||
if (P.getLocation().distance(l) < 20) {
|
||||
refreshPlayerPot(P, pot, l);
|
||||
@@ -70,24 +71,24 @@ public class FlowerPots {
|
||||
}
|
||||
}
|
||||
|
||||
public void refreshPlayerPot(Player p, Integer pot, Location l) {
|
||||
if (!this.foundPot(p, pot)) {
|
||||
public static void refreshPlayerPot(Player p, Integer pot, Location l) {
|
||||
if (!foundPot(p, pot)) {
|
||||
p.sendBlockChange(l, Material.FLOWER_POT, (byte) 0);
|
||||
} else {
|
||||
p.sendBlockChange(l, Material.AIR, (byte) 0);
|
||||
}
|
||||
}
|
||||
|
||||
public void refreshPlayer(Player p) {
|
||||
for (Map.Entry<Integer, Location> pots : AnuraCore.getInstance().flowerPots.entrySet()) {
|
||||
public static void refreshPlayer(Player p) {
|
||||
for (Map.Entry<Integer, Location> pots : Data.flowerPots.entrySet()) {
|
||||
if (pots.getValue().getWorld().equals(p.getLocation().getWorld()) && pots.getValue().distance(p.getLocation()) < 20) {
|
||||
refreshPlayerPot(p, pots.getKey(), pots.getValue());
|
||||
}
|
||||
}
|
||||
AnuraCore.getInstance().lastLoc.put(p, p.getLocation());
|
||||
Data.lastLoc.put(p, p.getLocation());
|
||||
}
|
||||
|
||||
public void playerFoundPot(Player P, Integer pot) {
|
||||
public static void playerFoundPot(Player P, Integer pot) {
|
||||
try {
|
||||
if (!foundPot(P, pot)) {
|
||||
Integer time = getPotWaitTime(pot);
|
||||
@@ -107,7 +108,7 @@ public class FlowerPots {
|
||||
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);
|
||||
Location loc = Data.flowerPots.get(pot);
|
||||
for (int i = 0; i < 20; i++) {
|
||||
loc.getWorld().playEffect(loc, Effect.FIREWORKS_SPARK, 4);
|
||||
}
|
||||
|
||||
@@ -1,21 +0,0 @@
|
||||
package de.anura.core;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.map.MapCanvas;
|
||||
import org.bukkit.map.MapRenderer;
|
||||
import org.bukkit.map.MapView;
|
||||
|
||||
public class ImgRenderer extends MapRenderer {
|
||||
|
||||
private final String name;
|
||||
|
||||
public ImgRenderer(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render(MapView mv, MapCanvas mc, Player player) {
|
||||
mc.drawImage(0, 0, AnuraCore.getInstance().renderedImgs.get(this.name));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
package de.anura.core;
|
||||
|
||||
import de.anura.core.API.Core;
|
||||
import de.anura.core.API.Errors;
|
||||
import java.sql.ResultSet;
|
||||
import java.util.HashMap;
|
||||
@@ -12,7 +13,7 @@ public class LanguageSupport {
|
||||
|
||||
public LanguageSupport() {
|
||||
try {
|
||||
ResultSet al = AnuraCore.sql.querySelect("SELECT name, short_name FROM coreAvailableLanguages WHERE `show` = 1");
|
||||
ResultSet al = Core.getMySql().querySelect("SELECT name, short_name FROM coreAvailableLanguages WHERE `show` = 1");
|
||||
if (!al.next()) {
|
||||
return;
|
||||
}
|
||||
@@ -21,9 +22,9 @@ public class LanguageSupport {
|
||||
while (al.next()) {
|
||||
languages.put(al.getString("short_name"), al.getString("name"));
|
||||
languageString += ", " + al.getString("short_name");
|
||||
languageValues.put(al.getString("short_name"), new HashMap<String, String>());
|
||||
languageValues.put(al.getString("short_name"), new HashMap<>());
|
||||
}
|
||||
ResultSet lv = AnuraCore.sql.querySelect("SELECT id" + languageString + " FROM coreLanguages");
|
||||
ResultSet lv = Core.getMySql().querySelect("SELECT id" + languageString + " FROM coreLanguages");
|
||||
while (lv.next()) {
|
||||
for (String lang : languages.keySet()) {
|
||||
languageValues.get(lang).put(lv.getString("id"), lv.getString(lang));
|
||||
|
||||
@@ -1,12 +1,11 @@
|
||||
package de.anura.core;
|
||||
|
||||
import de.anura.core.API.Core;
|
||||
import de.anura.core.API.Errors;
|
||||
import java.sql.ResultSet;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.UUID;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.entity.Player;
|
||||
@@ -87,7 +86,7 @@ public final class Permissions implements Listener {
|
||||
pa.unsetPermission(p);
|
||||
}
|
||||
if (!this.playerGroups.containsKey(P.getUniqueId())) {
|
||||
this.playerGroups.put(P.getUniqueId(), new ArrayList<Integer>());
|
||||
this.playerGroups.put(P.getUniqueId(), new ArrayList<>());
|
||||
}
|
||||
ArrayList<Integer> groups = this.playerGroups.get(P.getUniqueId());
|
||||
ArrayList<Integer> assignedGroups = new ArrayList<>();
|
||||
@@ -143,9 +142,9 @@ public final class Permissions implements Listener {
|
||||
|
||||
public String reload() {
|
||||
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");
|
||||
ResultSet groupsRs = Core.getMySql().querySelect("SELECT prefix, suffix, parent, name, id, listColor FROM permGroups");
|
||||
ResultSet permsRs = Core.getMySql().querySelect("SELECT `group`, name FROM permPerms");
|
||||
ResultSet userRs = Core.getMySql().querySelect("SELECT playerUUID, `group` FROM permPlayerGroups");
|
||||
this.groupNames.clear();
|
||||
this.groupPerms.clear();
|
||||
this.playerGroups.clear();
|
||||
@@ -160,7 +159,7 @@ public final class Permissions implements Listener {
|
||||
while (groupsRs.next()) {
|
||||
int id = this.groupAutoIncrement;
|
||||
this.groupNames.put(id, groupsRs.getString("name"));
|
||||
this.groupPerms.put(id, new ArrayList<String>());
|
||||
this.groupPerms.put(id, new ArrayList<>());
|
||||
this.groupParents.put(id, groupsRs.getInt("parent"));
|
||||
if (groupsRs.getString("prefix") != null) {
|
||||
this.groupPrefix.put(id, groupsRs.getString("prefix"));
|
||||
|
||||
@@ -17,13 +17,10 @@ public class RealTime {
|
||||
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);
|
||||
}
|
||||
Bukkit.getScheduler().scheduleSyncRepeatingTask(Core.getMainClass(), () -> {
|
||||
Integer[] time = getSystemTime();
|
||||
int TTime = convertTime(time[0], time[1]);
|
||||
setWorldTime(TTime);
|
||||
}, 0, (20 * 60 * 10));
|
||||
}
|
||||
} catch (Throwable e) {
|
||||
|
||||
@@ -7,6 +7,7 @@ import de.anura.core.API.Level;
|
||||
import de.anura.core.API.Tools;
|
||||
import de.anura.core.commands.*;
|
||||
import de.anura.core.events.*;
|
||||
import de.anura.core.util.Data;
|
||||
import java.sql.ResultSet;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
@@ -15,7 +16,6 @@ import org.bukkit.Material;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
import org.bukkit.entity.Arrow;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.material.Stairs;
|
||||
import org.bukkit.scoreboard.Scoreboard;
|
||||
@@ -39,6 +39,7 @@ public class Setup {
|
||||
c.addDefault("golf", false);
|
||||
c.addDefault("realtime-day", false);
|
||||
c.addDefault("no-snow-melt", false);
|
||||
c.addDefault("no-bed-explode", false);
|
||||
c.addDefault("spawn.world", "none");
|
||||
c.addDefault("spawn.X", 0);
|
||||
c.addDefault("spawn.Y", 0);
|
||||
@@ -79,14 +80,14 @@ public class Setup {
|
||||
|
||||
public static void setupClasses() {
|
||||
try {
|
||||
Core.getMainClass().lang = new LanguageSupport();
|
||||
AnuraCore.lang = new LanguageSupport();
|
||||
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();
|
||||
AnuraCore.perms = new Permissions(Core.getMainClass());
|
||||
AnuraCore.tools = new Tools();
|
||||
AnuraCore.pots = new FlowerPots();
|
||||
AnuraCore.signs = new Signs();
|
||||
AnuraCore.level = new Level();
|
||||
RealTime.setup();
|
||||
ResultSet rs = Core.getMySql().querySelect("SELECT id, X, Y, Z, world, type, waitTime FROM corePots");
|
||||
while (rs.next()) {
|
||||
@@ -95,14 +96,14 @@ public class Setup {
|
||||
continue;
|
||||
}
|
||||
Location l = new Location(w, rs.getInt("X"), rs.getInt("Y"), rs.getInt("Z"));
|
||||
Core.getMainClass().flowerPots.put(rs.getInt("id"), l);
|
||||
Data.flowerPots.put(rs.getInt("id"), l);
|
||||
if (rs.getBoolean("type")) {
|
||||
Core.getMainClass().flowerPotsWait.put(rs.getInt("id"), rs.getInt("waitTime"));
|
||||
Data.flowerPotsWait.put(rs.getInt("id"), rs.getInt("waitTime"));
|
||||
}
|
||||
l.getBlock().setType(Material.BROWN_MUSHROOM);
|
||||
}
|
||||
Core.getMainClass().features = new Features();
|
||||
Core.getMainClass().features.updateFeaturesAll();
|
||||
AnuraCore.features = new Features();
|
||||
AnuraCore.features.updateFeaturesAll();
|
||||
} catch (Throwable e) {
|
||||
Errors.reportException(e);
|
||||
}
|
||||
@@ -110,29 +111,6 @@ public class Setup {
|
||||
|
||||
public static void setupTasks() {
|
||||
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);
|
||||
}
|
||||
Core.getMainClass().golfPower.remove(P);
|
||||
Core.getMainClass().releaseGolf.remove(P);
|
||||
} else {
|
||||
Core.getMainClass().releaseGolf.put(P, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}, 5, 5);
|
||||
ResultSet rs = Core.getMySql().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"));
|
||||
@@ -141,30 +119,20 @@ public class Setup {
|
||||
}
|
||||
Location l = new Location(w, rs.getInt("X"), rs.getInt("Y"), rs.getInt("Z"));
|
||||
if (l.getBlock().getState().getData() instanceof Stairs) {
|
||||
Core.getMainClass().sittableBlocks.add(l.getBlock());
|
||||
Data.sittableBlocks.add(l.getBlock());
|
||||
}
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
Bukkit.getScheduler().scheduleSyncRepeatingTask(Core.getMainClass(), () -> {
|
||||
for (Player p : Data.sittingPlayer.keySet()) {
|
||||
Location loc = Data.sittingPlayer.get(p).getLocation();
|
||||
Arrow a = loc.getWorld().spawnArrow(loc, new Vector(0, 0, 0), 0, 0);
|
||||
a.setPassenger(p);
|
||||
Data.sittingPlayer.get(p).remove();
|
||||
Data.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);
|
||||
Bukkit.getScheduler().runTaskTimerAsynchronously(Core.getMainClass(), AnuraCore.signs::updateServerSigns, 20 * 5, 20 * 5);
|
||||
Bukkit.getScheduler().scheduleSyncRepeatingTask(Core.getMainClass(), new VillagerTask(), 20, 20);
|
||||
} catch (Throwable e) {
|
||||
Errors.reportException(e);
|
||||
@@ -276,7 +244,7 @@ public class Setup {
|
||||
|
||||
Inventories.registerInventory("LANGUAGE", "Select language", ChatColor.DARK_BLUE);
|
||||
int i = 0;
|
||||
for (String langu : Core.getMainClass().lang.languages.keySet()) {
|
||||
for (String langu : AnuraCore.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++;
|
||||
|
||||
@@ -2,7 +2,6 @@ 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;
|
||||
import java.io.DataInputStream;
|
||||
@@ -24,7 +23,7 @@ public class Signs implements PluginMessageListener {
|
||||
if (Bukkit.getOnlinePlayers().isEmpty()) {
|
||||
return;
|
||||
}
|
||||
ResultSet rs = sql.querySelect("SELECT DISTINCT value FROM coreWarpSigns WHERE type = 'server' AND server = '" + Core.getMainClass().getConfig().getString("server-name") + "'");
|
||||
ResultSet rs = Core.getMySql().querySelect("SELECT DISTINCT value FROM coreWarpSigns WHERE type = 'server' AND server = '" + Core.getMainClass().getConfig().getString("server-name") + "'");
|
||||
rs.last();
|
||||
if (rs.getRow() == 0) {
|
||||
return;
|
||||
@@ -36,9 +35,9 @@ public class Signs implements PluginMessageListener {
|
||||
out.writeUTF("PlayerCount");
|
||||
out.writeUTF(rs.getString("value"));
|
||||
Bukkit.getOnlinePlayers().iterator().next().sendPluginMessage(Core.getMainClass(), "BungeeCord", b.toByteArray());
|
||||
ResultSet rs2 = sql.querySelect("SELECT maxPlayers FROM coreServers WHERE name = LOWER('" + rs.getString("value") + "')");
|
||||
ResultSet rs2 = Core.getMySql().querySelect("SELECT maxPlayers FROM coreServers WHERE name = LOWER('" + rs.getString("value") + "')");
|
||||
rs2.last();
|
||||
Boolean online = true;
|
||||
boolean online = true;
|
||||
int maxPlayers = 0;
|
||||
if (rs2.getRow() == 0) {
|
||||
online = false;
|
||||
@@ -46,8 +45,9 @@ public class Signs implements PluginMessageListener {
|
||||
rs2.first();
|
||||
maxPlayers = rs2.getInt("maxPlayers");
|
||||
}
|
||||
|
||||
rs2 = sql.querySelect("SELECT X,Y,Z,world,info FROM coreWarpSigns WHERE type = 'server' AND server = '" + Core.getMainClass().getConfig().getString("server-name") + "' AND value = '" + rs.getString("value") + "'");
|
||||
final boolean onlineF = online;
|
||||
final int maxPlayersF = maxPlayers;
|
||||
rs2 = Core.getMySql().querySelect("SELECT X,Y,Z,world,info FROM coreWarpSigns WHERE type = 'server' AND server = '" + Core.getMainClass().getConfig().getString("server-name") + "' AND value = '" + rs.getString("value") + "'");
|
||||
rs2.last();
|
||||
if (rs2.getRow() == 0) {
|
||||
continue;
|
||||
@@ -69,26 +69,26 @@ public class Signs implements PluginMessageListener {
|
||||
}
|
||||
if (remove) {
|
||||
String anotherSQL = "DELETE FROM coreWarpSigns WHERE server = '" + Core.getMainClass().getConfig().getString("server-name") + "' AND type = 'server' AND value = '" + rs.getString("value") + "'";
|
||||
sql.queryUpdate(anotherSQL);
|
||||
Core.getMySql().queryUpdate(anotherSQL);
|
||||
continue;
|
||||
}
|
||||
if (bs == null) {
|
||||
continue;
|
||||
}
|
||||
Sign s = (Sign) bs;
|
||||
String rest = s.getLine(1).substring(0, s.getLine(1).length() - 2);
|
||||
String info = rs2.getString("info");
|
||||
if (s.getLocation().getWorld().isChunkLoaded(s.getLocation().getBlockX() / 16, s.getLocation().getBlockZ() / 16)) {
|
||||
if (!online) {
|
||||
final Sign s = (Sign) bs;
|
||||
final String rest = s.getLine(1).substring(0, s.getLine(1).length() - 2);
|
||||
final String info = rs2.getString("info");
|
||||
Bukkit.getScheduler().runTask(AnuraCore.getInstance(), () -> {
|
||||
if (!onlineF) {
|
||||
s.setLine(1, ChatColor.RED + "--" + ChatColor.DARK_GRAY + "/" + ChatColor.RED + "--");
|
||||
s.setLine(3, ChatColor.RED + "Offline");
|
||||
s.update();
|
||||
continue;
|
||||
return;
|
||||
}
|
||||
s.setLine(1, rest + maxPlayers);
|
||||
s.setLine(1, rest + maxPlayersF);
|
||||
s.setLine(3, info);
|
||||
s.update();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
} catch (Throwable e) {
|
||||
@@ -109,7 +109,7 @@ public class Signs implements PluginMessageListener {
|
||||
String server = in.readUTF();
|
||||
int playercount = in.readInt();
|
||||
String sqlQ = "SELECT X,Y,Z,world FROM coreWarpSigns WHERE server = '" + Core.getMainClass().getConfig().getString("server-name") + "' AND type = 'server' AND value = '" + server + "'";
|
||||
ResultSet rs = sql.querySelect(sqlQ);
|
||||
ResultSet rs = Core.getMySql().querySelect(sqlQ);
|
||||
rs.last();
|
||||
if (rs.getRow() == 0) {
|
||||
return;
|
||||
@@ -131,7 +131,7 @@ public class Signs implements PluginMessageListener {
|
||||
}
|
||||
if (remove) {
|
||||
String anotherSQL = "DELETE FROM coreWarpSigns WHERE server = '" + Core.getMainClass().getConfig().getString("server-name") + "' AND type = 'server' AND value = '" + server + "'";
|
||||
sql.queryUpdate(anotherSQL);
|
||||
Core.getMySql().queryUpdate(anotherSQL);
|
||||
continue;
|
||||
}
|
||||
if (bs == null) {
|
||||
@@ -159,8 +159,8 @@ public class Signs implements PluginMessageListener {
|
||||
}
|
||||
}
|
||||
} else if (subchannel.equals("updatePermissions")) {
|
||||
Core.getMainClass().perms.reload();
|
||||
Core.getMainClass().perms.updateAllPlayers();
|
||||
AnuraCore.perms.reload();
|
||||
AnuraCore.perms.updateAllPlayers();
|
||||
}
|
||||
} catch (Throwable e) {
|
||||
Errors.reportException(e);
|
||||
|
||||
@@ -8,6 +8,7 @@ import de.anura.core.AnuraVillager;
|
||||
import de.anura.core.AnuraVillager.VillagerType;
|
||||
import de.anura.core.Features.Feature;
|
||||
import de.anura.core.LanguageSupport;
|
||||
import de.anura.core.util.Data;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import org.bukkit.Location;
|
||||
@@ -39,7 +40,7 @@ public class AdminCommands implements CommandExecutor {
|
||||
Core.statusMsg(sender, "no_perms", false);
|
||||
return true;
|
||||
}
|
||||
for (Player pl : Core.getMainClass().sittingPlayer.keySet()) {
|
||||
for (Player pl : Data.sittingPlayer.keySet()) {
|
||||
Core.endSitting(pl);
|
||||
}
|
||||
for (Arrow a : P.getWorld().getEntitiesByClass(Arrow.class)) {
|
||||
@@ -59,7 +60,7 @@ public class AdminCommands implements CommandExecutor {
|
||||
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();
|
||||
AnuraCore.lang = new LanguageSupport();
|
||||
Core.statusMsg(sender, "config_rl_done", true);
|
||||
} catch (IOException ex) {
|
||||
Core.statusMsg(sender, "config_rl_error_io", false);
|
||||
@@ -75,7 +76,7 @@ public class AdminCommands implements CommandExecutor {
|
||||
Core.statusMsg(sender, "config_save_io_err", false);
|
||||
}
|
||||
} else if (args[0].equalsIgnoreCase("debugclosemysql") && sender.isOp()) {
|
||||
AnuraCore.sql.closeConnection();
|
||||
Core.getMySql().closeConnection();
|
||||
Core.statusMsg(sender, "debug_mysql_closed", true);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ import de.anura.core.API.Core;
|
||||
import de.anura.core.API.Errors;
|
||||
import de.anura.core.API.Inventories;
|
||||
import de.anura.core.API.Tools;
|
||||
import de.anura.core.util.Data;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.OfflinePlayer;
|
||||
import org.bukkit.command.BlockCommandSender;
|
||||
@@ -39,7 +40,7 @@ public class OtherCommands implements CommandExecutor {
|
||||
return true;
|
||||
}
|
||||
Boolean b = action.equals("disable");
|
||||
Core.getMainClass().disableCommandsAdventure.put(op.getPlayer(), b);
|
||||
Data.disableCommandsAdventure.put(op.getPlayer(), b);
|
||||
return true;
|
||||
} else if (cmd.getName().equalsIgnoreCase("none")) {
|
||||
Core.statusMsg(sender, "cmd_not_found", false);
|
||||
@@ -53,7 +54,7 @@ public class OtherCommands implements CommandExecutor {
|
||||
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);
|
||||
Data.aimTheWaterWins.put(player, Data.aimTheWaterWins.get(player) + 1);
|
||||
return true;
|
||||
}
|
||||
} else if (cmd.getName().equalsIgnoreCase("addInvItems")) {
|
||||
|
||||
@@ -4,7 +4,6 @@ import de.anura.core.API.Core;
|
||||
import de.anura.core.API.Errors;
|
||||
import de.anura.core.API.Money;
|
||||
import de.anura.core.API.Tools;
|
||||
import static de.anura.core.AnuraCore.sql;
|
||||
import de.anura.core.Features;
|
||||
import java.sql.ResultSet;
|
||||
import org.bukkit.Bukkit;
|
||||
@@ -216,7 +215,7 @@ public class PlayerCommands implements CommandExecutor {
|
||||
P = Bukkit.getPlayer(p);
|
||||
}
|
||||
String warpName = args[0];
|
||||
ResultSet rs = sql.querySelect("SELECT world, X, Y, Z, userWarp, server FROM coreWarps WHERE name = '" + warpName + "'");
|
||||
ResultSet rs = Core.getMySql().querySelect("SELECT world, X, Y, Z, userWarp, server FROM coreWarps WHERE name = '" + warpName + "'");
|
||||
rs.last();
|
||||
if (rs.getRow() == 0) {
|
||||
Core.statusMsg(P, "warp_not_exist", false);
|
||||
|
||||
@@ -3,19 +3,11 @@ package de.anura.core.commands;
|
||||
import de.anura.core.API.Core;
|
||||
import de.anura.core.API.Errors;
|
||||
import de.anura.core.API.Tools;
|
||||
import de.anura.core.AnuraCore;
|
||||
import static de.anura.core.AnuraCore.sql;
|
||||
import de.anura.core.Features;
|
||||
import de.anura.core.ImgRenderer;
|
||||
import java.awt.Image;
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.io.IOException;
|
||||
import java.net.MalformedURLException;
|
||||
import java.net.URI;
|
||||
import java.net.URL;
|
||||
import de.anura.core.FlowerPots;
|
||||
import de.anura.core.util.Data;
|
||||
import java.sql.ResultSet;
|
||||
import java.util.HashSet;
|
||||
import javax.imageio.ImageIO;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Location;
|
||||
@@ -28,8 +20,6 @@ import org.bukkit.command.CommandExecutor;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.map.MapRenderer;
|
||||
import org.bukkit.map.MapView;
|
||||
|
||||
public class TeamCommands implements CommandExecutor {
|
||||
|
||||
@@ -115,10 +105,10 @@ public class TeamCommands implements CommandExecutor {
|
||||
Core.statusMsg(sender, "no_perms", false);
|
||||
return true;
|
||||
}
|
||||
if (Core.getMainClass().stairMode.contains(P)) {
|
||||
Core.getMainClass().stairMode.remove(P);
|
||||
if (Data.stairMode.contains(P)) {
|
||||
Data.stairMode.remove(P);
|
||||
} else {
|
||||
Core.getMainClass().stairMode.add(P);
|
||||
Data.stairMode.add(P);
|
||||
}
|
||||
Tools.sendStatusMsg(sender, "Done!", true);
|
||||
return true;
|
||||
@@ -136,78 +126,18 @@ public class TeamCommands implements CommandExecutor {
|
||||
return false;
|
||||
}
|
||||
Location l = P.getLocation();
|
||||
if (Core.getMainClass().flowerPots.containsValue(l)) {
|
||||
if (Data.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()));
|
||||
Data.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"));
|
||||
FlowerPots.refreshPot(rs.getInt("id"));
|
||||
Core.statusMsg(sender, "set_arch_ok", true);
|
||||
return true;
|
||||
} 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];
|
||||
Tools.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);
|
||||
Tools.sendStatusMsg(cs, "The rendering has finished!", true);
|
||||
} catch (MalformedURLException ex) {
|
||||
Tools.sendStatusMsg(cs, "Please provide a valid image url!", false);
|
||||
} catch (IOException ex) {
|
||||
Tools.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])) {
|
||||
Tools.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")) {
|
||||
@@ -235,7 +165,7 @@ public class TeamCommands implements CommandExecutor {
|
||||
Core.statusMsg(sender, "setjumper_wrong_number", false);
|
||||
return true;
|
||||
}
|
||||
Core.getMainClass().selectableJumper.put(P, Double.valueOf(args[0]));
|
||||
Data.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")) {
|
||||
@@ -283,13 +213,13 @@ public class TeamCommands implements CommandExecutor {
|
||||
String world = loc.getWorld().getName();
|
||||
String server = Core.getMainClass().getConfig().getString("server-name");
|
||||
String name = args[0];
|
||||
ResultSet rs = sql.querySelect("SELECT `name` FROM coreWarps WHERE name = '" + name + "'");
|
||||
ResultSet rs = Core.getMySql().querySelect("SELECT `name` FROM coreWarps WHERE name = '" + name + "'");
|
||||
rs.last();
|
||||
if (rs.getRow() != 0) {
|
||||
Core.statusMsg(P, "warp_alr_exist", false);
|
||||
return true;
|
||||
}
|
||||
sql.queryUpdate("INSERT INTO coreWarps(`name`, server, world, X, Y, Z, userWarp) VALUES('" + name + "', '" + server + "', '" + world + "', '" + X + "', '" + Y + "', '" + Z + "', '" + userWarp + "')");
|
||||
Core.getMySql().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;
|
||||
} else if (cmd.getName().equalsIgnoreCase("remwarp")) {
|
||||
@@ -302,13 +232,13 @@ public class TeamCommands implements CommandExecutor {
|
||||
return true;
|
||||
}
|
||||
String map = args[0];
|
||||
ResultSet rs = sql.querySelect("SELECT name FROM coreWarps WHERE name = '" + map + "'");
|
||||
ResultSet rs = Core.getMySql().querySelect("SELECT name FROM coreWarps WHERE name = '" + map + "'");
|
||||
rs.last();
|
||||
if (rs.getRow() == 0) {
|
||||
Core.statusMsg(P, "warp_not_exist", false);
|
||||
return true;
|
||||
}
|
||||
sql.queryUpdate("DELETE FROM coreWarps WHERE name = '" + map + "'");
|
||||
Core.getMySql().queryUpdate("DELETE FROM coreWarps WHERE name = '" + map + "'");
|
||||
Core.statusMsg(P, "warp_rem_done", true);
|
||||
return true;
|
||||
} else if (cmd.getName().equalsIgnoreCase("toggleBoatFlight")) {
|
||||
|
||||
@@ -1,7 +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 de.anura.core.util.Data;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Sign;
|
||||
@@ -26,7 +29,7 @@ public class BlockBreak implements Listener {
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (plugin.flowerPots.containsValue(event.getBlock().getLocation())) {
|
||||
if (Data.flowerPots.containsValue(event.getBlock().getLocation())) {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
if ((event.getBlock().getType() == Material.ENDER_CHEST || event.getBlock().getType() == Material.RAILS)) {
|
||||
@@ -35,7 +38,9 @@ public class BlockBreak implements Listener {
|
||||
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);
|
||||
Bukkit.getScheduler().runTaskAsynchronously(plugin, () -> {
|
||||
AnuraCore.getSql().queryUpdate(sql);
|
||||
});
|
||||
} else if (event.getBlock().getState() instanceof Sign) {
|
||||
Sign s = (Sign) event.getBlock().getState();
|
||||
Location loc = s.getLocation();
|
||||
@@ -44,9 +49,11 @@ public class BlockBreak implements Listener {
|
||||
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 + "'");
|
||||
Bukkit.getScheduler().runTaskAsynchronously(plugin, () -> {
|
||||
Core.getMySql().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 (Data.sittingBlocks.containsValue(event.getBlock())) {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,6 +3,8 @@ package de.anura.core.events;
|
||||
import de.anura.core.API.Core;
|
||||
import de.anura.core.API.Errors;
|
||||
import de.anura.core.AnuraCore;
|
||||
import de.anura.core.FlowerPots;
|
||||
import de.anura.core.util.Data;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.event.EventHandler;
|
||||
@@ -24,18 +26,13 @@ public class BlockPlace implements Listener {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
if (plugin.flowerPots.containsValue(event.getBlock().getLocation())) {
|
||||
if (Data.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);
|
||||
}
|
||||
|
||||
final int pot = Core.getKeyByValue(Data.flowerPots, b.getLocation());
|
||||
plugin.getServer().getScheduler().scheduleSyncDelayedTask(plugin, () -> {
|
||||
b.setType(Material.BROWN_MUSHROOM);
|
||||
FlowerPots.refreshPot(pot);
|
||||
}, 3);
|
||||
}
|
||||
} catch(Throwable e) {
|
||||
|
||||
@@ -3,6 +3,7 @@ package de.anura.core.events;
|
||||
import de.anura.core.API.Core;
|
||||
import de.anura.core.API.Errors;
|
||||
import de.anura.core.AnuraCore;
|
||||
import de.anura.core.util.Data;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
@@ -12,7 +13,6 @@ public class CmdPreprocess implements Listener {
|
||||
|
||||
public CmdPreprocess(AnuraCore plugin) {
|
||||
plugin.getServer().getPluginManager().registerEvents(this, plugin);
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
@@ -23,7 +23,7 @@ public class CmdPreprocess implements Listener {
|
||||
event.setCancelled(true);
|
||||
Core.statusMsg(event.getPlayer(), "help_command_info", true);
|
||||
}
|
||||
} else if (plugin.disableCommandsAdventure.containsKey(event.getPlayer()) && plugin.disableCommandsAdventure.get(event.getPlayer())) {
|
||||
} else if (Data.disableCommandsAdventure.containsKey(event.getPlayer()) && Data.disableCommandsAdventure.get(event.getPlayer())) {
|
||||
event.setCancelled(true);
|
||||
Core.statusMsg(event.getPlayer(), "no_command_red_mg", ChatColor.YELLOW);
|
||||
}
|
||||
@@ -31,5 +31,4 @@ public class CmdPreprocess implements Listener {
|
||||
Errors.reportException(e);
|
||||
}
|
||||
}
|
||||
private final AnuraCore plugin;
|
||||
}
|
||||
|
||||
@@ -20,12 +20,7 @@ public class DropItem implements Listener {
|
||||
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);
|
||||
Bukkit.getScheduler().scheduleSyncDelayedTask(AnuraCore.getInstance(), P::updateInventory, 1);
|
||||
}
|
||||
} catch(Throwable e) {
|
||||
Errors.reportException(e);
|
||||
|
||||
@@ -21,7 +21,7 @@ public class EntityDamageByE implements Listener {
|
||||
try {
|
||||
if ((event.getEntity() instanceof ItemFrame || event.getEntity() instanceof ArmorStand) && plugin.getConfig().getBoolean("no-change-blocks")) {
|
||||
if (event.getDamager() instanceof Player) {
|
||||
if (!((Player) event.getDamager()).hasPermission("core.rules.blocks.break")) {
|
||||
if (!event.getDamager().hasPermission("core.rules.blocks.break")) {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26,12 +26,9 @@ public class InvClick implements Listener {
|
||||
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();
|
||||
}
|
||||
Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, () -> {
|
||||
p.setItemOnCursor(new ItemStack(Material.AIR));
|
||||
p.updateInventory();
|
||||
}, 1);
|
||||
}
|
||||
} catch(Throwable e) {
|
||||
|
||||
@@ -4,10 +4,13 @@ import de.anura.core.API.Core;
|
||||
import de.anura.core.API.Errors;
|
||||
import de.anura.core.API.Tools;
|
||||
import de.anura.core.AnuraCore;
|
||||
import de.anura.core.FlowerPots;
|
||||
import de.anura.core.util.Data;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.DataOutputStream;
|
||||
import java.sql.ResultSet;
|
||||
import java.util.Arrays;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
||||
@@ -32,7 +35,7 @@ public class PlayerInteract implements Listener {
|
||||
public void onPlayerInteract(PlayerInteractEvent event) {
|
||||
try {
|
||||
final Block block = event.getClickedBlock();
|
||||
if (plugin.selectableJumper.containsKey(event.getPlayer())) {
|
||||
if (Data.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;
|
||||
@@ -42,16 +45,18 @@ public class PlayerInteract implements Listener {
|
||||
type = "far";
|
||||
} else {
|
||||
Core.statusMsg(event.getPlayer(), "setjumper_block_not_supported", false);
|
||||
plugin.selectableJumper.remove(event.getPlayer());
|
||||
Data.selectableJumper.remove(event.getPlayer());
|
||||
return;
|
||||
}
|
||||
Double X = event.getClickedBlock().getLocation().getX();
|
||||
Double Y = event.getClickedBlock().getLocation().getY();
|
||||
Double Z = event.getClickedBlock().getLocation().getZ();
|
||||
}
|
||||
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());
|
||||
String sql = "INSERT INTO coreJumpers(X,Y,Z,world,height,type) VALUES('" + X + "','" + Y + "','" + Z + "','" + world + "','" + Data.selectableJumper.get(event.getPlayer()) + "','" + type + "')";
|
||||
Bukkit.getScheduler().runTaskAsynchronously(plugin, () -> {
|
||||
AnuraCore.getSql().queryUpdate(sql);
|
||||
});
|
||||
Data.selectableJumper.remove(event.getPlayer());
|
||||
Core.statusMsg(event.getPlayer(), "setjumper_done", true);
|
||||
event.setCancelled(true);
|
||||
}
|
||||
@@ -66,13 +71,13 @@ public class PlayerInteract implements Listener {
|
||||
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 + "'");
|
||||
ResultSet rs = Core.getMySql().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();
|
||||
if (rs.getString("type").equalsIgnoreCase("warp")) {
|
||||
String warp = rs.getString("value");
|
||||
ResultSet rs2 = AnuraCore.sql.querySelect("SELECT world, X, Y, Z FROM coreWarps WHERE name = '" + warp + "' AND server = '" + plugin.getConfig().getString("server-name") + "'");
|
||||
ResultSet rs2 = Core.getMySql().querySelect("SELECT world, X, Y, Z FROM coreWarps WHERE name = '" + warp + "' AND server = '" + plugin.getConfig().getString("server-name") + "'");
|
||||
rs2.last();
|
||||
if (rs2.getRow() == 0) {
|
||||
Core.statusMsg(P, "warpsign_warp_not_exist", false);
|
||||
@@ -95,28 +100,32 @@ public class PlayerInteract implements Listener {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
} else if (block.getState().getData() instanceof Stairs) {
|
||||
if (plugin.stairMode.contains(event.getPlayer()) && event.getAction().equals(Action.RIGHT_CLICK_BLOCK)) {
|
||||
if (Data.stairMode.contains(event.getPlayer()) && event.getAction().equals(Action.RIGHT_CLICK_BLOCK)) {
|
||||
event.setCancelled(true);
|
||||
if (plugin.sittableBlocks.contains(block)) {
|
||||
plugin.sittableBlocks.remove(block);
|
||||
if (Data.sittableBlocks.contains(block)) {
|
||||
Data.sittableBlocks.remove(block);
|
||||
Tools.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 + "'");
|
||||
Bukkit.getScheduler().runTaskAsynchronously(plugin, () -> {
|
||||
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);
|
||||
Data.sittableBlocks.add(block);
|
||||
Tools.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 + "')");
|
||||
Bukkit.getScheduler().runTaskAsynchronously(plugin, () -> {
|
||||
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) && !plugin.denySit.contains(event.getPlayer())) {
|
||||
if (plugin.sittingPlayer.containsKey(event.getPlayer())) {
|
||||
} else if (plugin.getConfig().getBoolean("allow-stairs-sit") && event.getAction().equals(Action.RIGHT_CLICK_BLOCK) && Data.sittableBlocks.contains(block) && !Data.denySit.contains(event.getPlayer())) {
|
||||
if (Data.sittingPlayer.containsKey(event.getPlayer())) {
|
||||
Core.statusMsg(event.getPlayer(), "sitting_already", false);
|
||||
event.setCancelled(true);
|
||||
} else if (plugin.sittingBlocks.containsValue(block)) {
|
||||
} else if (Data.sittingBlocks.containsValue(block)) {
|
||||
Core.statusMsg(event.getPlayer(), "sitting_occupied", false);
|
||||
event.setCancelled(true);
|
||||
} else {
|
||||
@@ -127,24 +136,19 @@ public class PlayerInteract implements Listener {
|
||||
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);
|
||||
Data.sittingPlayer.put(event.getPlayer(), a);
|
||||
Data.sittingBlocks.put(event.getPlayer(), block);
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (plugin.flowerPots.containsValue(block.getLocation())) {
|
||||
} else if (Data.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);
|
||||
}
|
||||
|
||||
plugin.getServer().getScheduler().scheduleSyncDelayedTask(plugin, () -> {
|
||||
p.sendBlockChange(block.getLocation(), Material.AIR, (byte) 0);
|
||||
}, 3);
|
||||
plugin.pots.playerFoundPot(event.getPlayer(), Core.getKeyByValue(plugin.flowerPots, block.getLocation()));
|
||||
FlowerPots.playerFoundPot(event.getPlayer(), Core.getKeyByValue(Data.flowerPots, block.getLocation()));
|
||||
}
|
||||
}
|
||||
if (plugin.getConfig().getBoolean("no-change-blocks")) {
|
||||
@@ -183,6 +187,10 @@ public class PlayerInteract implements Listener {
|
||||
}
|
||||
event.setCancelled(cancelled);
|
||||
}
|
||||
} else if (plugin.getConfig().getBoolean("no-bed-explode")) {
|
||||
if (event.getAction() == Action.RIGHT_CLICK_BLOCK && event.getClickedBlock().getType() == Material.BED_BLOCK) {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
} catch(Throwable e) {
|
||||
Errors.reportException(e);
|
||||
|
||||
@@ -2,11 +2,8 @@ package de.anura.core.events;
|
||||
|
||||
import de.anura.core.API.Errors;
|
||||
import de.anura.core.AnuraCore;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.ArmorStand;
|
||||
import org.bukkit.entity.Chicken;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.player.PlayerInteractEntityEvent;
|
||||
@@ -25,27 +22,6 @@ public class PlayerInteractE implements Listener {
|
||||
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++;
|
||||
}
|
||||
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() instanceof ArmorStand && plugin.getConfig().getBoolean("no-change-blocks")) {
|
||||
if (!event.getPlayer().hasPermission("core.rules.blocks.interact")) {
|
||||
event.setCancelled(true);
|
||||
|
||||
@@ -3,11 +3,13 @@ package de.anura.core.events;
|
||||
import de.anura.core.API.Core;
|
||||
import de.anura.core.API.Errors;
|
||||
import de.anura.core.AnuraCore;
|
||||
import de.anura.core.FlowerPots;
|
||||
import de.anura.core.Teleports;
|
||||
import de.anura.core.util.Data;
|
||||
import java.sql.ResultSet;
|
||||
import java.util.UUID;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.player.PlayerJoinEvent;
|
||||
@@ -37,16 +39,20 @@ public class PlayerJoin implements Listener {
|
||||
}
|
||||
rs.last();
|
||||
if (rs.getRow() != 1) {
|
||||
AnuraCore.getSql().queryUpdate("INSERT INTO players(`uuid`,`game`,`waiting`,`gameName`) VALUES('" + uuid.toString() + "','none','none','')");
|
||||
Bukkit.getScheduler().runTaskAsynchronously(plugin, () -> {
|
||||
AnuraCore.getSql().queryUpdate("INSERT INTO players(`uuid`,`game`,`waiting`,`gameName`) VALUES('" + uuid.toString() + "','none','none','')");
|
||||
});
|
||||
}
|
||||
event.setJoinMessage(null);
|
||||
plugin.pots.refreshCache(event.getPlayer());
|
||||
plugin.pots.refreshPlayer(event.getPlayer());
|
||||
Bukkit.getScheduler().runTaskAsynchronously(plugin, () -> {
|
||||
FlowerPots.refreshCache(event.getPlayer());
|
||||
FlowerPots.refreshPlayer(event.getPlayer());
|
||||
Data.disableCommandsAdventure.put(event.getPlayer(), false);
|
||||
Data.joinTime.put(event.getPlayer(), (int) (System.currentTimeMillis() / 1000));
|
||||
Data.aimTheWaterWins.put(event.getPlayer(), 0);
|
||||
Core.getLevel().loadLevel(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());
|
||||
String name = event.getPlayer().getName();
|
||||
if (Teleports.queuedLocs.containsKey(name)) {
|
||||
event.getPlayer().teleport(Teleports.queuedLocs.get(name));
|
||||
@@ -54,7 +60,7 @@ public class PlayerJoin implements Listener {
|
||||
} else if (c.getBoolean("on-join-to-spawn")) {
|
||||
Core.toSpawn(event.getPlayer());
|
||||
}
|
||||
|
||||
|
||||
} catch(Throwable e) {
|
||||
Errors.reportException(e);
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ package de.anura.core.events;
|
||||
import de.anura.core.API.Core;
|
||||
import de.anura.core.API.Errors;
|
||||
import de.anura.core.AnuraCore;
|
||||
import de.anura.core.util.Data;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.player.PlayerKickEvent;
|
||||
@@ -17,7 +18,7 @@ public class PlayerKick implements Listener {
|
||||
@EventHandler
|
||||
public void onPlayerKick(PlayerKickEvent event) {
|
||||
try {
|
||||
AnuraCore.getInstance().disableCommandsAdventure.remove(event.getPlayer());
|
||||
Data.disableCommandsAdventure.remove(event.getPlayer());
|
||||
if (plugin.getConfig().getBoolean("allow-stairs-sit")) {
|
||||
Core.endSitting(event.getPlayer());
|
||||
}
|
||||
|
||||
@@ -2,17 +2,20 @@ package de.anura.core.events;
|
||||
|
||||
import de.anura.core.API.Errors;
|
||||
import de.anura.core.AnuraCore;
|
||||
import de.anura.core.FlowerPots;
|
||||
import de.anura.core.util.Data;
|
||||
import java.sql.ResultSet;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Effect;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.Sound;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.block.BlockFace;
|
||||
import org.bukkit.material.Sign;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.player.PlayerMoveEvent;
|
||||
import org.bukkit.material.Sign;
|
||||
import org.bukkit.util.Vector;
|
||||
|
||||
public class PlayerMove implements Listener {
|
||||
@@ -33,8 +36,7 @@ public class PlayerMove implements Listener {
|
||||
|
||||
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)) {
|
||||
} else 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();
|
||||
@@ -42,28 +44,39 @@ public class PlayerMove implements Listener {
|
||||
double Z = under.getLocation().getZ();
|
||||
String world = under.getLocation().getWorld().getName();
|
||||
String sql = "SELECT * FROM coreJumpers WHERE X = '" + (int) X + "' AND Y = '" + (int) Y + "' AND Z = '" + (int) Z + "' AND world = '" + world + "' AND type = 'high'";
|
||||
ResultSet rs = AnuraCore.getSql().querySelect(sql);
|
||||
rs.last();
|
||||
if (rs.getRow() > 0) {
|
||||
p.setVelocity(new Vector(0, rs.getDouble("height"), 0));
|
||||
p.getWorld().spigot().playEffect(p.getLocation(), Effect.FIREWORKS_SPARK, 0, 0, (float) 0.1, (float) 0.1, (float) 0.1, (float) 0.3, 10, 1);
|
||||
}
|
||||
Bukkit.getScheduler().runTaskAsynchronously(plugin, () -> {
|
||||
try {
|
||||
ResultSet rs = AnuraCore.getSql().querySelect(sql);
|
||||
rs.last();
|
||||
if (rs.getRow() > 0) {
|
||||
p.setVelocity(new Vector(0, rs.getDouble("height"), 0));
|
||||
p.getWorld().spigot().playEffect(p.getLocation(), Effect.FIREWORKS_SPARK, 0, 0, (float) 0.1, (float) 0.1, (float) 0.1, (float) 0.3, 10, 1);
|
||||
}
|
||||
} catch(Throwable ex) {
|
||||
Errors.reportException(ex);
|
||||
}
|
||||
});
|
||||
p.setWalkSpeed(0.2F);
|
||||
|
||||
} 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();
|
||||
String world = under.getLocation().getWorld().getName();
|
||||
String sql = "SELECT * FROM coreJumpers WHERE X = '" + (int) X + "' AND Y = '" + (int) Y + "' AND Z = '" + (int) Z + "' AND world = '" + world + "' AND type = 'far'";
|
||||
ResultSet rs = AnuraCore.getSql().querySelect(sql);
|
||||
rs.last();
|
||||
if (rs.getRow() > 0) {
|
||||
p.setVelocity(p.getLocation().getDirection().multiply(new Vector(rs.getDouble("height"), 1, rs.getDouble("height"))));
|
||||
p.setVelocity(p.getVelocity().setY(1.3));
|
||||
p.getWorld().spigot().playEffect(p.getLocation(), Effect.LAVA_POP, 0, 0, (float) 0.1, (float) 0.1, (float) 0.1, (float) 0.3, 10, 1);
|
||||
p.playSound(p.getLocation(), Sound.EXPLODE, 1, 1);
|
||||
}
|
||||
Bukkit.getScheduler().runTaskAsynchronously(plugin, () -> {
|
||||
try {
|
||||
ResultSet rs = AnuraCore.getSql().querySelect(sql);
|
||||
rs.last();
|
||||
if (rs.getRow() > 0) {
|
||||
p.setVelocity(p.getLocation().getDirection().multiply(new Vector(rs.getDouble("height"), 1, rs.getDouble("height"))));
|
||||
p.setVelocity(p.getVelocity().setY(1.3));
|
||||
p.getWorld().spigot().playEffect(p.getLocation(), Effect.LAVA_POP, 0, 0, (float) 0.1, (float) 0.1, (float) 0.1, (float) 0.3, 10, 1);
|
||||
p.playSound(p.getLocation(), Sound.EXPLODE, 1, 1);
|
||||
}
|
||||
} catch(Throwable ex) {
|
||||
Errors.reportException(ex);
|
||||
}
|
||||
});
|
||||
p.setWalkSpeed(0.2F);
|
||||
} else {
|
||||
p.setWalkSpeed(0.2F);
|
||||
@@ -91,8 +104,8 @@ public class PlayerMove implements Listener {
|
||||
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);
|
||||
if (!Data.lastLoc.containsKey(p) || !Data.lastLoc.get(p).getWorld().equals(p.getLocation().getWorld()) || Data.lastLoc.get(p).distance(p.getLocation()) > 1) {
|
||||
FlowerPots.refreshPlayer(p);
|
||||
}
|
||||
} catch(Throwable e) {
|
||||
Errors.reportException(e);
|
||||
|
||||
@@ -4,6 +4,7 @@ import de.anura.core.API.Core;
|
||||
import de.anura.core.API.Errors;
|
||||
import de.anura.core.API.Money;
|
||||
import de.anura.core.AnuraCore;
|
||||
import de.anura.core.util.Data;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Boat;
|
||||
import org.bukkit.entity.EntityType;
|
||||
@@ -28,8 +29,10 @@ public class PlayerQuit implements Listener {
|
||||
}
|
||||
event.setQuitMessage(null);
|
||||
Core.endSitting(event.getPlayer());
|
||||
AnuraCore.getInstance().disableCommandsAdventure.remove(event.getPlayer());
|
||||
Money.saveMoney(event.getPlayer());
|
||||
Data.disableCommandsAdventure.remove(event.getPlayer());
|
||||
Bukkit.getScheduler().runTaskAsynchronously(Core.getMainClass(), () -> {
|
||||
Money.saveMoney(event.getPlayer());
|
||||
});
|
||||
Core.getLevel().update(event.getPlayer());
|
||||
Bukkit.getScoreboardManager().getMainScoreboard().resetScores(event.getPlayer());
|
||||
} catch(Throwable e) {
|
||||
|
||||
@@ -1,8 +1,11 @@
|
||||
package de.anura.core.events;
|
||||
|
||||
import de.anura.core.AnuraCore;
|
||||
import de.anura.core.util.Data;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.block.BlockFace;
|
||||
import org.bukkit.entity.Arrow;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
@@ -17,31 +20,42 @@ public class PlayerTeleport implements Listener {
|
||||
|
||||
public PlayerTeleport(AnuraCore plugin) {
|
||||
plugin.getServer().getPluginManager().registerEvents(this, plugin);
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.LOWEST)
|
||||
public void onPlayerTeleport(PlayerTeleportEvent event) {
|
||||
|
||||
if (plugin.sittingPlayer.containsKey(event.getPlayer()) && !event.getCause().equals(TeleportCause.PLUGIN)) {
|
||||
if (Data.sittingPlayer.containsKey(event.getPlayer()) && !event.getCause().equals(TeleportCause.PLUGIN)) {
|
||||
if (event.getPlayer().isSneaking()) {
|
||||
Player P = event.getPlayer();
|
||||
Block b = plugin.sittingBlocks.get(P);
|
||||
Block b = Data.sittingBlocks.get(P);
|
||||
MaterialData md = b.getState().getData();
|
||||
if (md instanceof Stairs) {
|
||||
Stairs s = (Stairs) md;
|
||||
Location loc = b.getRelative(s.getFacing()).getLocation();
|
||||
Arrow a = plugin.sittingPlayer.get(P);
|
||||
if (!hasPlace(loc)) {
|
||||
for (BlockFace f : new BlockFace[] {BlockFace.SOUTH, BlockFace.WEST, BlockFace.NORTH, BlockFace.EAST}) {
|
||||
if (f == s.getFacing()) continue;
|
||||
if (hasPlace(b.getRelative(f).getLocation())) {
|
||||
loc = b.getRelative(f).getLocation();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
loc.add(0.5, 0, 0.5);
|
||||
Arrow a = Data.sittingPlayer.get(P);
|
||||
event.setTo(loc);
|
||||
P.setSneaking(false);
|
||||
a.remove();
|
||||
plugin.sittingPlayer.remove(P);
|
||||
plugin.sittingBlocks.remove(P);
|
||||
Data.sittingPlayer.remove(P);
|
||||
Data.sittingBlocks.remove(P);
|
||||
return;
|
||||
}
|
||||
}
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
private final AnuraCore plugin;
|
||||
|
||||
private boolean hasPlace(Location loc) {
|
||||
return loc.getBlock().getType() == Material.AIR && loc.clone().add(0, 1, 0).getBlock().getType() == Material.AIR;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -32,7 +32,7 @@ public class SignChange implements Listener {
|
||||
return;
|
||||
}
|
||||
if (event.getLine(1).endsWith("Warp")) {
|
||||
ResultSet rs = AnuraCore.sql.querySelect("SELECT name FROM coreWarps WHERE name = '" + event.getLine(2) + "'");
|
||||
ResultSet rs = Core.getMySql().querySelect("SELECT name FROM coreWarps WHERE name = '" + event.getLine(2) + "'");
|
||||
rs.last();
|
||||
if (rs.getRow() == 0) {
|
||||
event.setLine(0, ChatColor.STRIKETHROUGH + "[Warp]");
|
||||
@@ -46,7 +46,7 @@ public class SignChange implements Listener {
|
||||
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 + "','warp','" + event.getLine(2) + "','" + event.getLine(3) + "')");
|
||||
Core.getMySql().queryUpdate("INSERT INTO coreWarpSigns(X,Y,Z,world,server,type,value,info) VALUES('" + X + "','" + Y + "','" + Z + "','" + world + "','" + server + "','warp','" + event.getLine(2) + "','" + event.getLine(3) + "')");
|
||||
event.setLine(0, "[" + ChatColor.GREEN + "Warp" + ChatColor.BLACK + "]");
|
||||
event.setLine(1, ChatColor.DARK_GRAY + "--------");
|
||||
event.setLine(2, ChatColor.AQUA + event.getLine(2));
|
||||
@@ -60,7 +60,7 @@ public class SignChange implements Listener {
|
||||
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) + "')");
|
||||
Core.getMySql().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 + "---------");
|
||||
@@ -74,7 +74,7 @@ public class SignChange implements Listener {
|
||||
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) + "')");
|
||||
Core.getMySql().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));
|
||||
|
||||
30
src/de/anura/core/util/Data.java
Normal file
30
src/de/anura/core/util/Data.java
Normal file
@@ -0,0 +1,30 @@
|
||||
package de.anura.core.util;
|
||||
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.entity.Arrow;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
public class Data {
|
||||
public static HashMap<Player, Double> selectableJumper = new HashMap<>();
|
||||
public static HashMap<Player, String> permGroup = new HashMap<>();
|
||||
public static HashMap<Player, Arrow> sittingPlayer = new HashMap<>();
|
||||
public static HashMap<Player, Block> sittingBlocks = new HashMap<>();
|
||||
public static HashMap<Integer, Location> flowerPots = new HashMap<>();
|
||||
public static HashMap<Integer, Integer> flowerPotsWait = new HashMap<>();
|
||||
public static HashMap<Player, Location> lastLoc = new HashMap<>();
|
||||
public static HashMap<String, BufferedImage> renderedImgs = new HashMap<>();
|
||||
public static ArrayList<Player> stairMode = new ArrayList<>();
|
||||
public static ArrayList<Block> sittableBlocks = new ArrayList<>();
|
||||
public static HashMap<Player, Integer> golfPower = new HashMap<>();
|
||||
public static HashMap<Player, Boolean> releaseGolf = new HashMap<>();
|
||||
public static HashMap<Player, Entity> golfBall = new HashMap<>();
|
||||
public static HashMap<Player, Boolean> disableCommandsAdventure = new HashMap<>();
|
||||
public static HashMap<Player, Integer> joinTime = new HashMap<>();
|
||||
public static HashMap<Player, Integer> aimTheWaterWins = new HashMap<>();
|
||||
public static ArrayList<Player> denySit = new ArrayList<>();
|
||||
}
|
||||
Reference in New Issue
Block a user