Java Reference
In-Depth Information
The parseArgs Function
Since there are a couple of things to check for when the user types in a
command, I've split that out into its own function instead of doing it right in
the signsCommand function.
Notice we're using a parameter from our command function that we haven't
used before: String[]args . These are any arguments that the player types in with
the command in the chat window. For example, if we type in
/signs
that will be passed to signsCommand in the args array as args[0] ; args will have a
length of 1. If we type
/signs set one Hello!
then args[0] will still be "signs" , args[1] will be "set" , args[2] will be "one" , and args[3]
will be "Hello!" .
We know that we need at least three values in the args array: it will either be
"signsnewname" or "signssetnamesomething" .
Remember that with arrays, you have to check that the array is long enough;
otherwise you'll get a lengthy error message from the server that ends up with
something like this:
Caused by: java.lang.ArrayIndexOutOfBoundsException: 1
at namedsigns.NamedSigns.makeSign(NamedSigns.java:26)
at namedsigns.NamedSigns.signsCommand(NamedSigns.java:47)
... 15 more
We're checking the length of the arguments ourselves. But we could also set
the " min == 3 " part in the @Command annotation. That way if we don't have at
least three arguments, the system will send a nice message to the player with
our toolTip as a help message.
Safe in the knowledge that we have at least three values in the args array to
work with, let's see what the player actually typed in.
The “/signs new” Command
Here's the part for the "new" command:
NamedSigns/src/namedsigns/NamedSigns.java
// signs new sign_name
private void makeNewSign(Player me, String [] args) {
Location loc = me.getLocation();
loc.setX(loc.getX() + 1); // Not right on top of player
int y = loc.getWorld().getHighestBlockAt(( int )loc.getX(),( int )loc.getZ());
 
 
 
Search WWH ::




Custom Search