Cleaned up imports and unneeded exceptions

This commit is contained in:
Tastybento 2018-03-11 15:59:03 -07:00
parent 8e97186caf
commit b20fbd55a4
30 changed files with 72 additions and 278 deletions

View File

@ -1,11 +1,11 @@
package us.tastybento.bskyblock.api.commands; package us.tastybento.bskyblock.api.commands;
import us.tastybento.bskyblock.api.user.User;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List; import java.util.List;
import java.util.Optional; import java.util.Optional;
import us.tastybento.bskyblock.api.user.User;
/** /**
* Interface for BSkyBlock Commands * Interface for BSkyBlock Commands
* @author tastybento * @author tastybento

View File

@ -5,6 +5,7 @@ import java.util.List;
import java.util.Optional; import java.util.Optional;
import org.apache.commons.lang.math.NumberUtils; import org.apache.commons.lang.math.NumberUtils;
import us.tastybento.bskyblock.api.user.User; import us.tastybento.bskyblock.api.user.User;
/** /**

View File

@ -2,7 +2,6 @@ package us.tastybento.bskyblock.api.configuration;
import java.beans.IntrospectionException; import java.beans.IntrospectionException;
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.InvocationTargetException;
import java.sql.SQLException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.logging.Logger; import java.util.logging.Logger;
@ -43,8 +42,8 @@ public class BSBConfig<T> {
List<T> result = new ArrayList<>(); List<T> result = new ArrayList<>();
try { try {
result = handler.loadObjects(); result = handler.loadObjects();
} catch (InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException } catch (InstantiationException | IllegalAccessException | IllegalArgumentException
| SecurityException | ClassNotFoundException | IntrospectionException | SQLException e) { | InvocationTargetException | ClassNotFoundException | IntrospectionException e) {
logger.severe(() -> "Could not load config! Error: " + e.getMessage()); logger.severe(() -> "Could not load config! Error: " + e.getMessage());
} }
return result; return result;
@ -56,12 +55,14 @@ public class BSBConfig<T> {
* @return the object or null if it cannot be loaded * @return the object or null if it cannot be loaded
*/ */
public T loadConfigObject(String uniqueId) { public T loadConfigObject(String uniqueId) {
try { try {
return handler.loadObject(uniqueId); return handler.loadObject(uniqueId);
} catch (InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException } catch (InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException
| SecurityException | ClassNotFoundException | IntrospectionException | SQLException e) { | ClassNotFoundException | IntrospectionException e) {
logger.severe(() -> "Could not load config object! " + e.getMessage()); logger.severe(() -> "Could not load config object! " + e.getMessage());
} }
return null; return null;
} }
@ -73,7 +74,7 @@ public class BSBConfig<T> {
try { try {
handler.saveObject(instance); handler.saveObject(instance);
} catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException | SecurityException } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException | SecurityException
| InstantiationException | NoSuchMethodException | IntrospectionException | SQLException e) { | IntrospectionException e) {
logger.severe(() -> "Could not save config! Error: " + e.getMessage()); logger.severe(() -> "Could not save config! Error: " + e.getMessage());
return false; return false;
} }

View File

