Start of /dial command, still needs work

This commit is contained in:
Steven Scott
2012-03-14 21:58:15 -07:00
parent 17b225e924
commit bb69d412a8
3 changed files with 511 additions and 438 deletions

View File

@@ -1,6 +1,7 @@
package net.TheDgtl.StargateCommand; package net.TheDgtl.StargateCommand;
import net.TheDgtl.Stargate.Gate; import net.TheDgtl.Stargate.Gate;
import net.TheDgtl.Stargate.event.StargateActivateEvent;
import net.TheDgtl.StargateCommand.StargateCommand.Action; import net.TheDgtl.StargateCommand.StargateCommand.Action;
import org.bukkit.Material; import org.bukkit.Material;
@@ -76,4 +77,18 @@ public class SGCListener implements Listener {
} }
} }
} }
@EventHandler
public void onStargateActivate(StargateActivateEvent event) {
Player player = event.getPlayer();
SGCPlayer sPlayer = sgc.players.get(player);
if (sPlayer == null) return;
if (sPlayer.action != Action.DIAL) return;
if (event.getDestinations().contains(sPlayer.args[0])) {
event.setDestination(sPlayer.args[0]);
} else {
StargateCommand.sendMessage(player, "The specified destination does not exist for this gate. Exiting", true);
sgc.players.remove(player);
}
}
} }

View File

@@ -6,6 +6,7 @@ import java.util.logging.Logger;
import net.TheDgtl.Stargate.Blox; import net.TheDgtl.Stargate.Blox;
import net.TheDgtl.Stargate.Gate; import net.TheDgtl.Stargate.Gate;
import net.TheDgtl.Stargate.Portal;
import net.TheDgtl.Stargate.Stargate; import net.TheDgtl.Stargate.Stargate;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
@@ -263,6 +264,29 @@ public class StargateCommand extends JavaPlugin {
return gate; return gate;
} }
public void dialGate(Player player, String dest, String source, String network) {
Portal sourcePortal = Portal.getByName(source, network);
Portal destPortal = Portal.getByName(dest, network);
if (sourcePortal == null || destPortal == null) {
sendMessage(player, "The specified Stargate connection does not exist", true);
return;
}
if (sourcePortal.getWorld() != player.getWorld() && destPortal.getWorld() != player.getWorld()) {
sendMessage(player, "Neither of the specified gates are on your world", true);
return;
}
if (!Stargate.canAccessNetwork(player, network)) {
sendMessage(player, "You do not have access to that gate network", true);
return;
}
sourcePortal.setDestination(destPortal);
if (!sourcePortal.open(player, false)) {
sendMessage(player, "There was an error opening the gate", true);
return;
}
sendMessage(player, "The gate has been connected and opened", false);
}
@Override @Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
if (!(sender instanceof Player)) { if (!(sender instanceof Player)) {
@@ -271,7 +295,8 @@ public class StargateCommand extends JavaPlugin {
} }
Player player = (Player)sender; Player player = (Player)sender;
// SGC import/export // SGC import/export
if (command.getName().equalsIgnoreCase("sgc") && args.length > 0) { if (command.getName().equalsIgnoreCase("sgc")) {
if (args.length == 0) return false;
// Import // Import
if (args[0].equalsIgnoreCase("import")) { if (args[0].equalsIgnoreCase("import")) {
if (!player.hasPermission("stargate.command.import")) { if (!player.hasPermission("stargate.command.import")) {
@@ -279,7 +304,9 @@ public class StargateCommand extends JavaPlugin {
return true; return true;
} }
if (args.length < 2) { if (args.length < 2) {
StargateCommand.sendMessage(player, "You did not specify a gate to import", true); sendMessage(player, "Usage: /sgc import <gate> [force]", false);
sendMessage(player, "Use force to ignore terrain intersection", false);
sendMessage(player, "Example: /sgc import super force", false);
return true; return true;
} }
if (Gate.getGateByName(args[1] + ".gate") == null) { if (Gate.getGateByName(args[1] + ".gate") == null) {
@@ -297,7 +324,9 @@ public class StargateCommand extends JavaPlugin {
return true; return true;
} }
if (args.length < 2) { if (args.length < 2) {
sendMessage(player, "You must provide a gate name", true); StargateCommand.sendMessage(player, "Usage: /sgc export <gate> [force]", false);
StargateCommand.sendMessage(player, "Use force to overwrite existing .gate files", false);
sendMessage(player, "Example: /sgc export super force", false);
return true; return true;
} }
boolean force = false; boolean force = false;
@@ -315,6 +344,25 @@ public class StargateCommand extends JavaPlugin {
StargateCommand.sendMessage(player, "Command cancelled", false); StargateCommand.sendMessage(player, "Command cancelled", false);
} }
return true; return true;
} else if (command.getName().equalsIgnoreCase("dial")) {
if (args.length < 1 || args.length > 2) return false;
String dest = null;
String source = null;
String network = null;
dest = args[0];
if (args.length > 1) {
if (args.length < 2) {
sendMessage(player, "You must provide a network to direct dial a gate", true);
return true;
}
source = args[1];
network = args[2];
dialGate(player, dest, source, network);
} else {
players.put(player, new SGCPlayer(player, Action.DIAL, args));
sendMessage(player, "The next Stargate you activate will have " + dest + " set as the destination if available", false);
}
return true;
} }
return false; return false;
} }
@@ -336,6 +384,7 @@ public class StargateCommand extends JavaPlugin {
public enum Action { public enum Action {
IMPORT, IMPORT,
EXPORT EXPORT,
DIAL
} }
} }

View File

@@ -7,12 +7,21 @@ depend: [Stargate]
website: http://www.thedgtl.net website: http://www.thedgtl.net
commands: commands:
sgc: sgc:
description: Used to reload the plugin. Console use only. description: StargateCommand import/export commands.
usage: /<command> reload - Used to reload the plugin. Console use only. usage: |
/<command> <import/export/cancel> <gate> [force]
Type: "/<command> import" for help with import
Type: "/<command> export" for help with export
Type: "/<command> cancel" to cancel any pending SGC action
dial:
description: Dial a stargate
usage: /<command> <destination> [source] [network]
permissions: permissions:
stargate.command.import: stargate.command.import:
description: Allow the user of /sgc import description: Allow the use of /sgc import
default: op default: op
stargate.command.export: stargate.command.export:
description: Allow the user of /sgc export description: Allow the use of /sgc export
default: op default: op
stargate.command.dial:
description: Allow the use of /dial