Create a Stendhal server extension: Difference between revisions
Content deleted Content added
imported>Hendrik Brummermann |
imported>Hendrik Brummermann added navigation menu |
||
| (38 intermediate revisions by the same user not shown) | |||
Line 1:
{{Navigation for Stendhal Top|Building & Hosting}}
How to create a server extension? This will teach you how to! Todays project: add the commands "/date" and "/time" for the users, so that they can check what time or what date it is.
==Requirements==
Whats required?
*An OS
Line 8 ⟶ 10:
*Java knowledge is recommened
==Getting
Ok, let's be cliched here. The "hello, world!" of stendhal server extensions!
===The file===
Create a file in <downloaded stendhal source>/src/games/stendhal/server/extension/ called "HelloWorldExtension.java" and add this to it (just for now):
<source lang="java">
package games.stendhal.server.extension;
Line 90 ⟶ 69:
}
}
</
Time for an explanation: First, we import a whole lot of stuff. This is just so we can interact with
<source lang="java">
private static final Logger logger = Log4J.getLogger(HelloWorldExtension.class);
</
creates a logger and configures it for the current class.
<source lang="java">
StendhalRPRuleProcessor.register("hello", this);
</
This code tells the server "register the command '/hello' to
==Date and Time==
Now, I'm not going to re-post the entire script, as it gets to be just under 100 lines of code, and I don't want a INCREDIBLY long page!
First, we import a new class: <code>java.util.Calendar</code> With that, we can get the current date and time! Then, add these lines to your class method:
<source lang="java">
StendhalRPRuleProcessor.register("date", this);
StendhalRPRuleProcessor.register("time", this);
</
These register the date and time commands. Now, we add the if to onAction:
<source lang="java">
if (type.equals("date")) {
onDate(world, rules, player, action);
Line 115 ⟶ 96:
onTime(world, rules, player, action);
}
</
And add the two functions onDate and onTime:
<source lang="java">
private void onDate(RPWorld world, StendhalRPRuleProcessor rules,
Player player, RPAction action) {
Line 130 ⟶ 111:
player.sendPrivateText("The current time is: " + calendar.getTime().toString());
}
</
That's it! Now, just recompile your server, and boom! Your 75% there! Now, one last thing; configuring the server to
▲==Configuration of marauroa==
▲Now, again open up marauroa.ini, and add these lines:
<pre>
date_time=games.stendhal.server.extension.DateAndTimeExtension
server_extension=date_time
</pre>
Now, if you've been following the tut, don't just copy/paste the second line - add 'date_time' to the end of the list, with a comma before it. Also, if you've saved the file somewhere else other than where the Spouse extension is (which I don't recommend doing, it's in a folder called "extension") you're going to have to change the class path to point to that.▼
▲Now, if you've been following the tut, don't just copy/paste the second line - add 'date_time' to the end of the list, with a comma before it. Also, if you've saved the file somewhere else
=Done=▼
▲==Done==
Done! Now you've completely added 2 extensions, one of which is pointless other than, "I did it! I did it!" Have your users be notified of the change; they may or may not like it!
| |||