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

View File

@@ -7,7 +7,7 @@ import java.util.UUID;
import org.bukkit.entity.Player;
public class Errors {
/**
* Reports an exception to the database
* @param exc A Throwable to get the error data from
@@ -16,6 +16,7 @@ public class Errors {
public static void reportException(Throwable exc, String info) {
if (Core.getMySql() == null) {
System.err.println("FATAL ERROR: Error handler fired before init of mysql connection!!");
exc.printStackTrace();
return;
}
try {
@@ -25,7 +26,7 @@ public class Errors {
String errorSql = "INSERT INTO coreErrors (server, exception, msg, info, timestamp) VALUES('" + server + "', '" + name + "', '" + Core.getMySql().escapeString(message) + "', '" + info + "', '" + System.currentTimeMillis() / 1000 + "')";
Core.getMySql().queryUpdate(errorSql);
ResultSet rs = Core.getMySql().querySelect("SELECT id FROM coreErrors ORDER BY id DESC LIMIT 1");
rs.first();
rs.first();
int id = rs.getInt("id");
String elemSql = "INSERT INTO coreErrorStack(errorId, className, fileName, methodName, lineNumber, nativeMethod) VALUES";
boolean first = true;
@@ -43,7 +44,7 @@ public class Errors {
ex.printStackTrace();
}
}
/**
* Reports an exception to the database
* @param exc A Throwable to get the error from
@@ -51,7 +52,7 @@ public class Errors {
public static void reportException(Throwable exc) {
reportException(exc, "");
}
/**
* Method to report a bug
* @param P The reporter
@@ -66,7 +67,7 @@ public class Errors {
}
Core.getMySql().queryUpdate("INSERT INTO serverBugs(player, msg, data, timestamp) VALUES ((SELECT id FROM players WHERE uuid = '" + uuid.toString() + "'), '" + Core.getMySql().escapeString(msg) + "', '" + dataText + "', '" + System.currentTimeMillis() / 1000 + "')");
}
/**
* Generates an error entry
* @param key The key for this object

View File

@@ -59,7 +59,7 @@ public class Inventories implements Listener {
}
invs.put(type, langInvs);
invType.put(type, true);
invActions.put(type, new HashMap<Integer, Entry<Action, Object>>());
invActions.put(type, new HashMap<>());
}
public static void registerInventory(String type, String name, ChatColor nameColor, boolean multilang, String lang) {
@@ -74,9 +74,9 @@ public class Inventories implements Listener {
invNames.put(nameColor + Core.getl(name, lang), type);
invs.put(type, langInvs);
invLang.put(type, lang);
invActions.put(type, new HashMap<Integer, Entry<Action, Object>>());
}
invActions.put(type, new HashMap<>());
}
public static void buildInvItem(String type, Material m, String name, ChatColor nameColor, ChatColor loreColor, String... lores) { //INV!!
HashMap<String, ItemStack> stacks = new HashMap<>();
for (String lang : Core.getAvailLangs()) {
@@ -93,7 +93,7 @@ public class Inventories implements Listener {
itemNames.put(display, type);
stack.setItemMeta(meta);
stacks.put(lang, stack);
}
}
items.put(type, stacks);
}
@@ -134,11 +134,11 @@ public class Inventories implements Listener {
stacks.put("global", stack);
return stacks;
}
public static HashMap<String, ItemStack> buildItems(Material m, String name, ChatColor nameColor, String lang) {
return buildItems(m, name, nameColor, lang, null, "none");
}
public static HashMap<String, ItemStack> buildItems(Material m, String name, ChatColor nameColor) {
return buildItems(m, name, nameColor, null, "none");
}
@@ -191,7 +191,7 @@ public class Inventories implements Listener {
itemActions.put(type, new AbstractMap.SimpleEntry<>(action, data));
}
public static void executeAction(Player P, Action action, Object data) {
public static void executeAction(Player P, Action action, Object data) {
try {
if (action == Action.SERVER) {
ByteArrayOutputStream b = new ByteArrayOutputStream();
@@ -210,7 +210,7 @@ public class Inventories implements Listener {
} else if (action == Action.LANGUAGE) {
String lang = (String) data;
Core.cachedPlayerLanguage.put(P, lang);
AnuraCore.sql.queryUpdate("UPDATE players SET lang = '" + lang + "' WHERE uuid = '" + P.getUniqueId().toString() + "'");
Core.getMySql().queryUpdate("UPDATE players SET lang = '" + lang + "' WHERE uuid = '" + P.getUniqueId().toString() + "'");
PlayerInventory pi = P.getInventory();
for (Entry<String, Integer> item : itemPositions.entrySet()) {
pi.setItem(item.getValue(), getItem(item.getKey(), P));
@@ -254,12 +254,9 @@ public class Inventories implements Listener {
Entry<Action, Object> action = invActions.get(invNames.get(invName)).get(event.getSlot());
executeAction(player, action.getKey(), action.getValue());
} else {
Bukkit.getScheduler().scheduleSyncDelayedTask(AnuraCore.getInstance(), new Runnable() {
@Override
public void run() {
player.setItemOnCursor(new ItemStack(Material.AIR));
player.updateInventory();
}
Bukkit.getScheduler().scheduleSyncDelayedTask(AnuraCore.getInstance(), () -> {
player.setItemOnCursor(new ItemStack(Material.AIR));
player.updateInventory();
}, 1);
}
} else if (invNames.containsKey(event.getInventory().getName())) {
@@ -275,7 +272,7 @@ public class Inventories implements Listener {
@EventHandler
public void onPlayerInteract(PlayerInteractEvent event) {
try {
if (checkInteracts.containsKey((Player) event.getPlayer()) && !checkInteracts.get((Player) event.getPlayer())) {
if (checkInteracts.containsKey(event.getPlayer()) && !checkInteracts.get(event.getPlayer())) {
return;
}
if (event.hasItem()) {
@@ -285,12 +282,7 @@ public class Inventories implements Listener {
if (itemActions.containsKey(type)) {
event.setCancelled(true);
executeAction(P, itemActions.get(type).getKey(), itemActions.get(type).getValue());
Bukkit.getScheduler().scheduleSyncDelayedTask(AnuraCore.getInstance(), new Runnable() {
@Override
public void run() {
P.updateInventory();
}
}, 1);
Bukkit.getScheduler().scheduleSyncDelayedTask(AnuraCore.getInstance(), P::updateInventory, 1);
}
}
}

View File

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

View File

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

View File

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

View File

@@ -8,41 +8,41 @@ import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.entity.Entity;
import org.bukkit.entity.EntityType;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;
import org.bukkit.entity.Villager;
import org.bukkit.entity.Villager.Profession;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;
public class AnuraVillager {
private final VillagerType type;
private Villager villager;
private Location loc;
public AnuraVillager(VillagerType type) {
this.type = type;
villagers.put(type, this);
}
public AnuraVillager(VillagerType type, Villager villager) {
this(type);
setVillager(villager);
loc = villager.getLocation();
}
public void spawn(Location loc) {
Villager v = buildVillager(loc, type.getName());
setVillager(v);
this.loc = loc;
}
private void setVillager(Villager v) {
villager = v;
byEntity.put(v, this);
}
private Villager buildVillager(Location loc, String name) {
Villager vi = (Villager) loc.getWorld().spawn(loc, Villager.class);
Villager vi = loc.getWorld().spawn(loc, Villager.class);
vi.setProfession(Profession.PRIEST);
vi.setBaby();
vi.setAgeLock(true);
@@ -53,24 +53,24 @@ public class AnuraVillager {
vi.addPotionEffect(new PotionEffect(PotionEffectType.SLOW, 999999999, 999));
return vi;
}
public void remove() {
byEntity.remove(villager);
villagers.remove(type);
}
public VillagerType getType() {
return type;
}
public void tp() {
villager.teleport(loc);
}
public static void addVillagers(Entity[] entities) {
addVillagers(Arrays.asList(entities));
}
public static void addVillagers(List<Entity> entities) {
for (Entity e : entities) {
if (e.isValid() && e.getType().equals(EntityType.VILLAGER)) {
@@ -81,7 +81,7 @@ public class AnuraVillager {
}
}
}
public static void removeVillagers(Entity[] entities) {
for (Entity e : entities) {
if (e.isValid() && e.getType().equals(EntityType.VILLAGER)) {
@@ -94,53 +94,53 @@ public class AnuraVillager {
}
}
}
public static AnuraVillager getByEntity(Villager v) {
return byEntity.get(v);
}
public static AnuraVillager getByType(VillagerType type) {
return villagers.get(type);
}
private static final HashMap<Villager, AnuraVillager> byEntity = new HashMap<>();
public static final HashMap<VillagerType, AnuraVillager> villagers = new HashMap<>();
public enum VillagerType {
DOUBLE_JUMP(Feature.DOUBLE_JUMP, "Double jump"),
AUTO_BOAT(Feature.BOAT, "AutoBoat");
private VillagerType(Feature feature, String name) {
this.feature = feature;
this.name = name;
}
private final Feature feature;
private final String name;
public String getName() {
return name;
}
public Feature getFeature() {
return feature;
}
private final static HashMap<Feature, VillagerType> BY_FEATURE = new HashMap<>();
private final static HashMap<String, VillagerType> BY_NAME = new HashMap<>();
static {
for (VillagerType type : values()) {
BY_FEATURE.put(type.getFeature(), type);
BY_NAME.put(type.getName(), type);
}
}
public static VillagerType getByFeature(Feature feature) {
return BY_FEATURE.get(feature);
}
public static VillagerType getByName(String name) {
return BY_NAME.containsKey(name) ? BY_NAME.get(name) : BY_NAME.get(name.substring(2));
}

View File

@@ -12,7 +12,6 @@ import org.bukkit.GameMode;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.entity.Boat;
import org.bukkit.entity.Entity;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
@@ -24,7 +23,7 @@ import org.bukkit.event.vehicle.VehicleExitEvent;
import org.bukkit.util.Vector;
public class Features implements Listener {
private final Location atwCenter;
public enum Feature {
@@ -35,9 +34,9 @@ public class Features implements Listener {
private Feature(int id) {
this.featureId = id;
}
private final int featureId;
public final int featureId;
private static final HashMap<Integer, Feature> BY_ID = new HashMap<>();
public int getId() {
return featureId;
}
@@ -54,7 +53,7 @@ public class Features implements Listener {
}
public Features() {
Bukkit.getPluginManager().registerEvents(this, AnuraCore.getInstance());
Bukkit.getPluginManager().registerEvents(this, AnuraCore.getInstance());
atwCenter = new Location(Bukkit.getWorld("lobby"), -297, 31, -1742);
}
@@ -70,8 +69,8 @@ public class Features implements Listener {
}
ResultSet rs = Core.getMySql().querySelect("SELECT featureId FROM coreFeatures WHERE playerId = (SELECT id FROM players WHERE uuid = '" + P.getUniqueId().toString() + "')");
resetPlayerFeatures(P);
playerFeatures.put(P, new ArrayList<Feature>());
featureEnabled.put(P, new HashMap<Feature, Boolean>());
playerFeatures.put(P, new ArrayList<>());
featureEnabled.put(P, new HashMap<>());
boolean added = false;
while (rs.next()) {
if (!added) {
@@ -169,11 +168,12 @@ public class Features implements Listener {
return false;
}
@SuppressWarnings("unchecked")
private void resetPlayerFeatures(Player P) {
if (!playerFeatures.containsKey(P)) {
return;
}
for (Feature f : (ArrayList<Feature>) playerFeatures.get(P).clone()) {
for (Feature f : (Iterable<? extends Feature>) playerFeatures.get(P).clone()) {
removeFeature(P, f);
}
}
@@ -220,7 +220,7 @@ public class Features implements Listener {
}
Player P = event.getPlayer();
if (this.hasFeature(P, Feature.DOUBLE_JUMP)) {
if (this.canDoubleJump.containsKey(P) && !this.canDoubleJump.get(P) && ((Entity) P).isOnGround() && this.featureEnabled.get(P).get(Feature.DOUBLE_JUMP)) {
if (this.canDoubleJump.containsKey(P) && !this.canDoubleJump.get(P) && P.isOnGround() && this.featureEnabled.get(P).get(Feature.DOUBLE_JUMP)) {
this.canDoubleJump.put(P, true);
P.setExp(1);
}

View File

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

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -4,7 +4,6 @@ import de.anura.core.API.Core;
import de.anura.core.API.Errors;
import de.anura.core.API.Money;
import de.anura.core.API.Tools;
import static de.anura.core.AnuraCore.sql;
import de.anura.core.Features;
import java.sql.ResultSet;
import org.bukkit.Bukkit;
@@ -216,7 +215,7 @@ public class PlayerCommands implements CommandExecutor {
P = Bukkit.getPlayer(p);
}
String warpName = args[0];
ResultSet rs = sql.querySelect("SELECT world, X, Y, Z, userWarp, server FROM coreWarps WHERE name = '" + warpName + "'");
ResultSet rs = Core.getMySql().querySelect("SELECT world, X, Y, Z, userWarp, server FROM coreWarps WHERE name = '" + warpName + "'");
rs.last();
if (rs.getRow() == 0) {
Core.statusMsg(P, "warp_not_exist", false);

View File

@@ -3,19 +3,11 @@ package de.anura.core.commands;
import de.anura.core.API.Core;
import de.anura.core.API.Errors;
import de.anura.core.API.Tools;
import de.anura.core.AnuraCore;
import static de.anura.core.AnuraCore.sql;
import de.anura.core.Features;
import de.anura.core.ImgRenderer;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URI;
import java.net.URL;
import de.anura.core.FlowerPots;
import de.anura.core.util.Data;
import java.sql.ResultSet;
import java.util.HashSet;
import javax.imageio.ImageIO;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Location;
@@ -28,8 +20,6 @@ import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.map.MapRenderer;
import org.bukkit.map.MapView;
public class TeamCommands implements CommandExecutor {
@@ -115,10 +105,10 @@ public class TeamCommands implements CommandExecutor {
Core.statusMsg(sender, "no_perms", false);
return true;
}
if (Core.getMainClass().stairMode.contains(P)) {
Core.getMainClass().stairMode.remove(P);
if (Data.stairMode.contains(P)) {
Data.stairMode.remove(P);
} else {
Core.getMainClass().stairMode.add(P);
Data.stairMode.add(P);
}
Tools.sendStatusMsg(sender, "Done!", true);
return true;
@@ -136,78 +126,18 @@ public class TeamCommands implements CommandExecutor {
return false;
}
Location l = P.getLocation();
if (Core.getMainClass().flowerPots.containsValue(l)) {
if (Data.flowerPots.containsValue(l)) {
Core.statusMsg(sender, "set_arch_exists", false);
return true;
}
Core.getMySql().queryUpdate("INSERT INTO corePots(X,Y,Z,world,url,name,money,type) VALUES('" + l.getBlockX() + "','" + l.getBlockY() + "','" + l.getBlockZ() + "','" + l.getWorld().getName() + "','http://mc-anura.de','" + args[0] + "','1','0')");
ResultSet rs = Core.getMySql().querySelect("SELECT id FROM corePots WHERE X = '" + l.getBlockX() + "' AND Y = '" + l.getBlockY() + "' AND Z = '" + l.getBlockZ() + "' AND world = '" + l.getWorld().getName() + "'");
rs.first();
Core.getMainClass().flowerPots.put(rs.getInt("id"), new Location(l.getWorld(), l.getBlockX(), l.getBlockY(), l.getBlockZ()));
Data.flowerPots.put(rs.getInt("id"), new Location(l.getWorld(), l.getBlockX(), l.getBlockY(), l.getBlockZ()));
l.getBlock().setType(Material.BROWN_MUSHROOM);
Core.getMainClass().pots.refreshPot(rs.getInt("id"));
FlowerPots.refreshPot(rs.getInt("id"));
Core.statusMsg(sender, "set_arch_ok", true);
return true;
} else if (cmd.getName().equalsIgnoreCase("renderMap")) {
if (!sender.hasPermission("core.commands.addmap")) {
Core.statusMsg(sender, "no_perms", false);
return true;
}
if (args.length != 2) {
Core.statusMsg(sender, "wrong_args_count", false);
return false;
}
final CommandSender cs = sender;
final String url = args[0];
final String name = args[1];
Tools.sendStatusMsg(cs, "The rendering is starting...", true);
Bukkit.getScheduler().scheduleSyncDelayedTask(Core.getMainClass(), new Runnable() {
@Override
public void run() {
try {
URI uri = URI.create(url);
URL locUrl = uri.toURL();
BufferedImage imgSrc = ImageIO.read(locUrl.openStream());
Image i = imgSrc.getScaledInstance(128, 128, Image.SCALE_SMOOTH);
BufferedImage imgScaled = new BufferedImage(128, 128, BufferedImage.TYPE_INT_ARGB);
imgScaled.getGraphics().drawImage(i, 0, 0, null);
AnuraCore.getInstance().renderedImgs.put(name, imgScaled);
Tools.sendStatusMsg(cs, "The rendering has finished!", true);
} catch (MalformedURLException ex) {
Tools.sendStatusMsg(cs, "Please provide a valid image url!", false);
} catch (IOException ex) {
Tools.sendStatusMsg(cs, "Image rendering not working! Did you provide a valid url?", false);
}
}
}, 1);
return true;
} else if (cmd.getName().equalsIgnoreCase("addMap")) {
if (P == null) {
Core.statusMsg(sender, "only_player_cmd", false);
return true;
}
if (!P.hasPermission("core.commands.addmap")) {
Core.statusMsg(sender, "no_perms", false);
return true;
}
if (args.length != 1) {
Core.statusMsg(sender, "wrong_args_count", false);
return false;
}
if (!Core.getMainClass().renderedImgs.containsKey(args[0])) {
Tools.sendStatusMsg(sender, "The image with the given name does not exist or this not rendered yet.", true);
return true;
}
MapView mv = Bukkit.createMap(P.getWorld());
for (MapRenderer mr : mv.getRenderers()) {
mv.removeRenderer(mr);
}
mv.addRenderer(new ImgRenderer(args[0]));
P.setItemInHand(new ItemStack(Material.MAP, 0, mv.getId()));
Core.statusMsg(sender, "addmap_done", true);
return true;
} else if (cmd.getName().equalsIgnoreCase("sun")) {
if (P != null) {
if (P.hasPermission("core.commands.sun")) {
@@ -235,7 +165,7 @@ public class TeamCommands implements CommandExecutor {
Core.statusMsg(sender, "setjumper_wrong_number", false);
return true;
}
Core.getMainClass().selectableJumper.put(P, Double.valueOf(args[0]));
Data.selectableJumper.put(P, Double.valueOf(args[0]));
sender.sendMessage(ChatColor.GRAY + "[Anura] " + ChatColor.GREEN + Core.getl("setjumper_select_now", sender) + " " + Double.valueOf(args[0]) + ")");
return true;
} else if (cmd.getName().equalsIgnoreCase("flyspeed")) {
@@ -283,13 +213,13 @@ public class TeamCommands implements CommandExecutor {
String world = loc.getWorld().getName();
String server = Core.getMainClass().getConfig().getString("server-name");
String name = args[0];
ResultSet rs = sql.querySelect("SELECT `name` FROM coreWarps WHERE name = '" + name + "'");
ResultSet rs = Core.getMySql().querySelect("SELECT `name` FROM coreWarps WHERE name = '" + name + "'");
rs.last();
if (rs.getRow() != 0) {
Core.statusMsg(P, "warp_alr_exist", false);
return true;
}
sql.queryUpdate("INSERT INTO coreWarps(`name`, server, world, X, Y, Z, userWarp) VALUES('" + name + "', '" + server + "', '" + world + "', '" + X + "', '" + Y + "', '" + Z + "', '" + userWarp + "')");
Core.getMySql().queryUpdate("INSERT INTO coreWarps(`name`, server, world, X, Y, Z, userWarp) VALUES('" + name + "', '" + server + "', '" + world + "', '" + X + "', '" + Y + "', '" + Z + "', '" + userWarp + "')");
Core.statusMsg(P, "warp_set", true);
return true;
} else if (cmd.getName().equalsIgnoreCase("remwarp")) {
@@ -302,13 +232,13 @@ public class TeamCommands implements CommandExecutor {
return true;
}
String map = args[0];
ResultSet rs = sql.querySelect("SELECT name FROM coreWarps WHERE name = '" + map + "'");
ResultSet rs = Core.getMySql().querySelect("SELECT name FROM coreWarps WHERE name = '" + map + "'");
rs.last();
if (rs.getRow() == 0) {
Core.statusMsg(P, "warp_not_exist", false);
return true;
}
sql.queryUpdate("DELETE FROM coreWarps WHERE name = '" + map + "'");
Core.getMySql().queryUpdate("DELETE FROM coreWarps WHERE name = '" + map + "'");
Core.statusMsg(P, "warp_rem_done", true);
return true;
} else if (cmd.getName().equalsIgnoreCase("toggleBoatFlight")) {

View File

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

View File

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

View File

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

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")) {
event.setCancelled(true);
final Player P = event.getPlayer();
Bukkit.getScheduler().scheduleSyncDelayedTask(AnuraCore.getInstance(), new Runnable() {
@Override
public void run() {
P.updateInventory();
}
}, 2);
Bukkit.getScheduler().scheduleSyncDelayedTask(AnuraCore.getInstance(), P::updateInventory, 1);
}
} catch(Throwable e) {
Errors.reportException(e);

View File

@@ -21,7 +21,7 @@ public class EntityDamageByE implements Listener {
try {
if ((event.getEntity() instanceof ItemFrame || event.getEntity() instanceof ArmorStand) && plugin.getConfig().getBoolean("no-change-blocks")) {
if (event.getDamager() instanceof Player) {
if (!((Player) event.getDamager()).hasPermission("core.rules.blocks.break")) {
if (!event.getDamager().hasPermission("core.rules.blocks.break")) {
event.setCancelled(true);
}
}

View File

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

View File

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

View File

@@ -2,11 +2,8 @@ package de.anura.core.events;
import de.anura.core.API.Errors;
import de.anura.core.AnuraCore;
import org.bukkit.Material;
import org.bukkit.entity.ArmorStand;
import org.bukkit.entity.Chicken;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerInteractEntityEvent;
@@ -25,27 +22,6 @@ public class PlayerInteractE implements Listener {
if (!event.getPlayer().hasPermission("core.rules.blocks.interact")) {
event.setCancelled(true);
}
} else if (event.getRightClicked().getType().equals(EntityType.CHICKEN) && plugin.getConfig().getBoolean("golf")) {
Player P = event.getPlayer();
Chicken b = (Chicken) event.getRightClicked();
if (P.getItemInHand().getType().equals(Material.STICK)) {
int power;
if (!plugin.golfPower.containsKey(P)) {
power = 1;
} else {
power = plugin.golfPower.get(P);
power++;
}
if (power > 40) {
power = 40;
}
System.out.println(power);
plugin.golfPower.put(P, power);
plugin.releaseGolf.put(P, false);
plugin.golfBall.put(P, b);
}
} else if (event.getRightClicked() instanceof ArmorStand && plugin.getConfig().getBoolean("no-change-blocks")) {
if (!event.getPlayer().hasPermission("core.rules.blocks.interact")) {
event.setCancelled(true);

View File

@@ -3,11 +3,13 @@ package de.anura.core.events;
import de.anura.core.API.Core;
import de.anura.core.API.Errors;
import de.anura.core.AnuraCore;
import de.anura.core.FlowerPots;
import de.anura.core.Teleports;
import de.anura.core.util.Data;
import java.sql.ResultSet;
import java.util.UUID;
import org.bukkit.Bukkit;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
@@ -37,16 +39,20 @@ public class PlayerJoin implements Listener {
}
rs.last();
if (rs.getRow() != 1) {
AnuraCore.getSql().queryUpdate("INSERT INTO players(`uuid`,`game`,`waiting`,`gameName`) VALUES('" + uuid.toString() + "','none','none','')");
Bukkit.getScheduler().runTaskAsynchronously(plugin, () -> {
AnuraCore.getSql().queryUpdate("INSERT INTO players(`uuid`,`game`,`waiting`,`gameName`) VALUES('" + uuid.toString() + "','none','none','')");
});
}
event.setJoinMessage(null);
plugin.pots.refreshCache(event.getPlayer());
plugin.pots.refreshPlayer(event.getPlayer());
Bukkit.getScheduler().runTaskAsynchronously(plugin, () -> {
FlowerPots.refreshCache(event.getPlayer());
FlowerPots.refreshPlayer(event.getPlayer());
Data.disableCommandsAdventure.put(event.getPlayer(), false);
Data.joinTime.put(event.getPlayer(), (int) (System.currentTimeMillis() / 1000));
Data.aimTheWaterWins.put(event.getPlayer(), 0);
Core.getLevel().loadLevel(event.getPlayer());
});
plugin.getFeatures().updateFeatures(event.getPlayer());
plugin.disableCommandsAdventure.put(event.getPlayer(), false);
plugin.joinTime.put(event.getPlayer(), (int) (System.currentTimeMillis() / 1000));
plugin.aimTheWaterWins.put(event.getPlayer(), 0);
Core.getLevel().loadLevel(event.getPlayer());
String name = event.getPlayer().getName();
if (Teleports.queuedLocs.containsKey(name)) {
event.getPlayer().teleport(Teleports.queuedLocs.get(name));
@@ -54,7 +60,7 @@ public class PlayerJoin implements Listener {
} else if (c.getBoolean("on-join-to-spawn")) {
Core.toSpawn(event.getPlayer());
}
} catch(Throwable e) {
Errors.reportException(e);
}

View File

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

View File

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

View File

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

View File

@@ -1,8 +1,11 @@
package de.anura.core.events;
import de.anura.core.AnuraCore;
import de.anura.core.util.Data;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.block.BlockFace;
import org.bukkit.entity.Arrow;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
@@ -17,31 +20,42 @@ public class PlayerTeleport implements Listener {
public PlayerTeleport(AnuraCore plugin) {
plugin.getServer().getPluginManager().registerEvents(this, plugin);
this.plugin = plugin;
}
@EventHandler(priority = EventPriority.LOWEST)
public void onPlayerTeleport(PlayerTeleportEvent event) {
if (plugin.sittingPlayer.containsKey(event.getPlayer()) && !event.getCause().equals(TeleportCause.PLUGIN)) {
if (Data.sittingPlayer.containsKey(event.getPlayer()) && !event.getCause().equals(TeleportCause.PLUGIN)) {
if (event.getPlayer().isSneaking()) {
Player P = event.getPlayer();
Block b = plugin.sittingBlocks.get(P);
Block b = Data.sittingBlocks.get(P);
MaterialData md = b.getState().getData();
if (md instanceof Stairs) {
Stairs s = (Stairs) md;
Location loc = b.getRelative(s.getFacing()).getLocation();
Arrow a = plugin.sittingPlayer.get(P);
if (!hasPlace(loc)) {
for (BlockFace f : new BlockFace[] {BlockFace.SOUTH, BlockFace.WEST, BlockFace.NORTH, BlockFace.EAST}) {
if (f == s.getFacing()) continue;
if (hasPlace(b.getRelative(f).getLocation())) {
loc = b.getRelative(f).getLocation();
break;
}
}
}
loc.add(0.5, 0, 0.5);
Arrow a = Data.sittingPlayer.get(P);
event.setTo(loc);
P.setSneaking(false);
a.remove();
plugin.sittingPlayer.remove(P);
plugin.sittingBlocks.remove(P);
Data.sittingPlayer.remove(P);
Data.sittingBlocks.remove(P);
return;
}
}
event.setCancelled(true);
}
}
private final AnuraCore plugin;
private boolean hasPlace(Location loc) {
return loc.getBlock().getType() == Material.AIR && loc.clone().add(0, 1, 0).getBlock().getType() == Material.AIR;
}
}

View File

@@ -32,7 +32,7 @@ public class SignChange implements Listener {
return;
}
if (event.getLine(1).endsWith("Warp")) {
ResultSet rs = AnuraCore.sql.querySelect("SELECT name FROM coreWarps WHERE name = '" + event.getLine(2) + "'");
ResultSet rs = Core.getMySql().querySelect("SELECT name FROM coreWarps WHERE name = '" + event.getLine(2) + "'");
rs.last();
if (rs.getRow() == 0) {
event.setLine(0, ChatColor.STRIKETHROUGH + "[Warp]");
@@ -46,7 +46,7 @@ public class SignChange implements Listener {
int Z = loc.getBlockZ();
String world = loc.getWorld().getName();
String server = plugin.getConfig().getString("server-name");
AnuraCore.sql.queryUpdate("INSERT INTO coreWarpSigns(X,Y,Z,world,server,type,value,info) VALUES('" + X + "','" + Y + "','" + Z + "','" + world + "','" + server + "','warp','" + event.getLine(2) + "','" + event.getLine(3) + "')");
Core.getMySql().queryUpdate("INSERT INTO coreWarpSigns(X,Y,Z,world,server,type,value,info) VALUES('" + X + "','" + Y + "','" + Z + "','" + world + "','" + server + "','warp','" + event.getLine(2) + "','" + event.getLine(3) + "')");
event.setLine(0, "[" + ChatColor.GREEN + "Warp" + ChatColor.BLACK + "]");
event.setLine(1, ChatColor.DARK_GRAY + "--------");
event.setLine(2, ChatColor.AQUA + event.getLine(2));
@@ -60,7 +60,7 @@ public class SignChange implements Listener {
int Z = loc.getBlockZ();
String world = loc.getWorld().getName();
String server = plugin.getConfig().getString("server-name");
AnuraCore.sql.queryUpdate("INSERT INTO coreWarpSigns(X,Y,Z,world,server,type,value,info) VALUES('" + X + "','" + Y + "','" + Z + "','" + world + "','" + server + "','spawn','none','" + event.getLine(3) + "')");
Core.getMySql().queryUpdate("INSERT INTO coreWarpSigns(X,Y,Z,world,server,type,value,info) VALUES('" + X + "','" + Y + "','" + Z + "','" + world + "','" + server + "','spawn','none','" + event.getLine(3) + "')");
event.setLine(0, ChatColor.DARK_GRAY + "---------");
event.setLine(1, ChatColor.BLACK + "[" + ChatColor.GREEN + "Spawn" + ChatColor.BLACK + "]");
event.setLine(2, ChatColor.DARK_GRAY + "---------");
@@ -74,7 +74,7 @@ public class SignChange implements Listener {
String world = loc.getWorld().getName();
String server = event.getLine(2);
String curServer = plugin.getConfig().getString("server-name");
AnuraCore.sql.queryUpdate("INSERT INTO coreWarpSigns(X,Y,Z,world,server,type,value,info) VALUES('" + X + "','" + Y + "','" + Z + "','" + world + "','" + curServer + "','server','" + server + "','" + event.getLine(3) + "')");
Core.getMySql().queryUpdate("INSERT INTO coreWarpSigns(X,Y,Z,world,server,type,value,info) VALUES('" + X + "','" + Y + "','" + Z + "','" + world + "','" + curServer + "','server','" + server + "','" + event.getLine(3) + "')");
event.setLine(0, ChatColor.BLACK + "[" + ChatColor.GREEN + "Server" + ChatColor.BLACK + "]");
event.setLine(1, ChatColor.GREEN + "--" + ChatColor.DARK_GRAY + "/" + ChatColor.GREEN + "--");
event.setLine(2, ChatColor.AQUA + event.getLine(2));

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