@ -6,9 +6,9 @@ import org.bukkit.Material;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import us.tastybento.bskyblock.api.user.User;
import us.tastybento.bskyblock.api.panels.PanelItem; import us.tastybento.bskyblock.api.panels.PanelItem;
import us.tastybento.bskyblock.api.panels.builders.PanelItemBuilder; import us.tastybento.bskyblock.api.panels.builders.PanelItemBuilder;
import us.tastybento.bskyblock.api.user.User;
public class Flag implements Comparable<Flag> { public class Flag implements Comparable<Flag> {

View File

@ -8,8 +8,8 @@ import org.bukkit.inventory.ItemFlag;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.inventory.meta.ItemMeta;
import us.tastybento.bskyblock.api.user.User;
import us.tastybento.bskyblock.api.panels.builders.PanelItemBuilder; import us.tastybento.bskyblock.api.panels.builders.PanelItemBuilder;
import us.tastybento.bskyblock.api.user.User;
public class PanelItem { public class PanelItem {

View File

@ -2,10 +2,10 @@ package us.tastybento.bskyblock.api.panels.builders;
import java.util.TreeMap; import java.util.TreeMap;
import us.tastybento.bskyblock.api.user.User;
import us.tastybento.bskyblock.api.panels.Panel; import us.tastybento.bskyblock.api.panels.Panel;
import us.tastybento.bskyblock.api.panels.PanelItem; import us.tastybento.bskyblock.api.panels.PanelItem;
import us.tastybento.bskyblock.api.panels.PanelListener; import us.tastybento.bskyblock.api.panels.PanelListener;
import us.tastybento.bskyblock.api.user.User;
public class PanelBuilder { public class PanelBuilder {
private String name; private String name;

View File

@ -1,9 +1,9 @@
package us.tastybento.bskyblock.api.placeholders.hooks; package us.tastybento.bskyblock.api.placeholders.hooks;
import us.tastybento.bskyblock.BSkyBlock; import us.tastybento.bskyblock.BSkyBlock;
import us.tastybento.bskyblock.api.user.User;
import us.tastybento.bskyblock.api.placeholders.Placeholder; import us.tastybento.bskyblock.api.placeholders.Placeholder;
import us.tastybento.bskyblock.api.placeholders.PlaceholderAPIInterface; import us.tastybento.bskyblock.api.placeholders.PlaceholderAPIInterface;
import us.tastybento.bskyblock.api.user.User;
import us.tastybento.bskyblock.lists.Placeholders; import us.tastybento.bskyblock.lists.Placeholders;
/** /**

View File

@ -1,12 +1,12 @@
package us.tastybento.bskyblock.api.user; package us.tastybento.bskyblock.api.user;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import com.google.common.cache.CacheBuilder; import com.google.common.cache.CacheBuilder;
import com.google.common.cache.CacheLoader; import com.google.common.cache.CacheLoader;
import com.google.common.cache.LoadingCache; import com.google.common.cache.LoadingCache;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
/** /**
* Utilities class that helps to avoid spamming the User with potential repeated messages * Utilities class that helps to avoid spamming the User with potential repeated messages
* @author Poslovitch * @author Poslovitch

View File

@ -5,12 +5,7 @@ import java.util.Locale;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
import java.util.UUID; import java.util.UUID;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import com.google.common.cache.CacheBuilder;
import com.google.common.cache.CacheLoader;
import com.google.common.cache.LoadingCache;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.GameMode; import org.bukkit.GameMode;

View File

@ -8,8 +8,8 @@ import java.util.List;
import us.tastybento.bskyblock.Constants; import us.tastybento.bskyblock.Constants;
import us.tastybento.bskyblock.api.commands.CompositeCommand; import us.tastybento.bskyblock.api.commands.CompositeCommand;
import us.tastybento.bskyblock.api.user.User;
import us.tastybento.bskyblock.api.events.island.IslandEvent.Reason; import us.tastybento.bskyblock.api.events.island.IslandEvent.Reason;
import us.tastybento.bskyblock.api.user.User;
import us.tastybento.bskyblock.commands.IslandCommand; import us.tastybento.bskyblock.commands.IslandCommand;
import us.tastybento.bskyblock.managers.island.NewIsland; import us.tastybento.bskyblock.managers.island.NewIsland;

View File

@ -8,8 +8,8 @@ import org.bukkit.entity.Player;
import us.tastybento.bskyblock.Constants; import us.tastybento.bskyblock.Constants;
import us.tastybento.bskyblock.api.commands.CompositeCommand; import us.tastybento.bskyblock.api.commands.CompositeCommand;
import us.tastybento.bskyblock.api.user.User;
import us.tastybento.bskyblock.api.events.island.IslandEvent.Reason; import us.tastybento.bskyblock.api.events.island.IslandEvent.Reason;
import us.tastybento.bskyblock.api.user.User;
import us.tastybento.bskyblock.database.objects.Island; import us.tastybento.bskyblock.database.objects.Island;
import us.tastybento.bskyblock.managers.island.NewIsland; import us.tastybento.bskyblock.managers.island.NewIsland;

View File

@ -6,9 +6,9 @@ import java.util.UUID;
import us.tastybento.bskyblock.Constants; import us.tastybento.bskyblock.Constants;
import us.tastybento.bskyblock.api.commands.CompositeCommand; import us.tastybento.bskyblock.api.commands.CompositeCommand;
import us.tastybento.bskyblock.api.user.User;
import us.tastybento.bskyblock.api.events.IslandBaseEvent; import us.tastybento.bskyblock.api.events.IslandBaseEvent;
import us.tastybento.bskyblock.api.events.team.TeamEvent; import us.tastybento.bskyblock.api.events.team.TeamEvent;
import us.tastybento.bskyblock.api.user.User;
public class IslandTeamCommand extends AbstractIslandTeamCommand { public class IslandTeamCommand extends AbstractIslandTeamCommand {

View File

@ -8,9 +8,9 @@ import org.bukkit.GameMode;
import org.bukkit.Location; import org.bukkit.Location;
import us.tastybento.bskyblock.Constants; import us.tastybento.bskyblock.Constants;
import us.tastybento.bskyblock.api.user.User;
import us.tastybento.bskyblock.api.events.IslandBaseEvent; import us.tastybento.bskyblock.api.events.IslandBaseEvent;
import us.tastybento.bskyblock.api.events.team.TeamEvent; import us.tastybento.bskyblock.api.events.team.TeamEvent;
import us.tastybento.bskyblock.api.user.User;
import us.tastybento.bskyblock.database.objects.Island; import us.tastybento.bskyblock.database.objects.Island;
public class IslandTeamInviteAcceptCommand extends AbstractIslandTeamCommand { public class IslandTeamInviteAcceptCommand extends AbstractIslandTeamCommand {

View File

@ -10,9 +10,9 @@ import java.util.UUID;
import org.bukkit.OfflinePlayer; import org.bukkit.OfflinePlayer;
import us.tastybento.bskyblock.Constants; import us.tastybento.bskyblock.Constants;
import us.tastybento.bskyblock.api.user.User;
import us.tastybento.bskyblock.api.events.IslandBaseEvent; import us.tastybento.bskyblock.api.events.IslandBaseEvent;
import us.tastybento.bskyblock.api.events.team.TeamEvent; import us.tastybento.bskyblock.api.events.team.TeamEvent;
import us.tastybento.bskyblock.api.user.User;
import us.tastybento.bskyblock.util.Util; import us.tastybento.bskyblock.util.Util;
public class IslandTeamInviteCommand extends AbstractIslandTeamCommand { public class IslandTeamInviteCommand extends AbstractIslandTeamCommand {

View File

@ -4,9 +4,9 @@ import java.util.List;
import java.util.UUID; import java.util.UUID;
import us.tastybento.bskyblock.Constants; import us.tastybento.bskyblock.Constants;
import us.tastybento.bskyblock.api.user.User;
import us.tastybento.bskyblock.api.events.IslandBaseEvent; import us.tastybento.bskyblock.api.events.IslandBaseEvent;
import us.tastybento.bskyblock.api.events.team.TeamEvent; import us.tastybento.bskyblock.api.events.team.TeamEvent;
import us.tastybento.bskyblock.api.user.User;
public class IslandTeamInviteRejectCommand extends AbstractIslandTeamCommand { public class IslandTeamInviteRejectCommand extends AbstractIslandTeamCommand {

View File

@ -7,9 +7,9 @@ import java.util.Optional;
import java.util.UUID; import java.util.UUID;
import us.tastybento.bskyblock.Constants; import us.tastybento.bskyblock.Constants;
import us.tastybento.bskyblock.api.user.User;
import us.tastybento.bskyblock.api.events.IslandBaseEvent; import us.tastybento.bskyblock.api.events.IslandBaseEvent;
import us.tastybento.bskyblock.api.events.team.TeamEvent; import us.tastybento.bskyblock.api.events.team.TeamEvent;
import us.tastybento.bskyblock.api.user.User;
import us.tastybento.bskyblock.database.objects.Island; import us.tastybento.bskyblock.database.objects.Island;
import us.tastybento.bskyblock.util.Util; import us.tastybento.bskyblock.util.Util;

View File

@ -2,7 +2,6 @@ package us.tastybento.bskyblock.database;
import java.beans.IntrospectionException; import java.beans.IntrospectionException;
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.InvocationTargetException;
import java.sql.SQLException;
import java.util.List; import java.util.List;
import org.bukkit.plugin.Plugin; import org.bukkit.plugin.Plugin;
@ -51,7 +50,7 @@ public abstract class AbstractDatabaseHandler<T> {
* Loads all the records in this table and returns a list of them * Loads all the records in this table and returns a list of them
* @return list of <T> * @return list of <T>
*/ */
public abstract List<T> loadObjects() throws InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, IntrospectionException, SQLException, SecurityException, ClassNotFoundException; public abstract List<T> loadObjects() throws InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, ClassNotFoundException, IntrospectionException;
/** /**
* Creates a <T> filled with values from the corresponding * Creates a <T> filled with values from the corresponding
@ -59,20 +58,20 @@ public abstract class AbstractDatabaseHandler<T> {
* @param uniqueId - unique ID * @param uniqueId - unique ID
* @return <T> * @return <T>
*/ */
public abstract T loadObject(String uniqueId) throws InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, IntrospectionException, SQLException, SecurityException, ClassNotFoundException; public abstract T loadObject(String uniqueId) throws InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, ClassNotFoundException, IntrospectionException;
/** /**
* Save T into the corresponding database * Save T into the corresponding database
* *
* @param instance that should be inserted into the database * @param instance that should be inserted into the database
*/ */
public abstract void saveObject(T instance) throws IllegalAccessException, IllegalArgumentException, InvocationTargetException, IntrospectionException, SQLException, SecurityException, InstantiationException, NoSuchMethodException; public abstract void saveObject(T instance) throws IllegalAccessException, IllegalArgumentException, InvocationTargetException, IntrospectionException ;
/** /**
* Deletes the object with the unique id from the database * Deletes the object with the unique id from the database
* @param instance * @param instance
*/ */
public abstract void deleteObject(T instance) throws IllegalAccessException, IllegalArgumentException, InvocationTargetException, IntrospectionException, SQLException, NoSuchMethodException, SecurityException; public abstract void deleteObject(T instance) throws IllegalAccessException, IllegalArgumentException, InvocationTargetException, IntrospectionException ;
/** /**
* Checks if a key exists or not * Checks if a key exists or not

View File

@ -19,7 +19,6 @@ import java.util.Map.Entry;
import java.util.Set; import java.util.Set;
import java.util.UUID; import java.util.UUID;
import org.bukkit.Bukkit;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.World; import org.bukkit.World;
import org.bukkit.configuration.MemorySection; import org.bukkit.configuration.MemorySection;
@ -49,7 +48,6 @@ import us.tastybento.bskyblock.util.Util;
public class FlatFileDatabaseHandler<T> extends AbstractDatabaseHandler<T> { public class FlatFileDatabaseHandler<T> extends AbstractDatabaseHandler<T> {
private static final String DATABASE_FOLDER_NAME = "database"; private static final String DATABASE_FOLDER_NAME = "database";
private static final boolean DEBUG = false;
protected boolean configFlag; protected boolean configFlag;
public FlatFileDatabaseHandler(Plugin plugin, Class<T> type, DatabaseConnecter databaseConnecter) { public FlatFileDatabaseHandler(Plugin plugin, Class<T> type, DatabaseConnecter databaseConnecter) {
@ -60,7 +58,7 @@ public class FlatFileDatabaseHandler<T> extends AbstractDatabaseHandler<T> {
* @see us.tastybento.bskyblock.database.managers.AbstractDatabaseHandler#loadObject(java.lang.String) * @see us.tastybento.bskyblock.database.managers.AbstractDatabaseHandler#loadObject(java.lang.String)
*/ */
@Override @Override
public T loadObject(String key) throws InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, IntrospectionException, ClassNotFoundException { public T loadObject(String key) throws InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, ClassNotFoundException, IntrospectionException {
String path = DATABASE_FOLDER_NAME + File.separator + dataObject.getSimpleName(); String path = DATABASE_FOLDER_NAME + File.separator + dataObject.getSimpleName();
String fileName = key; String fileName = key;
StoreAt storeAt = dataObject.getAnnotation(StoreAt.class); StoreAt storeAt = dataObject.getAnnotation(StoreAt.class);
@ -82,7 +80,7 @@ public class FlatFileDatabaseHandler<T> extends AbstractDatabaseHandler<T> {
* @see us.tastybento.bskyblock.database.managers.AbstractDatabaseHandler#loadObjects() * @see us.tastybento.bskyblock.database.managers.AbstractDatabaseHandler#loadObjects()
*/ */
@Override @Override
public List<T> loadObjects() throws InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, IntrospectionException, ClassNotFoundException { public List<T> loadObjects() throws InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, ClassNotFoundException, IntrospectionException {
List<T> list = new ArrayList<>(); List<T> list = new ArrayList<>();
FilenameFilter ymlFilter = (dir, name) -> { FilenameFilter ymlFilter = (dir, name) -> {
return name.toLowerCase().endsWith(".yml"); return name.toLowerCase().endsWith(".yml");
@ -126,9 +124,6 @@ public class FlatFileDatabaseHandler<T> extends AbstractDatabaseHandler<T> {
PropertyDescriptor propertyDescriptor = new PropertyDescriptor(field.getName(), dataObject); PropertyDescriptor propertyDescriptor = new PropertyDescriptor(field.getName(), dataObject);
// Get the write method // Get the write method
Method method = propertyDescriptor.getWriteMethod(); Method method = propertyDescriptor.getWriteMethod();
if (DEBUG) {
plugin.getLogger().info(() -> "DEBUG: " + field.getName() + ": " + propertyDescriptor.getPropertyType().getTypeName());
}
String storageLocation = field.getName(); String storageLocation = field.getName();
// Check if there is an annotation on the field // Check if there is an annotation on the field
ConfigEntry configEntry = field.getAnnotation(ConfigEntry.class); ConfigEntry configEntry = field.getAnnotation(ConfigEntry.class);
@ -138,26 +133,15 @@ public class FlatFileDatabaseHandler<T> extends AbstractDatabaseHandler<T> {
storageLocation = configEntry.path(); storageLocation = configEntry.path();
} }
if (!configEntry.specificTo().equals(GameType.BOTH) && !configEntry.specificTo().equals(Constants.GAMETYPE)) { if (!configEntry.specificTo().equals(GameType.BOTH) && !configEntry.specificTo().equals(Constants.GAMETYPE)) {
if (DEBUG) {
Bukkit.getLogger().info(() -> field.getName() + " not applicable to this game type");
}
continue; continue;
} }
// TODO: Add handling of other ConfigEntry elements // TODO: Add handling of other ConfigEntry elements
} }
Adapter adapterNotation = field.getAnnotation(Adapter.class); Adapter adapterNotation = field.getAnnotation(Adapter.class);
if (adapterNotation != null && AdapterInterface.class.isAssignableFrom(adapterNotation.value())) { if (adapterNotation != null && AdapterInterface.class.isAssignableFrom(adapterNotation.value())) {
if (DEBUG) {
plugin.getLogger().info("DEBUG: there is an adapter");
}
// A conversion adapter has been defined // A conversion adapter has been defined
Object value = config.get(storageLocation); Object value = config.get(storageLocation);
method.invoke(instance, ((AdapterInterface<?,?>)adapterNotation.value().newInstance()).serialize(value)); method.invoke(instance, ((AdapterInterface<?,?>)adapterNotation.value().newInstance()).serialize(value));
if (DEBUG) {
plugin.getLogger().info(() -> "DEBUG: value = " + value);
plugin.getLogger().info(() -> "DEBUG: property type = " + propertyDescriptor.getPropertyType());
plugin.getLogger().info(() -> "DEBUG: " + value.getClass());
}
if (value != null && !value.getClass().equals(MemorySection.class)) { if (value != null && !value.getClass().equals(MemorySection.class)) {
method.invoke(instance, deserialize(value,propertyDescriptor.getPropertyType())); method.invoke(instance, deserialize(value,propertyDescriptor.getPropertyType()));
} }
@ -179,9 +163,6 @@ public class FlatFileDatabaseHandler<T> extends AbstractDatabaseHandler<T> {
// collectionTypes should be 2 long // collectionTypes should be 2 long
Type keyType = collectionTypes.get(0); Type keyType = collectionTypes.get(0);
Type valueType = collectionTypes.get(1); Type valueType = collectionTypes.get(1);
if (DEBUG) {
plugin.getLogger().info(() -> "DEBUG: is Map or HashMap<" + keyType.getTypeName() + ", " + valueType.getTypeName() + ">");
}
// TODO: this may not work with all keys. Further serialization may be required. // TODO: this may not work with all keys. Further serialization may be required.
Map<Object,Object> value = new HashMap<>(); Map<Object,Object> value = new HashMap<>();
if (config.getConfigurationSection(storageLocation) != null) { if (config.getConfigurationSection(storageLocation) != null) {
@ -193,32 +174,17 @@ public class FlatFileDatabaseHandler<T> extends AbstractDatabaseHandler<T> {
} }
// Map values can be null - it is allowed here // Map values can be null - it is allowed here
Object mapValue = deserialize(config.get(storageLocation + "." + key), Class.forName(valueType.getTypeName())); Object mapValue = deserialize(config.get(storageLocation + "." + key), Class.forName(valueType.getTypeName()));
if (DEBUG) {
plugin.getLogger().info(() -> "DEBUG: mapKey = " + mapKey + " (" + mapKey.getClass().getCanonicalName() + ")");
plugin.getLogger().info(() -> "DEBUG: mapValue = " + mapValue);
}
value.put(mapKey, mapValue); value.put(mapKey, mapValue);
} }
} }
method.invoke(instance, value); method.invoke(instance, value);
} else if (Set.class.isAssignableFrom(propertyDescriptor.getPropertyType())) { } else if (Set.class.isAssignableFrom(propertyDescriptor.getPropertyType())) {
if (DEBUG) {
plugin.getLogger().info(() -> "DEBUG: is Set " + propertyDescriptor.getReadMethod().getGenericReturnType().getTypeName());
plugin.getLogger().info("DEBUG: adding a set");
}
// Loop through the collection resultset // Loop through the collection resultset
// Note that we have no idea what type this is // Note that we have no idea what type this is
List<Type> collectionTypes = Util.getCollectionParameterTypes(method); List<Type> collectionTypes = Util.getCollectionParameterTypes(method);
// collectionTypes should be only 1 long // collectionTypes should be only 1 long
Type setType = collectionTypes.get(0); Type setType = collectionTypes.get(0);
if (DEBUG) {
plugin.getLogger().info(() -> "DEBUG: is HashSet<" + setType.getTypeName() + ">");
}
Set<Object> value = new HashSet<>(); Set<Object> value = new HashSet<>();
if (DEBUG) {
plugin.getLogger().info(() -> "DEBUG: collection type argument = " + collectionTypes);
plugin.getLogger().info(() -> "DEBUG: setType = " + setType.getTypeName());
}
for (Object listValue: config.getList(storageLocation)) { for (Object listValue: config.getList(storageLocation)) {
value.add(deserialize(listValue,Class.forName(setType.getTypeName()))); value.add(deserialize(listValue,Class.forName(setType.getTypeName())));
} }
@ -226,9 +192,6 @@ public class FlatFileDatabaseHandler<T> extends AbstractDatabaseHandler<T> {
// TODO: this may not work with all keys. Further serialization may be required. // TODO: this may not work with all keys. Further serialization may be required.
method.invoke(instance, value); method.invoke(instance, value);
} else if (List.class.isAssignableFrom(propertyDescriptor.getPropertyType())) { } else if (List.class.isAssignableFrom(propertyDescriptor.getPropertyType())) {
if (DEBUG) {
plugin.getLogger().info("DEBUG: adding a set");
}
// Loop through the collection resultset // Loop through the collection resultset
// Note that we have no idea what type this is // Note that we have no idea what type this is
List<Type> collectionTypes = Util.getCollectionParameterTypes(method); List<Type> collectionTypes = Util.getCollectionParameterTypes(method);
@ -244,16 +207,7 @@ public class FlatFileDatabaseHandler<T> extends AbstractDatabaseHandler<T> {
method.invoke(instance, value); method.invoke(instance, value);
} else { } else {
// Not a collection // Not a collection
if (DEBUG) {
plugin.getLogger().info("DEBUG: not a collection");
}
Object value = config.get(storageLocation); Object value = config.get(storageLocation);
if (DEBUG) {
plugin.getLogger().info(() -> "DEBUG: name = " + field.getName());
plugin.getLogger().info(() -> "DEBUG: value = " + value);
plugin.getLogger().info(() -> "DEBUG: property type = " + propertyDescriptor.getPropertyType());
plugin.getLogger().info(() -> "DEBUG: value class " + value.getClass());
}
if (value != null && !value.getClass().equals(MemorySection.class)) { if (value != null && !value.getClass().equals(MemorySection.class)) {
method.invoke(instance, deserialize(value,propertyDescriptor.getPropertyType())); method.invoke(instance, deserialize(value,propertyDescriptor.getPropertyType()));
} }
@ -302,18 +256,11 @@ public class FlatFileDatabaseHandler<T> extends AbstractDatabaseHandler<T> {
Method method = propertyDescriptor.getReadMethod(); Method method = propertyDescriptor.getReadMethod();
// Invoke the read method to get the value. We have no idea what type of value it is. // Invoke the read method to get the value. We have no idea what type of value it is.
Object value = method.invoke(instance); Object value = method.invoke(instance);
if (DEBUG) {
plugin.getLogger().info("DEBUG: field = " + field.getName() + " value = " + value);
}
String storageLocation = field.getName(); String storageLocation = field.getName();
// Check if there is an annotation on the field // Check if there is an annotation on the field
ConfigEntry configEntry = field.getAnnotation(ConfigEntry.class); ConfigEntry configEntry = field.getAnnotation(ConfigEntry.class);
// If there is a config path annotation then do something // If there is a config path annotation then do something
if (configEntry != null) { if (configEntry != null) {
if (DEBUG) {
plugin.getLogger().info(() -> "DEBUG: configEntry fould " + configEntry.toString() + " " + configEntry.specificTo());
plugin.getLogger().info(() -> "DEBUG: " + field.getName());
}
if (!configEntry.specificTo().equals(GameType.BOTH) && !configEntry.specificTo().equals(Constants.GAMETYPE)) { if (!configEntry.specificTo().equals(GameType.BOTH) && !configEntry.specificTo().equals(Constants.GAMETYPE)) {
continue fields; continue fields;
} }
@ -338,9 +285,6 @@ public class FlatFileDatabaseHandler<T> extends AbstractDatabaseHandler<T> {
// Adapter // Adapter
Adapter adapterNotation = field.getAnnotation(Adapter.class); Adapter adapterNotation = field.getAnnotation(Adapter.class);
if (adapterNotation != null && AdapterInterface.class.isAssignableFrom(adapterNotation.value())) { if (adapterNotation != null && AdapterInterface.class.isAssignableFrom(adapterNotation.value())) {
if (DEBUG) {
plugin.getLogger().info("DEBUG: there is an adapter");
}
// A conversion adapter has been defined // A conversion adapter has been defined
try { try {
config.set(storageLocation, ((AdapterInterface<?,?>)adapterNotation.value().newInstance()).deserialize(value)); config.set(storageLocation, ((AdapterInterface<?,?>)adapterNotation.value().newInstance()).deserialize(value));
@ -399,9 +343,6 @@ public class FlatFileDatabaseHandler<T> extends AbstractDatabaseHandler<T> {
throw new IllegalArgumentException("No uniqueId in class"); throw new IllegalArgumentException("No uniqueId in class");
} }
if (DEBUG) {
plugin.getLogger().info("DEBUG: Saving YAML file : " + path + " " + filename);
}
databaseConnecter.saveYamlFile(config, path, filename, yamlComments); databaseConnecter.saveYamlFile(config, path, filename, yamlComments);
} }
@ -433,13 +374,6 @@ public class FlatFileDatabaseHandler<T> extends AbstractDatabaseHandler<T> {
@SuppressWarnings({ "unchecked", "rawtypes" }) @SuppressWarnings({ "unchecked", "rawtypes" })
private Object deserialize(Object value, Class<? extends Object> clazz) { private Object deserialize(Object value, Class<? extends Object> clazz) {
if (DEBUG) {
plugin.getLogger().info(() -> "DEBUG: deserialize - class is " + clazz.getCanonicalName());
plugin.getLogger().info("DEBUG: value is " + value);
if (value != null) {
plugin.getLogger().info("DEBUG: value class is " + value.getClass().getCanonicalName());
}
}
// If value is already null, then it can be nothing else // If value is already null, then it can be nothing else
if (value == null) { if (value == null) {
return null; return null;

View File

@ -12,9 +12,9 @@ import org.bukkit.event.inventory.InventoryCloseEvent;
import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.inventory.Inventory; import org.bukkit.inventory.Inventory;
import us.tastybento.bskyblock.api.user.User;
import us.tastybento.bskyblock.api.panels.ClickType; import us.tastybento.bskyblock.api.panels.ClickType;
import us.tastybento.bskyblock.api.panels.Panel; import us.tastybento.bskyblock.api.panels.Panel;
import us.tastybento.bskyblock.api.user.User;
public class PanelListenerManager implements Listener { public class PanelListenerManager implements Listener {

View File

@ -15,9 +15,9 @@ import org.bukkit.event.Event;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
import us.tastybento.bskyblock.BSkyBlock; import us.tastybento.bskyblock.BSkyBlock;
import us.tastybento.bskyblock.api.user.User;
import us.tastybento.bskyblock.api.flags.Flag; import us.tastybento.bskyblock.api.flags.Flag;
import us.tastybento.bskyblock.api.flags.Flag.Type; import us.tastybento.bskyblock.api.flags.Flag.Type;
import us.tastybento.bskyblock.api.user.User;
import us.tastybento.bskyblock.database.objects.Island; import us.tastybento.bskyblock.database.objects.Island;
import us.tastybento.bskyblock.managers.IslandsManager; import us.tastybento.bskyblock.managers.IslandsManager;

View File

@ -19,8 +19,8 @@ import org.bukkit.event.entity.EntityChangeBlockEvent;
import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.util.BlockIterator; import org.bukkit.util.BlockIterator;
import us.tastybento.bskyblock.api.user.User;
import us.tastybento.bskyblock.api.flags.Flag; import us.tastybento.bskyblock.api.flags.Flag;
import us.tastybento.bskyblock.api.user.User;
import us.tastybento.bskyblock.lists.Flags; import us.tastybento.bskyblock.lists.Flags;
/** /**

View File

@ -7,7 +7,18 @@ import java.util.HashMap;
import java.util.UUID; import java.util.UUID;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.entity.*; import org.bukkit.entity.Animals;
import org.bukkit.entity.Entity;
import org.bukkit.entity.IronGolem;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Monster;
import org.bukkit.entity.Parrot;
import org.bukkit.entity.Player;
import org.bukkit.entity.Projectile;
import org.bukkit.entity.Slime;
import org.bukkit.entity.Snowman;
import org.bukkit.entity.Squid;
import org.bukkit.entity.Villager;
import org.bukkit.event.Event; import org.bukkit.event.Event;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority; import org.bukkit.event.EventPriority;
@ -20,8 +31,8 @@ import org.bukkit.event.player.PlayerInteractEntityEvent;
import org.bukkit.inventory.EquipmentSlot; import org.bukkit.inventory.EquipmentSlot;
import org.bukkit.potion.PotionEffect; import org.bukkit.potion.PotionEffect;
import us.tastybento.bskyblock.api.user.User;
import us.tastybento.bskyblock.api.flags.Flag; import us.tastybento.bskyblock.api.flags.Flag;
import us.tastybento.bskyblock.api.user.User;
import us.tastybento.bskyblock.lists.Flags; import us.tastybento.bskyblock.lists.Flags;
/** /**
@ -83,13 +94,9 @@ public class HurtingListener extends AbstractFlagListener {
return; return;
} }
if ((e.getCaught() instanceof Animals || e.getCaught() instanceof IronGolem || e.getCaught() instanceof Snowman) if (((e.getCaught() instanceof Animals || e.getCaught() instanceof IronGolem || e.getCaught() instanceof Snowman) && checkIsland(e, e.getCaught().getLocation(), Flags.HURT_ANIMALS))
&& checkIsland(e, e.getCaught().getLocation(), Flags.HURT_ANIMALS)) { || ((e.getCaught() instanceof Monster || e.getCaught() instanceof Squid || e.getCaught() instanceof Slime) && checkIsland(e, e.getCaught().getLocation(), Flags.HURT_MONSTERS))
e.getHook().remove(); || (e.getCaught() instanceof Villager && checkIsland(e, e.getCaught().getLocation(), Flags.HURT_VILLAGERS))) {
} else if (e.getCaught() instanceof Villager && checkIsland(e, e.getCaught().getLocation(), Flags.HURT_VILLAGERS)) {
e.getHook().remove();
} else if ((e.getCaught() instanceof Monster || e.getCaught() instanceof Squid || e.getCaught() instanceof Slime)
&& checkIsland(e, e.getCaught().getLocation(), Flags.HURT_MONSTERS)) {
e.getHook().remove(); e.getHook().remove();
} }
} }

View File

@ -20,8 +20,8 @@ import org.bukkit.event.entity.PotionSplashEvent;
import org.bukkit.event.player.PlayerFishEvent; import org.bukkit.event.player.PlayerFishEvent;
import org.bukkit.potion.PotionEffect; import org.bukkit.potion.PotionEffect;
import us.tastybento.bskyblock.api.user.User;
import us.tastybento.bskyblock.api.flags.Flag; import us.tastybento.bskyblock.api.flags.Flag;
import us.tastybento.bskyblock.api.user.User;
/** /**
* TODO: PVP is different to other flags - it's either allowed for everyone or not allowed for everyone. Currently owners can hit visitors. * TODO: PVP is different to other flags - it's either allowed for everyone or not allowed for everyone. Currently owners can hit visitors.

View File

@ -40,7 +40,6 @@ import us.tastybento.bskyblock.util.teleport.SafeTeleportBuilder;
*/ */
public class IslandsManager { public class IslandsManager {
private static final boolean DEBUG = false;
/** /**
* Checks if this location is safe for a player to teleport to. Used by * Checks if this location is safe for a player to teleport to. Used by
* warps and boat exits Unsafe is any liquid or air and also if there's no * warps and boat exits Unsafe is any liquid or air and also if there's no
@ -54,14 +53,9 @@ public class IslandsManager {
if (l == null) { if (l == null) {
return false; return false;
} }
// TODO: improve the safe location finding.
//Bukkit.getLogger().info("DEBUG: " + l.toString());
final Block ground = l.getBlock().getRelative(BlockFace.DOWN); final Block ground = l.getBlock().getRelative(BlockFace.DOWN);
final Block space1 = l.getBlock(); final Block space1 = l.getBlock();
final Block space2 = l.getBlock().getRelative(BlockFace.UP); final Block space2 = l.getBlock().getRelative(BlockFace.UP);
//Bukkit.getLogger().info("DEBUG: ground = " + ground.getType());
//Bukkit.getLogger().info("DEBUG: space 1 = " + space1.getType());
//Bukkit.getLogger().info("DEBUG: space 2 = " + space2.getType());
// Portals are not "safe" // Portals are not "safe"
if (space1.getType() == Material.PORTAL || ground.getType() == Material.PORTAL || space2.getType() == Material.PORTAL if (space1.getType() == Material.PORTAL || ground.getType() == Material.PORTAL || space2.getType() == Material.PORTAL
|| space1.getType() == Material.ENDER_PORTAL || ground.getType() == Material.ENDER_PORTAL || space2.getType() == Material.ENDER_PORTAL) { || space1.getType() == Material.ENDER_PORTAL || ground.getType() == Material.ENDER_PORTAL || space2.getType() == Material.ENDER_PORTAL) {
@ -70,40 +64,32 @@ public class IslandsManager {
// If ground is AIR, then this is either not good, or they are on slab, // If ground is AIR, then this is either not good, or they are on slab,
// stair, etc. // stair, etc.
if (ground.getType() == Material.AIR) { if (ground.getType() == Material.AIR) {
// Bukkit.getLogger().info("DEBUG: air");
return false; return false;
} }
// In BSkyBlock, liquid may be unsafe // In BSkyBlock, liquid may be unsafe
// Check if acid has no damage // Check if acid has no damage
if (plugin.getSettings().getAcidDamage() > 0D && (ground.isLiquid() || space1.isLiquid() || space2.isLiquid())) { if (plugin.getSettings().getAcidDamage() > 0D && (ground.isLiquid() || space1.isLiquid() || space2.isLiquid())) {
// Bukkit.getLogger().info("DEBUG: acid");
return false; return false;
} }
if (ground.getType().equals(Material.STATIONARY_LAVA) || ground.getType().equals(Material.LAVA) if (ground.getType().equals(Material.STATIONARY_LAVA) || ground.getType().equals(Material.LAVA)
|| space1.getType().equals(Material.STATIONARY_LAVA) || space1.getType().equals(Material.LAVA) || space1.getType().equals(Material.STATIONARY_LAVA) || space1.getType().equals(Material.LAVA)
|| space2.getType().equals(Material.STATIONARY_LAVA) || space2.getType().equals(Material.LAVA)) { || space2.getType().equals(Material.STATIONARY_LAVA) || space2.getType().equals(Material.LAVA)) {
// Lava check only
// Bukkit.getLogger().info("DEBUG: lava");
return false; return false;
} }
MaterialData md = ground.getState().getData(); MaterialData md = ground.getState().getData();
if (md instanceof SimpleAttachableMaterialData) { if (md instanceof SimpleAttachableMaterialData) {
//Bukkit.getLogger().info("DEBUG: trapdoor/button/tripwire hook etc.");
if (md instanceof TrapDoor) { if (md instanceof TrapDoor) {
TrapDoor trapDoor = (TrapDoor)md; TrapDoor trapDoor = (TrapDoor)md;
if (trapDoor.isOpen()) { if (trapDoor.isOpen()) {
//Bukkit.getLogger().info("DEBUG: trapdoor open");
return false; return false;
} }
} else { } else {
return false; return false;
} }
//Bukkit.getLogger().info("DEBUG: trapdoor closed");
} }
if (ground.getType().equals(Material.CACTUS) || ground.getType().equals(Material.BOAT) || ground.getType().equals(Material.FENCE) if (ground.getType().equals(Material.CACTUS) || ground.getType().equals(Material.BOAT) || ground.getType().equals(Material.FENCE)
|| ground.getType().equals(Material.NETHER_FENCE) || ground.getType().equals(Material.SIGN_POST) || ground.getType().equals(Material.WALL_SIGN)) { || ground.getType().equals(Material.NETHER_FENCE) || ground.getType().equals(Material.SIGN_POST) || ground.getType().equals(Material.WALL_SIGN)) {
// Bukkit.getLogger().info("DEBUG: cactus");
return false; return false;
} }
// Check that the space is not solid // Check that the space is not solid
@ -118,9 +104,9 @@ public class IslandsManager {
return false; return false;
} }
// Safe // Safe
//Bukkit.getLogger().info("DEBUG: safe!");
return true; return true;
} }
private BSkyBlock plugin; private BSkyBlock plugin;
private BSBDatabase database; private BSBDatabase database;
@ -171,13 +157,6 @@ public class IslandsManager {
depth = l.getBlockY(); depth = l.getBlockY();
} }
//plugin.getLogger().info("DEBUG: ranges i = " + i);
//plugin.getLogger().info(" " + minX + "," + minZ + " " + maxX + " " + maxZ);
//plugin.getLogger().info("DEBUG: height = " + height);
//plugin.getLogger().info("DEBUG: depth = " + depth);
//plugin.getLogger().info("DEBUG: trying to find a safe spot at " + l.toString());
// Work outwards from l until the closest safe location is found. // Work outwards from l until the closest safe location is found.
int minXradius = 0; int minXradius = 0;
int maxXradius = 0; int maxXradius = 0;
@ -197,10 +176,8 @@ public class IslandsManager {
for (int z = minZ; z <= maxZ; z++) { for (int z = minZ; z <= maxZ; z++) {
for (int y = minY; y <= maxY; y++) { for (int y = minY; y <= maxY; y++) {
if (!((x > minX && x < maxX) && (z > minZ && z < maxZ) && (y > minY && y < maxY))) { if (!((x > minX && x < maxX) && (z > minZ && z < maxZ) && (y > minY && y < maxY))) {
//plugin.getLogger().info("DEBUG: checking " + x + "," + y + "," + z);
Location ultimate = new Location(l.getWorld(), x + 0.5D, y, z + 0.5D); Location ultimate = new Location(l.getWorld(), x + 0.5D, y, z + 0.5D);
if (isSafeLocation(ultimate)) { if (isSafeLocation(ultimate)) {
//plugin.getLogger().info("DEBUG: Found! " + ultimate);
return ultimate; return ultimate;
} }
} }
@ -225,8 +202,6 @@ public class IslandsManager {
if (maxYradius < height) { if (maxYradius < height) {
maxYradius++; maxYradius++;
} }
//plugin.getLogger().info("DEBUG: Radii " + minXradius + "," + minYradius + "," + minZradius +
// "," + maxXradius + "," + maxYradius + "," + maxZradius);
} while (minXradius < i || maxXradius < i || minZradius < i || maxZradius < i || minYradius < depth } while (minXradius < i || maxXradius < i || minZradius < i || maxZradius < i || minYradius < depth
|| maxYradius < height); || maxYradius < height);
// Nothing worked // Nothing worked
@ -249,9 +224,6 @@ public class IslandsManager {
* @return Island * @return Island
*/ */
public Island createIsland(Location location, UUID owner){ public Island createIsland(Location location, UUID owner){
if (DEBUG) {
plugin.getLogger().info("DEBUG: adding island for " + owner + " at " + location);
}
return islandCache.createIsland(new Island(location, owner, plugin.getSettings().getIslandProtectionRange())); return islandCache.createIsland(new Island(location, owner, plugin.getSettings().getIslandProtectionRange()));
} }
@ -276,13 +248,11 @@ public class IslandsManager {
try { try {
handler.deleteObject(island); handler.deleteObject(island);
} catch (Exception e) { } catch (Exception e) {
plugin.getLogger().severe("Could not delete island from database! " + e.getMessage()); plugin.getLogger().severe(()->"Could not delete island from database! " + e.getMessage());
} }
// Remove blocks from world // Remove blocks from world
new DeleteIslandChunks(plugin, island); new DeleteIslandChunks(plugin, island);
} }
//getServer().getPluginManager().callEvent(new IslandDeleteEvent(player, island.getCenter()));
} }
/** /**
@ -296,19 +266,12 @@ public class IslandsManager {
*/ */
public void deleteIsland(final UUID player, boolean removeBlocks) { public void deleteIsland(final UUID player, boolean removeBlocks) {
// Removes the island // Removes the island
if (DEBUG) {
plugin.getLogger().info("DEBUG: deleting player island");
}
//CoopPlay.getInstance().clearAllIslandCoops(player);
//getWarpSignsListener().removeWarp(player);
final Island island = getIsland(player); final Island island = getIsland(player);
if (island != null) { if (island != null) {
deleteIsland(island, removeBlocks); deleteIsland(island, removeBlocks);
} else { } else {
plugin.getLogger().severe("Could not delete player: " + player.toString() + " island!"); plugin.getLogger().severe(()->"Could not delete player: " + player.toString() + " island!");
//plugin.getServer().getPluginManager().callEvent(new IslandDeleteEvent(player, null));
} }
//players.zeroPlayerData(player);
} }
/** /**
@ -359,17 +322,14 @@ public class IslandsManager {
*/ */
public Optional<Island> getIslandAt(Location location) { public Optional<Island> getIslandAt(Location location) {
if (location == null) { if (location == null) {
//plugin.getLogger().info("DEBUG: location is null");
return Optional.empty(); return Optional.empty();
} }
// World check // World check
if (!Util.inWorld(location)) { if (!Util.inWorld(location)) {
//plugin.getLogger().info("DEBUG: not in right world");
return Optional.empty(); return Optional.empty();
} }
// Check if it is spawn // Check if it is spawn
if (spawn != null && spawn.onIsland(location)) { if (spawn != null && spawn.onIsland(location)) {
//plugin.getLogger().info("DEBUG: spawn");
return Optional.of(spawn); return Optional.of(spawn);
} }
return Optional.ofNullable(getIslandAt(location.getBlockX(), location.getBlockZ())); return Optional.ofNullable(getIslandAt(location.getBlockX(), location.getBlockZ()));
@ -420,7 +380,6 @@ public class IslandsManager {
*/ */
public Optional<Island> getProtectedIslandAt(Location location) { public Optional<Island> getProtectedIslandAt(Location location) {
//plugin.getLogger().info("DEBUG: getProtectedIslandAt " + location);
// Try spawn // Try spawn
if (spawn != null && spawn.onIsland(location)) { if (spawn != null && spawn.onIsland(location)) {
return Optional.of(spawn); return Optional.of(spawn);
@ -446,9 +405,6 @@ public class IslandsManager {
l = plugin.getPlayers().getHomeLocation(playerUUID, number); l = plugin.getPlayers().getHomeLocation(playerUUID, number);
} }
// Check if it is safe // Check if it is safe
if (DEBUG) {
plugin.getLogger().info("DEBUG: Home location " + l);
}
if (l != null) { if (l != null) {
if (isSafeLocation(l)) { if (isSafeLocation(l)) {
return l; return l;
@ -464,45 +420,24 @@ public class IslandsManager {
} }
} }
} }
if (DEBUG) {
plugin.getLogger().info("DEBUG: Home location either isn't safe, or does not exist so try the island");
}
// Home location either isn't safe, or does not exist so try the island // Home location either isn't safe, or does not exist so try the island
// location // location
if (plugin.getPlayers().inTeam(playerUUID)) { if (plugin.getPlayers().inTeam(playerUUID)) {
if (DEBUG) {
plugin.getLogger().info("DEBUG:player is in team");
}
l = plugin.getIslands().getIslandLocation(playerUUID); l = plugin.getIslands().getIslandLocation(playerUUID);
if (isSafeLocation(l)) { if (isSafeLocation(l)) {
if (DEBUG) {
plugin.getLogger().info("DEBUG:island loc is safe");
}
plugin.getPlayers().setHomeLocation(playerUUID, l, number); plugin.getPlayers().setHomeLocation(playerUUID, l, number);
return l; return l;
} else { } else {
// try team leader's home // try team leader's home
if (DEBUG) {
plugin.getLogger().info("DEBUG: trying leader's home");
}
Location tlh = plugin.getPlayers().getHomeLocation(plugin.getIslands().getTeamLeader(playerUUID)); Location tlh = plugin.getPlayers().getHomeLocation(plugin.getIslands().getTeamLeader(playerUUID));
if (tlh != null) { if (tlh != null) {
if (DEBUG) {
plugin.getLogger().info("DEBUG: leader has a home");
}
if (isSafeLocation(tlh)) { if (isSafeLocation(tlh)) {
if (DEBUG) {
plugin.getLogger().info("DEBUG: team leader's home is safe");
}
plugin.getPlayers().setHomeLocation(playerUUID, tlh, number); plugin.getPlayers().setHomeLocation(playerUUID, tlh, number);
return tlh; return tlh;
} }
} }
} }
} else { } else {
if (DEBUG) {
plugin.getLogger().info("DEBUG: player is not in team - trying island location");
}
l = plugin.getIslands().getIslandLocation(playerUUID); l = plugin.getIslands().getIslandLocation(playerUUID);
if (isSafeLocation(l)) { if (isSafeLocation(l)) {
plugin.getPlayers().setHomeLocation(playerUUID, l, number); plugin.getPlayers().setHomeLocation(playerUUID, l, number);
@ -510,35 +445,23 @@ public class IslandsManager {
} }
} }
if (l == null) { if (l == null) {
plugin.getLogger().warning(plugin.getPlayers().getName(playerUUID) + " player has no island!"); plugin.getLogger().warning(()-> plugin.getPlayers().getName(playerUUID) + " player has no island!");
return null; return null;
} }
if (DEBUG) {
plugin.getLogger().info("DEBUG: If these island locations are not safe, then we need to get creative");
}
// If these island locations are not safe, then we need to get creative // If these island locations are not safe, then we need to get creative
// Try the default location // Try the default location
if (DEBUG) {
plugin.getLogger().info("DEBUG: try default location");
}
Location dl = new Location(l.getWorld(), l.getX() + 0.5D, l.getY() + 5D, l.getZ() + 2.5D, 0F, 30F); Location dl = new Location(l.getWorld(), l.getX() + 0.5D, l.getY() + 5D, l.getZ() + 2.5D, 0F, 30F);
if (isSafeLocation(dl)) { if (isSafeLocation(dl)) {
plugin.getPlayers().setHomeLocation(playerUUID, dl, number); plugin.getPlayers().setHomeLocation(playerUUID, dl, number);
return dl; return dl;
} }
// Try just above the bedrock // Try just above the bedrock
if (DEBUG) {
plugin.getLogger().info("DEBUG: above bedrock");
}
dl = new Location(l.getWorld(), l.getX() + 0.5D, l.getY() + 5D, l.getZ() + 0.5D, 0F, 30F); dl = new Location(l.getWorld(), l.getX() + 0.5D, l.getY() + 5D, l.getZ() + 0.5D, 0F, 30F);
if (isSafeLocation(dl)) { if (isSafeLocation(dl)) {
plugin.getPlayers().setHomeLocation(playerUUID, dl, number); plugin.getPlayers().setHomeLocation(playerUUID, dl, number);
return dl; return dl;
} }
// Try all the way up to the sky // Try all the way up to the sky
if (DEBUG) {
plugin.getLogger().info("DEBUG: try all the way to the sky");
}
for (int y = l.getBlockY(); y < 255; y++) { for (int y = l.getBlockY(); y < 255; y++) {
final Location n = new Location(l.getWorld(), l.getX() + 0.5D, y, l.getZ() + 0.5D); final Location n = new Location(l.getWorld(), l.getX() + 0.5D, y, l.getZ() + 0.5D);
if (isSafeLocation(n)) { if (isSafeLocation(n)) {
@ -546,9 +469,6 @@ public class IslandsManager {
return n; return n;
} }
} }
if (DEBUG) {
plugin.getLogger().info("DEBUG: unsuccessful");
}
// Unsuccessful // Unsuccessful
return null; return null;
} }
@ -561,11 +481,7 @@ public class IslandsManager {
* @return the spawnPoint or null if spawn does not exist * @return the spawnPoint or null if spawn does not exist
*/ */
public Location getSpawnPoint() { public Location getSpawnPoint() {
//plugin.getLogger().info("DEBUG: getting spawn point : " + spawn.getSpawnPoint()); return spawn == null ? null : spawn.getSpawnPoint();
if (spawn == null) {
return null;
}
return spawn.getSpawnPoint();
} }
/** /**
@ -602,14 +518,7 @@ public class IslandsManager {
*/ */
@SuppressWarnings("deprecation") @SuppressWarnings("deprecation")
public void homeTeleport(final Player player, int number) { public void homeTeleport(final Player player, int number) {
Location home; Location home = getSafeHomeLocation(player.getUniqueId(), number);
if (DEBUG) {
plugin.getLogger().info("home teleport called for #" + number);
}
home = getSafeHomeLocation(player.getUniqueId(), number);
if (DEBUG) {
plugin.getLogger().info("home get safe loc = " + home);
}
// Check if the player is a passenger in a boat // Check if the player is a passenger in a boat
if (player.isInsideVehicle()) { if (player.isInsideVehicle()) {
Entity boat = player.getVehicle(); Entity boat = player.getVehicle();
@ -622,9 +531,6 @@ public class IslandsManager {
} }
} }
if (home == null) { if (home == null) {
if (DEBUG) {
plugin.getLogger().info("Fixing home location using safe spot teleport");
}
// Try to fix this teleport location and teleport the player if possible // Try to fix this teleport location and teleport the player if possible
new SafeTeleportBuilder(plugin).entity(player) new SafeTeleportBuilder(plugin).entity(player)
.island(plugin.getIslands().getIsland(player.getUniqueId())) .island(plugin.getIslands().getIsland(player.getUniqueId()))
@ -632,9 +538,6 @@ public class IslandsManager {
.build(); .build();
return; return;
} }
if (DEBUG) {
plugin.getLogger().info("DEBUG: home loc = " + home + " teleporting");
}
player.teleport(home); player.teleport(home);
User user = User.getInstance(player); User user = User.getInstance(player);
if (number == 1) { if (number == 1) {
@ -679,7 +582,6 @@ public class IslandsManager {
if (!plugin.getSettings().isUseOwnGenerator()) { if (!plugin.getSettings().isUseOwnGenerator()) {
// Block check // Block check
if (!location.getBlock().isEmpty() && !location.getBlock().isLiquid()) { if (!location.getBlock().isEmpty() && !location.getBlock().isLiquid()) {
plugin.getLogger().info("Found solid block at island height - adding");
createIsland(location); createIsland(location);
return true; return true;
} }
@ -690,7 +592,6 @@ public class IslandsManager {
for (int z = -5; z <= 5; z++) { for (int z = -5; z <= 5; z++) {
if (!location.getWorld().getBlockAt(x + location.getBlockX(), y, z + location.getBlockZ()).isEmpty() if (!location.getWorld().getBlockAt(x + location.getBlockX(), y, z + location.getBlockZ()).isEmpty()
&& !location.getWorld().getBlockAt(x + location.getBlockX(), y, z + location.getBlockZ()).isLiquid()) { && !location.getWorld().getBlockAt(x + location.getBlockX(), y, z + location.getBlockZ()).isLiquid()) {
plugin.getLogger().info("Solid block found during long search - adding ");
createIsland(location); createIsland(location);
return true; return true;
} }
@ -721,10 +622,7 @@ public class IslandsManager {
* @return true if the player is the owner of their island, i.e., owner or team leader * @return true if the player is the owner of their island, i.e., owner or team leader
*/ */
public boolean isOwner(UUID uniqueId) { public boolean isOwner(UUID uniqueId) {
if (hasIsland(uniqueId)) { return hasIsland(uniqueId) ? getIsland(uniqueId).getOwner().equals(uniqueId) : false;
return getIsland(uniqueId).getOwner().equals(uniqueId);
}
return false;
} }
/** /**
@ -734,21 +632,11 @@ public class IslandsManager {
islandCache.clear(); islandCache.clear();
spawn = null; spawn = null;
try { try {
if (DEBUG) {
plugin.getLogger().info("DEBUG: loading grid");
}
for (Island island : handler.loadObjects()) { for (Island island : handler.loadObjects()) {
if (DEBUG) {
plugin.getLogger().info("DEBUG: adding island at "+ island.getCenter());
}
islandCache.addIsland(island); islandCache.addIsland(island);
} }
} catch (Exception e) { } catch (Exception e) {
plugin.getLogger().severe("Could not load islands to cache! " + e.getMessage()); plugin.getLogger().severe(()->"Could not load islands to cache! " + e.getMessage());
e.printStackTrace();
}
if (DEBUG) {
plugin.getLogger().info("DEBUG: islands loaded");
} }
} }
@ -822,9 +710,6 @@ public class IslandsManager {
* @param playerUUID - the player's UUID * @param playerUUID - the player's UUID
*/ */
public void removePlayer(UUID playerUUID) { public void removePlayer(UUID playerUUID) {
if (DEBUG) {
plugin.getLogger().info("DEBUG: removing player");
}
islandCache.removePlayer(playerUUID); islandCache.removePlayer(playerUUID);
} }
@ -837,22 +722,18 @@ public class IslandsManager {
// Teleport players away // Teleport players away
for (Player player : plugin.getServer().getOnlinePlayers()) { for (Player player : plugin.getServer().getOnlinePlayers()) {
if (island.inIslandSpace(player.getLocation().getBlockX(), player.getLocation().getBlockZ())) { if (island.inIslandSpace(player.getLocation().getBlockX(), player.getLocation().getBlockZ())) {
//plugin.getLogger().info("DEBUG: in island space");
// Teleport island players to their island home // Teleport island players to their island home
if (plugin.getPlayers().hasIsland(player.getUniqueId()) || plugin.getPlayers().inTeam(player.getUniqueId())) { if (plugin.getPlayers().hasIsland(player.getUniqueId()) || plugin.getPlayers().inTeam(player.getUniqueId())) {
//plugin.getLogger().info("DEBUG: home teleport");
homeTeleport(player); homeTeleport(player);
} else { } else {
//plugin.getLogger().info("DEBUG: move player to spawn");
// Move player to spawn // Move player to spawn
Island spawn = getSpawn(); Island spawn = getSpawn();
if (spawn != null) { if (spawn != null) {
// go to island spawn // go to island spawn
player.teleport(plugin.getIslandWorldManager().getIslandWorld().getSpawnLocation()); player.teleport(plugin.getIslandWorldManager().getIslandWorld().getSpawnLocation());
//plugin.getLogger().warning("During island deletion player " + player.getName() + " sent to spawn.");
} else { } else {
if (!player.performCommand(Constants.SPAWNCOMMAND)) { if (!player.performCommand(Constants.SPAWNCOMMAND)) {
plugin.getLogger().warning( plugin.getLogger().warning(()->
"During island deletion player " + player.getName() + " could not be sent to spawn so was dropped, sorry."); "During island deletion player " + player.getName() + " could not be sent to spawn so was dropped, sorry.");
} }
} }
@ -869,36 +750,26 @@ public class IslandsManager {
Collection<Island> collection = islandCache.getIslands(); Collection<Island> collection = islandCache.getIslands();
if(async){ if(async){
Runnable save = () -> { Runnable save = () -> {
int index = 1;
for(Island island : collection){ for(Island island : collection){
if (DEBUG) {
plugin.getLogger().info("DEBUG: saving island async " + index++);
}
try { try {
handler.saveObject(island); handler.saveObject(island);
} catch (Exception e) { } catch (Exception e) {
plugin.getLogger().severe("Could not save island to datavase when running async! " + e.getMessage()); plugin.getLogger().severe(()->"Could not save island to datavase when running async! " + e.getMessage());
} }
} }
}; };
plugin.getServer().getScheduler().runTaskAsynchronously(plugin, save); plugin.getServer().getScheduler().runTaskAsynchronously(plugin, save);
} else { } else {
int index = 1;
for(Island island : collection){ for(Island island : collection){
if (DEBUG) {
plugin.getLogger().info("DEBUG: saving island " + index++);
}
try { try {
handler.saveObject(island); handler.saveObject(island);
} catch (Exception e) { } catch (Exception e) {
plugin.getLogger().severe("Could not save island to datavase when running sync! " + e.getMessage()); plugin.getLogger().severe(()->"Could not save island to datavase when running sync! " + e.getMessage());
} }
} }
} }
} }
// Metrics-related methods //
/** /**
* Set the island name * Set the island name
* @param owner - the island owner * @param owner - the island owner
@ -915,15 +786,8 @@ public class IslandsManager {
*/ */
public boolean setJoinTeam(Island teamIsland, UUID playerUUID) { public boolean setJoinTeam(Island teamIsland, UUID playerUUID) {
// Add player to new island // Add player to new island
if (DEBUG) {
plugin.getLogger().info("DEBUG: Adding player to new island");
}
teamIsland.addMember(playerUUID); teamIsland.addMember(playerUUID);
islandCache.addPlayer(playerUUID, teamIsland); islandCache.addPlayer(playerUUID, teamIsland);
if (DEBUG) {
plugin.getLogger().info("DEBUG: new team member list:");
plugin.getLogger().info(teamIsland.getMemberSet().toString());
}
// Save the database // Save the database
save(false); save(false);
@ -939,9 +803,6 @@ public class IslandsManager {
* @param playerUUID - the player's UUID * @param playerUUID - the player's UUID
*/ */
public void setLeaveTeam(UUID playerUUID) { public void setLeaveTeam(UUID playerUUID) {
if (DEBUG) {
plugin.getLogger().info("DEBUG: leaving team");
}
plugin.getPlayers().clearHomeLocations(playerUUID); plugin.getPlayers().clearHomeLocations(playerUUID);
removePlayer(playerUUID); removePlayer(playerUUID);
} }

View File

@ -8,8 +8,8 @@ import java.util.HashMap;
import java.util.Locale; import java.util.Locale;
import us.tastybento.bskyblock.BSkyBlock; import us.tastybento.bskyblock.BSkyBlock;
import us.tastybento.bskyblock.api.user.User;
import us.tastybento.bskyblock.api.localization.BSBLocale; import us.tastybento.bskyblock.api.localization.BSBLocale;
import us.tastybento.bskyblock.api.user.User;
import us.tastybento.bskyblock.util.FileLister; import us.tastybento.bskyblock.util.FileLister;
/** /**

View File

@ -2,7 +2,6 @@ package us.tastybento.bskyblock.managers;
import java.beans.IntrospectionException; import java.beans.IntrospectionException;
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.InvocationTargetException;
import java.sql.SQLException;
import java.util.Collection; import java.util.Collection;
import java.util.Collections; import java.util.Collections;
import java.util.HashMap; import java.util.HashMap;
@ -586,8 +585,7 @@ public class PlayersManager{
} catch (IllegalAccessException | IllegalArgumentException } catch (IllegalAccessException | IllegalArgumentException
| InvocationTargetException | SecurityException | InvocationTargetException | SecurityException
| InstantiationException | NoSuchMethodException | IntrospectionException e) {
| IntrospectionException | SQLException e) {
plugin.getLogger().severe("Could not save player to database: " + playerUUID + " " + e.getMessage()); plugin.getLogger().severe("Could not save player to database: " + playerUUID + " " + e.getMessage());
} }
} else { } else {

View File

@ -1,11 +1,11 @@
package us.tastybento.bskyblock.panels; package us.tastybento.bskyblock.panels;
import us.tastybento.bskyblock.BSkyBlock; import us.tastybento.bskyblock.BSkyBlock;
import us.tastybento.bskyblock.api.user.User;
import us.tastybento.bskyblock.api.flags.Flag; import us.tastybento.bskyblock.api.flags.Flag;
import us.tastybento.bskyblock.api.panels.PanelItem; import us.tastybento.bskyblock.api.panels.PanelItem;
import us.tastybento.bskyblock.api.panels.builders.PanelBuilder; import us.tastybento.bskyblock.api.panels.builders.PanelBuilder;
import us.tastybento.bskyblock.api.panels.builders.PanelItemBuilder; import us.tastybento.bskyblock.api.panels.builders.PanelItemBuilder;
import us.tastybento.bskyblock.api.user.User;
/** /**
* @author Poslovitch * @author Poslovitch

View File

@ -51,11 +51,11 @@ import us.tastybento.bskyblock.BSkyBlock;
import us.tastybento.bskyblock.Constants; import us.tastybento.bskyblock.Constants;
import us.tastybento.bskyblock.Settings; import us.tastybento.bskyblock.Settings;
import us.tastybento.bskyblock.api.commands.CompositeCommand; import us.tastybento.bskyblock.api.commands.CompositeCommand;
import us.tastybento.bskyblock.api.user.User;
import us.tastybento.bskyblock.api.events.IslandBaseEvent; import us.tastybento.bskyblock.api.events.IslandBaseEvent;
import us.tastybento.bskyblock.api.events.team.TeamEvent; import us.tastybento.bskyblock.api.events.team.TeamEvent;
import us.tastybento.bskyblock.api.flags.Flag; import us.tastybento.bskyblock.api.flags.Flag;
import us.tastybento.bskyblock.api.flags.FlagBuilder; import us.tastybento.bskyblock.api.flags.FlagBuilder;
import us.tastybento.bskyblock.api.user.User;
import us.tastybento.bskyblock.database.objects.Island; import us.tastybento.bskyblock.database.objects.Island;
import us.tastybento.bskyblock.generators.IslandWorld; import us.tastybento.bskyblock.generators.IslandWorld;
import us.tastybento.bskyblock.listeners.flags.AbstractFlagListener; import us.tastybento.bskyblock.listeners.flags.AbstractFlagListener;

View File

@ -28,9 +28,9 @@ import org.junit.runner.RunWith;
import org.mockito.Mockito; import org.mockito.Mockito;
import org.powermock.modules.junit4.PowerMockRunner; import org.powermock.modules.junit4.PowerMockRunner;
import us.tastybento.bskyblock.api.user.User;
import us.tastybento.bskyblock.api.panels.ClickType; import us.tastybento.bskyblock.api.panels.ClickType;
import us.tastybento.bskyblock.api.panels.PanelItem; import us.tastybento.bskyblock.api.panels.PanelItem;
import us.tastybento.bskyblock.api.user.User;
@RunWith(PowerMockRunner.class) @RunWith(PowerMockRunner.class)
public class PanelItemBuilderTest { public class PanelItemBuilderTest {

View File

@ -30,8 +30,6 @@ import org.powermock.reflect.Whitebox;
import us.tastybento.bskyblock.BSkyBlock; import us.tastybento.bskyblock.BSkyBlock;
import us.tastybento.bskyblock.Settings; import us.tastybento.bskyblock.Settings;
import us.tastybento.bskyblock.api.flags.Flag; import us.tastybento.bskyblock.api.flags.Flag;
import us.tastybento.bskyblock.database.mysql.MySQLDatabaseConnecter;
import us.tastybento.bskyblock.database.mysql.MySQLDatabaseHandler;
import us.tastybento.bskyblock.database.objects.Island; import us.tastybento.bskyblock.database.objects.Island;
import us.tastybento.bskyblock.database.objects.Players; import us.tastybento.bskyblock.database.objects.Players;
import us.tastybento.bskyblock.lists.Flags; import us.tastybento.bskyblock.lists.Flags;