diff --git a/src/main/java/com/l2jserver/L2JGameServerMain.java b/src/main/java/com/l2jserver/L2JGameServerMain.java
index 3deec395e..b929cc9b8 100644
--- a/src/main/java/com/l2jserver/L2JGameServerMain.java
+++ b/src/main/java/com/l2jserver/L2JGameServerMain.java
@@ -31,10 +31,6 @@ import com.l2jserver.service.network.NetworkService;
import com.l2jserver.service.network.keygen.BlowfishKeygenService;
public class L2JGameServerMain {
- /**
- * @param args
- * @throws InterruptedException
- */
public static void main(String[] args) throws InterruptedException {
final L2JGameServer server = new L2JGameServer();
try {
diff --git a/src/main/java/com/l2jserver/game/net/Lineage2Connection.java b/src/main/java/com/l2jserver/game/net/Lineage2Connection.java
index 0644e3878..d38d901ef 100644
--- a/src/main/java/com/l2jserver/game/net/Lineage2Connection.java
+++ b/src/main/java/com/l2jserver/game/net/Lineage2Connection.java
@@ -27,6 +27,8 @@ import com.l2jserver.game.net.codec.Lineage2PacketReader;
import com.l2jserver.game.net.codec.Lineage2PacketWriter;
import com.l2jserver.game.net.packet.ServerPacket;
import com.l2jserver.game.net.packet.server.SM_ACTION_FAILED;
+import com.l2jserver.game.net.packet.server.SM_COMMUNITY_HTML;
+import com.l2jserver.game.net.packet.server.SM_HTML;
import com.l2jserver.game.net.packet.server.SM_SYSTEM_MESSAGE;
import com.l2jserver.model.id.object.CharacterID;
import com.l2jserver.model.template.ItemTemplate;
@@ -36,6 +38,7 @@ import com.l2jserver.service.game.world.WorldService;
import com.l2jserver.service.game.world.filter.impl.CharacterBroadcastFilter;
import com.l2jserver.service.network.NetworkService;
import com.l2jserver.util.factory.CollectionFactory;
+import com.l2jserver.util.html.markup.HtmlTemplate;
/**
* This object connects the model (structure objects normally stored in the
@@ -311,6 +314,39 @@ public class Lineage2Connection {
return write(SM_ACTION_FAILED.SHARED_INSTANCE);
}
+ /**
+ * Sends a {@link SM_HTML} packet to the client. In the packet, the NPC will
+ * be null. If you wish to send the HTML with an NPC, you should send the
+ * packet directly.
+ *
+ * This is an convenience method for
+ * conn.write(new SM_HTML(null, template));
+ *
+ * @param template
+ * the HTML template to be sent
+ * @return the {@link ChannelFuture} that will be notified once the packet
+ * has been written.
+ */
+ public ChannelFuture sendHTML(HtmlTemplate template) {
+ return write(new SM_HTML(null, template));
+ }
+
+ /**
+ * Sends a {@link SM_COMMUNITY_HTML} packet to the client. HTML code is not
+ * displayed in the regular chat window, they will appear in a large one.
+ *
+ * This is an convenience method for
+ * conn.write(new SM_COMMUNITY_HTML(template));
+ *
+ * @param template
+ * the HTML template to be sent
+ * @return the {@link ChannelFuture} that will be notified once the packet
+ * has been written.
+ */
+ public ChannelFuture sendCommunityHTML(HtmlTemplate template) {
+ return write(new SM_COMMUNITY_HTML(template));
+ }
+
/**
* Broadcast a packet to all characters in this character knownlist.
*
diff --git a/src/main/java/com/l2jserver/game/net/handler/Lineage2PacketHandler.java b/src/main/java/com/l2jserver/game/net/handler/Lineage2PacketHandler.java
index 9009a16ca..1db792fe5 100644
--- a/src/main/java/com/l2jserver/game/net/handler/Lineage2PacketHandler.java
+++ b/src/main/java/com/l2jserver/game/net/handler/Lineage2PacketHandler.java
@@ -28,7 +28,6 @@ import org.jboss.netty.channel.SimpleChannelHandler;
import com.google.common.base.Throwables;
import com.l2jserver.game.net.Lineage2Connection;
import com.l2jserver.game.net.packet.ClientPacket;
-import com.l2jserver.game.net.packet.server.SM_HTML;
import com.l2jserver.service.game.world.WorldService;
import com.l2jserver.service.network.NettyNetworkService;
import com.l2jserver.util.html.markup.HtmlTemplate;
@@ -108,7 +107,7 @@ public class Lineage2PacketHandler extends SimpleChannelHandler {
if (!connection.isConnected())
// no point sending error messages if the client is disconnected
return;
-
+
// TODO only send exception stack trace in development mode!
final String exception = Throwables.getStackTraceAsString(e)
.replaceAll("\n", "
").replace(" ", "");
@@ -118,11 +117,13 @@ public class Lineage2PacketHandler extends SimpleChannelHandler {
body.text(exception);
}
};
- connection.write(new SM_HTML(null, template));
- connection.sendActionFailed(); // order client not to wait any packet
-
- final String[] lines = Throwables.getStackTraceAsString(e).split("\n");
- for(final String line : lines) {
+ connection.sendCommunityHTML(template);
+ // order client not to wait any packet
+ connection.sendActionFailed();
+
+ final String[] lines = Throwables.getStackTraceAsString(e).split(
+ "\n");
+ for (final String line : lines) {
connection.sendMessage(line);
}
} finally {
diff --git a/src/main/java/com/l2jserver/game/net/packet/client/CM_ADMIN_COMMAND.java b/src/main/java/com/l2jserver/game/net/packet/client/CM_ADMIN_COMMAND.java
index b306dd2e3..28dd5b06e 100644
--- a/src/main/java/com/l2jserver/game/net/packet/client/CM_ADMIN_COMMAND.java
+++ b/src/main/java/com/l2jserver/game/net/packet/client/CM_ADMIN_COMMAND.java
@@ -16,18 +16,13 @@
*/
package com.l2jserver.game.net.packet.client;
-import java.util.StringTokenizer;
-
import org.jboss.netty.buffer.ChannelBuffer;
import com.google.inject.Inject;
import com.l2jserver.game.net.Lineage2Connection;
import com.l2jserver.game.net.packet.AbstractClientPacket;
-import com.l2jserver.service.game.spawn.CharacterAlreadyTeleportingServiceException;
-import com.l2jserver.service.game.spawn.NotSpawnedServiceException;
-import com.l2jserver.service.game.spawn.SpawnService;
+import com.l2jserver.service.game.admin.AdministratorService;
import com.l2jserver.util.BufferUtils;
-import com.l2jserver.util.geometry.Coordinate;
/**
* Executes an administrator action
@@ -43,8 +38,7 @@ public class CM_ADMIN_COMMAND extends AbstractClientPacket {
/**
* The admin service
*/
- // private final AdministratorService adminService;
- private final SpawnService spawnService;
+ private final AdministratorService adminService;
/**
* The command
@@ -52,10 +46,8 @@ public class CM_ADMIN_COMMAND extends AbstractClientPacket {
private String command;
@Inject
- public CM_ADMIN_COMMAND(/* AdministratorService adminService, */
- SpawnService spawnService) {
- // this.adminService = adminService;
- this.spawnService = spawnService;
+ public CM_ADMIN_COMMAND(AdministratorService adminService) {
+ this.adminService = adminService;
}
@Override
@@ -65,21 +57,23 @@ public class CM_ADMIN_COMMAND extends AbstractClientPacket {
@Override
public void process(final Lineage2Connection conn) {
- final StringTokenizer tokenizer = new StringTokenizer(command, " ");
- final String cmd = tokenizer.nextToken();
- if (cmd.equals("tele")) {
- Coordinate coord = Coordinate.fromXYZ(
- Integer.parseInt(tokenizer.nextToken()),
- Integer.parseInt(tokenizer.nextToken()),
- Integer.parseInt(tokenizer.nextToken()));
- try {
- spawnService.teleport(conn.getCharacter(), coord);
- } catch (NotSpawnedServiceException e) {
- conn.sendActionFailed();
- } catch (CharacterAlreadyTeleportingServiceException e) {
- conn.sendActionFailed();
- }
- }
+ // final StringTokenizer tokenizer = new StringTokenizer(command, " ");
+ // final String cmd = tokenizer.nextToken();
+ // if (cmd.equals("tele")) {
+ // Coordinate coord = Coordinate.fromXYZ(
+ // Integer.parseInt(tokenizer.nextToken()),
+ // Integer.parseInt(tokenizer.nextToken()),
+ // Integer.parseInt(tokenizer.nextToken()));
+ // try {
+ // spawnService.teleport(conn.getCharacter(), coord);
+ // } catch (NotSpawnedServiceException e) {
+ // conn.sendActionFailed();
+ // } catch (CharacterAlreadyTeleportingServiceException e) {
+ // conn.sendActionFailed();
+ // }
+ // }
+ adminService.command(conn, conn.getCharacter(), "", new String[] {});
+
// TODO implement admin commands
}
}
diff --git a/src/main/java/com/l2jserver/game/net/packet/client/CM_BYPASS.java b/src/main/java/com/l2jserver/game/net/packet/client/CM_BYPASS.java
index 953652bac..744e9d91a 100644
--- a/src/main/java/com/l2jserver/game/net/packet/client/CM_BYPASS.java
+++ b/src/main/java/com/l2jserver/game/net/packet/client/CM_BYPASS.java
@@ -19,6 +19,8 @@ package com.l2jserver.game.net.packet.client;
import java.util.StringTokenizer;
import org.jboss.netty.buffer.ChannelBuffer;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import com.google.inject.Inject;
import com.l2jserver.game.net.Lineage2Connection;
@@ -38,6 +40,8 @@ import com.l2jserver.util.BufferUtils;
* @author Rogiel
*/
public class CM_BYPASS extends AbstractClientPacket {
+ private final Logger log = LoggerFactory.getLogger(this.getClass());
+
/**
* The packet OPCODE
*/
@@ -90,6 +94,8 @@ public class CM_BYPASS extends AbstractClientPacket {
} catch (CannotSetTargetServiceException e) {
conn.sendActionFailed();
}
+ } else {
+ log.warn("Client requested an bypass not supported by server");
}
}
diff --git a/src/main/java/com/l2jserver/game/net/packet/server/SM_ACTOR_POSITION.java b/src/main/java/com/l2jserver/game/net/packet/server/SM_ACTOR_POSITION.java
index 0d3081ba6..869c37716 100644
--- a/src/main/java/com/l2jserver/game/net/packet/server/SM_ACTOR_POSITION.java
+++ b/src/main/java/com/l2jserver/game/net/packet/server/SM_ACTOR_POSITION.java
@@ -20,7 +20,6 @@ import org.jboss.netty.buffer.ChannelBuffer;
import com.l2jserver.game.net.Lineage2Connection;
import com.l2jserver.game.net.packet.AbstractServerPacket;
-import com.l2jserver.game.net.packet.server.SM_CHAR_CREATE_FAIL.Reason;
import com.l2jserver.model.world.Actor;
/**
@@ -28,7 +27,6 @@ import com.l2jserver.model.world.Actor;
* successfully selected.
*
* @author Rogiel
- * @see Reason
*/
public class SM_ACTOR_POSITION extends AbstractServerPacket {
/**
diff --git a/src/main/java/com/l2jserver/game/net/packet/server/SM_CHAR_SELECTED.java b/src/main/java/com/l2jserver/game/net/packet/server/SM_CHAR_SELECTED.java
index a084965d7..6f2fd58cf 100644
--- a/src/main/java/com/l2jserver/game/net/packet/server/SM_CHAR_SELECTED.java
+++ b/src/main/java/com/l2jserver/game/net/packet/server/SM_CHAR_SELECTED.java
@@ -20,7 +20,6 @@ import org.jboss.netty.buffer.ChannelBuffer;
import com.l2jserver.game.net.Lineage2Connection;
import com.l2jserver.game.net.packet.AbstractServerPacket;
-import com.l2jserver.game.net.packet.server.SM_CHAR_CREATE_FAIL.Reason;
import com.l2jserver.model.world.L2Character;
import com.l2jserver.model.world.actor.ActorExperience;
import com.l2jserver.util.BufferUtils;
@@ -30,7 +29,6 @@ import com.l2jserver.util.BufferUtils;
* successfully selected.
*
* @author Rogiel
- * @see Reason
*/
public class SM_CHAR_SELECTED extends AbstractServerPacket {
/**
diff --git a/src/main/java/com/l2jserver/game/net/packet/server/SM_CHAT.java b/src/main/java/com/l2jserver/game/net/packet/server/SM_CHAT.java
index d67aec116..e5cbe3ca7 100644
--- a/src/main/java/com/l2jserver/game/net/packet/server/SM_CHAT.java
+++ b/src/main/java/com/l2jserver/game/net/packet/server/SM_CHAT.java
@@ -20,7 +20,6 @@ import org.jboss.netty.buffer.ChannelBuffer;
import com.l2jserver.game.net.Lineage2Connection;
import com.l2jserver.game.net.packet.AbstractServerPacket;
-import com.l2jserver.game.net.packet.server.SM_CHAR_CREATE_FAIL.Reason;
import com.l2jserver.model.world.Actor;
import com.l2jserver.model.world.L2Character;
import com.l2jserver.service.game.chat.ChatMessageDestination;
@@ -31,7 +30,6 @@ import com.l2jserver.util.BufferUtils;
* successfully selected.
*
* @author Rogiel
- * @see Reason
*/
public class SM_CHAT extends AbstractServerPacket {
/**
@@ -56,16 +54,16 @@ public class SM_CHAT extends AbstractServerPacket {
*/
private int messageID = 0;
- public SM_CHAT(Actor character,
- ChatMessageDestination destination, String message) {
+ public SM_CHAT(Actor character, ChatMessageDestination destination,
+ String message) {
super(OPCODE);
this.actor = character;
this.destination = destination;
this.message = message;
}
- public SM_CHAT(Actor actor,
- ChatMessageDestination destination, int messageID) {
+ public SM_CHAT(Actor actor, ChatMessageDestination destination,
+ int messageID) {
super(OPCODE);
this.actor = actor;
this.destination = destination;
diff --git a/src/main/java/com/l2jserver/game/net/packet/server/SM_COMMUNITY_HTML.java b/src/main/java/com/l2jserver/game/net/packet/server/SM_COMMUNITY_HTML.java
new file mode 100644
index 000000000..97c06a5b7
--- /dev/null
+++ b/src/main/java/com/l2jserver/game/net/packet/server/SM_COMMUNITY_HTML.java
@@ -0,0 +1,64 @@
+/*
+ * This file is part of l2jserver .
+ *
+ * l2jserver is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * l2jserver is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with l2jserver. If not, see .
+ */
+package com.l2jserver.game.net.packet.server;
+
+import org.htmlparser.tags.Html;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+import com.l2jserver.game.net.Lineage2Connection;
+import com.l2jserver.game.net.packet.AbstractServerPacket;
+import com.l2jserver.util.BufferUtils;
+import com.l2jserver.util.html.markup.HtmlTemplate;
+
+/**
+ * This packet sends an HTML message to be displayed in the client. As opposed
+ * to {@link SM_HTML}, this one displays it in the community board window.
+ *
+ * @author Rogiel
+ */
+public class SM_COMMUNITY_HTML extends AbstractServerPacket {
+ /**
+ * The packet OPCODE
+ */
+ public static final int OPCODE = 0x7b;
+
+ /**
+ * The HTML contents
+ */
+ private final String html;
+
+ public SM_COMMUNITY_HTML(String html) {
+ super(OPCODE);
+ this.html = html;
+ }
+
+ public SM_COMMUNITY_HTML(Html html) {
+ super(OPCODE);
+ this.html = html.toHtml();
+ }
+
+ public SM_COMMUNITY_HTML(HtmlTemplate template) {
+ super(OPCODE);
+ this.html = template.toHtmlString();
+ }
+
+ @Override
+ public void write(Lineage2Connection conn, ChannelBuffer buffer) {
+ buffer.writeByte(0x01); // display or hide
+ BufferUtils.writeString(buffer, html);
+ }
+}
diff --git a/src/main/java/com/l2jserver/game/net/packet/server/SM_MOVE_TYPE.java b/src/main/java/com/l2jserver/game/net/packet/server/SM_MOVE_TYPE.java
index 09907a965..2b3edcdb9 100644
--- a/src/main/java/com/l2jserver/game/net/packet/server/SM_MOVE_TYPE.java
+++ b/src/main/java/com/l2jserver/game/net/packet/server/SM_MOVE_TYPE.java
@@ -20,14 +20,12 @@ import org.jboss.netty.buffer.ChannelBuffer;
import com.l2jserver.game.net.Lineage2Connection;
import com.l2jserver.game.net.packet.AbstractServerPacket;
-import com.l2jserver.game.net.packet.server.SM_CHAR_CREATE_FAIL.Reason;
import com.l2jserver.model.world.L2Character;
/**
* This packet updates the movement type
*
* @author Rogiel
- * @see Reason
*/
public class SM_MOVE_TYPE extends AbstractServerPacket {
/**
diff --git a/src/main/java/com/l2jserver/game/net/packet/server/SM_STATUS_UPDATE.java b/src/main/java/com/l2jserver/game/net/packet/server/SM_STATUS_UPDATE.java
index 52871985d..972e85464 100644
--- a/src/main/java/com/l2jserver/game/net/packet/server/SM_STATUS_UPDATE.java
+++ b/src/main/java/com/l2jserver/game/net/packet/server/SM_STATUS_UPDATE.java
@@ -23,7 +23,6 @@ import org.jboss.netty.buffer.ChannelBuffer;
import com.l2jserver.game.net.Lineage2Connection;
import com.l2jserver.game.net.packet.AbstractServerPacket;
-import com.l2jserver.game.net.packet.server.SM_CHAR_CREATE_FAIL.Reason;
import com.l2jserver.model.world.Actor;
import com.l2jserver.util.factory.CollectionFactory;
@@ -32,7 +31,6 @@ import com.l2jserver.util.factory.CollectionFactory;
* successfully selected.
*
* @author Rogiel
- * @see Reason
*/
public class SM_STATUS_UPDATE extends AbstractServerPacket {
/**
diff --git a/src/main/java/com/l2jserver/game/net/packet/server/SM_TARGET.java b/src/main/java/com/l2jserver/game/net/packet/server/SM_TARGET.java
index ce4112543..feb35a8c1 100644
--- a/src/main/java/com/l2jserver/game/net/packet/server/SM_TARGET.java
+++ b/src/main/java/com/l2jserver/game/net/packet/server/SM_TARGET.java
@@ -20,7 +20,6 @@ import org.jboss.netty.buffer.ChannelBuffer;
import com.l2jserver.game.net.Lineage2Connection;
import com.l2jserver.game.net.packet.AbstractServerPacket;
-import com.l2jserver.game.net.packet.server.SM_CHAR_CREATE_FAIL.Reason;
import com.l2jserver.model.world.Actor;
/**
@@ -28,7 +27,6 @@ import com.l2jserver.model.world.Actor;
* successfully selected.
*
* @author Rogiel
- * @see Reason
*/
public class SM_TARGET extends AbstractServerPacket {
/**
diff --git a/src/main/java/com/l2jserver/game/net/packet/server/SM_TELEPORT.java b/src/main/java/com/l2jserver/game/net/packet/server/SM_TELEPORT.java
index 54fc902dd..4547b9ffb 100644
--- a/src/main/java/com/l2jserver/game/net/packet/server/SM_TELEPORT.java
+++ b/src/main/java/com/l2jserver/game/net/packet/server/SM_TELEPORT.java
@@ -20,7 +20,6 @@ import org.jboss.netty.buffer.ChannelBuffer;
import com.l2jserver.game.net.Lineage2Connection;
import com.l2jserver.game.net.packet.AbstractServerPacket;
-import com.l2jserver.game.net.packet.server.SM_CHAR_CREATE_FAIL.Reason;
import com.l2jserver.model.world.L2Character;
import com.l2jserver.util.geometry.Point3D;
@@ -29,7 +28,6 @@ import com.l2jserver.util.geometry.Point3D;
* successfully selected.
*
* @author Rogiel
- * @see Reason
*/
public class SM_TELEPORT extends AbstractServerPacket {
/**
diff --git a/src/main/java/com/l2jserver/model/server/attack/PhysicalAttackCalculator.java b/src/main/java/com/l2jserver/model/server/attack/PhysicalAttackCalculator.java
index 38d60c356..2ad1ccaa2 100644
--- a/src/main/java/com/l2jserver/model/server/attack/PhysicalAttackCalculator.java
+++ b/src/main/java/com/l2jserver/model/server/attack/PhysicalAttackCalculator.java
@@ -16,7 +16,6 @@
*/
package com.l2jserver.model.server.attack;
-import com.l2jserver.model.template.ItemTemplate;
import com.l2jserver.model.world.Actor;
/**
diff --git a/src/main/java/com/l2jserver/service/ServiceModule.java b/src/main/java/com/l2jserver/service/ServiceModule.java
index ef5fe60fd..10a4b8cb6 100644
--- a/src/main/java/com/l2jserver/service/ServiceModule.java
+++ b/src/main/java/com/l2jserver/service/ServiceModule.java
@@ -33,6 +33,8 @@ import com.l2jserver.service.database.DatabaseService;
import com.l2jserver.service.database.JDBCDatabaseService;
import com.l2jserver.service.game.AttackService;
import com.l2jserver.service.game.AttackServiceImpl;
+import com.l2jserver.service.game.admin.AdministratorService;
+import com.l2jserver.service.game.admin.AdministratorServiceImpl;
import com.l2jserver.service.game.character.CharacterService;
import com.l2jserver.service.game.character.CharacterServiceImpl;
import com.l2jserver.service.game.chat.ChatService;
@@ -102,6 +104,8 @@ public class ServiceModule extends AbstractModule {
bind(ChatService.class).to(SimpleChatService.class)
.in(Scopes.SINGLETON);
+ bind(AdministratorService.class).to(AdministratorServiceImpl.class).in(
+ Scopes.SINGLETON);
bind(SpawnService.class).to(SpawnServiceImpl.class)
.in(Scopes.SINGLETON);
bind(BroadcastService.class).to(BroadcastServiceImpl.class).in(
diff --git a/src/main/java/com/l2jserver/service/admin/AdministratorService.java b/src/main/java/com/l2jserver/service/game/admin/AdministratorService.java
similarity index 84%
rename from src/main/java/com/l2jserver/service/admin/AdministratorService.java
rename to src/main/java/com/l2jserver/service/game/admin/AdministratorService.java
index 7a5cebc52..69faf1234 100644
--- a/src/main/java/com/l2jserver/service/admin/AdministratorService.java
+++ b/src/main/java/com/l2jserver/service/game/admin/AdministratorService.java
@@ -14,8 +14,9 @@
* You should have received a copy of the GNU General Public License
* along with l2jserver. If not, see .
*/
-package com.l2jserver.service.admin;
+package com.l2jserver.service.game.admin;
+import com.l2jserver.game.net.Lineage2Connection;
import com.l2jserver.model.world.L2Character;
import com.l2jserver.service.Service;
@@ -28,6 +29,8 @@ public interface AdministratorService extends Service {
/**
* Executes an command
*
+ * @param conn
+ * the lineage 2 connection
* @param character
* the admin character
* @param command
@@ -35,7 +38,8 @@ public interface AdministratorService extends Service {
* @param args
* the arguments
*/
- void command(L2Character character, String command, String... args);
+ void command(Lineage2Connection conn, L2Character character,
+ String command, String... args);
/**
* The base interface for Administrator commands
diff --git a/src/main/java/com/l2jserver/service/admin/AdministratorServiceImpl.java b/src/main/java/com/l2jserver/service/game/admin/AdministratorServiceImpl.java
similarity index 77%
rename from src/main/java/com/l2jserver/service/admin/AdministratorServiceImpl.java
rename to src/main/java/com/l2jserver/service/game/admin/AdministratorServiceImpl.java
index 813449fed..0d259124d 100644
--- a/src/main/java/com/l2jserver/service/admin/AdministratorServiceImpl.java
+++ b/src/main/java/com/l2jserver/service/game/admin/AdministratorServiceImpl.java
@@ -14,13 +14,15 @@
* You should have received a copy of the GNU General Public License
* along with l2jserver. If not, see .
*/
-package com.l2jserver.service.admin;
+package com.l2jserver.service.game.admin;
import java.util.List;
+import com.l2jserver.game.net.Lineage2Connection;
import com.l2jserver.model.id.object.CharacterID;
import com.l2jserver.model.world.L2Character;
import com.l2jserver.service.AbstractService;
+import com.l2jserver.service.game.admin.panel.AdminHomeTemplate;
/**
* @author Rogiel
@@ -30,13 +32,10 @@ public class AdministratorServiceImpl extends AbstractService implements
AdministratorService {
@SuppressWarnings("unused")
private List online;
-
+
@Override
- public void command(L2Character character, String command, String... args) {
- if(command.equals("log")) {
- if(args.length == 2) {
-
- }
- }
+ public void command(Lineage2Connection conn, L2Character character,
+ String command, String... args) {
+ conn.sendCommunityHTML(new AdminHomeTemplate());
}
}
diff --git a/src/main/java/com/l2jserver/service/admin/GMService.java b/src/main/java/com/l2jserver/service/game/admin/GMService.java
similarity index 96%
rename from src/main/java/com/l2jserver/service/admin/GMService.java
rename to src/main/java/com/l2jserver/service/game/admin/GMService.java
index 73e0f5a4a..825bdeb29 100644
--- a/src/main/java/com/l2jserver/service/admin/GMService.java
+++ b/src/main/java/com/l2jserver/service/game/admin/GMService.java
@@ -14,7 +14,7 @@
* You should have received a copy of the GNU General Public License
* along with l2jserver. If not, see .
*/
-package com.l2jserver.service.admin;
+package com.l2jserver.service.game.admin;
import com.l2jserver.model.world.L2Character;
import com.l2jserver.service.Service;
diff --git a/src/main/java/com/l2jserver/service/game/admin/panel/AdminHomeTemplate.java b/src/main/java/com/l2jserver/service/game/admin/panel/AdminHomeTemplate.java
new file mode 100644
index 000000000..c7700e66b
--- /dev/null
+++ b/src/main/java/com/l2jserver/service/game/admin/panel/AdminHomeTemplate.java
@@ -0,0 +1,32 @@
+/*
+ * This file is part of l2jserver .
+ *
+ * l2jserver is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * l2jserver is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with l2jserver. If not, see .
+ */
+package com.l2jserver.service.game.admin.panel;
+
+import com.l2jserver.util.html.markup.HtmlTemplate;
+import com.l2jserver.util.html.markup.MarkupTag;
+
+/**
+ * @author Rogiel
+ */
+public class AdminHomeTemplate extends HtmlTemplate {
+ @Override
+ protected void build(MarkupTag body) {
+ body.text("Welcome to l2jserver2 administration panel.").br();
+ body.addLink("Teleport", "admin teleport").br();
+ body.addLink("Online characters", "admin online").br();
+ }
+}
diff --git a/src/main/java/com/l2jserver/service/game/admin/panel/TeleportTemplate.java b/src/main/java/com/l2jserver/service/game/admin/panel/TeleportTemplate.java
new file mode 100644
index 000000000..e340d7503
--- /dev/null
+++ b/src/main/java/com/l2jserver/service/game/admin/panel/TeleportTemplate.java
@@ -0,0 +1,33 @@
+/*
+ * This file is part of l2jserver .
+ *
+ * l2jserver is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * l2jserver is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with l2jserver. If not, see .
+ */
+package com.l2jserver.service.game.admin.panel;
+
+import com.l2jserver.util.html.markup.HtmlTemplate;
+import com.l2jserver.util.html.markup.MarkupTag;
+
+/**
+ * @author Rogiel
+ *
+ */
+public class TeleportTemplate extends HtmlTemplate {
+ @Override
+ protected void build(MarkupTag body) {
+ body.text("You can teleport to the following places:").br();
+ body.addLink("Aden", "admin teleport aden");
+ body.addLink("Giran", "admin teleport giran");
+ }
+}
diff --git a/src/main/java/com/l2jserver/test/XMLMappingTest.java b/src/main/java/com/l2jserver/test/XMLMappingTest.java
index e5222b0a9..c5b63e65e 100644
--- a/src/main/java/com/l2jserver/test/XMLMappingTest.java
+++ b/src/main/java/com/l2jserver/test/XMLMappingTest.java
@@ -29,6 +29,7 @@ import com.l2jserver.GameServerModule;
import com.l2jserver.model.template.CharacterTemplate;
import com.l2jserver.model.template.NPCTemplate;
import com.l2jserver.model.template.TeleportationTemplate;
+import com.l2jserver.service.game.admin.panel.AdminHomeTemplate;
import com.l2jserver.util.jaxb.CharacterTemplateIDAdapter;
import com.l2jserver.util.jaxb.ItemTemplateIDAdapter;
import com.l2jserver.util.jaxb.NPCTemplateIDAdapter;
@@ -47,6 +48,9 @@ public class XMLMappingTest {
public static void main(String[] args) throws JAXBException, IOException {
// final List templates = CollectionFactory.newList();
+ System.out.println(new AdminHomeTemplate().toHtmlString());
+ System.exit(0);
+
final JAXBContext c = JAXBContext.newInstance(CharacterTemplate.class,
NPCTemplate.class, TeleportationTemplate.class);
final Unmarshaller u = c.createUnmarshaller();