- Refactoring

- Update to JDK 8
- Fixes
- Fixed stair seat spawning in a block
This commit is contained in:
kaenganxt
2015-05-15 15:38:32 +02:00
parent a2f7be9889
commit 053886c6d3
34 changed files with 392 additions and 535 deletions

View File

@@ -1,6 +1,7 @@
package de.anura.core.API; package de.anura.core.API;
import de.anura.core.AnuraCore; import de.anura.core.AnuraCore;
import de.anura.core.util.Data;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream; import java.io.DataOutputStream;
import java.sql.ResultSet; import java.sql.ResultSet;
@@ -34,7 +35,7 @@ public class Core {
if (AnuraCore.getSql() == null) { if (AnuraCore.getSql() == null) {
return null; return null;
} }
if (!AnuraCore.getSql().isValid) { if (!AnuraCore.getSql().hasConnection()) {
return null; return null;
} }
return AnuraCore.getSql(); return AnuraCore.getSql();
@@ -48,9 +49,9 @@ public class Core {
* @return Returns the text for this id * @return Returns the text for this id
*/ */
public static String getl(String id, String lang) { 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()) { if (val == null || val.isEmpty()) {
val = AnuraCore.getInstance().lang.get(id, "en"); val = AnuraCore.lang.get(id, "en");
} }
return val; return val;
} }
@@ -124,7 +125,7 @@ public class Core {
} }
Player p = (Player) P; Player p = (Player) P;
if (!Core.cachedPlayerLanguage.containsKey(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()) { if (!rs.next()) {
//This is a weird bug //This is a weird bug
Core.cachedPlayerLanguage.put(p, "de"); Core.cachedPlayerLanguage.put(p, "de");
@@ -148,7 +149,7 @@ public class Core {
* @return Returns an iterable set of strings like de or en * @return Returns an iterable set of strings like de or en
*/ */
public static Set<String> getAvailLangs() { 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) { public static void endSitting(Player P, boolean noRemove) {
try { try {
if (getMainClass().sittingPlayer.containsKey(P)) { if (Data.sittingPlayer.containsKey(P)) {
MaterialData md = getMainClass().sittingBlocks.get(P).getState().getData(); MaterialData md = Data.sittingBlocks.get(P).getState().getData();
if (md instanceof Stairs) { if (md instanceof Stairs) {
Stairs s = (Stairs) md; Stairs s = (Stairs) md;
Location loc = getMainClass().sittingBlocks.get(P).getRelative(s.getFacing()).getLocation(); Location loc = Data.sittingBlocks.get(P).getRelative(s.getFacing()).getLocation();
Entity a = getMainClass().sittingPlayer.get(P); Entity a = Data.sittingPlayer.get(P);
P.teleport(loc); P.teleport(loc);
a.remove(); a.remove();
if (!noRemove) { if (!noRemove) {
getMainClass().sittingPlayer.remove(P); Data.sittingPlayer.remove(P);
} }
getMainClass().sittingBlocks.remove(P); Data.sittingBlocks.remove(P);
} else { } else {
Location loc = getMainClass().sittingPlayer.get(P).getLocation(); Location loc = Data.sittingPlayer.get(P).getLocation();
P.teleport(loc); P.teleport(loc);
getMainClass().sittingPlayer.get(P).remove(); Data.sittingPlayer.get(P).remove();
if (!noRemove) { if (!noRemove) {
getMainClass().sittingPlayer.remove(P); Data.sittingPlayer.remove(P);
} }
getMainClass().sittingBlocks.remove(P); Data.sittingBlocks.remove(P);
} }
} }
} catch (Throwable e) { } catch (Throwable e) {
@@ -264,7 +265,7 @@ public class Core {
* @return The level class object * @return The level class object
*/ */
public static Level getLevel() { public static Level getLevel() {
return getMainClass().level; return AnuraCore.level;
} }
/** /**

View File

@@ -16,6 +16,7 @@ public class Errors {
public static void reportException(Throwable exc, String info) { public static void reportException(Throwable exc, String info) {
if (Core.getMySql() == null) { if (Core.getMySql() == null) {
System.err.println("FATAL ERROR: Error handler fired before init of mysql connection!!"); System.err.println("FATAL ERROR: Error handler fired before init of mysql connection!!");
exc.printStackTrace();
return; return;
} }
try { try {

View File

@@ -59,7 +59,7 @@ public class Inventories implements Listener {
} }
invs.put(type, langInvs); invs.put(type, langInvs);
invType.put(type, true); 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) { public static void registerInventory(String type, String name, ChatColor nameColor, boolean multilang, String lang) {
@@ -74,7 +74,7 @@ public class Inventories implements Listener {
invNames.put(nameColor + Core.getl(name, lang), type); invNames.put(nameColor + Core.getl(name, lang), type);
invs.put(type, langInvs); invs.put(type, langInvs);
invLang.put(type, lang); 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!! public static void buildInvItem(String type, Material m, String name, ChatColor nameColor, ChatColor loreColor, String... lores) { //INV!!
@@ -210,7 +210,7 @@ public class Inventories implements Listener {
} else if (action == Action.LANGUAGE) { } else if (action == Action.LANGUAGE) {
String lang = (String) data; String lang = (String) data;
Core.cachedPlayerLanguage.put(P, lang); 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(); PlayerInventory pi = P.getInventory();
for (Entry<String, Integer> item : itemPositions.entrySet()) { for (Entry<String, Integer> item : itemPositions.entrySet()) {
pi.setItem(item.getValue(), getItem(item.getKey(), P)); 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()); Entry<Action, Object> action = invActions.get(invNames.get(invName)).get(event.getSlot());
executeAction(player, action.getKey(), action.getValue()); executeAction(player, action.getKey(), action.getValue());
} else { } else {
Bukkit.getScheduler().scheduleSyncDelayedTask(AnuraCore.getInstance(), new Runnable() { Bukkit.getScheduler().scheduleSyncDelayedTask(AnuraCore.getInstance(), () -> {
@Override player.setItemOnCursor(new ItemStack(Material.AIR));
public void run() { player.updateInventory();
player.setItemOnCursor(new ItemStack(Material.AIR));
player.updateInventory();
}
}, 1); }, 1);
} }
} else if (invNames.containsKey(event.getInventory().getName())) { } else if (invNames.containsKey(event.getInventory().getName())) {
@@ -275,7 +272,7 @@ public class Inventories implements Listener {
@EventHandler @EventHandler
public void onPlayerInteract(PlayerInteractEvent event) { public void onPlayerInteract(PlayerInteractEvent event) {
try { try {
if (checkInteracts.containsKey((Player) event.getPlayer()) && !checkInteracts.get((Player) event.getPlayer())) { if (checkInteracts.containsKey(event.getPlayer()) && !checkInteracts.get(event.getPlayer())) {
return; return;
} }
if (event.hasItem()) { if (event.hasItem()) {
@@ -285,12 +282,7 @@ public class Inventories implements Listener {
if (itemActions.containsKey(type)) { if (itemActions.containsKey(type)) {
event.setCancelled(true); event.setCancelled(true);
executeAction(P, itemActions.get(type).getKey(), itemActions.get(type).getValue()); executeAction(P, itemActions.get(type).getKey(), itemActions.get(type).getValue());
Bukkit.getScheduler().scheduleSyncDelayedTask(AnuraCore.getInstance(), new Runnable() { Bukkit.getScheduler().scheduleSyncDelayedTask(AnuraCore.getInstance(), P::updateInventory, 1);
@Override
public void run() {
P.updateInventory();
}
}, 1);
} }
} }
} }

View File

@@ -1,5 +1,6 @@
package de.anura.core.API; package de.anura.core.API;
import de.anura.core.util.Data;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.util.HashMap; import java.util.HashMap;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
@@ -15,18 +16,11 @@ public final class Level {
public Level() { public Level() {
try { try {
for (Player P : Bukkit.getOnlinePlayers()) { for (Player P : Bukkit.getOnlinePlayers()) {
Core.getMainClass().joinTime.put(P, (int) (System.currentTimeMillis() / 1000)); Data.joinTime.put(P, (int) (System.currentTimeMillis() / 1000));
Core.getMainClass().aimTheWaterWins.put(P, 0); Data.aimTheWaterWins.put(P, 0);
} }
loadLevelAll(); loadLevelAll();
Bukkit.getScheduler().scheduleSyncRepeatingTask(Core.getMainClass(), new Runnable() { Bukkit.getScheduler().scheduleSyncRepeatingTask(Core.getMainClass(), this::update, 20 * 60, 20 * 60);
@Override
public void run() {
update();
}
}, 20 * 60, 20 * 60);
} catch(Throwable e) { } catch(Throwable e) {
Errors.reportException(e); Errors.reportException(e);
} }
@@ -40,15 +34,15 @@ public final class Level {
public void saveStuff(Player P) { public void saveStuff(Player P) {
int walkedMeters = P.getStatistic(Statistic.WALK_ONE_CM) / 100; 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 " Core.getMySql().queryUpdate("UPDATE coreStats "
+ "SET onlineTime = onlineTime + " + playedTime + "" + "SET onlineTime = onlineTime + " + playedTime + ""
+ ", walkedMeters = walkedMeters + " + walkedMeters + "" + ", 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() + "')"); + "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); P.setStatistic(Statistic.WALK_ONE_CM, 0);
Core.getMainClass().aimTheWaterWins.put(P, 0); Data.aimTheWaterWins.put(P, 0);
} }
public void loadLevelAll() { public void loadLevelAll() {
@@ -132,7 +126,7 @@ public final class Level {
} }
public static void updateLevel(Player P) { public static void updateLevel(Player P) {
Core.getMainClass().level.update(P); Core.getLevel().update(P);
} }
public static int getSmashLevel(Player P) { public static int getSmashLevel(Player P) {

View File

@@ -10,28 +10,19 @@ import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.configuration.file.YamlConfiguration;
public class MySQL { 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 Connection conn;
private static final String dbLoc = "database.";
public FileConfiguration config; public FileConfiguration config;
private final AnuraCore plugin;
public boolean isValid = true;
private boolean reconnecting = false; private boolean reconnecting = false;
public MySQL(AnuraCore plugin) { public MySQL() {
this.plugin = plugin;
File file = new File("plugins/Core/", "database.yml"); File file = new File("plugins/Core/", "database.yml");
FileConfiguration cfg = YamlConfiguration.loadConfiguration(file); FileConfiguration cfg = YamlConfiguration.loadConfiguration(file);
String dbLoc = "database.";
cfg.addDefault(dbLoc + "host", "localhost"); cfg.addDefault(dbLoc + "host", "localhost");
cfg.addDefault(dbLoc + "port", 3306); cfg.addDefault(dbLoc + "port", 3306);
cfg.addDefault(dbLoc + "username", "username"); cfg.addDefault(dbLoc + "username", "username");
@@ -42,17 +33,10 @@ public class MySQL {
cfg.save(file); cfg.save(file);
} catch (IOException e) { } catch (IOException e) {
} }
this.host = cfg.getString(dbLoc + "host"); this.config = cfg;
this.port = cfg.getInt(dbLoc + "port");
this.username = cfg.getString(dbLoc + "username");
this.pw = cfg.getString(dbLoc + "pw");
this.db = cfg.getString(dbLoc + "db");
if (!this.openConnection()) { if (!this.openConnection()) {
Bukkit.broadcastMessage(ChatColor.RED + "No database connection available, please contact a server administrator!"); 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) { public String escapeString(String text) {
@@ -60,9 +44,14 @@ public class MySQL {
} }
private Boolean openConnection() { 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 { try {
Class.forName("com.mysql.jdbc.Driver"); 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; this.conn = connLoc;
return true; return true;
} catch (ClassNotFoundException | SQLException e) { } catch (ClassNotFoundException | SQLException e) {
@@ -70,7 +59,7 @@ public class MySQL {
} }
} }
private boolean hasConnection() { public boolean hasConnection() {
try { try {
Boolean validConn = true; Boolean validConn = true;
if (this.conn == null) { if (this.conn == null) {
@@ -90,7 +79,6 @@ public class MySQL {
} }
this.reconnecting = true; this.reconnecting = true;
System.out.println("Reconnecting..."); System.out.println("Reconnecting...");
Bukkit.broadcastMessage(ChatColor.YELLOW + "Bitte warten... Plugin-Daten werden geladen...");
this.closeConnection(); this.closeConnection();
if (!this.openConnection()) { if (!this.openConnection()) {
Bukkit.broadcastMessage(ChatColor.RED + "Database reconnect failed! Please contact a server administrator!"); Bukkit.broadcastMessage(ChatColor.RED + "Database reconnect failed! Please contact a server administrator!");
@@ -101,27 +89,17 @@ public class MySQL {
return true; return true;
} }
private void queryRedo(final String query, final String type) { private void queryRedo(final String query) {
if (!this.reconnect()) { if (!this.reconnect()) {
this.plugin.getServer().getScheduler().scheduleSyncDelayedTask(this.plugin, new Runnable() { Bukkit.getScheduler().scheduleSyncDelayedTask(AnuraCore.getInstance(), () -> {
@Override Core.getMySql().queryUpdate(query);
public void run() {
switch (type) {
case "update":
AnuraCore.sql.queryUpdate(query);
break;
case "select":
AnuraCore.sql.querySelect(query);
break;
}
}
}, 4); }, 4);
} }
} }
public void queryUpdate(String query) { public void queryUpdate(String query) {
if (!this.hasConnection()) { if (!this.hasConnection()) {
queryRedo(query, "update"); queryRedo(query);
} }
Connection connLoc = this.conn; Connection connLoc = this.conn;
PreparedStatement st = null; PreparedStatement st = null;
@@ -136,33 +114,27 @@ public class MySQL {
public ResultSet querySelect(final String query) { public ResultSet querySelect(final String query) {
if (!this.hasConnection()) { if (!this.hasConnection()) {
queryRedo(query, "select"); reconnect();
return null;
} }
try { try {
PreparedStatement st = this.conn.prepareStatement(query); PreparedStatement st = this.conn.prepareStatement(query);
ResultSet returns = this.querySelect(st); ResultSet returns = this.querySelect(st);
if (returns == null) { return returns;
queryRedo(query, "select");
} else {
return returns;
}
} catch (SQLException e) { } catch (SQLException e) {
System.err.println("Unknown error whilst trying to build Prepared Statement!"); System.err.println("Unknown error whilst trying to build Prepared Statement!");
queryRedo(query, "select");
} }
return null; return null;
} }
private ResultSet querySelect(PreparedStatement st) { private ResultSet querySelect(PreparedStatement st) {
if (!this.hasConnection()) { if (!this.hasConnection()) {
return null; reconnect();
} }
ResultSet rs; ResultSet rs;
try { try {
rs = st.executeQuery(); rs = st.executeQuery();
} catch (SQLException e) { } 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()); System.err.println("Caused by: " + e.getMessage());
return null; return null;
} }
@@ -173,16 +145,12 @@ public class MySQL {
if (rs != null) { if (rs != null) {
try { try {
rs.close(); rs.close();
} catch (SQLException e) { } catch (SQLException e) {}
}
} }
if (st != null) { if (st != null) {
try { try {
st.close(); st.close();
} catch (SQLException e) { } catch (SQLException e) {}
}
} }
} }

View File

@@ -6,15 +6,10 @@ import de.anura.core.API.Level;
import de.anura.core.API.Money; import de.anura.core.API.Money;
import de.anura.core.API.MySQL; import de.anura.core.API.MySQL;
import de.anura.core.API.Tools; import de.anura.core.API.Tools;
import java.awt.image.BufferedImage; import de.anura.core.util.Data;
import java.io.File; import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.World; import org.bukkit.World;
import org.bukkit.block.Block;
import org.bukkit.entity.Arrow;
import org.bukkit.entity.Entity; import org.bukkit.entity.Entity;
import org.bukkit.entity.EntityType; import org.bukkit.entity.EntityType;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
@@ -22,39 +17,22 @@ import org.bukkit.plugin.java.JavaPlugin;
public class AnuraCore extends JavaPlugin { public class AnuraCore extends JavaPlugin {
public static MySQL sql; private static MySQL sql;
public HashMap<Player, Double> selectableJumper = new HashMap<>();
public HashMap<Player, String> permGroup = new HashMap<>();
private static AnuraCore instance; private static AnuraCore instance;
public HashMap<Player, Arrow> sittingPlayer = new HashMap<>(); public static Features features;
public HashMap<Player, Block> sittingBlocks = new HashMap<>(); public static Permissions perms;
public LanguageSupport lang; public static Signs signs;
public HashMap<Integer, Location> flowerPots = new HashMap<>(); public static Tools tools;
public HashMap<Integer, Integer> flowerPotsWait = new HashMap<>(); public static Level level;
public HashMap<Player, Location> lastLoc = new HashMap<>(); public static LanguageSupport lang;
public FlowerPots pots; public static 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;
@Override @Override
public void onEnable() { public void onEnable() {
try { try {
AnuraCore.sql = new MySQL(this); sql = new MySQL();
AnuraCore.instance = this; instance = this;
if (AnuraCore.sql.isValid) { if (sql.hasConnection()) {
if (AnuraCore.getInstance().getConfig().getBoolean("is-main-lobby")) { if (AnuraCore.getInstance().getConfig().getBoolean("is-main-lobby")) {
for (World w : Bukkit.getWorlds()) { for (World w : Bukkit.getWorlds()) {
for (Entity e : w.getEntities()) { for (Entity e : w.getEntities()) {
@@ -94,7 +72,7 @@ public class AnuraCore extends JavaPlugin {
@Override @Override
public void onDisable() { public void onDisable() {
try { try {
if (!AnuraCore.sql.isValid) { if (!sql.hasConnection()) {
return; return;
} }
for (Player P : getServer().getOnlinePlayers()) { 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") + "'"); sql.queryUpdate("DELETE FROM coreServers WHERE name = '" + this.getConfig().getString("server-name") + "'");
features.reset(); features.reset();
level.update(); level.update();
for (Player P : this.sittingPlayer.keySet()) { for (Player P : Data.sittingPlayer.keySet()) {
Core.endSitting(P, true); Core.endSitting(P, true);
} }
sittingPlayer.clear(); Data.sittingPlayer.clear();
sql.closeConnection();
} catch (Throwable e) { } catch (Throwable e) {
Errors.reportException(e); Errors.reportException(e);
} }

View File

@@ -8,10 +8,10 @@ import org.bukkit.ChatColor;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.entity.Entity; import org.bukkit.entity.Entity;
import org.bukkit.entity.EntityType; 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;
import org.bukkit.entity.Villager.Profession; import org.bukkit.entity.Villager.Profession;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;
public class AnuraVillager { public class AnuraVillager {
@@ -42,7 +42,7 @@ public class AnuraVillager {
} }
private Villager buildVillager(Location loc, String name) { 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.setProfession(Profession.PRIEST);
vi.setBaby(); vi.setBaby();
vi.setAgeLock(true); vi.setAgeLock(true);

View File

@@ -12,7 +12,6 @@ import org.bukkit.GameMode;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.entity.Boat; import org.bukkit.entity.Boat;
import org.bukkit.entity.Entity;
import org.bukkit.entity.EntityType; import org.bukkit.entity.EntityType;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
@@ -35,7 +34,7 @@ public class Features implements Listener {
private Feature(int id) { private Feature(int id) {
this.featureId = id; this.featureId = id;
} }
private final int featureId; public final int featureId;
private static final HashMap<Integer, Feature> BY_ID = new HashMap<>(); private static final HashMap<Integer, Feature> BY_ID = new HashMap<>();
public int getId() { public int getId() {
@@ -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() + "')"); ResultSet rs = Core.getMySql().querySelect("SELECT featureId FROM coreFeatures WHERE playerId = (SELECT id FROM players WHERE uuid = '" + P.getUniqueId().toString() + "')");
resetPlayerFeatures(P); resetPlayerFeatures(P);
playerFeatures.put(P, new ArrayList<Feature>()); playerFeatures.put(P, new ArrayList<>());
featureEnabled.put(P, new HashMap<Feature, Boolean>()); featureEnabled.put(P, new HashMap<>());
boolean added = false; boolean added = false;
while (rs.next()) { while (rs.next()) {
if (!added) { if (!added) {
@@ -169,11 +168,12 @@ public class Features implements Listener {
return false; return false;
} }
@SuppressWarnings("unchecked")
private void resetPlayerFeatures(Player P) { private void resetPlayerFeatures(Player P) {
if (!playerFeatures.containsKey(P)) { if (!playerFeatures.containsKey(P)) {
return; return;
} }
for (Feature f : (ArrayList<Feature>) playerFeatures.get(P).clone()) { for (Feature f : (Iterable<? extends Feature>) playerFeatures.get(P).clone()) {
removeFeature(P, f); removeFeature(P, f);
} }
} }
@@ -220,7 +220,7 @@ public class Features implements Listener {
} }
Player P = event.getPlayer(); Player P = event.getPlayer();
if (this.hasFeature(P, Feature.DOUBLE_JUMP)) { 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); this.canDoubleJump.put(P, true);
P.setExp(1); P.setExp(1);
} }

View File

@@ -3,6 +3,7 @@ package de.anura.core;
import de.anura.core.API.Core; import de.anura.core.API.Core;
import de.anura.core.API.Errors; import de.anura.core.API.Errors;
import de.anura.core.API.Money; import de.anura.core.API.Money;
import de.anura.core.util.Data;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
@@ -15,10 +16,10 @@ import org.bukkit.entity.Player;
public class FlowerPots { public class FlowerPots {
private final HashMap<Player, HashMap<Integer, Boolean>> foundCache = new HashMap<>(); private final static 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, Integer>> foundTimestamp = new HashMap<>();
public boolean foundPot(Player P, Integer pot) { public static boolean foundPot(Player P, Integer pot) {
if (!foundCache.containsKey(P)) { if (!foundCache.containsKey(P)) {
refreshCache(P); refreshCache(P);
} }
@@ -33,17 +34,17 @@ public class FlowerPots {
return false; return false;
} }
private int getPotWaitTime(Integer pot) { private static int getPotWaitTime(Integer pot) {
if (AnuraCore.getInstance().flowerPots.containsKey(pot)) { if (Data.flowerPots.containsKey(pot)) {
if (AnuraCore.getInstance().flowerPotsWait.containsKey(pot)) { if (Data.flowerPotsWait.containsKey(pot)) {
return AnuraCore.getInstance().flowerPotsWait.get(pot); return Data.flowerPotsWait.get(pot);
} }
return -1; return -1;
} }
return 0; return 0;
} }
public void refreshCache(Player P) { public static void refreshCache(Player P) {
try { try {
ResultSet rs = AnuraCore.getSql().querySelect("SELECT id, timestamp, type FROM coreFoundPots WHERE player = (SELECT id FROM players WHERE uuid = '" + P.getUniqueId().toString() + "')"); 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<>(); HashMap<Integer, Boolean> list = new HashMap<>();
@@ -54,15 +55,15 @@ public class FlowerPots {
listTimes.put(rs.getInt("id"), rs.getInt("timestamp")); listTimes.put(rs.getInt("id"), rs.getInt("timestamp"));
} }
} }
this.foundCache.put(P, list); foundCache.put(P, list);
this.foundTimestamp.put(P, listTimes); foundTimestamp.put(P, listTimes);
} catch (Throwable e) { } catch (Throwable e) {
Errors.reportException(e); Errors.reportException(e);
} }
} }
public void refreshPot(Integer pot) { public static void refreshPot(Integer pot) {
Location l = AnuraCore.getInstance().flowerPots.get(pot); Location l = Data.flowerPots.get(pot);
for (Player P : l.getWorld().getPlayers()) { for (Player P : l.getWorld().getPlayers()) {
if (P.getLocation().distance(l) < 20) { if (P.getLocation().distance(l) < 20) {
refreshPlayerPot(P, pot, l); refreshPlayerPot(P, pot, l);
@@ -70,24 +71,24 @@ public class FlowerPots {
} }
} }
public void refreshPlayerPot(Player p, Integer pot, Location l) { public static void refreshPlayerPot(Player p, Integer pot, Location l) {
if (!this.foundPot(p, pot)) { if (!foundPot(p, pot)) {
p.sendBlockChange(l, Material.FLOWER_POT, (byte) 0); p.sendBlockChange(l, Material.FLOWER_POT, (byte) 0);
} else { } else {
p.sendBlockChange(l, Material.AIR, (byte) 0); p.sendBlockChange(l, Material.AIR, (byte) 0);
} }
} }
public void refreshPlayer(Player p) { public static void refreshPlayer(Player p) {
for (Map.Entry<Integer, Location> pots : AnuraCore.getInstance().flowerPots.entrySet()) { for (Map.Entry<Integer, Location> pots : Data.flowerPots.entrySet()) {
if (pots.getValue().getWorld().equals(p.getLocation().getWorld()) && pots.getValue().distance(p.getLocation()) < 20) { if (pots.getValue().getWorld().equals(p.getLocation().getWorld()) && pots.getValue().distance(p.getLocation()) < 20) {
refreshPlayerPot(p, pots.getKey(), pots.getValue()); 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 { try {
if (!foundPot(P, pot)) { if (!foundPot(P, pot)) {
Integer time = getPotWaitTime(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 + ")"; 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); AnuraCore.getSql().queryUpdate(sql);
Location loc = AnuraCore.getInstance().flowerPots.get(pot); Location loc = Data.flowerPots.get(pot);
for (int i = 0; i < 20; i++) { for (int i = 0; i < 20; i++) {
loc.getWorld().playEffect(loc, Effect.FIREWORKS_SPARK, 4); loc.getWorld().playEffect(loc, Effect.FIREWORKS_SPARK, 4);
} }

View File

@@ -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));
}
}

View File

@@ -1,5 +1,6 @@
package de.anura.core; package de.anura.core;
import de.anura.core.API.Core;
import de.anura.core.API.Errors; import de.anura.core.API.Errors;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.util.HashMap; import java.util.HashMap;
@@ -12,7 +13,7 @@ public class LanguageSupport {
public LanguageSupport() { public LanguageSupport() {
try { 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()) { if (!al.next()) {
return; return;
} }
@@ -21,9 +22,9 @@ public class LanguageSupport {
while (al.next()) { while (al.next()) {
languages.put(al.getString("short_name"), al.getString("name")); languages.put(al.getString("short_name"), al.getString("name"));
languageString += ", " + al.getString("short_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()) { while (lv.next()) {
for (String lang : languages.keySet()) { for (String lang : languages.keySet()) {
languageValues.get(lang).put(lv.getString("id"), lv.getString(lang)); languageValues.get(lang).put(lv.getString("id"), lv.getString(lang));

View File

@@ -1,12 +1,11 @@
package de.anura.core; package de.anura.core;
import de.anura.core.API.Core;
import de.anura.core.API.Errors; import de.anura.core.API.Errors;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.UUID; import java.util.UUID;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
@@ -87,7 +86,7 @@ public final class Permissions implements Listener {
pa.unsetPermission(p); pa.unsetPermission(p);
} }
if (!this.playerGroups.containsKey(P.getUniqueId())) { 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> groups = this.playerGroups.get(P.getUniqueId());
ArrayList<Integer> assignedGroups = new ArrayList<>(); ArrayList<Integer> assignedGroups = new ArrayList<>();
@@ -143,9 +142,9 @@ public final class Permissions implements Listener {
public String reload() { public String reload() {
try { try {
ResultSet groupsRs = AnuraCore.sql.querySelect("SELECT prefix, suffix, parent, name, id, listColor FROM permGroups"); ResultSet groupsRs = Core.getMySql().querySelect("SELECT prefix, suffix, parent, name, id, listColor FROM permGroups");
ResultSet permsRs = AnuraCore.sql.querySelect("SELECT `group`, name FROM permPerms"); ResultSet permsRs = Core.getMySql().querySelect("SELECT `group`, name FROM permPerms");
ResultSet userRs = AnuraCore.sql.querySelect("SELECT playerUUID, `group` FROM permPlayerGroups"); ResultSet userRs = Core.getMySql().querySelect("SELECT playerUUID, `group` FROM permPlayerGroups");
this.groupNames.clear(); this.groupNames.clear();
this.groupPerms.clear(); this.groupPerms.clear();
this.playerGroups.clear(); this.playerGroups.clear();
@@ -160,7 +159,7 @@ public final class Permissions implements Listener {
while (groupsRs.next()) { while (groupsRs.next()) {
int id = this.groupAutoIncrement; int id = this.groupAutoIncrement;
this.groupNames.put(id, groupsRs.getString("name")); 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")); this.groupParents.put(id, groupsRs.getInt("parent"));
if (groupsRs.getString("prefix") != null) { if (groupsRs.getString("prefix") != null) {
this.groupPrefix.put(id, groupsRs.getString("prefix")); this.groupPrefix.put(id, groupsRs.getString("prefix"));

View File

@@ -17,13 +17,10 @@ public class RealTime {
world.setGameRuleValue("doDaylightCycle", "false"); world.setGameRuleValue("doDaylightCycle", "false");
world.setTime(0); world.setTime(0);
} }
Bukkit.getScheduler().scheduleSyncRepeatingTask(Core.getMainClass(), new Runnable() { Bukkit.getScheduler().scheduleSyncRepeatingTask(Core.getMainClass(), () -> {
@Override Integer[] time = getSystemTime();
public void run() { int TTime = convertTime(time[0], time[1]);
Integer[] time = getSystemTime(); setWorldTime(TTime);
int TTime = convertTime(time[0], time[1]);
setWorldTime(TTime);
}
}, 0, (20 * 60 * 10)); }, 0, (20 * 60 * 10));
} }
} catch (Throwable e) { } catch (Throwable e) {

View File

@@ -7,6 +7,7 @@ import de.anura.core.API.Level;
import de.anura.core.API.Tools; import de.anura.core.API.Tools;
import de.anura.core.commands.*; import de.anura.core.commands.*;
import de.anura.core.events.*; import de.anura.core.events.*;
import de.anura.core.util.Data;
import java.sql.ResultSet; import java.sql.ResultSet;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
@@ -15,7 +16,6 @@ import org.bukkit.Material;
import org.bukkit.World; import org.bukkit.World;
import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.entity.Arrow; import org.bukkit.entity.Arrow;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.material.Stairs; import org.bukkit.material.Stairs;
import org.bukkit.scoreboard.Scoreboard; import org.bukkit.scoreboard.Scoreboard;
@@ -39,6 +39,7 @@ public class Setup {
c.addDefault("golf", false); c.addDefault("golf", false);
c.addDefault("realtime-day", false); c.addDefault("realtime-day", false);
c.addDefault("no-snow-melt", false); c.addDefault("no-snow-melt", false);
c.addDefault("no-bed-explode", false);
c.addDefault("spawn.world", "none"); c.addDefault("spawn.world", "none");
c.addDefault("spawn.X", 0); c.addDefault("spawn.X", 0);
c.addDefault("spawn.Y", 0); c.addDefault("spawn.Y", 0);
@@ -79,14 +80,14 @@ public class Setup {
public static void setupClasses() { public static void setupClasses() {
try { try {
Core.getMainClass().lang = new LanguageSupport(); AnuraCore.lang = new LanguageSupport();
new Inventories(Core.getMainClass()); new Inventories(Core.getMainClass());
setupInventories(); setupInventories();
Core.getMainClass().perms = new Permissions(Core.getMainClass()); AnuraCore.perms = new Permissions(Core.getMainClass());
Core.getMainClass().tools = new Tools(); AnuraCore.tools = new Tools();
Core.getMainClass().pots = new FlowerPots(); AnuraCore.pots = new FlowerPots();
Core.getMainClass().signs = new Signs(); AnuraCore.signs = new Signs();
Core.getMainClass().level = new Level(); AnuraCore.level = new Level();
RealTime.setup(); RealTime.setup();
ResultSet rs = Core.getMySql().querySelect("SELECT id, X, Y, Z, world, type, waitTime FROM corePots"); ResultSet rs = Core.getMySql().querySelect("SELECT id, X, Y, Z, world, type, waitTime FROM corePots");
while (rs.next()) { while (rs.next()) {
@@ -95,14 +96,14 @@ public class Setup {
continue; continue;
} }
Location l = new Location(w, rs.getInt("X"), rs.getInt("Y"), rs.getInt("Z")); 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")) { 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); l.getBlock().setType(Material.BROWN_MUSHROOM);
} }
Core.getMainClass().features = new Features(); AnuraCore.features = new Features();
Core.getMainClass().features.updateFeaturesAll(); AnuraCore.features.updateFeaturesAll();
} catch (Throwable e) { } catch (Throwable e) {
Errors.reportException(e); Errors.reportException(e);
} }
@@ -110,29 +111,6 @@ public class Setup {
public static void setupTasks() { public static void setupTasks() {
try { 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") + "'"); ResultSet rs = Core.getMySql().querySelect("SELECT world, X, Y, Z FROM coreStairs WHERE server = '" + Core.getMainClass().getConfig().getString("server-name") + "'");
while (rs.next()) { while (rs.next()) {
World w = Bukkit.getWorld(rs.getString("world")); 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")); Location l = new Location(w, rs.getInt("X"), rs.getInt("Y"), rs.getInt("Z"));
if (l.getBlock().getState().getData() instanceof Stairs) { 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() { Bukkit.getScheduler().scheduleSyncRepeatingTask(Core.getMainClass(), () -> {
for (Player p : Data.sittingPlayer.keySet()) {
@Override Location loc = Data.sittingPlayer.get(p).getLocation();
public void run() { Arrow a = loc.getWorld().spawnArrow(loc, new Vector(0, 0, 0), 0, 0);
for (Player p : AnuraCore.getInstance().sittingPlayer.keySet()) { a.setPassenger(p);
Location loc = AnuraCore.getInstance().sittingPlayer.get(p).getLocation(); Data.sittingPlayer.get(p).remove();
Arrow a = loc.getWorld().spawnArrow(loc, new Vector(0, 0, 0), 0, 0); Data.sittingPlayer.put(p, a);
a.setPassenger(p);
AnuraCore.getInstance().sittingPlayer.get(p).remove();
AnuraCore.getInstance().sittingPlayer.put(p, a);
}
} }
}, 600, 600); }, 600, 600);
Bukkit.getScheduler().scheduleSyncRepeatingTask(Core.getMainClass(), new Runnable() { Bukkit.getScheduler().runTaskTimerAsynchronously(Core.getMainClass(), AnuraCore.signs::updateServerSigns, 20 * 5, 20 * 5);
@Override
public void run() {
AnuraCore.getInstance().signs.updateServerSigns();
}
}, 20 * 5, 20 * 5);
Bukkit.getScheduler().scheduleSyncRepeatingTask(Core.getMainClass(), new VillagerTask(), 20, 20); Bukkit.getScheduler().scheduleSyncRepeatingTask(Core.getMainClass(), new VillagerTask(), 20, 20);
} catch (Throwable e) { } catch (Throwable e) {
Errors.reportException(e); Errors.reportException(e);
@@ -276,7 +244,7 @@ public class Setup {
Inventories.registerInventory("LANGUAGE", "Select language", ChatColor.DARK_BLUE); Inventories.registerInventory("LANGUAGE", "Select language", ChatColor.DARK_BLUE);
int i = 0; 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.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); Inventories.registerAction("LANGUAGE", i, Inventories.Action.LANGUAGE, langu);
i++; i++;

View File

@@ -2,7 +2,6 @@ package de.anura.core;
import de.anura.core.API.Core; import de.anura.core.API.Core;
import de.anura.core.API.Errors; import de.anura.core.API.Errors;
import static de.anura.core.AnuraCore.sql;
import java.io.ByteArrayInputStream; import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.io.DataInputStream; import java.io.DataInputStream;
@@ -24,7 +23,7 @@ public class Signs implements PluginMessageListener {
if (Bukkit.getOnlinePlayers().isEmpty()) { if (Bukkit.getOnlinePlayers().isEmpty()) {
return; 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(); rs.last();
if (rs.getRow() == 0) { if (rs.getRow() == 0) {
return; return;
@@ -36,9 +35,9 @@ public class Signs implements PluginMessageListener {
out.writeUTF("PlayerCount"); out.writeUTF("PlayerCount");
out.writeUTF(rs.getString("value")); out.writeUTF(rs.getString("value"));
Bukkit.getOnlinePlayers().iterator().next().sendPluginMessage(Core.getMainClass(), "BungeeCord", b.toByteArray()); 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(); rs2.last();
Boolean online = true; boolean online = true;
int maxPlayers = 0; int maxPlayers = 0;
if (rs2.getRow() == 0) { if (rs2.getRow() == 0) {
online = false; online = false;
@@ -46,8 +45,9 @@ public class Signs implements PluginMessageListener {
rs2.first(); rs2.first();
maxPlayers = rs2.getInt("maxPlayers"); maxPlayers = rs2.getInt("maxPlayers");
} }
final boolean onlineF = online;
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 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(); rs2.last();
if (rs2.getRow() == 0) { if (rs2.getRow() == 0) {
continue; continue;
@@ -69,26 +69,26 @@ public class Signs implements PluginMessageListener {
} }
if (remove) { if (remove) {
String anotherSQL = "DELETE FROM coreWarpSigns WHERE server = '" + Core.getMainClass().getConfig().getString("server-name") + "' AND type = 'server' AND value = '" + rs.getString("value") + "'"; 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; continue;
} }
if (bs == null) { if (bs == null) {
continue; continue;
} }
Sign s = (Sign) bs; final Sign s = (Sign) bs;
String rest = s.getLine(1).substring(0, s.getLine(1).length() - 2); final String rest = s.getLine(1).substring(0, s.getLine(1).length() - 2);
String info = rs2.getString("info"); final String info = rs2.getString("info");
if (s.getLocation().getWorld().isChunkLoaded(s.getLocation().getBlockX() / 16, s.getLocation().getBlockZ() / 16)) { Bukkit.getScheduler().runTask(AnuraCore.getInstance(), () -> {
if (!online) { if (!onlineF) {
s.setLine(1, ChatColor.RED + "--" + ChatColor.DARK_GRAY + "/" + ChatColor.RED + "--"); s.setLine(1, ChatColor.RED + "--" + ChatColor.DARK_GRAY + "/" + ChatColor.RED + "--");
s.setLine(3, ChatColor.RED + "Offline"); s.setLine(3, ChatColor.RED + "Offline");
s.update(); s.update();
continue; return;
} }
s.setLine(1, rest + maxPlayers); s.setLine(1, rest + maxPlayersF);
s.setLine(3, info); s.setLine(3, info);
s.update(); s.update();
} });
} }
} }
} catch (Throwable e) { } catch (Throwable e) {
@@ -109,7 +109,7 @@ public class Signs implements PluginMessageListener {
String server = in.readUTF(); String server = in.readUTF();
int playercount = in.readInt(); 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 + "'"; 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(); rs.last();
if (rs.getRow() == 0) { if (rs.getRow() == 0) {
return; return;
@@ -131,7 +131,7 @@ public class Signs implements PluginMessageListener {
} }
if (remove) { if (remove) {
String anotherSQL = "DELETE FROM coreWarpSigns WHERE server = '" + Core.getMainClass().getConfig().getString("server-name") + "' AND type = 'server' AND value = '" + server + "'"; 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; continue;
} }
if (bs == null) { if (bs == null) {
@@ -159,8 +159,8 @@ public class Signs implements PluginMessageListener {
} }
} }
} else if (subchannel.equals("updatePermissions")) { } else if (subchannel.equals("updatePermissions")) {
Core.getMainClass().perms.reload(); AnuraCore.perms.reload();
Core.getMainClass().perms.updateAllPlayers(); AnuraCore.perms.updateAllPlayers();
} }
} catch (Throwable e) { } catch (Throwable e) {
Errors.reportException(e); Errors.reportException(e);

View File

@@ -8,6 +8,7 @@ import de.anura.core.AnuraVillager;
import de.anura.core.AnuraVillager.VillagerType; import de.anura.core.AnuraVillager.VillagerType;
import de.anura.core.Features.Feature; import de.anura.core.Features.Feature;
import de.anura.core.LanguageSupport; import de.anura.core.LanguageSupport;
import de.anura.core.util.Data;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import org.bukkit.Location; import org.bukkit.Location;
@@ -39,7 +40,7 @@ public class AdminCommands implements CommandExecutor {
Core.statusMsg(sender, "no_perms", false); Core.statusMsg(sender, "no_perms", false);
return true; return true;
} }
for (Player pl : Core.getMainClass().sittingPlayer.keySet()) { for (Player pl : Data.sittingPlayer.keySet()) {
Core.endSitting(pl); Core.endSitting(pl);
} }
for (Arrow a : P.getWorld().getEntitiesByClass(Arrow.class)) { 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()) { if ((args[0].equalsIgnoreCase("reload") || args[0].equalsIgnoreCase("rl")) && sender.isOp()) {
try { try {
Core.getMainClass().getConfig().load(new File("plugins/Core/", "config.yml")); 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); Core.statusMsg(sender, "config_rl_done", true);
} catch (IOException ex) { } catch (IOException ex) {
Core.statusMsg(sender, "config_rl_error_io", false); 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); Core.statusMsg(sender, "config_save_io_err", false);
} }
} else if (args[0].equalsIgnoreCase("debugclosemysql") && sender.isOp()) { } else if (args[0].equalsIgnoreCase("debugclosemysql") && sender.isOp()) {
AnuraCore.sql.closeConnection(); Core.getMySql().closeConnection();
Core.statusMsg(sender, "debug_mysql_closed", true); Core.statusMsg(sender, "debug_mysql_closed", true);
return true; return true;
} }

View File

@@ -4,6 +4,7 @@ import de.anura.core.API.Core;
import de.anura.core.API.Errors; import de.anura.core.API.Errors;
import de.anura.core.API.Inventories; import de.anura.core.API.Inventories;
import de.anura.core.API.Tools; import de.anura.core.API.Tools;
import de.anura.core.util.Data;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.OfflinePlayer; import org.bukkit.OfflinePlayer;
import org.bukkit.command.BlockCommandSender; import org.bukkit.command.BlockCommandSender;
@@ -39,7 +40,7 @@ public class OtherCommands implements CommandExecutor {
return true; return true;
} }
Boolean b = action.equals("disable"); Boolean b = action.equals("disable");
Core.getMainClass().disableCommandsAdventure.put(op.getPlayer(), b); Data.disableCommandsAdventure.put(op.getPlayer(), b);
return true; return true;
} else if (cmd.getName().equalsIgnoreCase("none")) { } else if (cmd.getName().equalsIgnoreCase("none")) {
Core.statusMsg(sender, "cmd_not_found", false); Core.statusMsg(sender, "cmd_not_found", false);
@@ -53,7 +54,7 @@ public class OtherCommands implements CommandExecutor {
String p = args[0]; String p = args[0];
if (Bukkit.getOfflinePlayer(p).isOnline()) { if (Bukkit.getOfflinePlayer(p).isOnline()) {
Player player = Bukkit.getPlayer(p); 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; return true;
} }
} else if (cmd.getName().equalsIgnoreCase("addInvItems")) { } else if (cmd.getName().equalsIgnoreCase("addInvItems")) {

View File

@@ -4,7 +4,6 @@ import de.anura.core.API.Core;
import de.anura.core.API.Errors; import de.anura.core.API.Errors;
import de.anura.core.API.Money; import de.anura.core.API.Money;
import de.anura.core.API.Tools; import de.anura.core.API.Tools;
import static de.anura.core.AnuraCore.sql;
import de.anura.core.Features; import de.anura.core.Features;
import java.sql.ResultSet; import java.sql.ResultSet;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
@@ -216,7 +215,7 @@ public class PlayerCommands implements CommandExecutor {
P = Bukkit.getPlayer(p); P = Bukkit.getPlayer(p);
} }
String warpName = args[0]; 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(); rs.last();
if (rs.getRow() == 0) { if (rs.getRow() == 0) {
Core.statusMsg(P, "warp_not_exist", false); Core.statusMsg(P, "warp_not_exist", false);

View File

@@ -3,19 +3,11 @@ package de.anura.core.commands;
import de.anura.core.API.Core; import de.anura.core.API.Core;
import de.anura.core.API.Errors; import de.anura.core.API.Errors;
import de.anura.core.API.Tools; 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.Features;
import de.anura.core.ImgRenderer; import de.anura.core.FlowerPots;
import java.awt.Image; import de.anura.core.util.Data;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URI;
import java.net.URL;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.util.HashSet; import java.util.HashSet;
import javax.imageio.ImageIO;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.Location; import org.bukkit.Location;
@@ -28,8 +20,6 @@ import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.bukkit.map.MapRenderer;
import org.bukkit.map.MapView;
public class TeamCommands implements CommandExecutor { public class TeamCommands implements CommandExecutor {
@@ -115,10 +105,10 @@ public class TeamCommands implements CommandExecutor {
Core.statusMsg(sender, "no_perms", false); Core.statusMsg(sender, "no_perms", false);
return true; return true;
} }
if (Core.getMainClass().stairMode.contains(P)) { if (Data.stairMode.contains(P)) {
Core.getMainClass().stairMode.remove(P); Data.stairMode.remove(P);
} else { } else {
Core.getMainClass().stairMode.add(P); Data.stairMode.add(P);
} }
Tools.sendStatusMsg(sender, "Done!", true); Tools.sendStatusMsg(sender, "Done!", true);
return true; return true;
@@ -136,78 +126,18 @@ public class TeamCommands implements CommandExecutor {
return false; return false;
} }
Location l = P.getLocation(); Location l = P.getLocation();
if (Core.getMainClass().flowerPots.containsValue(l)) { if (Data.flowerPots.containsValue(l)) {
Core.statusMsg(sender, "set_arch_exists", false); Core.statusMsg(sender, "set_arch_exists", false);
return true; 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')"); 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() + "'"); 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(); 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); 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); Core.statusMsg(sender, "set_arch_ok", true);
return 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")) { } else if (cmd.getName().equalsIgnoreCase("sun")) {
if (P != null) { if (P != null) {
if (P.hasPermission("core.commands.sun")) { if (P.hasPermission("core.commands.sun")) {
@@ -235,7 +165,7 @@ public class TeamCommands implements CommandExecutor {
Core.statusMsg(sender, "setjumper_wrong_number", false); Core.statusMsg(sender, "setjumper_wrong_number", false);
return true; 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]) + ")"); sender.sendMessage(ChatColor.GRAY + "[Anura] " + ChatColor.GREEN + Core.getl("setjumper_select_now", sender) + " " + Double.valueOf(args[0]) + ")");
return true; return true;
} else if (cmd.getName().equalsIgnoreCase("flyspeed")) { } else if (cmd.getName().equalsIgnoreCase("flyspeed")) {
@@ -283,13 +213,13 @@ public class TeamCommands implements CommandExecutor {
String world = loc.getWorld().getName(); String world = loc.getWorld().getName();
String server = Core.getMainClass().getConfig().getString("server-name"); String server = Core.getMainClass().getConfig().getString("server-name");
String name = args[0]; 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(); rs.last();
if (rs.getRow() != 0) { if (rs.getRow() != 0) {
Core.statusMsg(P, "warp_alr_exist", false); Core.statusMsg(P, "warp_alr_exist", false);
return true; 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); Core.statusMsg(P, "warp_set", true);
return true; return true;
} else if (cmd.getName().equalsIgnoreCase("remwarp")) { } else if (cmd.getName().equalsIgnoreCase("remwarp")) {
@@ -302,13 +232,13 @@ public class TeamCommands implements CommandExecutor {
return true; return true;
} }
String map = args[0]; 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(); rs.last();
if (rs.getRow() == 0) { if (rs.getRow() == 0) {
Core.statusMsg(P, "warp_not_exist", false); Core.statusMsg(P, "warp_not_exist", false);
return true; 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); Core.statusMsg(P, "warp_rem_done", true);
return true; return true;
} else if (cmd.getName().equalsIgnoreCase("toggleBoatFlight")) { } else if (cmd.getName().equalsIgnoreCase("toggleBoatFlight")) {

View File

@@ -1,7 +1,10 @@
package de.anura.core.events; package de.anura.core.events;
import de.anura.core.API.Core;
import de.anura.core.API.Errors; import de.anura.core.API.Errors;
import de.anura.core.AnuraCore; import de.anura.core.AnuraCore;
import de.anura.core.util.Data;
import org.bukkit.Bukkit;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.block.Sign; import org.bukkit.block.Sign;
@@ -26,7 +29,7 @@ public class BlockBreak implements Listener {
return; return;
} }
} }
if (plugin.flowerPots.containsValue(event.getBlock().getLocation())) { if (Data.flowerPots.containsValue(event.getBlock().getLocation())) {
event.setCancelled(true); event.setCancelled(true);
} }
if ((event.getBlock().getType() == Material.ENDER_CHEST || event.getBlock().getType() == Material.RAILS)) { 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(); int Z = (int) event.getBlock().getLocation().getZ();
String world = event.getBlock().getLocation().getWorld().getName(); String world = event.getBlock().getLocation().getWorld().getName();
String sql = "DELETE FROM coreJumpers WHERE X = '" + X + "' AND Y = '" + Y + "' AND Z = '" + Z + "' AND world = '" + world + "'"; 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) { } else if (event.getBlock().getState() instanceof Sign) {
Sign s = (Sign) event.getBlock().getState(); Sign s = (Sign) event.getBlock().getState();
Location loc = s.getLocation(); Location loc = s.getLocation();
@@ -44,9 +49,11 @@ public class BlockBreak implements Listener {
int Z = loc.getBlockZ(); int Z = loc.getBlockZ();
String world = loc.getWorld().getName(); String world = loc.getWorld().getName();
String server = plugin.getConfig().getString("server-name"); 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) { } else if (event.getBlock().getState().getData() instanceof Stairs) {
if (plugin.sittingBlocks.containsValue(event.getBlock())) { if (Data.sittingBlocks.containsValue(event.getBlock())) {
event.setCancelled(true); event.setCancelled(true);
} }
} }

View File

@@ -3,6 +3,8 @@ package de.anura.core.events;
import de.anura.core.API.Core; import de.anura.core.API.Core;
import de.anura.core.API.Errors; import de.anura.core.API.Errors;
import de.anura.core.AnuraCore; import de.anura.core.AnuraCore;
import de.anura.core.FlowerPots;
import de.anura.core.util.Data;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.block.Block; import org.bukkit.block.Block;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
@@ -24,18 +26,13 @@ public class BlockPlace implements Listener {
event.setCancelled(true); event.setCancelled(true);
} }
} }
if (plugin.flowerPots.containsValue(event.getBlock().getLocation())) { if (Data.flowerPots.containsValue(event.getBlock().getLocation())) {
event.setCancelled(true); event.setCancelled(true);
final Block b = event.getBlock(); final Block b = event.getBlock();
final int pot = Core.getKeyByValue(plugin.flowerPots, b.getLocation()); final int pot = Core.getKeyByValue(Data.flowerPots, b.getLocation());
plugin.getServer().getScheduler().scheduleSyncDelayedTask(plugin, new Runnable() { plugin.getServer().getScheduler().scheduleSyncDelayedTask(plugin, () -> {
b.setType(Material.BROWN_MUSHROOM);
@Override FlowerPots.refreshPot(pot);
public void run() {
b.setType(Material.BROWN_MUSHROOM);
AnuraCore.getInstance().pots.refreshPot(pot);
}
}, 3); }, 3);
} }
} catch(Throwable e) { } catch(Throwable e) {

View File

@@ -3,6 +3,7 @@ package de.anura.core.events;
import de.anura.core.API.Core; import de.anura.core.API.Core;
import de.anura.core.API.Errors; import de.anura.core.API.Errors;
import de.anura.core.AnuraCore; import de.anura.core.AnuraCore;
import de.anura.core.util.Data;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
@@ -12,7 +13,6 @@ public class CmdPreprocess implements Listener {
public CmdPreprocess(AnuraCore plugin) { public CmdPreprocess(AnuraCore plugin) {
plugin.getServer().getPluginManager().registerEvents(this, plugin); plugin.getServer().getPluginManager().registerEvents(this, plugin);
this.plugin = plugin;
} }
@EventHandler @EventHandler
@@ -23,7 +23,7 @@ public class CmdPreprocess implements Listener {
event.setCancelled(true); event.setCancelled(true);
Core.statusMsg(event.getPlayer(), "help_command_info", 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); event.setCancelled(true);
Core.statusMsg(event.getPlayer(), "no_command_red_mg", ChatColor.YELLOW); Core.statusMsg(event.getPlayer(), "no_command_red_mg", ChatColor.YELLOW);
} }
@@ -31,5 +31,4 @@ public class CmdPreprocess implements Listener {
Errors.reportException(e); Errors.reportException(e);
} }
} }
private final AnuraCore plugin;
} }

View File

@@ -20,12 +20,7 @@ public class DropItem implements Listener {
if (AnuraCore.getInstance().getConfig().getBoolean("is-main-lobby") && !event.getPlayer().hasPermission("core.inventory.interact")) { if (AnuraCore.getInstance().getConfig().getBoolean("is-main-lobby") && !event.getPlayer().hasPermission("core.inventory.interact")) {
event.setCancelled(true); event.setCancelled(true);
final Player P = event.getPlayer(); final Player P = event.getPlayer();
Bukkit.getScheduler().scheduleSyncDelayedTask(AnuraCore.getInstance(), new Runnable() { Bukkit.getScheduler().scheduleSyncDelayedTask(AnuraCore.getInstance(), P::updateInventory, 1);
@Override
public void run() {
P.updateInventory();
}
}, 2);
} }
} catch(Throwable e) { } catch(Throwable e) {
Errors.reportException(e); Errors.reportException(e);

View File

@@ -21,7 +21,7 @@ public class EntityDamageByE implements Listener {
try { try {
if ((event.getEntity() instanceof ItemFrame || event.getEntity() instanceof ArmorStand) && plugin.getConfig().getBoolean("no-change-blocks")) { if ((event.getEntity() instanceof ItemFrame || event.getEntity() instanceof ArmorStand) && plugin.getConfig().getBoolean("no-change-blocks")) {
if (event.getDamager() instanceof Player) { 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); event.setCancelled(true);
} }
} }

View File

@@ -26,12 +26,9 @@ public class InvClick implements Listener {
if (!player.hasPermission("core.inventory.interact") && plugin.getConfig().getBoolean("is-main-lobby")) { if (!player.hasPermission("core.inventory.interact") && plugin.getConfig().getBoolean("is-main-lobby")) {
event.setCancelled(true); event.setCancelled(true);
final Player p = player; final Player p = player;
Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, new Runnable() { Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, () -> {
@Override p.setItemOnCursor(new ItemStack(Material.AIR));
public void run() { p.updateInventory();
p.setItemOnCursor(new ItemStack(Material.AIR));
p.updateInventory();
}
}, 1); }, 1);
} }
} catch(Throwable e) { } catch(Throwable e) {

View File

@@ -4,10 +4,13 @@ import de.anura.core.API.Core;
import de.anura.core.API.Errors; import de.anura.core.API.Errors;
import de.anura.core.API.Tools; import de.anura.core.API.Tools;
import de.anura.core.AnuraCore; import de.anura.core.AnuraCore;
import de.anura.core.FlowerPots;
import de.anura.core.util.Data;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream; import java.io.DataOutputStream;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.util.Arrays; import java.util.Arrays;
import org.bukkit.Bukkit;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.block.Block; import org.bukkit.block.Block;
@@ -32,7 +35,7 @@ public class PlayerInteract implements Listener {
public void onPlayerInteract(PlayerInteractEvent event) { public void onPlayerInteract(PlayerInteractEvent event) {
try { try {
final Block block = event.getClickedBlock(); 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.getPlayer().hasPermission("core.commands.setjumper")) {
if (event.getAction().equals(Action.RIGHT_CLICK_BLOCK) || event.getAction().equals(Action.LEFT_CLICK_BLOCK)) { if (event.getAction().equals(Action.RIGHT_CLICK_BLOCK) || event.getAction().equals(Action.LEFT_CLICK_BLOCK)) {
String type; String type;
@@ -42,16 +45,18 @@ public class PlayerInteract implements Listener {
type = "far"; type = "far";
} else { } else {
Core.statusMsg(event.getPlayer(), "setjumper_block_not_supported", false); Core.statusMsg(event.getPlayer(), "setjumper_block_not_supported", false);
plugin.selectableJumper.remove(event.getPlayer()); Data.selectableJumper.remove(event.getPlayer());
return; return;
} }
Double X = event.getClickedBlock().getLocation().getX(); double X = event.getClickedBlock().getLocation().getX();
Double Y = event.getClickedBlock().getLocation().getY(); double Y = event.getClickedBlock().getLocation().getY();
Double Z = event.getClickedBlock().getLocation().getZ(); double Z = event.getClickedBlock().getLocation().getZ();
String world = event.getClickedBlock().getLocation().getWorld().getName(); 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 + "')"; String sql = "INSERT INTO coreJumpers(X,Y,Z,world,height,type) VALUES('" + X + "','" + Y + "','" + Z + "','" + world + "','" + Data.selectableJumper.get(event.getPlayer()) + "','" + type + "')";
AnuraCore.getSql().queryUpdate(sql); Bukkit.getScheduler().runTaskAsynchronously(plugin, () -> {
plugin.selectableJumper.remove(event.getPlayer()); AnuraCore.getSql().queryUpdate(sql);
});
Data.selectableJumper.remove(event.getPlayer());
Core.statusMsg(event.getPlayer(), "setjumper_done", true); Core.statusMsg(event.getPlayer(), "setjumper_done", true);
event.setCancelled(true); event.setCancelled(true);
} }
@@ -66,13 +71,13 @@ public class PlayerInteract implements Listener {
int Z = loc.getBlockZ(); int Z = loc.getBlockZ();
String world = loc.getWorld().getName(); String world = loc.getWorld().getName();
String server = plugin.getConfig().getString("server-name"); 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(); rs.last();
if (rs.getRow() != 0) { if (rs.getRow() != 0) {
rs.first(); rs.first();
if (rs.getString("type").equalsIgnoreCase("warp")) { if (rs.getString("type").equalsIgnoreCase("warp")) {
String warp = rs.getString("value"); 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(); rs2.last();
if (rs2.getRow() == 0) { if (rs2.getRow() == 0) {
Core.statusMsg(P, "warpsign_warp_not_exist", false); Core.statusMsg(P, "warpsign_warp_not_exist", false);
@@ -95,28 +100,32 @@ public class PlayerInteract implements Listener {
event.setCancelled(true); event.setCancelled(true);
} }
} else if (block.getState().getData() instanceof Stairs) { } 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); event.setCancelled(true);
if (plugin.sittableBlocks.contains(block)) { if (Data.sittableBlocks.contains(block)) {
plugin.sittableBlocks.remove(block); Data.sittableBlocks.remove(block);
Tools.sendStatusMsg(event.getPlayer(), "Removed!", false); Tools.sendStatusMsg(event.getPlayer(), "Removed!", false);
int X = block.getLocation().getBlockX(); int X = block.getLocation().getBlockX();
int Y = block.getLocation().getBlockY(); int Y = block.getLocation().getBlockY();
int Z = block.getLocation().getBlockZ(); 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 { } else {
plugin.sittableBlocks.add(block); Data.sittableBlocks.add(block);
Tools.sendStatusMsg(event.getPlayer(), "Added!", true); Tools.sendStatusMsg(event.getPlayer(), "Added!", true);
int X = block.getLocation().getBlockX(); int X = block.getLocation().getBlockX();
int Y = block.getLocation().getBlockY(); int Y = block.getLocation().getBlockY();
int Z = block.getLocation().getBlockZ(); 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())) { } 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 (plugin.sittingPlayer.containsKey(event.getPlayer())) { if (Data.sittingPlayer.containsKey(event.getPlayer())) {
Core.statusMsg(event.getPlayer(), "sitting_already", false); Core.statusMsg(event.getPlayer(), "sitting_already", false);
event.setCancelled(true); event.setCancelled(true);
} else if (plugin.sittingBlocks.containsValue(block)) { } else if (Data.sittingBlocks.containsValue(block)) {
Core.statusMsg(event.getPlayer(), "sitting_occupied", false); Core.statusMsg(event.getPlayer(), "sitting_occupied", false);
event.setCancelled(true); event.setCancelled(true);
} else { } else {
@@ -127,24 +136,19 @@ public class PlayerInteract implements Listener {
loc.add(s.getFacing().getModX() * 0.2, 0, s.getFacing().getModZ() * 0.2); 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); Arrow a = loc.getWorld().spawnArrow(loc, new Vector(0, 0, 0), 0, 0);
a.setPassenger(event.getPlayer()); a.setPassenger(event.getPlayer());
plugin.sittingPlayer.put(event.getPlayer(), a); Data.sittingPlayer.put(event.getPlayer(), a);
plugin.sittingBlocks.put(event.getPlayer(), block); Data.sittingBlocks.put(event.getPlayer(), block);
event.setCancelled(true); event.setCancelled(true);
} }
} }
} }
} else if (plugin.flowerPots.containsValue(block.getLocation())) { } else if (Data.flowerPots.containsValue(block.getLocation())) {
event.setCancelled(true); event.setCancelled(true);
final Player p = event.getPlayer(); final Player p = event.getPlayer();
plugin.getServer().getScheduler().scheduleSyncDelayedTask(plugin, new Runnable() { plugin.getServer().getScheduler().scheduleSyncDelayedTask(plugin, () -> {
p.sendBlockChange(block.getLocation(), Material.AIR, (byte) 0);
@Override
public void run() {
p.sendBlockChange(block.getLocation(), Material.AIR, (byte) 0);
}
}, 3); }, 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")) { if (plugin.getConfig().getBoolean("no-change-blocks")) {
@@ -183,6 +187,10 @@ public class PlayerInteract implements Listener {
} }
event.setCancelled(cancelled); 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) { } catch(Throwable e) {
Errors.reportException(e); Errors.reportException(e);

View File

@@ -2,11 +2,8 @@ package de.anura.core.events;
import de.anura.core.API.Errors; import de.anura.core.API.Errors;
import de.anura.core.AnuraCore; import de.anura.core.AnuraCore;
import org.bukkit.Material;
import org.bukkit.entity.ArmorStand; import org.bukkit.entity.ArmorStand;
import org.bukkit.entity.Chicken;
import org.bukkit.entity.EntityType; import org.bukkit.entity.EntityType;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerInteractEntityEvent; import org.bukkit.event.player.PlayerInteractEntityEvent;
@@ -25,27 +22,6 @@ public class PlayerInteractE implements Listener {
if (!event.getPlayer().hasPermission("core.rules.blocks.interact")) { if (!event.getPlayer().hasPermission("core.rules.blocks.interact")) {
event.setCancelled(true); 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")) { } else if (event.getRightClicked() instanceof ArmorStand && plugin.getConfig().getBoolean("no-change-blocks")) {
if (!event.getPlayer().hasPermission("core.rules.blocks.interact")) { if (!event.getPlayer().hasPermission("core.rules.blocks.interact")) {
event.setCancelled(true); event.setCancelled(true);

View File

@@ -3,11 +3,13 @@ package de.anura.core.events;
import de.anura.core.API.Core; import de.anura.core.API.Core;
import de.anura.core.API.Errors; import de.anura.core.API.Errors;
import de.anura.core.AnuraCore; import de.anura.core.AnuraCore;
import de.anura.core.FlowerPots;
import de.anura.core.Teleports; import de.anura.core.Teleports;
import de.anura.core.util.Data;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.util.UUID; import java.util.UUID;
import org.bukkit.Bukkit;
import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerJoinEvent;
@@ -37,16 +39,20 @@ public class PlayerJoin implements Listener {
} }
rs.last(); rs.last();
if (rs.getRow() != 1) { 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); event.setJoinMessage(null);
plugin.pots.refreshCache(event.getPlayer()); Bukkit.getScheduler().runTaskAsynchronously(plugin, () -> {
plugin.pots.refreshPlayer(event.getPlayer()); 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.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(); String name = event.getPlayer().getName();
if (Teleports.queuedLocs.containsKey(name)) { if (Teleports.queuedLocs.containsKey(name)) {
event.getPlayer().teleport(Teleports.queuedLocs.get(name)); event.getPlayer().teleport(Teleports.queuedLocs.get(name));

View File

@@ -3,6 +3,7 @@ package de.anura.core.events;
import de.anura.core.API.Core; import de.anura.core.API.Core;
import de.anura.core.API.Errors; import de.anura.core.API.Errors;
import de.anura.core.AnuraCore; import de.anura.core.AnuraCore;
import de.anura.core.util.Data;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerKickEvent; import org.bukkit.event.player.PlayerKickEvent;
@@ -17,7 +18,7 @@ public class PlayerKick implements Listener {
@EventHandler @EventHandler
public void onPlayerKick(PlayerKickEvent event) { public void onPlayerKick(PlayerKickEvent event) {
try { try {
AnuraCore.getInstance().disableCommandsAdventure.remove(event.getPlayer()); Data.disableCommandsAdventure.remove(event.getPlayer());
if (plugin.getConfig().getBoolean("allow-stairs-sit")) { if (plugin.getConfig().getBoolean("allow-stairs-sit")) {
Core.endSitting(event.getPlayer()); Core.endSitting(event.getPlayer());
} }

View File

@@ -2,17 +2,20 @@ package de.anura.core.events;
import de.anura.core.API.Errors; import de.anura.core.API.Errors;
import de.anura.core.AnuraCore; import de.anura.core.AnuraCore;
import de.anura.core.FlowerPots;
import de.anura.core.util.Data;
import java.sql.ResultSet; import java.sql.ResultSet;
import org.bukkit.Bukkit;
import org.bukkit.Effect; import org.bukkit.Effect;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.Sound; import org.bukkit.Sound;
import org.bukkit.block.Block; import org.bukkit.block.Block;
import org.bukkit.block.BlockFace; import org.bukkit.block.BlockFace;
import org.bukkit.material.Sign;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerMoveEvent; import org.bukkit.event.player.PlayerMoveEvent;
import org.bukkit.material.Sign;
import org.bukkit.util.Vector; import org.bukkit.util.Vector;
public class PlayerMove implements Listener { 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")) { if (event.getTo().getY() <= -40 && plugin.getConfig().getBoolean("no-void-death")) {
p.performCommand("spawn"); p.performCommand("spawn");
} } else if (block.getType().equals(Material.CARPET) && under.getType().equals(Material.SIGN_POST)) {
if (block.getType().equals(Material.CARPET) && under.getType().equals(Material.SIGN_POST)) {
p.setWalkSpeed(0.6F); p.setWalkSpeed(0.6F);
} else if (block.getType().equals(Material.CARPET) && under.getType().equals(Material.ENDER_CHEST)) { } else if (block.getType().equals(Material.CARPET) && under.getType().equals(Material.ENDER_CHEST)) {
double X = under.getLocation().getX(); double X = under.getLocation().getX();
@@ -42,28 +44,39 @@ public class PlayerMove implements Listener {
double Z = under.getLocation().getZ(); double Z = under.getLocation().getZ();
String world = under.getLocation().getWorld().getName(); 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'"; 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); Bukkit.getScheduler().runTaskAsynchronously(plugin, () -> {
rs.last(); try {
if (rs.getRow() > 0) { ResultSet rs = AnuraCore.getSql().querySelect(sql);
p.setVelocity(new Vector(0, rs.getDouble("height"), 0)); rs.last();
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); 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); p.setWalkSpeed(0.2F);
} else if (block.getType().equals(Material.CARPET) && under.getType().equals(Material.RAILS)) { } else if (block.getType().equals(Material.CARPET) && under.getType().equals(Material.RAILS)) {
double X = under.getLocation().getX(); double X = under.getLocation().getX();
double Y = under.getLocation().getY(); double Y = under.getLocation().getY();
double Z = under.getLocation().getZ(); double Z = under.getLocation().getZ();
String world = under.getLocation().getWorld().getName(); 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'"; 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); Bukkit.getScheduler().runTaskAsynchronously(plugin, () -> {
rs.last(); try {
if (rs.getRow() > 0) { ResultSet rs = AnuraCore.getSql().querySelect(sql);
p.setVelocity(p.getLocation().getDirection().multiply(new Vector(rs.getDouble("height"), 1, rs.getDouble("height")))); rs.last();
p.setVelocity(p.getVelocity().setY(1.3)); if (rs.getRow() > 0) {
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.setVelocity(p.getLocation().getDirection().multiply(new Vector(rs.getDouble("height"), 1, rs.getDouble("height"))));
p.playSound(p.getLocation(), Sound.EXPLODE, 1, 1); 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); p.setWalkSpeed(0.2F);
} else { } else {
p.setWalkSpeed(0.2F); p.setWalkSpeed(0.2F);
@@ -91,8 +104,8 @@ public class PlayerMove implements Listener {
event.getPlayer().setVelocity(new Vector(0, 0, -0.3)); 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) { if (!Data.lastLoc.containsKey(p) || !Data.lastLoc.get(p).getWorld().equals(p.getLocation().getWorld()) || Data.lastLoc.get(p).distance(p.getLocation()) > 1) {
plugin.pots.refreshPlayer(p); FlowerPots.refreshPlayer(p);
} }
} catch(Throwable e) { } catch(Throwable e) {
Errors.reportException(e); Errors.reportException(e);

View File

@@ -4,6 +4,7 @@ import de.anura.core.API.Core;
import de.anura.core.API.Errors; import de.anura.core.API.Errors;
import de.anura.core.API.Money; import de.anura.core.API.Money;
import de.anura.core.AnuraCore; import de.anura.core.AnuraCore;
import de.anura.core.util.Data;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.entity.Boat; import org.bukkit.entity.Boat;
import org.bukkit.entity.EntityType; import org.bukkit.entity.EntityType;
@@ -28,8 +29,10 @@ public class PlayerQuit implements Listener {
} }
event.setQuitMessage(null); event.setQuitMessage(null);
Core.endSitting(event.getPlayer()); Core.endSitting(event.getPlayer());
AnuraCore.getInstance().disableCommandsAdventure.remove(event.getPlayer()); Data.disableCommandsAdventure.remove(event.getPlayer());
Money.saveMoney(event.getPlayer()); Bukkit.getScheduler().runTaskAsynchronously(Core.getMainClass(), () -> {
Money.saveMoney(event.getPlayer());
});
Core.getLevel().update(event.getPlayer()); Core.getLevel().update(event.getPlayer());
Bukkit.getScoreboardManager().getMainScoreboard().resetScores(event.getPlayer()); Bukkit.getScoreboardManager().getMainScoreboard().resetScores(event.getPlayer());
} catch(Throwable e) { } catch(Throwable e) {

View File

@@ -1,8 +1,11 @@
package de.anura.core.events; package de.anura.core.events;
import de.anura.core.AnuraCore; import de.anura.core.AnuraCore;
import de.anura.core.util.Data;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.block.Block; import org.bukkit.block.Block;
import org.bukkit.block.BlockFace;
import org.bukkit.entity.Arrow; import org.bukkit.entity.Arrow;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
@@ -17,31 +20,42 @@ public class PlayerTeleport implements Listener {
public PlayerTeleport(AnuraCore plugin) { public PlayerTeleport(AnuraCore plugin) {
plugin.getServer().getPluginManager().registerEvents(this, plugin); plugin.getServer().getPluginManager().registerEvents(this, plugin);
this.plugin = plugin;
} }
@EventHandler(priority = EventPriority.LOWEST) @EventHandler(priority = EventPriority.LOWEST)
public void onPlayerTeleport(PlayerTeleportEvent event) { public void onPlayerTeleport(PlayerTeleportEvent event) {
if (Data.sittingPlayer.containsKey(event.getPlayer()) && !event.getCause().equals(TeleportCause.PLUGIN)) {
if (plugin.sittingPlayer.containsKey(event.getPlayer()) && !event.getCause().equals(TeleportCause.PLUGIN)) {
if (event.getPlayer().isSneaking()) { if (event.getPlayer().isSneaking()) {
Player P = event.getPlayer(); Player P = event.getPlayer();
Block b = plugin.sittingBlocks.get(P); Block b = Data.sittingBlocks.get(P);
MaterialData md = b.getState().getData(); MaterialData md = b.getState().getData();
if (md instanceof Stairs) { if (md instanceof Stairs) {
Stairs s = (Stairs) md; Stairs s = (Stairs) md;
Location loc = b.getRelative(s.getFacing()).getLocation(); 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); event.setTo(loc);
P.setSneaking(false); P.setSneaking(false);
a.remove(); a.remove();
plugin.sittingPlayer.remove(P); Data.sittingPlayer.remove(P);
plugin.sittingBlocks.remove(P); Data.sittingBlocks.remove(P);
return; return;
} }
} }
event.setCancelled(true); 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;
}
} }

View File

@@ -32,7 +32,7 @@ public class SignChange implements Listener {
return; return;
} }
if (event.getLine(1).endsWith("Warp")) { 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(); rs.last();
if (rs.getRow() == 0) { if (rs.getRow() == 0) {
event.setLine(0, ChatColor.STRIKETHROUGH + "[Warp]"); event.setLine(0, ChatColor.STRIKETHROUGH + "[Warp]");
@@ -46,7 +46,7 @@ public class SignChange implements Listener {
int Z = loc.getBlockZ(); int Z = loc.getBlockZ();
String world = loc.getWorld().getName(); String world = loc.getWorld().getName();
String server = plugin.getConfig().getString("server-name"); 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(0, "[" + ChatColor.GREEN + "Warp" + ChatColor.BLACK + "]");
event.setLine(1, ChatColor.DARK_GRAY + "--------"); event.setLine(1, ChatColor.DARK_GRAY + "--------");
event.setLine(2, ChatColor.AQUA + event.getLine(2)); event.setLine(2, ChatColor.AQUA + event.getLine(2));
@@ -60,7 +60,7 @@ public class SignChange implements Listener {
int Z = loc.getBlockZ(); int Z = loc.getBlockZ();
String world = loc.getWorld().getName(); String world = loc.getWorld().getName();
String server = plugin.getConfig().getString("server-name"); 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(0, ChatColor.DARK_GRAY + "---------");
event.setLine(1, ChatColor.BLACK + "[" + ChatColor.GREEN + "Spawn" + ChatColor.BLACK + "]"); event.setLine(1, ChatColor.BLACK + "[" + ChatColor.GREEN + "Spawn" + ChatColor.BLACK + "]");
event.setLine(2, ChatColor.DARK_GRAY + "---------"); event.setLine(2, ChatColor.DARK_GRAY + "---------");
@@ -74,7 +74,7 @@ public class SignChange implements Listener {
String world = loc.getWorld().getName(); String world = loc.getWorld().getName();
String server = event.getLine(2); String server = event.getLine(2);
String curServer = plugin.getConfig().getString("server-name"); 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(0, ChatColor.BLACK + "[" + ChatColor.GREEN + "Server" + ChatColor.BLACK + "]");
event.setLine(1, ChatColor.GREEN + "--" + ChatColor.DARK_GRAY + "/" + ChatColor.GREEN + "--"); event.setLine(1, ChatColor.GREEN + "--" + ChatColor.DARK_GRAY + "/" + ChatColor.GREEN + "--");
event.setLine(2, ChatColor.AQUA + event.getLine(2)); event.setLine(2, ChatColor.AQUA + event.getLine(2));

View 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<>();
}