Refactors a lot of code, and extracts permission-related functions to the PermissionHelper class
This commit is contained in:
parent
b57f988b62
commit
f681db629f
@ -15,10 +15,10 @@ import net.knarcraft.stargate.listener.WorldEventListener;
|
|||||||
import net.knarcraft.stargate.portal.GateHandler;
|
import net.knarcraft.stargate.portal.GateHandler;
|
||||||
import net.knarcraft.stargate.portal.Portal;
|
import net.knarcraft.stargate.portal.Portal;
|
||||||
import net.knarcraft.stargate.portal.PortalHandler;
|
import net.knarcraft.stargate.portal.PortalHandler;
|
||||||
import net.knarcraft.stargate.portal.PortalOption;
|
|
||||||
import net.knarcraft.stargate.thread.BlockChangeThread;
|
import net.knarcraft.stargate.thread.BlockChangeThread;
|
||||||
import net.knarcraft.stargate.thread.StarGateThread;
|
import net.knarcraft.stargate.thread.StarGateThread;
|
||||||
import net.knarcraft.stargate.utility.EconomyHandler;
|
import net.knarcraft.stargate.utility.EconomyHandler;
|
||||||
|
import net.knarcraft.stargate.utility.PermissionHelper;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
import org.bukkit.Server;
|
import org.bukkit.Server;
|
||||||
@ -28,7 +28,6 @@ import org.bukkit.command.CommandSender;
|
|||||||
import org.bukkit.command.PluginCommand;
|
import org.bukkit.command.PluginCommand;
|
||||||
import org.bukkit.configuration.file.FileConfiguration;
|
import org.bukkit.configuration.file.FileConfiguration;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.plugin.Plugin;
|
|
||||||
import org.bukkit.plugin.PluginDescriptionFile;
|
import org.bukkit.plugin.PluginDescriptionFile;
|
||||||
import org.bukkit.plugin.PluginManager;
|
import org.bukkit.plugin.PluginManager;
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
@ -192,7 +191,7 @@ public class Stargate extends JavaPlugin {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Check if the player can use the private gate
|
// Check if the player can use the private gate
|
||||||
if (portal.isPrivate() && !Stargate.canPrivate(player, portal)) {
|
if (portal.isPrivate() && !PermissionHelper.canPrivate(player, portal)) {
|
||||||
Stargate.sendMessage(player, Stargate.getString("denyMsg"));
|
Stargate.sendMessage(player, Stargate.getString("denyMsg"));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -207,109 +206,14 @@ public class Stargate extends JavaPlugin {
|
|||||||
portal.open(player, false);
|
portal.open(player, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* Check whether the player has the given permissions.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Checks whether a player has the given permission
|
* Creates a StargateAccessPortal and gives the result
|
||||||
*
|
|
||||||
* <p>This is the same as player.hasPermission(), but this function allows for printing permission debugging info.</p>
|
|
||||||
*
|
|
||||||
* @param player <p>The player to check</p>
|
|
||||||
* @param perm <p>The permission to check</p>
|
|
||||||
* @return <p>True if the player has the permission</p>
|
|
||||||
*/
|
|
||||||
public static boolean hasPermission(Player player, String perm) {
|
|
||||||
if (permissionDebuggingEnabled) {
|
|
||||||
Stargate.debug("hasPerm::SuperPerm(" + player.getName() + ")", perm + " => " + player.hasPermission(perm));
|
|
||||||
}
|
|
||||||
return player.hasPermission(perm);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Check a deep permission, this will check to see if the permissions is defined for this use
|
|
||||||
*
|
|
||||||
* <p>If using Permissions it will return the same as hasPerm. If using SuperPerms will return true if the node
|
|
||||||
* isn't defined, or the value of the node if it is</p>
|
|
||||||
*
|
|
||||||
* @param player <p>The player to check</p>
|
|
||||||
* @param permission <p>The permission to check</p>
|
|
||||||
* @return <p>True if the player has the permission or it is not set</p>
|
|
||||||
*/
|
|
||||||
public static boolean hasPermDeep(Player player, String permission) {
|
|
||||||
if (!player.isPermissionSet(permission)) {
|
|
||||||
if (permissionDebuggingEnabled) {
|
|
||||||
Stargate.debug("hasPermDeep::SuperPerm", permission + " => true");
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if (permissionDebuggingEnabled) {
|
|
||||||
Stargate.debug("hasPermDeep::SuperPerms", permission + " => " + player.hasPermission(permission));
|
|
||||||
}
|
|
||||||
return player.hasPermission(permission);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Check whether player can teleport to dest world
|
|
||||||
*/
|
|
||||||
public static boolean cannotAccessWorld(Player player, String world) {
|
|
||||||
// Can use all stargate player features or access all worlds
|
|
||||||
if (hasPermission(player, "stargate.use") || hasPermission(player, "stargate.world")) {
|
|
||||||
// Do a deep check to see if the player lacks this specific world node
|
|
||||||
return !hasPermDeep(player, "stargate.world." + world);
|
|
||||||
}
|
|
||||||
// Can access dest world
|
|
||||||
return !hasPermission(player, "stargate.world." + world);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Checks whether a player can access the given network
|
|
||||||
* @param player <p>The player to check</p>
|
|
||||||
* @param network <p>The network to check</p>
|
|
||||||
* @return <p>True if the player is denied from accessing the network</p>
|
|
||||||
*/
|
|
||||||
public static boolean cannotAccessNetwork(Player player, String network) {
|
|
||||||
// Can user all stargate player features, or access all networks
|
|
||||||
if (hasPermission(player, "stargate.use") || hasPermission(player, "stargate.network")) {
|
|
||||||
// Do a deep check to see if the player lacks this specific network node
|
|
||||||
return !hasPermDeep(player, "stargate.network." + network);
|
|
||||||
}
|
|
||||||
//Check if the player can access this network
|
|
||||||
if (hasPermission(player, "stargate.network." + network)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
// Is able to create personal gates (Assumption is made they can also access them)
|
|
||||||
String playerName = player.getName();
|
|
||||||
if (playerName.length() > 11) playerName = playerName.substring(0, 11);
|
|
||||||
return !network.equals(playerName) || !hasPermission(player, "stargate.create.personal");
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Check whether the player can access this server
|
|
||||||
*/
|
|
||||||
public static boolean canAccessServer(Player player, String server) {
|
|
||||||
// Can user all stargate player features, or access all servers
|
|
||||||
if (hasPermission(player, "stargate.use") || hasPermission(player, "stargate.servers")) {
|
|
||||||
// Do a deep check to see if the player lacks this specific server node
|
|
||||||
return hasPermDeep(player, "stargate.server." + server);
|
|
||||||
}
|
|
||||||
// Can access this server
|
|
||||||
return hasPermission(player, "stargate.server." + server);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Call the StargateAccessPortal event, used for other plugins to bypass Permissions checks
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates a stargate access event and gives the result
|
|
||||||
*
|
*
|
||||||
* <p>The event is used for other plugins to bypass the permission checks</p>
|
* <p>The event is used for other plugins to bypass the permission checks</p>
|
||||||
*
|
*
|
||||||
* @param player <p>The player trying to use the portal</p>
|
* @param player <p>The player trying to use the portal</p>
|
||||||
* @param portal <p>The portal the player is trying to use</p>
|
* @param portal <p>The portal the player is trying to use</p>
|
||||||
* @param deny <p>Whether the player's access has already been denied by a check</p>
|
* @param deny <p>Whether the player's access has already been denied by a check</p>
|
||||||
* @return <p>False if the player should be allowed through the portal</p>
|
* @return <p>False if the player should be allowed through the portal</p>
|
||||||
*/
|
*/
|
||||||
public static boolean cannotAccessPortal(Player player, Portal portal, boolean deny) {
|
public static boolean cannotAccessPortal(Player player, Portal portal, boolean deny) {
|
||||||
@ -329,138 +233,19 @@ public class Stargate extends JavaPlugin {
|
|||||||
public static boolean cannotAccessPortal(Player player, Portal entrancePortal, Portal destination) {
|
public static boolean cannotAccessPortal(Player player, Portal entrancePortal, Portal destination) {
|
||||||
boolean deny = false;
|
boolean deny = false;
|
||||||
// Check if player has access to this server for Bungee gates
|
// Check if player has access to this server for Bungee gates
|
||||||
if (entrancePortal.isBungee() && !Stargate.canAccessServer(player, entrancePortal.getNetwork())) {
|
if (entrancePortal.isBungee() && !PermissionHelper.canAccessServer(player, entrancePortal.getNetwork())) {
|
||||||
Stargate.debug("cannotAccessPortal", "Cannot access server");
|
Stargate.debug("cannotAccessPortal", "Cannot access server");
|
||||||
deny = true;
|
deny = true;
|
||||||
} else if (Stargate.cannotAccessNetwork(player, entrancePortal.getNetwork())) {
|
} else if (PermissionHelper.cannotAccessNetwork(player, entrancePortal.getNetwork())) {
|
||||||
Stargate.debug("cannotAccessPortal", "Cannot access network");
|
Stargate.debug("cannotAccessPortal", "Cannot access network");
|
||||||
deny = true;
|
deny = true;
|
||||||
} else if (!entrancePortal.isBungee() && Stargate.cannotAccessWorld(player, destination.getWorld().getName())) {
|
} else if (!entrancePortal.isBungee() && PermissionHelper.cannotAccessWorld(player, destination.getWorld().getName())) {
|
||||||
Stargate.debug("cannotAccessPortal", "Cannot access world");
|
Stargate.debug("cannotAccessPortal", "Cannot access world");
|
||||||
deny = true;
|
deny = true;
|
||||||
}
|
}
|
||||||
return Stargate.cannotAccessPortal(player, entrancePortal, deny);
|
return Stargate.cannotAccessPortal(player, entrancePortal, deny);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* Return true if the portal is free for the player
|
|
||||||
*/
|
|
||||||
public static boolean isFree(Player player, Portal src, Portal dest) {
|
|
||||||
// This gate is free
|
|
||||||
if (src.isFree()) return true;
|
|
||||||
// Player gets free use
|
|
||||||
if (hasPermission(player, "stargate.free") || Stargate.hasPermission(player, "stargate.free.use")) return true;
|
|
||||||
// Don't charge for free destination gates
|
|
||||||
return dest != null && !EconomyHandler.chargeFreeDestination && dest.isFree();
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Check whether the player can see this gate (Hidden property check)
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Checks whether the player can see this gate (Hidden property check)
|
|
||||||
*
|
|
||||||
* <p>This decides if the player can see the gate on the network selection screen</p>
|
|
||||||
*
|
|
||||||
* @param player <p>The player to check</p>
|
|
||||||
* @param portal <p>The portal to check</p>
|
|
||||||
* @return <p>True if the given player can see the given portal</p>
|
|
||||||
*/
|
|
||||||
public static boolean canSee(Player player, Portal portal) {
|
|
||||||
// The gate is not hidden
|
|
||||||
if (!portal.isHidden()) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
// The player is an admin with the ability to see hidden gates
|
|
||||||
if (hasPermission(player, "stargate.admin") || hasPermission(player, "stargate.admin.hidden")) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
// The player is the owner of the gate
|
|
||||||
return portal.isOwner(player);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Check if the player can use this private gate
|
|
||||||
*/
|
|
||||||
public static boolean canPrivate(Player player, Portal portal) {
|
|
||||||
// Check if the player is the owner of the gate
|
|
||||||
if (portal.isOwner(player)) return true;
|
|
||||||
// The player is an admin with the ability to use private gates
|
|
||||||
return hasPermission(player, "stargate.admin") || hasPermission(player, "stargate.admin.private");
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Check if the player has access to {option}
|
|
||||||
*/
|
|
||||||
public static boolean canOption(Player player, PortalOption option) {
|
|
||||||
// Check if the player can use all options
|
|
||||||
if (hasPermission(player, "stargate.option") || option == PortalOption.BUNGEE) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
// Check if they can use this specific option
|
|
||||||
return hasPermission(player, option.getPermissionString());
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Check if the player can create gates on {network}
|
|
||||||
*/
|
|
||||||
public static boolean canCreate(Player player, String network) {
|
|
||||||
// Check for general create
|
|
||||||
if (hasPermission(player, "stargate.create")) return true;
|
|
||||||
// Check for all network create permission
|
|
||||||
if (hasPermission(player, "stargate.create.network")) {
|
|
||||||
// Do a deep check to see if the player lacks this specific network node
|
|
||||||
return hasPermDeep(player, "stargate.create.network." + network);
|
|
||||||
}
|
|
||||||
// Check for this specific network
|
|
||||||
return hasPermission(player, "stargate.create.network." + network);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Check if the player can create a personal gate
|
|
||||||
*/
|
|
||||||
public static boolean canCreatePersonal(Player player) {
|
|
||||||
// Check for general create
|
|
||||||
if (hasPermission(player, "stargate.create")) return true;
|
|
||||||
// Check for personal
|
|
||||||
return hasPermission(player, "stargate.create.personal");
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Check if the player can create this gate layout
|
|
||||||
*/
|
|
||||||
public static boolean canCreateGate(Player player, String gate) {
|
|
||||||
// Check for general create
|
|
||||||
if (hasPermission(player, "stargate.create")) return true;
|
|
||||||
// Check for all gate create permissions
|
|
||||||
if (hasPermission(player, "stargate.create.gate")) {
|
|
||||||
// Do a deep check to see if the player lacks this specific gate node
|
|
||||||
return hasPermDeep(player, "stargate.create.gate." + gate);
|
|
||||||
}
|
|
||||||
// Check for this specific gate
|
|
||||||
return hasPermission(player, "stargate.create.gate." + gate);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Check if the player can destroy this gate
|
|
||||||
*/
|
|
||||||
public static boolean canDestroy(Player player, Portal portal) {
|
|
||||||
String network = portal.getNetwork();
|
|
||||||
// Check for general destroy
|
|
||||||
if (hasPermission(player, "stargate.destroy")) return true;
|
|
||||||
// Check for all network destroy permission
|
|
||||||
if (hasPermission(player, "stargate.destroy.network")) {
|
|
||||||
// Do a deep check to see if the player lacks permission for this network node
|
|
||||||
return hasPermDeep(player, "stargate.destroy.network." + network);
|
|
||||||
}
|
|
||||||
// Check for this specific network
|
|
||||||
if (hasPermission(player, "stargate.destroy.network." + network)) return true;
|
|
||||||
// Check for personal gate
|
|
||||||
return portal.isOwner(player) && hasPermission(player, "stargate.destroy.personal");
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Replaces a list of variables in a string in the order they are given
|
* Replaces a list of variables in a string in the order they are given
|
||||||
*
|
*
|
||||||
@ -518,7 +303,37 @@ public class Stargate extends JavaPlugin {
|
|||||||
|
|
||||||
log.info(pluginDescriptionFile.getName() + " v." + pluginDescriptionFile.getVersion() + " is enabled.");
|
log.info(pluginDescriptionFile.getName() + " v." + pluginDescriptionFile.getVersion() + " is enabled.");
|
||||||
|
|
||||||
// Register events before loading gates to stop weird things happening.
|
//Register events before loading gates to stop weird things happening.
|
||||||
|
registerEventListeners();
|
||||||
|
|
||||||
|
this.loadConfig();
|
||||||
|
|
||||||
|
//Enable the required channels for Bungee support
|
||||||
|
if (enableBungee) {
|
||||||
|
startStopBungeeListener(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
// It is important to load languages here, as they are used during reloadGates()
|
||||||
|
languageLoader = new LanguageLoader(languageFolder, Stargate.languageName);
|
||||||
|
|
||||||
|
this.createMissingFolders();
|
||||||
|
this.loadGates();
|
||||||
|
this.loadAllPortals();
|
||||||
|
|
||||||
|
// Check to see if Economy is loaded yet.
|
||||||
|
setupVaultEconomy();
|
||||||
|
|
||||||
|
//Run necessary threads
|
||||||
|
getServer().getScheduler().runTaskTimer(this, new StarGateThread(), 0L, 100L);
|
||||||
|
getServer().getScheduler().runTaskTimer(this, new BlockChangeThread(), 0L, 1L);
|
||||||
|
|
||||||
|
this.registerCommands();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Registers all event listeners
|
||||||
|
*/
|
||||||
|
private void registerEventListeners() {
|
||||||
pluginManager.registerEvents(new PlayerEventListener(), this);
|
pluginManager.registerEvents(new PlayerEventListener(), this);
|
||||||
pluginManager.registerEvents(new BlockEventListener(), this);
|
pluginManager.registerEvents(new BlockEventListener(), this);
|
||||||
|
|
||||||
@ -527,30 +342,11 @@ public class Stargate extends JavaPlugin {
|
|||||||
pluginManager.registerEvents(new PortalEventListener(), this);
|
pluginManager.registerEvents(new PortalEventListener(), this);
|
||||||
pluginManager.registerEvents(new WorldEventListener(), this);
|
pluginManager.registerEvents(new WorldEventListener(), this);
|
||||||
pluginManager.registerEvents(new PluginEventListener(this), this);
|
pluginManager.registerEvents(new PluginEventListener(this), this);
|
||||||
|
|
||||||
this.loadConfig();
|
|
||||||
|
|
||||||
// Enable the required channels for Bungee support
|
|
||||||
if (enableBungee) {
|
|
||||||
startStopBungeeListener(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
// It is important to load languages here, as they are used during reloadGates()
|
|
||||||
languageLoader = new LanguageLoader(languageFolder, Stargate.languageName);
|
|
||||||
|
|
||||||
this.migrate();
|
|
||||||
this.loadGates();
|
|
||||||
this.loadAllPortals();
|
|
||||||
|
|
||||||
// Check to see if Economy is loaded yet.
|
|
||||||
setupVaultEconomy();
|
|
||||||
|
|
||||||
getServer().getScheduler().runTaskTimer(this, new StarGateThread(), 0L, 100L);
|
|
||||||
getServer().getScheduler().runTaskTimer(this, new BlockChangeThread(), 0L, 1L);
|
|
||||||
|
|
||||||
this.registerCommands();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Registers a command for this plugin
|
||||||
|
*/
|
||||||
private void registerCommands() {
|
private void registerCommands() {
|
||||||
PluginCommand stargateCommand = this.getCommand("stargate");
|
PluginCommand stargateCommand = this.getCommand("stargate");
|
||||||
if (stargateCommand != null) {
|
if (stargateCommand != null) {
|
||||||
@ -559,34 +355,63 @@ public class Stargate extends JavaPlugin {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Loads all config values
|
||||||
|
*/
|
||||||
public void loadConfig() {
|
public void loadConfig() {
|
||||||
reloadConfig();
|
this.reloadConfig();
|
||||||
newConfig = this.getConfig();
|
newConfig = this.getConfig();
|
||||||
// Copy default values if required
|
// Copy default values if required
|
||||||
newConfig.options().copyDefaults(true);
|
newConfig.options().copyDefaults(true);
|
||||||
|
|
||||||
// Load values into variables
|
//Language
|
||||||
|
languageName = newConfig.getString("language");
|
||||||
|
|
||||||
|
//Folders
|
||||||
portalFolder = newConfig.getString("folders.portalFolder");
|
portalFolder = newConfig.getString("folders.portalFolder");
|
||||||
gateFolder = newConfig.getString("folders.gateFolder");
|
gateFolder = newConfig.getString("folders.gateFolder");
|
||||||
|
|
||||||
String defaultNetwork = newConfig.getString("gates.defaultGateNetwork");
|
//Debug
|
||||||
defaultGateNetwork = defaultNetwork != null ? defaultNetwork.trim() : null;
|
|
||||||
destroyExplosion = newConfig.getBoolean("gates.destroyedByExplosion");
|
|
||||||
maxGates = newConfig.getInt("gates.maxGatesEachNetwork");
|
|
||||||
languageName = newConfig.getString("language");
|
|
||||||
rememberDestination = newConfig.getBoolean("gates.cosmetic.rememberDestination");
|
|
||||||
ignoreEntrance = newConfig.getBoolean("gates.integrity.ignoreEntrance");
|
|
||||||
handleVehicles = newConfig.getBoolean("gates.functionality.handleVehicles");
|
|
||||||
sortNetworkDestinations = newConfig.getBoolean("gates.cosmetic.sortNetworkDestinations");
|
|
||||||
protectEntrance = newConfig.getBoolean("gates.integrity.protectEntrance");
|
|
||||||
enableBungee = newConfig.getBoolean("gates.functionality.enableBungee");
|
|
||||||
verifyPortals = newConfig.getBoolean("gates.integrity.verifyPortals");
|
|
||||||
// Sign color
|
|
||||||
loadSignColor(newConfig.getString("gates.cosmetic.signColor"));
|
|
||||||
// Debug
|
|
||||||
debuggingEnabled = newConfig.getBoolean("debugging.debug");
|
debuggingEnabled = newConfig.getBoolean("debugging.debug");
|
||||||
permissionDebuggingEnabled = newConfig.getBoolean("debugging.permissionDebug");
|
permissionDebuggingEnabled = newConfig.getBoolean("debugging.permissionDebug");
|
||||||
// Economy
|
|
||||||
|
//Gates
|
||||||
|
loadGateConfig();
|
||||||
|
|
||||||
|
//Economy
|
||||||
|
loadEconomyConfig();
|
||||||
|
|
||||||
|
this.saveConfig();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Loads all config values related to gates
|
||||||
|
*/
|
||||||
|
private void loadGateConfig() {
|
||||||
|
String defaultNetwork = newConfig.getString("gates.defaultGateNetwork");
|
||||||
|
defaultGateNetwork = defaultNetwork != null ? defaultNetwork.trim() : null;
|
||||||
|
maxGates = newConfig.getInt("gates.maxGatesEachNetwork");
|
||||||
|
|
||||||
|
//Functionality
|
||||||
|
handleVehicles = newConfig.getBoolean("gates.functionality.handleVehicles");
|
||||||
|
enableBungee = newConfig.getBoolean("gates.functionality.enableBungee");
|
||||||
|
|
||||||
|
//Integrity
|
||||||
|
protectEntrance = newConfig.getBoolean("gates.integrity.protectEntrance");
|
||||||
|
verifyPortals = newConfig.getBoolean("gates.integrity.verifyPortals");
|
||||||
|
ignoreEntrance = newConfig.getBoolean("gates.integrity.ignoreEntrance");
|
||||||
|
destroyExplosion = newConfig.getBoolean("gates.integrity.destroyedByExplosion");
|
||||||
|
|
||||||
|
//Cosmetic
|
||||||
|
sortNetworkDestinations = newConfig.getBoolean("gates.cosmetic.sortNetworkDestinations");
|
||||||
|
rememberDestination = newConfig.getBoolean("gates.cosmetic.rememberDestination");
|
||||||
|
loadSignColor(newConfig.getString("gates.cosmetic.signColor"));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Loads all config values related to economy
|
||||||
|
*/
|
||||||
|
private void loadEconomyConfig() {
|
||||||
EconomyHandler.economyEnabled = newConfig.getBoolean("economy.useEconomy");
|
EconomyHandler.economyEnabled = newConfig.getBoolean("economy.useEconomy");
|
||||||
EconomyHandler.setCreateCost(newConfig.getInt("economy.createCost"));
|
EconomyHandler.setCreateCost(newConfig.getInt("economy.createCost"));
|
||||||
EconomyHandler.setDestroyCost(newConfig.getInt("economy.destroyCost"));
|
EconomyHandler.setDestroyCost(newConfig.getInt("economy.destroyCost"));
|
||||||
@ -594,12 +419,11 @@ public class Stargate extends JavaPlugin {
|
|||||||
EconomyHandler.toOwner = newConfig.getBoolean("economy.toOwner");
|
EconomyHandler.toOwner = newConfig.getBoolean("economy.toOwner");
|
||||||
EconomyHandler.chargeFreeDestination = newConfig.getBoolean("economy.chargeFreeDestination");
|
EconomyHandler.chargeFreeDestination = newConfig.getBoolean("economy.chargeFreeDestination");
|
||||||
EconomyHandler.freeGatesGreen = newConfig.getBoolean("economy.freeGatesGreen");
|
EconomyHandler.freeGatesGreen = newConfig.getBoolean("economy.freeGatesGreen");
|
||||||
|
|
||||||
this.saveConfig();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Loads the correct sign color given a sign color string
|
* Loads the correct sign color given a sign color string
|
||||||
|
*
|
||||||
* @param signColor <p>A string representing a sign color</p>
|
* @param signColor <p>A string representing a sign color</p>
|
||||||
*/
|
*/
|
||||||
private void loadSignColor(String signColor) {
|
private void loadSignColor(String signColor) {
|
||||||
@ -614,18 +438,27 @@ public class Stargate extends JavaPlugin {
|
|||||||
Stargate.signColor = ChatColor.BLACK;
|
Stargate.signColor = ChatColor.BLACK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Forces all open portals to close
|
||||||
|
*/
|
||||||
public void closeAllPortals() {
|
public void closeAllPortals() {
|
||||||
// Close all gates prior to reloading
|
// Close all gates prior to reloading
|
||||||
for (Portal p : openList) {
|
for (Portal openPortal : openList) {
|
||||||
p.close(true);
|
openPortal.close(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Loads all available gates
|
||||||
|
*/
|
||||||
public void loadGates() {
|
public void loadGates() {
|
||||||
GateHandler.loadGates(gateFolder);
|
GateHandler.loadGates(gateFolder);
|
||||||
log.info(Stargate.getString("prefix") + "Loaded " + GateHandler.getGateCount() + " gate layouts");
|
log.info(Stargate.getString("prefix") + "Loaded " + GateHandler.getGateCount() + " gate layouts");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Loads all portals in all un-managed worlds
|
||||||
|
*/
|
||||||
public void loadAllPortals() {
|
public void loadAllPortals() {
|
||||||
for (World world : getServer().getWorlds()) {
|
for (World world : getServer().getWorlds()) {
|
||||||
if (!managedWorlds.contains(world.getName())) {
|
if (!managedWorlds.contains(world.getName())) {
|
||||||
@ -635,8 +468,10 @@ public class Stargate extends JavaPlugin {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void migrate() {
|
/**
|
||||||
// Only migrate if new file doesn't exist.
|
* Creates missing folders
|
||||||
|
*/
|
||||||
|
private void createMissingFolders() {
|
||||||
File newPortalDir = new File(portalFolder);
|
File newPortalDir = new File(portalFolder);
|
||||||
if (!newPortalDir.exists()) {
|
if (!newPortalDir.exists()) {
|
||||||
if (!newPortalDir.mkdirs()) {
|
if (!newPortalDir.mkdirs()) {
|
||||||
@ -651,22 +486,6 @@ public class Stargate extends JavaPlugin {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* Check if a plugin is loaded/enabled already. Returns the plugin if so, null otherwise
|
|
||||||
*/
|
|
||||||
private Plugin checkPlugin(String p) {
|
|
||||||
Plugin plugin = pluginManager.getPlugin(p);
|
|
||||||
return checkPlugin(plugin);
|
|
||||||
}
|
|
||||||
|
|
||||||
private Plugin checkPlugin(Plugin plugin) {
|
|
||||||
if (plugin != null && plugin.isEnabled()) {
|
|
||||||
log.info(Stargate.getString("prefix") + "Found " + plugin.getDescription().getName() + " (v" + plugin.getDescription().getVersion() + ")");
|
|
||||||
return plugin;
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Reloads all portals and files
|
* Reloads all portals and files
|
||||||
*
|
*
|
||||||
|
@ -16,11 +16,16 @@ public class StarGateTabCompleter implements TabCompleter {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @Nullable List<String> onTabComplete(@NotNull CommandSender commandSender, @NotNull Command command,
|
public @Nullable List<String> onTabComplete(@NotNull CommandSender commandSender, @NotNull Command command,
|
||||||
@NotNull String s, @NotNull String[] strings) {
|
@NotNull String s, @NotNull String[] args) {
|
||||||
List<String> commands = new ArrayList<>();
|
List<String> commands = new ArrayList<>();
|
||||||
commands.add("about");
|
commands.add("about");
|
||||||
commands.add("reload");
|
commands.add("reload");
|
||||||
return commands;
|
|
||||||
|
if (args.length == 1) {
|
||||||
|
return commands;
|
||||||
|
} else {
|
||||||
|
return new ArrayList<>();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -70,7 +70,7 @@ public class BlockLocation extends Location {
|
|||||||
* @param x <p>The x position relative to this block's position</p>
|
* @param x <p>The x position relative to this block's position</p>
|
||||||
* @param y <p>The y position relative to this block's position</p>
|
* @param y <p>The y position relative to this block's position</p>
|
||||||
* @param z <p>The z position relative to this block's position</p>
|
* @param z <p>The z position relative to this block's position</p>
|
||||||
* @param yaw <p>The yaw of the location</p>
|
* @param yaw <p>The yaw of the location</p>
|
||||||
* @param rotY <p>The y rotation of the location</p>
|
* @param rotY <p>The y rotation of the location</p>
|
||||||
* @return <p>A new location</p>
|
* @return <p>A new location</p>
|
||||||
*/
|
*/
|
||||||
@ -105,7 +105,7 @@ public class BlockLocation extends Location {
|
|||||||
* @param right <p></p>
|
* @param right <p></p>
|
||||||
* @param depth <p>The y position relative to the current position</p>
|
* @param depth <p>The y position relative to the current position</p>
|
||||||
* @param distance <p>The distance away from the previous location to the new location</p>
|
* @param distance <p>The distance away from the previous location to the new location</p>
|
||||||
* @param yaw <p>The yaw of the location</p>
|
* @param yaw <p>The yaw of the location</p>
|
||||||
* @param rotY <p>Unused</p>
|
* @param rotY <p>Unused</p>
|
||||||
* @param modX <p>x modifier. Defines movement along the x-axis. 0 for no movement</p>
|
* @param modX <p>x modifier. Defines movement along the x-axis. 0 for no movement</p>
|
||||||
* @param modY <p>Unused</p>
|
* @param modY <p>Unused</p>
|
||||||
|
@ -1,12 +1,13 @@
|
|||||||
package net.knarcraft.stargate.listener;
|
package net.knarcraft.stargate.listener;
|
||||||
|
|
||||||
import net.knarcraft.stargate.portal.Portal;
|
|
||||||
import net.knarcraft.stargate.portal.PortalHandler;
|
|
||||||
import net.knarcraft.stargate.Stargate;
|
import net.knarcraft.stargate.Stargate;
|
||||||
import net.knarcraft.stargate.event.StargateDestroyEvent;
|
import net.knarcraft.stargate.event.StargateDestroyEvent;
|
||||||
|
import net.knarcraft.stargate.portal.Portal;
|
||||||
|
import net.knarcraft.stargate.portal.PortalHandler;
|
||||||
import net.knarcraft.stargate.utility.EconomyHandler;
|
import net.knarcraft.stargate.utility.EconomyHandler;
|
||||||
import net.knarcraft.stargate.utility.EconomyHelper;
|
import net.knarcraft.stargate.utility.EconomyHelper;
|
||||||
import net.knarcraft.stargate.utility.MaterialHelper;
|
import net.knarcraft.stargate.utility.MaterialHelper;
|
||||||
|
import net.knarcraft.stargate.utility.PermissionHelper;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
import org.bukkit.block.data.type.WallSign;
|
import org.bukkit.block.data.type.WallSign;
|
||||||
@ -84,7 +85,7 @@ public class BlockEventListener implements Listener {
|
|||||||
String denyMsg = "";
|
String denyMsg = "";
|
||||||
|
|
||||||
//Decide if the user can destroy the portal
|
//Decide if the user can destroy the portal
|
||||||
if (!Stargate.canDestroy(player, portal)) {
|
if (!PermissionHelper.canDestroyPortal(player, portal)) {
|
||||||
denyMsg = Stargate.getString("denyMsg");
|
denyMsg = Stargate.getString("denyMsg");
|
||||||
deny = true;
|
deny = true;
|
||||||
Stargate.log.info(Stargate.getString("prefix") + player.getName() + " tried to destroy gate");
|
Stargate.log.info(Stargate.getString("prefix") + player.getName() + " tried to destroy gate");
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
package net.knarcraft.stargate.listener;
|
package net.knarcraft.stargate.listener;
|
||||||
|
|
||||||
|
import net.knarcraft.stargate.Stargate;
|
||||||
import net.knarcraft.stargate.portal.Portal;
|
import net.knarcraft.stargate.portal.Portal;
|
||||||
import net.knarcraft.stargate.portal.PortalHandler;
|
import net.knarcraft.stargate.portal.PortalHandler;
|
||||||
import net.knarcraft.stargate.Stargate;
|
|
||||||
import net.knarcraft.stargate.utility.EntityHelper;
|
import net.knarcraft.stargate.utility.EntityHelper;
|
||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
import org.bukkit.entity.Entity;
|
import org.bukkit.entity.Entity;
|
||||||
|
@ -1,13 +1,14 @@
|
|||||||
package net.knarcraft.stargate.listener;
|
package net.knarcraft.stargate.listener;
|
||||||
|
|
||||||
|
import net.knarcraft.stargate.Stargate;
|
||||||
import net.knarcraft.stargate.container.BlockLocation;
|
import net.knarcraft.stargate.container.BlockLocation;
|
||||||
import net.knarcraft.stargate.portal.Portal;
|
import net.knarcraft.stargate.portal.Portal;
|
||||||
import net.knarcraft.stargate.portal.PortalHandler;
|
import net.knarcraft.stargate.portal.PortalHandler;
|
||||||
import net.knarcraft.stargate.Stargate;
|
|
||||||
import net.knarcraft.stargate.utility.BungeeHelper;
|
import net.knarcraft.stargate.utility.BungeeHelper;
|
||||||
import net.knarcraft.stargate.utility.EconomyHandler;
|
import net.knarcraft.stargate.utility.EconomyHandler;
|
||||||
import net.knarcraft.stargate.utility.EconomyHelper;
|
import net.knarcraft.stargate.utility.EconomyHelper;
|
||||||
import net.knarcraft.stargate.utility.MaterialHelper;
|
import net.knarcraft.stargate.utility.MaterialHelper;
|
||||||
|
import net.knarcraft.stargate.utility.PermissionHelper;
|
||||||
import org.bukkit.GameMode;
|
import org.bukkit.GameMode;
|
||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
@ -127,10 +128,11 @@ public class PlayerEventListener implements Listener {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Checks whether a player move event is relevant for this plugin
|
* Checks whether a player move event is relevant for this plugin
|
||||||
* @param event <p>The player move event to check</p>
|
*
|
||||||
* @param player <p>The player which moved</p>
|
* @param event <p>The player move event to check</p>
|
||||||
|
* @param player <p>The player which moved</p>
|
||||||
* @param fromLocation <p>The location the player is moving from</p>
|
* @param fromLocation <p>The location the player is moving from</p>
|
||||||
* @param toLocation <p>The location the player is moving to</p>
|
* @param toLocation <p>The location the player is moving to</p>
|
||||||
* @return <p>True if the event is relevant</p>
|
* @return <p>True if the event is relevant</p>
|
||||||
*/
|
*/
|
||||||
private boolean isRelevantMoveEvent(PlayerMoveEvent event, Player player, BlockLocation fromLocation, BlockLocation toLocation) {
|
private boolean isRelevantMoveEvent(PlayerMoveEvent event, Player player, BlockLocation fromLocation, BlockLocation toLocation) {
|
||||||
@ -232,7 +234,7 @@ public class PlayerEventListener implements Listener {
|
|||||||
* @return <p>True if the player should be denied</p>
|
* @return <p>True if the player should be denied</p>
|
||||||
*/
|
*/
|
||||||
private boolean cannotAccessPortal(Player player, Portal portal) {
|
private boolean cannotAccessPortal(Player player, Portal portal) {
|
||||||
boolean deny = Stargate.cannotAccessNetwork(player, portal.getNetwork());
|
boolean deny = PermissionHelper.cannotAccessNetwork(player, portal.getNetwork());
|
||||||
|
|
||||||
if (Stargate.cannotAccessPortal(player, portal, deny)) {
|
if (Stargate.cannotAccessPortal(player, portal, deny)) {
|
||||||
Stargate.sendMessage(player, Stargate.getString("denyMsg"));
|
Stargate.sendMessage(player, Stargate.getString("denyMsg"));
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
package net.knarcraft.stargate.listener;
|
package net.knarcraft.stargate.listener;
|
||||||
|
|
||||||
import net.knarcraft.stargate.utility.EconomyHandler;
|
|
||||||
import net.knarcraft.stargate.Stargate;
|
import net.knarcraft.stargate.Stargate;
|
||||||
|
import net.knarcraft.stargate.utility.EconomyHandler;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
import org.bukkit.event.server.PluginDisableEvent;
|
import org.bukkit.event.server.PluginDisableEvent;
|
||||||
@ -28,6 +28,7 @@ public class PluginEventListener implements Listener {
|
|||||||
* This event listens for and announces that the vault plugin was detected and enabled
|
* This event listens for and announces that the vault plugin was detected and enabled
|
||||||
*
|
*
|
||||||
* <p>Each time this event is called, the economy handler will try to enable vault</p>
|
* <p>Each time this event is called, the economy handler will try to enable vault</p>
|
||||||
|
*
|
||||||
* @param ignored <p>The actual event called. This is currently not used</p>
|
* @param ignored <p>The actual event called. This is currently not used</p>
|
||||||
*/
|
*/
|
||||||
@EventHandler
|
@EventHandler
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
package net.knarcraft.stargate.listener;
|
package net.knarcraft.stargate.listener;
|
||||||
|
|
||||||
|
import net.knarcraft.stargate.Stargate;
|
||||||
import net.knarcraft.stargate.portal.Portal;
|
import net.knarcraft.stargate.portal.Portal;
|
||||||
import net.knarcraft.stargate.portal.PortalHandler;
|
import net.knarcraft.stargate.portal.PortalHandler;
|
||||||
import net.knarcraft.stargate.Stargate;
|
|
||||||
import net.knarcraft.stargate.utility.EconomyHandler;
|
import net.knarcraft.stargate.utility.EconomyHandler;
|
||||||
import net.knarcraft.stargate.utility.EconomyHelper;
|
import net.knarcraft.stargate.utility.EconomyHelper;
|
||||||
import net.knarcraft.stargate.utility.EntityHelper;
|
import net.knarcraft.stargate.utility.EntityHelper;
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
package net.knarcraft.stargate.listener;
|
package net.knarcraft.stargate.listener;
|
||||||
|
|
||||||
import net.knarcraft.stargate.portal.PortalHandler;
|
|
||||||
import net.knarcraft.stargate.Stargate;
|
import net.knarcraft.stargate.Stargate;
|
||||||
|
import net.knarcraft.stargate.portal.PortalHandler;
|
||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
package net.knarcraft.stargate.portal;
|
package net.knarcraft.stargate.portal;
|
||||||
|
|
||||||
|
import net.knarcraft.stargate.Stargate;
|
||||||
import net.knarcraft.stargate.container.BlockLocation;
|
import net.knarcraft.stargate.container.BlockLocation;
|
||||||
import net.knarcraft.stargate.container.RelativeBlockVector;
|
import net.knarcraft.stargate.container.RelativeBlockVector;
|
||||||
import net.knarcraft.stargate.Stargate;
|
|
||||||
import net.knarcraft.stargate.utility.DirectionHelper;
|
import net.knarcraft.stargate.utility.DirectionHelper;
|
||||||
import net.knarcraft.stargate.utility.EconomyHandler;
|
import net.knarcraft.stargate.utility.EconomyHandler;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
|
@ -1,10 +1,11 @@
|
|||||||
package net.knarcraft.stargate.portal;
|
package net.knarcraft.stargate.portal;
|
||||||
|
|
||||||
import net.knarcraft.stargate.utility.EconomyHandler;
|
|
||||||
import net.knarcraft.stargate.Stargate;
|
import net.knarcraft.stargate.Stargate;
|
||||||
|
import net.knarcraft.stargate.utility.EconomyHandler;
|
||||||
import net.knarcraft.stargate.utility.MaterialHelper;
|
import net.knarcraft.stargate.utility.MaterialHelper;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@ -109,9 +110,9 @@ public class GateHandler {
|
|||||||
/**
|
/**
|
||||||
* Loads a gate
|
* Loads a gate
|
||||||
*
|
*
|
||||||
* @param fileName <p>The name of the file containing the gate layout</p>
|
* @param fileName <p>The name of the file containing the gate layout</p>
|
||||||
* @param parentFolder <p>The parent folder of the layout file</p>
|
* @param parentFolder <p>The parent folder of the layout file</p>
|
||||||
* @param scanner <p>The scanner to use for reading the gate layout</p>
|
* @param scanner <p>The scanner to use for reading the gate layout</p>
|
||||||
* @return <p>The loaded gate or null if unable to load the gate</p>
|
* @return <p>The loaded gate or null if unable to load the gate</p>
|
||||||
*/
|
*/
|
||||||
private static Gate loadGate(String fileName, String parentFolder, Scanner scanner) {
|
private static Gate loadGate(String fileName, String parentFolder, Scanner scanner) {
|
||||||
@ -145,10 +146,10 @@ public class GateHandler {
|
|||||||
/**
|
/**
|
||||||
* Creates a new gate
|
* Creates a new gate
|
||||||
*
|
*
|
||||||
* @param config <p>The config map to get configuration values from</p>
|
* @param config <p>The config map to get configuration values from</p>
|
||||||
* @param fileName <p>The name of the saved gate config file</p>
|
* @param fileName <p>The name of the saved gate config file</p>
|
||||||
* @param layout <p>The layout matrix of the new gate</p>
|
* @param layout <p>The layout matrix of the new gate</p>
|
||||||
* @param types <p>The mapping for used gate material types</p>
|
* @param types <p>The mapping for used gate material types</p>
|
||||||
* @return <p>A new gate or null if the config is invalid</p>
|
* @return <p>A new gate or null if the config is invalid</p>
|
||||||
*/
|
*/
|
||||||
private static Gate createGate(Map<String, String> config, String fileName, Character[][] layout,
|
private static Gate createGate(Map<String, String> config, String fileName, Character[][] layout,
|
||||||
@ -173,7 +174,7 @@ public class GateHandler {
|
|||||||
/**
|
/**
|
||||||
* Validate that a gate is valid
|
* Validate that a gate is valid
|
||||||
*
|
*
|
||||||
* @param gate <p>The gate to validate</p>
|
* @param gate <p>The gate to validate</p>
|
||||||
* @param fileName <p>The filename of the loaded gate file</p>
|
* @param fileName <p>The filename of the loaded gate file</p>
|
||||||
* @return <p>True if the gate is valid. False otherwise</p>
|
* @return <p>True if the gate is valid. False otherwise</p>
|
||||||
*/
|
*/
|
||||||
@ -196,7 +197,7 @@ public class GateHandler {
|
|||||||
* Generates a matrix storing the gate layout
|
* Generates a matrix storing the gate layout
|
||||||
*
|
*
|
||||||
* @param design <p>The design of the gate layout</p>
|
* @param design <p>The design of the gate layout</p>
|
||||||
* @param cols <p>The largest amount of columns in the design</p>
|
* @param cols <p>The largest amount of columns in the design</p>
|
||||||
* @return <p>A matrix containing the gate's layout</p>
|
* @return <p>A matrix containing the gate's layout</p>
|
||||||
*/
|
*/
|
||||||
private static Character[][] generateLayoutMatrix(List<List<Character>> design, int cols) {
|
private static Character[][] generateLayoutMatrix(List<List<Character>> design, int cols) {
|
||||||
@ -222,12 +223,12 @@ public class GateHandler {
|
|||||||
/**
|
/**
|
||||||
* Reads the gate file
|
* Reads the gate file
|
||||||
*
|
*
|
||||||
* @param scanner <p>The scanner to read from</p>
|
* @param scanner <p>The scanner to read from</p>
|
||||||
* @param types <p>The map of characters to store valid symbols in</p>
|
* @param types <p>The map of characters to store valid symbols in</p>
|
||||||
* @param fileName <p>The filename of the loaded gate config file</p>
|
* @param fileName <p>The filename of the loaded gate config file</p>
|
||||||
* @param design <p>The list to store the loaded design to</p>
|
* @param design <p>The list to store the loaded design to</p>
|
||||||
* @param frameTypes <p>The set of gate frame types to store to</p>
|
* @param frameTypes <p>The set of gate frame types to store to</p>
|
||||||
* @param config <p>The map of config values to store to</p>
|
* @param config <p>The map of config values to store to</p>
|
||||||
* @return <p>The column count/width of the loaded gate</p>
|
* @return <p>The column count/width of the loaded gate</p>
|
||||||
*/
|
*/
|
||||||
private static int readGateFile(Scanner scanner, Map<Character, Material> types, String fileName,
|
private static int readGateFile(Scanner scanner, Map<Character, Material> types, String fileName,
|
||||||
@ -265,11 +266,11 @@ public class GateHandler {
|
|||||||
/**
|
/**
|
||||||
* Reads one design line of the gate layout file
|
* Reads one design line of the gate layout file
|
||||||
*
|
*
|
||||||
* @param line <p>The line to read</p>
|
* @param line <p>The line to read</p>
|
||||||
* @param cols <p>The current max columns value of the design</p>
|
* @param cols <p>The current max columns value of the design</p>
|
||||||
* @param types <p>The map of characters to check for valid symbols</p>
|
* @param types <p>The map of characters to check for valid symbols</p>
|
||||||
* @param fileName <p>The filename of the loaded gate config file</p>
|
* @param fileName <p>The filename of the loaded gate config file</p>
|
||||||
* @param design <p>The list to store the loaded design to</p>
|
* @param design <p>The list to store the loaded design to</p>
|
||||||
* @return <p>The new max columns value of the design</p>
|
* @return <p>The new max columns value of the design</p>
|
||||||
*/
|
*/
|
||||||
private static int readGateDesignLine(String line, int cols, Map<Character, Material> types, String fileName,
|
private static int readGateDesignLine(String line, int cols, Map<Character, Material> types, String fileName,
|
||||||
@ -295,10 +296,10 @@ public class GateHandler {
|
|||||||
/**
|
/**
|
||||||
* Reads one config value from the gate layout file
|
* Reads one config value from the gate layout file
|
||||||
*
|
*
|
||||||
* @param line <p>The line to read</p>
|
* @param line <p>The line to read</p>
|
||||||
* @param types <p>The map of characters to materials to store to</p>
|
* @param types <p>The map of characters to materials to store to</p>
|
||||||
* @param frameTypes <p>The set of gate frame types to store to</p>
|
* @param frameTypes <p>The set of gate frame types to store to</p>
|
||||||
* @param config <p>The map of config values to store to</p>
|
* @param config <p>The map of config values to store to</p>
|
||||||
* @throws Exception <p>If an invalid material is encountered</p>
|
* @throws Exception <p>If an invalid material is encountered</p>
|
||||||
*/
|
*/
|
||||||
private static void readGateConfigValue(String line, Map<Character, Material> types, Set<Material> frameTypes,
|
private static void readGateConfigValue(String line, Map<Character, Material> types, Set<Material> frameTypes,
|
||||||
@ -322,9 +323,10 @@ public class GateHandler {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Reads an integer configuration key
|
* Reads an integer configuration key
|
||||||
* @param config <p>The configuration to read</p>
|
*
|
||||||
|
* @param config <p>The configuration to read</p>
|
||||||
* @param fileName <p>The filename of the config file</p>
|
* @param fileName <p>The filename of the config file</p>
|
||||||
* @param key <p>The config key to read</p>
|
* @param key <p>The config key to read</p>
|
||||||
* @return <p>The read value, or -1 if it cannot be read</p>
|
* @return <p>The read value, or -1 if it cannot be read</p>
|
||||||
*/
|
*/
|
||||||
private static int readConfig(Map<String, String> config, String fileName, String key) {
|
private static int readConfig(Map<String, String> config, String fileName, String key) {
|
||||||
|
@ -16,7 +16,7 @@ import java.util.List;
|
|||||||
*/
|
*/
|
||||||
public class GateLayout {
|
public class GateLayout {
|
||||||
|
|
||||||
private final Character [][] layout;
|
private final Character[][] layout;
|
||||||
private final List<RelativeBlockVector> exits = new ArrayList<>();
|
private final List<RelativeBlockVector> exits = new ArrayList<>();
|
||||||
private RelativeBlockVector[] entrances = new RelativeBlockVector[0];
|
private RelativeBlockVector[] entrances = new RelativeBlockVector[0];
|
||||||
private RelativeBlockVector[] border = new RelativeBlockVector[0];
|
private RelativeBlockVector[] border = new RelativeBlockVector[0];
|
||||||
@ -39,7 +39,7 @@ public class GateLayout {
|
|||||||
* @return <p>Two of the gate's corners</p>
|
* @return <p>Two of the gate's corners</p>
|
||||||
*/
|
*/
|
||||||
public RelativeBlockVector[] getCorners() {
|
public RelativeBlockVector[] getCorners() {
|
||||||
return new RelativeBlockVector[] {
|
return new RelativeBlockVector[]{
|
||||||
new RelativeBlockVector(0, 0, 0),
|
new RelativeBlockVector(0, 0, 0),
|
||||||
new RelativeBlockVector(layout[0].length - 1, layout.length - 1, 1)
|
new RelativeBlockVector(layout[0].length - 1, layout.length - 1, 1)
|
||||||
};
|
};
|
||||||
@ -157,9 +157,9 @@ public class GateLayout {
|
|||||||
/**
|
/**
|
||||||
* Reads the given layout matrix, filling in the given lists of relative block vectors
|
* Reads the given layout matrix, filling in the given lists of relative block vectors
|
||||||
*
|
*
|
||||||
* @param controlList <p>The list of control blocks to save to</p>
|
* @param controlList <p>The list of control blocks to save to</p>
|
||||||
* @param entranceList <p>The list of entrances to save to</p>
|
* @param entranceList <p>The list of entrances to save to</p>
|
||||||
* @param borderList <p>The list of border blocks to save to</p>
|
* @param borderList <p>The list of border blocks to save to</p>
|
||||||
* @return <p>A list of depths of possible extra exits</p>
|
* @return <p>A list of depths of possible extra exits</p>
|
||||||
*/
|
*/
|
||||||
private int[] readLayout(List<RelativeBlockVector> controlList, List<RelativeBlockVector> entranceList,
|
private int[] readLayout(List<RelativeBlockVector> controlList, List<RelativeBlockVector> entranceList,
|
||||||
@ -181,13 +181,13 @@ public class GateLayout {
|
|||||||
/**
|
/**
|
||||||
* Parses one character of the layout
|
* Parses one character of the layout
|
||||||
*
|
*
|
||||||
* @param key <p>The character read</p>
|
* @param key <p>The character read</p>
|
||||||
* @param rowIndex <p>The row of the read character</p>
|
* @param rowIndex <p>The row of the read character</p>
|
||||||
* @param lineIndex <p>The line of the read character</p>
|
* @param lineIndex <p>The line of the read character</p>
|
||||||
* @param exitDepths <p>The list of exit depths to save to</p>
|
* @param exitDepths <p>The list of exit depths to save to</p>
|
||||||
* @param controlList <p>The list of control blocks to save to</p>
|
* @param controlList <p>The list of control blocks to save to</p>
|
||||||
* @param entranceList <p>The list of entrances to save to</p>
|
* @param entranceList <p>The list of entrances to save to</p>
|
||||||
* @param borderList <p>The list of border blocks to save to</p>
|
* @param borderList <p>The list of border blocks to save to</p>
|
||||||
*/
|
*/
|
||||||
private void parseLayoutCharacter(Character key, int rowIndex, int lineIndex, int[] exitDepths,
|
private void parseLayoutCharacter(Character key, int rowIndex, int lineIndex, int[] exitDepths,
|
||||||
List<RelativeBlockVector> controlList, List<RelativeBlockVector> entranceList,
|
List<RelativeBlockVector> controlList, List<RelativeBlockVector> entranceList,
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
package net.knarcraft.stargate.portal;
|
package net.knarcraft.stargate.portal;
|
||||||
|
|
||||||
import net.knarcraft.stargate.container.BlockLocation;
|
|
||||||
import net.knarcraft.stargate.container.BlockChangeRequest;
|
|
||||||
import net.knarcraft.stargate.container.RelativeBlockVector;
|
|
||||||
import net.knarcraft.stargate.Stargate;
|
import net.knarcraft.stargate.Stargate;
|
||||||
|
import net.knarcraft.stargate.container.BlockChangeRequest;
|
||||||
|
import net.knarcraft.stargate.container.BlockLocation;
|
||||||
|
import net.knarcraft.stargate.container.RelativeBlockVector;
|
||||||
import net.knarcraft.stargate.event.StargateActivateEvent;
|
import net.knarcraft.stargate.event.StargateActivateEvent;
|
||||||
import net.knarcraft.stargate.event.StargateCloseEvent;
|
import net.knarcraft.stargate.event.StargateCloseEvent;
|
||||||
import net.knarcraft.stargate.event.StargateDeactivateEvent;
|
import net.knarcraft.stargate.event.StargateDeactivateEvent;
|
||||||
@ -86,7 +86,7 @@ public class Portal {
|
|||||||
* @param topLeft <p>The top-left block of the portal. This is used to decide the positions of the rest of the portal</p>
|
* @param topLeft <p>The top-left block of the portal. This is used to decide the positions of the rest of the portal</p>
|
||||||
* @param modX <p></p>
|
* @param modX <p></p>
|
||||||
* @param modZ <p></p>
|
* @param modZ <p></p>
|
||||||
* @param yaw <p></p>
|
* @param yaw <p></p>
|
||||||
* @param id <p>The location of the portal's id block, which is the sign which activated the portal</p>
|
* @param id <p>The location of the portal's id block, which is the sign which activated the portal</p>
|
||||||
* @param button <p>The location of the portal's open button</p>
|
* @param button <p>The location of the portal's open button</p>
|
||||||
* @param destination <p>The destination defined on the sign's destination line</p>
|
* @param destination <p>The destination defined on the sign's destination line</p>
|
||||||
@ -921,6 +921,7 @@ public class Portal {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Loads one chunk
|
* Loads one chunk
|
||||||
|
*
|
||||||
* @param chunk <p>The chunk to load</p>
|
* @param chunk <p>The chunk to load</p>
|
||||||
*/
|
*/
|
||||||
private void loadOneChunk(Chunk chunk) {
|
private void loadOneChunk(Chunk chunk) {
|
||||||
|
@ -3,5 +3,4 @@ package net.knarcraft.stargate.portal;
|
|||||||
public class PortalDirection {
|
public class PortalDirection {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,13 +1,14 @@
|
|||||||
package net.knarcraft.stargate.portal;
|
package net.knarcraft.stargate.portal;
|
||||||
|
|
||||||
|
import net.knarcraft.stargate.Stargate;
|
||||||
import net.knarcraft.stargate.container.BlockLocation;
|
import net.knarcraft.stargate.container.BlockLocation;
|
||||||
import net.knarcraft.stargate.container.RelativeBlockVector;
|
import net.knarcraft.stargate.container.RelativeBlockVector;
|
||||||
import net.knarcraft.stargate.Stargate;
|
|
||||||
import net.knarcraft.stargate.container.TwoTuple;
|
import net.knarcraft.stargate.container.TwoTuple;
|
||||||
import net.knarcraft.stargate.event.StargateCreateEvent;
|
import net.knarcraft.stargate.event.StargateCreateEvent;
|
||||||
import net.knarcraft.stargate.utility.DirectionHelper;
|
import net.knarcraft.stargate.utility.DirectionHelper;
|
||||||
import net.knarcraft.stargate.utility.EconomyHandler;
|
import net.knarcraft.stargate.utility.EconomyHandler;
|
||||||
import net.knarcraft.stargate.utility.EconomyHelper;
|
import net.knarcraft.stargate.utility.EconomyHelper;
|
||||||
|
import net.knarcraft.stargate.utility.PermissionHelper;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.OfflinePlayer;
|
import org.bukkit.OfflinePlayer;
|
||||||
@ -90,12 +91,12 @@ public class PortalHandler {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
// Check if this player can access the dest world
|
// Check if this player can access the dest world
|
||||||
if (Stargate.cannotAccessWorld(player, portal.getWorld().getName())) {
|
if (PermissionHelper.cannotAccessWorld(player, portal.getWorld().getName())) {
|
||||||
Stargate.log.info("cannot access world");
|
Stargate.log.info("cannot access world");
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
// Visible to this player.
|
// Visible to this player.
|
||||||
if (Stargate.canSee(player, portal)) {
|
if (PermissionHelper.canSeePortal(player, portal)) {
|
||||||
destinations.add(portal.getName());
|
destinations.add(portal.getName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -314,7 +315,7 @@ public class PortalHandler {
|
|||||||
|
|
||||||
//If the player is trying to create a Bungee gate without permissions, drop out here
|
//If the player is trying to create a Bungee gate without permissions, drop out here
|
||||||
if (options.indexOf(PortalOption.BUNGEE.getCharacterRepresentation()) != -1) {
|
if (options.indexOf(PortalOption.BUNGEE.getCharacterRepresentation()) != -1) {
|
||||||
if (!Stargate.hasPermission(player, "stargate.admin.bungee")) {
|
if (!PermissionHelper.hasPermission(player, "stargate.admin.bungee")) {
|
||||||
Stargate.sendMessage(player, Stargate.getString("bungeeDeny"));
|
Stargate.sendMessage(player, Stargate.getString("bungeeDeny"));
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@ -344,9 +345,9 @@ public class PortalHandler {
|
|||||||
String denyMsg = "";
|
String denyMsg = "";
|
||||||
|
|
||||||
// Check if the player can create gates on this network
|
// Check if the player can create gates on this network
|
||||||
if (!portalOptions.get(PortalOption.BUNGEE) && !Stargate.canCreate(player, network)) {
|
if (!portalOptions.get(PortalOption.BUNGEE) && !PermissionHelper.canCreateNetworkGate(player, network)) {
|
||||||
Stargate.debug("createPortal", "Player doesn't have create permissions on network. Trying personal");
|
Stargate.debug("createPortal", "Player doesn't have create permissions on network. Trying personal");
|
||||||
if (Stargate.canCreatePersonal(player)) {
|
if (PermissionHelper.canCreatePersonalGate(player)) {
|
||||||
network = player.getName();
|
network = player.getName();
|
||||||
if (network.length() > 11) network = network.substring(0, 11);
|
if (network.length() > 11) network = network.substring(0, 11);
|
||||||
Stargate.debug("createPortal", "Creating personal portal");
|
Stargate.debug("createPortal", "Creating personal portal");
|
||||||
@ -362,7 +363,7 @@ public class PortalHandler {
|
|||||||
// Check if the player can create this gate layout
|
// Check if the player can create this gate layout
|
||||||
String gateName = gate.getFilename();
|
String gateName = gate.getFilename();
|
||||||
gateName = gateName.substring(0, gateName.indexOf('.'));
|
gateName = gateName.substring(0, gateName.indexOf('.'));
|
||||||
if (!deny && !Stargate.canCreateGate(player, gateName)) {
|
if (!deny && !PermissionHelper.canCreateGate(player, gateName)) {
|
||||||
Stargate.debug("createPortal", "Player does not have access to gate layout");
|
Stargate.debug("createPortal", "Player does not have access to gate layout");
|
||||||
deny = true;
|
deny = true;
|
||||||
denyMsg = Stargate.getString("createGateDeny");
|
denyMsg = Stargate.getString("createGateDeny");
|
||||||
@ -373,8 +374,8 @@ public class PortalHandler {
|
|||||||
Portal p = getByName(destinationName, network);
|
Portal p = getByName(destinationName, network);
|
||||||
if (p != null) {
|
if (p != null) {
|
||||||
String world = p.getWorld().getName();
|
String world = p.getWorld().getName();
|
||||||
if (Stargate.cannotAccessWorld(player, world)) {
|
if (PermissionHelper.cannotAccessWorld(player, world)) {
|
||||||
Stargate.debug("canCreate", "Player does not have access to destination world");
|
Stargate.debug("canCreateNetworkGate", "Player does not have access to destination world");
|
||||||
deny = true;
|
deny = true;
|
||||||
denyMsg = Stargate.getString("createWorldDeny");
|
denyMsg = Stargate.getString("createWorldDeny");
|
||||||
}
|
}
|
||||||
@ -506,7 +507,7 @@ public class PortalHandler {
|
|||||||
Map<PortalOption, Boolean> portalOptions = new HashMap<>();
|
Map<PortalOption, Boolean> portalOptions = new HashMap<>();
|
||||||
for (PortalOption option : PortalOption.values()) {
|
for (PortalOption option : PortalOption.values()) {
|
||||||
portalOptions.put(option, options.indexOf(option.getCharacterRepresentation()) != -1 &&
|
portalOptions.put(option, options.indexOf(option.getCharacterRepresentation()) != -1 &&
|
||||||
Stargate.canOption(player, option));
|
PermissionHelper.canUseOption(player, option));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Can not create a non-fixed always-on gate.
|
// Can not create a non-fixed always-on gate.
|
||||||
@ -583,7 +584,7 @@ public class PortalHandler {
|
|||||||
* Gets a portal given a location adjacent to its entrance
|
* Gets a portal given a location adjacent to its entrance
|
||||||
*
|
*
|
||||||
* @param location <p>A location adjacent to the portal's entrance</p>
|
* @param location <p>A location adjacent to the portal's entrance</p>
|
||||||
* @param range <p>The range to scan for portals</p>
|
* @param range <p>The range to scan for portals</p>
|
||||||
* @return <p>The portal adjacent to the given location</p>
|
* @return <p>The portal adjacent to the given location</p>
|
||||||
*/
|
*/
|
||||||
public static Portal getByAdjacentEntrance(Location location, int range) {
|
public static Portal getByAdjacentEntrance(Location location, int range) {
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
package net.knarcraft.stargate.thread;
|
package net.knarcraft.stargate.thread;
|
||||||
|
|
||||||
import net.knarcraft.stargate.container.BlockChangeRequest;
|
|
||||||
import net.knarcraft.stargate.Stargate;
|
import net.knarcraft.stargate.Stargate;
|
||||||
|
import net.knarcraft.stargate.container.BlockChangeRequest;
|
||||||
import org.bukkit.Axis;
|
import org.bukkit.Axis;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
@ -44,6 +44,7 @@ public class BlockChangeThread implements Runnable {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Prevents end gateway portal from behaving strangely
|
* Prevents end gateway portal from behaving strangely
|
||||||
|
*
|
||||||
* @param block <p>The block to fix</p>
|
* @param block <p>The block to fix</p>
|
||||||
*/
|
*/
|
||||||
private void fixEndGatewayGate(Block block) {
|
private void fixEndGatewayGate(Block block) {
|
||||||
@ -55,8 +56,9 @@ public class BlockChangeThread implements Runnable {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the orientation axis of the placed block
|
* Sets the orientation axis of the placed block
|
||||||
|
*
|
||||||
* @param block <p>The block to orient</p>
|
* @param block <p>The block to orient</p>
|
||||||
* @param axis <p>The axis to use for orienting the block</p>
|
* @param axis <p>The axis to use for orienting the block</p>
|
||||||
*/
|
*/
|
||||||
private void orientBlock(Block block, Axis axis) {
|
private void orientBlock(Block block, Axis axis) {
|
||||||
Orientable orientable = (Orientable) block.getBlockData();
|
Orientable orientable = (Orientable) block.getBlockData();
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
package net.knarcraft.stargate.thread;
|
package net.knarcraft.stargate.thread;
|
||||||
|
|
||||||
import net.knarcraft.stargate.portal.Portal;
|
|
||||||
import net.knarcraft.stargate.Stargate;
|
import net.knarcraft.stargate.Stargate;
|
||||||
|
import net.knarcraft.stargate.portal.Portal;
|
||||||
|
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
|
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
package net.knarcraft.stargate.utility;
|
package net.knarcraft.stargate.utility;
|
||||||
|
|
||||||
|
import net.knarcraft.stargate.Stargate;
|
||||||
import net.knarcraft.stargate.portal.Portal;
|
import net.knarcraft.stargate.portal.Portal;
|
||||||
import net.knarcraft.stargate.portal.PortalHandler;
|
import net.knarcraft.stargate.portal.PortalHandler;
|
||||||
import net.knarcraft.stargate.Stargate;
|
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
import java.io.ByteArrayInputStream;
|
import java.io.ByteArrayInputStream;
|
||||||
|
@ -41,6 +41,7 @@ public final class DirectionHelper {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets a block face given a yaw
|
* Gets a block face given a yaw
|
||||||
|
*
|
||||||
* @param yaw <p>The yaw to use</p>
|
* @param yaw <p>The yaw to use</p>
|
||||||
* @return <p>The block face the yaw corresponds to</p>
|
* @return <p>The block face the yaw corresponds to</p>
|
||||||
*/
|
*/
|
||||||
@ -63,6 +64,7 @@ public final class DirectionHelper {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets a direction vector given a yaw
|
* Gets a direction vector given a yaw
|
||||||
|
*
|
||||||
* @param yaw <p>The yaw to use</p>
|
* @param yaw <p>The yaw to use</p>
|
||||||
* @return <p>The direction vector of the yaw</p>
|
* @return <p>The direction vector of the yaw</p>
|
||||||
*/
|
*/
|
||||||
@ -95,12 +97,13 @@ public final class DirectionHelper {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Adds a relative block vector to a location, accounting for direction
|
* Adds a relative block vector to a location, accounting for direction
|
||||||
|
*
|
||||||
* @param location <p>The location to adjust</p>
|
* @param location <p>The location to adjust</p>
|
||||||
* @param right <p>The amount of blocks to the right to adjust</p>
|
* @param right <p>The amount of blocks to the right to adjust</p>
|
||||||
* @param depth <p>The amount of blocks upward to adjust</p>
|
* @param depth <p>The amount of blocks upward to adjust</p>
|
||||||
* @param distance <p>The distance outward to adjust</p>
|
* @param distance <p>The distance outward to adjust</p>
|
||||||
* @param modX <p>The x modifier to use</p>
|
* @param modX <p>The x modifier to use</p>
|
||||||
* @param modZ <p>The z modifier to use</p>
|
* @param modZ <p>The z modifier to use</p>
|
||||||
* @return <p>The altered location</p>
|
* @return <p>The altered location</p>
|
||||||
*/
|
*/
|
||||||
public static Location adjustLocation(Location location, double right, double depth, double distance, int modX,
|
public static Location adjustLocation(Location location, double right, double depth, double distance, int modX,
|
||||||
@ -110,6 +113,7 @@ public final class DirectionHelper {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Normalizes a yaw to make it positive and no larger than 360 degrees
|
* Normalizes a yaw to make it positive and no larger than 360 degrees
|
||||||
|
*
|
||||||
* @param yaw <p>The yaw to normalize</p>
|
* @param yaw <p>The yaw to normalize</p>
|
||||||
* @return <p>The normalized yaw</p>
|
* @return <p>The normalized yaw</p>
|
||||||
*/
|
*/
|
||||||
|
@ -90,8 +90,9 @@ public final class EconomyHandler {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Charges the player for an action, if required
|
* Charges the player for an action, if required
|
||||||
|
*
|
||||||
* @param player <p>The player to take money from</p>
|
* @param player <p>The player to take money from</p>
|
||||||
* @param cost <p>The cost of the transaction</p>
|
* @param cost <p>The cost of the transaction</p>
|
||||||
* @return <p>True if the player was charged successfully</p>
|
* @return <p>True if the player was charged successfully</p>
|
||||||
*/
|
*/
|
||||||
public static boolean chargePlayerIfNecessary(Player player, int cost) {
|
public static boolean chargePlayerIfNecessary(Player player, int cost) {
|
||||||
@ -104,9 +105,10 @@ public final class EconomyHandler {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Charges the player for an action, if required
|
* Charges the player for an action, if required
|
||||||
|
*
|
||||||
* @param player <p>The player to take money from</p>
|
* @param player <p>The player to take money from</p>
|
||||||
* @param target <p>The target to pay</p>
|
* @param target <p>The target to pay</p>
|
||||||
* @param cost <p>The cost of the transaction</p>
|
* @param cost <p>The cost of the transaction</p>
|
||||||
* @return <p>True if the player was charged successfully</p>
|
* @return <p>True if the player was charged successfully</p>
|
||||||
*/
|
*/
|
||||||
public static boolean chargePlayerIfNecessary(Player player, UUID target, int cost) {
|
public static boolean chargePlayerIfNecessary(Player player, UUID target, int cost) {
|
||||||
@ -170,6 +172,7 @@ public final class EconomyHandler {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Checks whether a payment transaction should be skipped
|
* Checks whether a payment transaction should be skipped
|
||||||
|
*
|
||||||
* @param cost <p>The cost of the transaction</p>
|
* @param cost <p>The cost of the transaction</p>
|
||||||
* @return <p>True if the transaction should be skipped</p>
|
* @return <p>True if the transaction should be skipped</p>
|
||||||
*/
|
*/
|
||||||
@ -180,8 +183,8 @@ public final class EconomyHandler {
|
|||||||
/**
|
/**
|
||||||
* Determines the cost of using a gate
|
* Determines the cost of using a gate
|
||||||
*
|
*
|
||||||
* @param player <p>The player trying to use the gate</p>
|
* @param player <p>The player trying to use the gate</p>
|
||||||
* @param source <p>The source/entry portal</p>
|
* @param source <p>The source/entry portal</p>
|
||||||
* @param destination <p>The destination portal</p>
|
* @param destination <p>The destination portal</p>
|
||||||
* @return <p>The cost of using the portal</p>
|
* @return <p>The cost of using the portal</p>
|
||||||
*/
|
*/
|
||||||
@ -199,7 +202,8 @@ public final class EconomyHandler {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
//Player gets free gate use
|
//Player gets free gate use
|
||||||
if (Stargate.hasPermission(player, "stargate.free") || Stargate.hasPermission(player, "stargate.free.use")) {
|
if (PermissionHelper.hasPermission(player, "stargate.free") ||
|
||||||
|
PermissionHelper.hasPermission(player, "stargate.free.use")) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -208,8 +212,9 @@ public final class EconomyHandler {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the cost of creating the given gate
|
* Gets the cost of creating the given gate
|
||||||
|
*
|
||||||
* @param player <p>The player creating the gate</p>
|
* @param player <p>The player creating the gate</p>
|
||||||
* @param gate <p>The gate type used</p>
|
* @param gate <p>The gate type used</p>
|
||||||
* @return <p>The cost of creating the gate</p>
|
* @return <p>The cost of creating the gate</p>
|
||||||
*/
|
*/
|
||||||
public static int getCreateCost(Player player, Gate gate) {
|
public static int getCreateCost(Player player, Gate gate) {
|
||||||
@ -222,8 +227,9 @@ public final class EconomyHandler {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the cost of destroying the given gate
|
* Gets the cost of destroying the given gate
|
||||||
|
*
|
||||||
* @param player <p>The player creating the gate</p>
|
* @param player <p>The player creating the gate</p>
|
||||||
* @param gate <p>The gate type used</p>
|
* @param gate <p>The gate type used</p>
|
||||||
* @return <p>The cost of destroying the gate</p>
|
* @return <p>The cost of destroying the gate</p>
|
||||||
*/
|
*/
|
||||||
public static int getDestroyCost(Player player, Gate gate) {
|
public static int getDestroyCost(Player player, Gate gate) {
|
||||||
@ -236,13 +242,14 @@ public final class EconomyHandler {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Determines if a player can do a gate action for free
|
* Determines if a player can do a gate action for free
|
||||||
* @param player <p>The player to check</p>
|
*
|
||||||
|
* @param player <p>The player to check</p>
|
||||||
* @param permissionNode <p>The free.permissionNode necessary to allow free gate {action}</p>
|
* @param permissionNode <p>The free.permissionNode necessary to allow free gate {action}</p>
|
||||||
* @return <p></p>
|
* @return <p></p>
|
||||||
*/
|
*/
|
||||||
private static boolean isFree(Player player, String permissionNode) {
|
private static boolean isFree(Player player, String permissionNode) {
|
||||||
return !EconomyHandler.useEconomy() || Stargate.hasPermission(player, "stargate.free") ||
|
return !EconomyHandler.useEconomy() || PermissionHelper.hasPermission(player, "stargate.free") ||
|
||||||
Stargate.hasPermission(player, "stargate.free." + permissionNode);
|
PermissionHelper.hasPermission(player, "stargate.free." + permissionNode);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
package net.knarcraft.stargate.utility;
|
package net.knarcraft.stargate.utility;
|
||||||
|
|
||||||
import net.knarcraft.stargate.portal.Portal;
|
|
||||||
import net.knarcraft.stargate.Stargate;
|
import net.knarcraft.stargate.Stargate;
|
||||||
|
import net.knarcraft.stargate.portal.Portal;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -0,0 +1,272 @@
|
|||||||
|
package net.knarcraft.stargate.utility;
|
||||||
|
|
||||||
|
import net.knarcraft.stargate.Stargate;
|
||||||
|
import net.knarcraft.stargate.portal.Portal;
|
||||||
|
import net.knarcraft.stargate.portal.PortalOption;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Helper class for deciding which actions a player is allowed to perform
|
||||||
|
*/
|
||||||
|
public final class PermissionHelper {
|
||||||
|
|
||||||
|
private PermissionHelper() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks whether a player has the given permission
|
||||||
|
*
|
||||||
|
* <p>This is the same as player.hasPermission(), but this function allows for printing permission debugging info.</p>
|
||||||
|
*
|
||||||
|
* @param player <p>The player to check</p>
|
||||||
|
* @param perm <p>The permission to check</p>
|
||||||
|
* @return <p>True if the player has the permission</p>
|
||||||
|
*/
|
||||||
|
public static boolean hasPermission(Player player, String perm) {
|
||||||
|
if (Stargate.permissionDebuggingEnabled) {
|
||||||
|
Stargate.debug("hasPerm::SuperPerm(" + player.getName() + ")", perm + " => " + player.hasPermission(perm));
|
||||||
|
}
|
||||||
|
return player.hasPermission(perm);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check a deep permission, this will check to see if the permissions is defined for this use
|
||||||
|
*
|
||||||
|
* <p>If using Permissions it will return the same as hasPerm. If using SuperPerms will return true if the node
|
||||||
|
* isn't defined, or the value of the node if it is</p>
|
||||||
|
*
|
||||||
|
* @param player <p>The player to check</p>
|
||||||
|
* @param permission <p>The permission to check</p>
|
||||||
|
* @return <p>True if the player has the permission or it is not set</p>
|
||||||
|
*/
|
||||||
|
public static boolean hasPermDeep(Player player, String permission) {
|
||||||
|
if (!player.isPermissionSet(permission)) {
|
||||||
|
if (Stargate.permissionDebuggingEnabled) {
|
||||||
|
Stargate.debug("hasPermDeep::SuperPerm", permission + " => true");
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (Stargate.permissionDebuggingEnabled) {
|
||||||
|
Stargate.debug("hasPermDeep::SuperPerms", permission + " => " + player.hasPermission(permission));
|
||||||
|
}
|
||||||
|
return player.hasPermission(permission);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks whether a player can access the given world
|
||||||
|
* @param player <p>The player trying to access the world</p>
|
||||||
|
* @param world <p>The world the player is trying to access</p>
|
||||||
|
* @return <p>False if the player should be allowed to access the world</p>
|
||||||
|
*/
|
||||||
|
public static boolean cannotAccessWorld(Player player, String world) {
|
||||||
|
// Can use all stargate player features or access all worlds
|
||||||
|
if (hasPermission(player, "stargate.use") || hasPermission(player, "stargate.world")) {
|
||||||
|
// Do a deep check to see if the player lacks this specific world node
|
||||||
|
return !hasPermDeep(player, "stargate.world." + world);
|
||||||
|
}
|
||||||
|
// Can access dest world
|
||||||
|
return !hasPermission(player, "stargate.world." + world);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks whether a player can access the given network
|
||||||
|
*
|
||||||
|
* @param player <p>The player to check</p>
|
||||||
|
* @param network <p>The network to check</p>
|
||||||
|
* @return <p>True if the player is denied from accessing the network</p>
|
||||||
|
*/
|
||||||
|
public static boolean cannotAccessNetwork(Player player, String network) {
|
||||||
|
// Can user all stargate player features, or access all networks
|
||||||
|
if (hasPermission(player, "stargate.use") || hasPermission(player, "stargate.network")) {
|
||||||
|
// Do a deep check to see if the player lacks this specific network node
|
||||||
|
return !hasPermDeep(player, "stargate.network." + network);
|
||||||
|
}
|
||||||
|
//Check if the player can access this network
|
||||||
|
if (hasPermission(player, "stargate.network." + network)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
//Is able to create personal gates (Assumption is made they can also access them)
|
||||||
|
String playerName = player.getName();
|
||||||
|
if (playerName.length() > 11) {
|
||||||
|
playerName = playerName.substring(0, 11);
|
||||||
|
}
|
||||||
|
return !network.equals(playerName) || !hasPermission(player, "stargate.create.personal");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks whether a player can access the given bungee server
|
||||||
|
* @param player <p>The player trying to teleport</p>
|
||||||
|
* @param server <p>The server the player is trying to connect to</p>
|
||||||
|
* @return <p>True if the player is allowed to access the given server</p>
|
||||||
|
*/
|
||||||
|
public static boolean canAccessServer(Player player, String server) {
|
||||||
|
//Can user all stargate player features, or access all servers
|
||||||
|
if (hasPermission(player, "stargate.use") || hasPermission(player, "stargate.servers")) {
|
||||||
|
//Do a deep check to see if the player lacks this specific server node
|
||||||
|
return hasPermDeep(player, "stargate.server." + server);
|
||||||
|
}
|
||||||
|
//Can access this server
|
||||||
|
return hasPermission(player, "stargate.server." + server);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks whether the given player can teleport the given stretch for free
|
||||||
|
*
|
||||||
|
* @param player <p>The player trying to teleport</p>
|
||||||
|
* @param src <p>The portal the player is entering</p>
|
||||||
|
* @param dest <p>The portal the player wants to teleport to</p>
|
||||||
|
* @return <p>True if the player can travel for free</p>
|
||||||
|
*/
|
||||||
|
public static boolean isFree(Player player, Portal src, Portal dest) {
|
||||||
|
// This gate is free
|
||||||
|
if (src.isFree()) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
// Player gets free use
|
||||||
|
if (hasPermission(player, "stargate.free") || hasPermission(player, "stargate.free.use")) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
// Don't charge for free destination gates
|
||||||
|
return dest != null && !EconomyHandler.chargeFreeDestination && dest.isFree();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks whether the player can see this gate (Hidden property check)
|
||||||
|
*
|
||||||
|
* <p>This decides if the player can see the gate on the network selection screen</p>
|
||||||
|
*
|
||||||
|
* @param player <p>The player to check</p>
|
||||||
|
* @param portal <p>The portal to check</p>
|
||||||
|
* @return <p>True if the given player can see the given portal</p>
|
||||||
|
*/
|
||||||
|
public static boolean canSeePortal(Player player, Portal portal) {
|
||||||
|
// The gate is not hidden
|
||||||
|
if (!portal.isHidden()) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
// The player is an admin with the ability to see hidden gates
|
||||||
|
if (hasPermission(player, "stargate.admin") || hasPermission(player, "stargate.admin.hidden")) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
// The player is the owner of the gate
|
||||||
|
return portal.isOwner(player);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks if the given player is allowed to use the given private portal
|
||||||
|
*
|
||||||
|
* @param player <p>The player trying to use the portal</p>
|
||||||
|
* @param portal <p>The private portal used</p>
|
||||||
|
* @return <p>True if the player is allowed to use the portal</p>
|
||||||
|
*/
|
||||||
|
public static boolean canPrivate(Player player, Portal portal) {
|
||||||
|
//Check if the player is the owner of the gate
|
||||||
|
if (portal.isOwner(player)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
//The player is an admin with the ability to use private gates
|
||||||
|
return hasPermission(player, "stargate.admin") || hasPermission(player, "stargate.admin.private");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks if the given player has access to the given portal option
|
||||||
|
*
|
||||||
|
* @param player <p>The player trying to use the option</p>
|
||||||
|
* @param option <p>The option the player is trying to use</p>
|
||||||
|
* @return <p>True if the player is allowed to create a portal with the given option</p>
|
||||||
|
*/
|
||||||
|
public static boolean canUseOption(Player player, PortalOption option) {
|
||||||
|
//Check if the player can use all options
|
||||||
|
if (hasPermission(player, "stargate.option") || option == PortalOption.BUNGEE) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
//Check if they can use this specific option
|
||||||
|
return hasPermission(player, option.getPermissionString());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks if the given player is allowed to create gates on the given network
|
||||||
|
*
|
||||||
|
* @param player <p>The player trying to create a new gate</p>
|
||||||
|
* @param network <p>The network the player is trying to create a gate on</p>
|
||||||
|
* @return <p>True if the player is allowed to create the new gate</p>
|
||||||
|
*/
|
||||||
|
public static boolean canCreateNetworkGate(Player player, String network) {
|
||||||
|
//Check for general create
|
||||||
|
if (hasPermission(player, "stargate.create")) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
//Check for all network create permission
|
||||||
|
if (hasPermission(player, "stargate.create.network")) {
|
||||||
|
// Do a deep check to see if the player lacks this specific network node
|
||||||
|
return hasPermDeep(player, "stargate.create.network." + network);
|
||||||
|
}
|
||||||
|
//Check for this specific network
|
||||||
|
return hasPermission(player, "stargate.create.network." + network);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks whether the given player is allowed to create a personal gate
|
||||||
|
*
|
||||||
|
* @param player <p>The player trying to create the new gate</p>
|
||||||
|
* @return <p>True if the player is allowed</p>
|
||||||
|
*/
|
||||||
|
public static boolean canCreatePersonalGate(Player player) {
|
||||||
|
//Check for general create
|
||||||
|
if (hasPermission(player, "stargate.create")) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
//Check for personal
|
||||||
|
return hasPermission(player, "stargate.create.personal");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks if the given player can create a portal with the given gate layout
|
||||||
|
*
|
||||||
|
* @param player <p>The player trying to create a portal</p>
|
||||||
|
* @param gate <p>The gate type of the new portal</p>
|
||||||
|
* @return <p>True if the player is allowed to create a portal with the given gate layout</p>
|
||||||
|
*/
|
||||||
|
public static boolean canCreateGate(Player player, String gate) {
|
||||||
|
//Check for general create
|
||||||
|
if (hasPermission(player, "stargate.create")) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
//Check for all gate create permissions
|
||||||
|
if (hasPermission(player, "stargate.create.gate")) {
|
||||||
|
// Do a deep check to see if the player lacks this specific gate node
|
||||||
|
return hasPermDeep(player, "stargate.create.gate." + gate);
|
||||||
|
}
|
||||||
|
//Check for this specific gate
|
||||||
|
return hasPermission(player, "stargate.create.gate." + gate);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks if the given player can destroy the given portal
|
||||||
|
*
|
||||||
|
* @param player <p>The player trying to destroy the portal</p>
|
||||||
|
* @param portal <p>The portal to destroy</p>
|
||||||
|
* @return <p>True if the player is allowed to destroy the portal</p>
|
||||||
|
*/
|
||||||
|
public static boolean canDestroyPortal(Player player, Portal portal) {
|
||||||
|
String network = portal.getNetwork();
|
||||||
|
//Check for general destroy
|
||||||
|
if (hasPermission(player, "stargate.destroy")) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
//Check for all network destroy permission
|
||||||
|
if (hasPermission(player, "stargate.destroy.network")) {
|
||||||
|
//Do a deep check to see if the player lacks permission for this network node
|
||||||
|
return hasPermDeep(player, "stargate.destroy.network." + network);
|
||||||
|
}
|
||||||
|
//Check for this specific network
|
||||||
|
if (hasPermission(player, "stargate.destroy.network." + network)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
//Check for personal gate
|
||||||
|
return portal.isOwner(player) && hasPermission(player, "stargate.destroy.personal");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -7,7 +7,7 @@ import org.bukkit.ChatColor;
|
|||||||
import org.bukkit.block.Sign;
|
import org.bukkit.block.Sign;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This class helps drawing the sign on a portal as it's a bit too complicated to be contained within the portal class
|
* This class helps to draw the sign on a portal as it's a bit too complicated to be contained within the portal class
|
||||||
*/
|
*/
|
||||||
public final class SignHelper {
|
public final class SignHelper {
|
||||||
|
|
||||||
@ -41,7 +41,7 @@ public final class SignHelper {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Draws a sign with chooseable network locations
|
* Draws a sign with choose-able network locations
|
||||||
*
|
*
|
||||||
* @param sign <p>The sign to draw on</p>
|
* @param sign <p>The sign to draw on</p>
|
||||||
*/
|
*/
|
||||||
@ -51,7 +51,7 @@ public final class SignHelper {
|
|||||||
int destinationIndex = portal.getDestinations().indexOf(portal.getDestinationName());
|
int destinationIndex = portal.getDestinations().indexOf(portal.getDestinationName());
|
||||||
boolean freeGatesGreen = EconomyHandler.useEconomy() && EconomyHandler.freeGatesGreen;
|
boolean freeGatesGreen = EconomyHandler.useEconomy() && EconomyHandler.freeGatesGreen;
|
||||||
|
|
||||||
//Last entry, and not only entry. Draw the entry two previously
|
//Last, and not only entry. Draw the entry two back
|
||||||
if ((destinationIndex == maxIndex) && (maxIndex > 1)) {
|
if ((destinationIndex == maxIndex) && (maxIndex > 1)) {
|
||||||
drawNetworkSignLine(freeGatesGreen, sign, ++signLineIndex, destinationIndex - 2, portal);
|
drawNetworkSignLine(freeGatesGreen, sign, ++signLineIndex, destinationIndex - 2, portal);
|
||||||
}
|
}
|
||||||
@ -62,8 +62,8 @@ public final class SignHelper {
|
|||||||
//Draw the chosen entry (line 2 or 3)
|
//Draw the chosen entry (line 2 or 3)
|
||||||
drawNetworkSignChosenLine(freeGatesGreen, sign, ++signLineIndex, portal);
|
drawNetworkSignChosenLine(freeGatesGreen, sign, ++signLineIndex, portal);
|
||||||
//Has another entry and space on the sign
|
//Has another entry and space on the sign
|
||||||
if ((maxIndex >= destinationIndex + 1) && (++signLineIndex <= 3)) {
|
if ((maxIndex >= destinationIndex + 1)) {
|
||||||
drawNetworkSignLine(freeGatesGreen, sign, signLineIndex, destinationIndex + 1, portal);
|
drawNetworkSignLine(freeGatesGreen, sign, ++signLineIndex, destinationIndex + 1, portal);
|
||||||
}
|
}
|
||||||
//Has another entry and space on the sign
|
//Has another entry and space on the sign
|
||||||
if ((maxIndex >= destinationIndex + 2) && (++signLineIndex <= 3)) {
|
if ((maxIndex >= destinationIndex + 2) && (++signLineIndex <= 3)) {
|
||||||
@ -75,13 +75,13 @@ public final class SignHelper {
|
|||||||
* Draws the chosen destination on one sign line
|
* Draws the chosen destination on one sign line
|
||||||
*
|
*
|
||||||
* @param freeGatesGreen <p>Whether to display free gates in a green color</p>
|
* @param freeGatesGreen <p>Whether to display free gates in a green color</p>
|
||||||
* @param sign <p>The sign to draw on</p>
|
* @param sign <p>The sign to draw on</p>
|
||||||
* @param signLineIndex <p>The line to draw on</p>
|
* @param signLineIndex <p>The line to draw on</p>
|
||||||
*/
|
*/
|
||||||
private static void drawNetworkSignChosenLine(boolean freeGatesGreen, Sign sign, int signLineIndex, Portal portal) {
|
private static void drawNetworkSignChosenLine(boolean freeGatesGreen, Sign sign, int signLineIndex, Portal portal) {
|
||||||
if (freeGatesGreen) {
|
if (freeGatesGreen) {
|
||||||
Portal destination = PortalHandler.getByName(portal.getDestinationName(), portal.getNetwork());
|
Portal destination = PortalHandler.getByName(portal.getDestinationName(), portal.getNetwork());
|
||||||
boolean green = Stargate.isFree(portal.getActivePlayer(), portal, destination);
|
boolean green = PermissionHelper.isFree(portal.getActivePlayer(), portal, destination);
|
||||||
Stargate.setLine(sign, signLineIndex, (green ? ChatColor.DARK_GREEN : "") + ">" + portal.getDestinationName() + "<");
|
Stargate.setLine(sign, signLineIndex, (green ? ChatColor.DARK_GREEN : "") + ">" + portal.getDestinationName() + "<");
|
||||||
} else {
|
} else {
|
||||||
Stargate.setLine(sign, signLineIndex, " >" + portal.getDestinationName() + "< ");
|
Stargate.setLine(sign, signLineIndex, " >" + portal.getDestinationName() + "< ");
|
||||||
@ -91,16 +91,16 @@ public final class SignHelper {
|
|||||||
/**
|
/**
|
||||||
* Draws one network destination on one sign line
|
* Draws one network destination on one sign line
|
||||||
*
|
*
|
||||||
* @param freeGatesGreen <p>Whether to display free gates in a green color</p>
|
* @param freeGatesGreen <p>Whether to display free gates in a green color</p>
|
||||||
* @param sign <p>The sign to draw on</p>
|
* @param sign <p>The sign to draw on</p>
|
||||||
* @param signLineIndex <p>The line to draw on</p>
|
* @param signLineIndex <p>The line to draw on</p>
|
||||||
* @param destinationIndex <p>The index of the destination to draw</p>
|
* @param destinationIndex <p>The index of the destination to draw</p>
|
||||||
*/
|
*/
|
||||||
private static void drawNetworkSignLine(boolean freeGatesGreen, Sign sign, int signLineIndex, int destinationIndex,
|
private static void drawNetworkSignLine(boolean freeGatesGreen, Sign sign, int signLineIndex, int destinationIndex,
|
||||||
Portal portal) {
|
Portal portal) {
|
||||||
if (freeGatesGreen) {
|
if (freeGatesGreen) {
|
||||||
Portal destination = PortalHandler.getByName(portal.getDestinations().get(destinationIndex), portal.getNetwork());
|
Portal destination = PortalHandler.getByName(portal.getDestinations().get(destinationIndex), portal.getNetwork());
|
||||||
boolean green = Stargate.isFree(portal.getActivePlayer(), portal, destination);
|
boolean green = PermissionHelper.isFree(portal.getActivePlayer(), portal, destination);
|
||||||
Stargate.setLine(sign, signLineIndex, (green ? ChatColor.DARK_GREEN : "") + portal.getDestinations().get(destinationIndex));
|
Stargate.setLine(sign, signLineIndex, (green ? ChatColor.DARK_GREEN : "") + portal.getDestinations().get(destinationIndex));
|
||||||
} else {
|
} else {
|
||||||
Stargate.setLine(sign, signLineIndex, portal.getDestinations().get(destinationIndex));
|
Stargate.setLine(sign, signLineIndex, portal.getDestinations().get(destinationIndex));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user