From 82f6bcbc1ca29e318412f1b12802839e3ffa6ad0 Mon Sep 17 00:00:00 2001 From: Rogiel Date: Fri, 16 Dec 2011 01:21:23 -0200 Subject: [PATCH] Fixes item pick animation and renames few packets --- .../service/database/AbstractDAO.java | 31 ++++----- .../database/AbstractJDBCDatabaseService.java | 3 +- .../AbstractOrientDatabaseService.java | 2 +- .../service/database/DataAccessObject.java | 34 ++++----- .../java/com/l2jserver/util/ArrayUtils.java | 14 ++-- .../com/l2jserver/util/ArrayUtilsTest.java | 31 +++++++-- .../game/net/Lineage2PipelineFactory.java | 10 ++- .../game/net/codec/Lineage2PacketReader.java | 18 ++--- .../game/net/packet/ClientPacketModule.java | 33 --------- .../game/net/packet/PacketModule.java | 33 --------- .../game/net/packet/ServerPacketModule.java | 33 --------- .../{CM_ATTACK.java => CM_CHAR_ATTACK.java} | 4 +- .../{CM_CHAT.java => CM_CHAR_CHAT.java} | 4 +- .../{CM_DROP_ITEM.java => CM_ITEM_DROP.java} | 4 +- .../{SM_CHAT.java => SM_ACTOR_CHAT.java} | 6 +- .../server/{SM_DIE.java => SM_ACTOR_DIE.java} | 4 +- .../{SM_MOVE.java => SM_ACTOR_MOVE.java} | 4 +- ...PDATE.java => SM_ACTOR_STATUS_UPDATE.java} | 6 +- ...ER_WORLD.java => SM_CHAR_ENTER_WORLD.java} | 4 +- ...SM_TELEPORT.java => SM_CHAR_TELEPORT.java} | 4 +- .../net/packet/server/SM_ITEM_GROUND.java | 2 +- .../game/net/packet/server/SM_ITEM_PICK.java | 69 +++++++++++++++++++ ...temPickUpEvent.java => ItemPickEvent.java} | 4 +- .../npc/controller/MonsterController.java | 6 +- .../database/jdbc/JDBCCharacterDAO.java | 11 +++ .../database/jdbc/JDBCCharacterFriendDAO.java | 15 +++- .../database/jdbc/JDBCChatMessageDAO.java | 11 +++ .../service/database/jdbc/JDBCClanDAO.java | 11 +++ .../service/database/jdbc/JDBCItemDAO.java | 11 +++ .../service/database/jdbc/JDBCNPCDAO.java | 11 +++ .../orientdb/OrientDBCharacterDAO.java | 11 +++ .../orientdb/OrientDBCharacterFriendDAO.java | 15 +++- .../orientdb/OrientDBChatMessageDAO.java | 11 +++ .../database/orientdb/OrientDBClanDAO.java | 11 +++ .../game/character/CharacterServiceImpl.java | 12 ++-- .../service/game/chat/ChatService.java | 8 +-- .../service/game/item/ItemServiceImpl.java | 14 ++-- .../service/game/spawn/SpawnServiceImpl.java | 4 +- .../broadcast/BroadcastServiceImpl.java | 18 +++-- 39 files changed, 322 insertions(+), 215 deletions(-) delete mode 100644 l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/ClientPacketModule.java delete mode 100644 l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/PacketModule.java delete mode 100644 l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/ServerPacketModule.java rename l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/client/{CM_ATTACK.java => CM_CHAR_ATTACK.java} (96%) rename l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/client/{CM_CHAT.java => CM_CHAR_CHAT.java} (96%) rename l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/client/{CM_DROP_ITEM.java => CM_ITEM_DROP.java} (96%) rename l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/server/{SM_CHAT.java => SM_ACTOR_CHAT.java} (90%) rename l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/server/{SM_DIE.java => SM_ACTOR_DIE.java} (94%) rename l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/server/{SM_MOVE.java => SM_ACTOR_MOVE.java} (94%) rename l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/server/{SM_STATUS_UPDATE.java => SM_ACTOR_STATUS_UPDATE.java} (93%) rename l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/server/{SM_ENTER_WORLD.java => SM_CHAR_ENTER_WORLD.java} (96%) rename l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/server/{SM_TELEPORT.java => SM_CHAR_TELEPORT.java} (93%) create mode 100644 l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/server/SM_ITEM_PICK.java rename l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/item/{ItemPickUpEvent.java => ItemPickEvent.java} (93%) diff --git a/l2jserver2-common/src/main/java/com/l2jserver/service/database/AbstractDAO.java b/l2jserver2-common/src/main/java/com/l2jserver/service/database/AbstractDAO.java index 21e8ed265..8e9ba967a 100644 --- a/l2jserver2-common/src/main/java/com/l2jserver/service/database/AbstractDAO.java +++ b/l2jserver2-common/src/main/java/com/l2jserver/service/database/AbstractDAO.java @@ -51,42 +51,39 @@ public abstract class AbstractDAO, I extends ID> } @Override - public boolean save(T object) { + public int save(T object) { return save(object, false); } @Override - public boolean save(T object, boolean force) { + public int save(T object, boolean force) { switch (object.getObjectDesire()) { case INSERT: - return insert(object); + return insertObjects(wrap(object)); case UPDATE: - return update(object); + return updateObjects(wrap(object)); case DELETE: - return delete(object); + return deleteObjects(wrap(object)); case NONE: - return (force ? update(object) : false); + return (force ? updateObjects(wrap(object)) : 0); default: - return false; + return 0; } } @Override - @SuppressWarnings("unchecked") - public boolean insert(T object) { - return insertObjects(object) > 0; + public void insert(T object) { + insertObjects(wrap(object)); } @Override - @SuppressWarnings("unchecked") - public boolean update(T object) { - return updateObjects(object) > 0; + public void update(T object) { + updateObjects(wrap(object)); } @Override - @SuppressWarnings("unchecked") - public boolean delete(T object) { - return deleteObjects(object) > 0; + public void delete(T object) { + deleteObjects(wrap(object)); } @Override @@ -128,4 +125,6 @@ public abstract class AbstractDAO, I extends ID> public DatabaseService getDatabase() { return database; } + + protected abstract T[] wrap(Model... objects); } diff --git a/l2jserver2-common/src/main/java/com/l2jserver/service/database/AbstractJDBCDatabaseService.java b/l2jserver2-common/src/main/java/com/l2jserver/service/database/AbstractJDBCDatabaseService.java index 734293758..85f0fd266 100644 --- a/l2jserver2-common/src/main/java/com/l2jserver/service/database/AbstractJDBCDatabaseService.java +++ b/l2jserver2-common/src/main/java/com/l2jserver/service/database/AbstractJDBCDatabaseService.java @@ -311,7 +311,7 @@ public abstract class AbstractJDBCDatabaseService extends AbstractService .getDAO(object.getClass()); if (dao == null) continue; - if (dao.save(object)) { + if (dao.save(object) > 0) { objects++; } } @@ -548,6 +548,7 @@ public abstract class AbstractJDBCDatabaseService extends AbstractService } } } + conn.commit(); return rows; } finally { st.close(); diff --git a/l2jserver2-common/src/main/java/com/l2jserver/service/database/AbstractOrientDatabaseService.java b/l2jserver2-common/src/main/java/com/l2jserver/service/database/AbstractOrientDatabaseService.java index 79e497805..f605f99b7 100644 --- a/l2jserver2-common/src/main/java/com/l2jserver/service/database/AbstractOrientDatabaseService.java +++ b/l2jserver2-common/src/main/java/com/l2jserver/service/database/AbstractOrientDatabaseService.java @@ -210,7 +210,7 @@ public abstract class AbstractOrientDatabaseService extends AbstractService @SuppressWarnings("unchecked") final DataAccessObject, ?> dao = daoResolver .getDAO(object.getClass()); - if (dao.save(object)) { + if (dao.save(object) > 0) { objects++; } } diff --git a/l2jserver2-common/src/main/java/com/l2jserver/service/database/DataAccessObject.java b/l2jserver2-common/src/main/java/com/l2jserver/service/database/DataAccessObject.java index b891f2193..6bf6655a0 100644 --- a/l2jserver2-common/src/main/java/com/l2jserver/service/database/DataAccessObject.java +++ b/l2jserver2-common/src/main/java/com/l2jserver/service/database/DataAccessObject.java @@ -70,10 +70,10 @@ public interface DataAccessObject, I extends ID> extends * * @param object * the object - * @return true if the row was inserted or updated + * @return the number of affected rows * @see DataAccessObject#save(Model, boolean) */ - boolean save(O object); + int save(O object); /** * Save the instance to the database. If a new database entry was created @@ -83,61 +83,61 @@ public interface DataAccessObject, I extends ID> extends * the object * @param force * will force an save, even if the object has not changed - * @return true if the row was inserted or updated + * @return the number of affected rows */ - boolean save(O object, boolean force); - + int save(O object, boolean force); + /** * Inserts the instance in the database. * * @param object * the object - * @return true if the row was inserted */ - boolean insert(O object); + void insert(O object); /** - * Inserts several instances in the database using a transaction (if possible). + * Inserts several instances in the database using a transaction (if + * possible). * * @param objects * the objects * @return the number of inserted rows */ int insertObjects(@SuppressWarnings("unchecked") O... objects); - + /** * Updates the instance in the database. * * @param object * the object - * @return true if the row was updated */ - boolean update(O object); + void update(O object); /** - * Updates several instances in the database using a transaction (if possible). + * Updates several instances in the database using a transaction (if + * possible). * * @param objects * the objects * @return the number of updated rows */ int updateObjects(@SuppressWarnings("unchecked") O... objects); - + /** * Deletes the instance in the database. * * @param object * the object - * @return true if the row was deleted */ - boolean delete(O object); + void delete(O object); /** - * Deletes several instances in the database using an transaction (if possible). + * Deletes several instances in the database using an transaction (if + * possible). * * @param objects * the objects - * @return the numver of deleted rows + * @return the number of deleted rows */ int deleteObjects(@SuppressWarnings("unchecked") O... objects); } diff --git a/l2jserver2-common/src/main/java/com/l2jserver/util/ArrayUtils.java b/l2jserver2-common/src/main/java/com/l2jserver/util/ArrayUtils.java index bb28c3e48..2d1f8e420 100644 --- a/l2jserver2-common/src/main/java/com/l2jserver/util/ArrayUtils.java +++ b/l2jserver2-common/src/main/java/com/l2jserver/util/ArrayUtils.java @@ -17,6 +17,7 @@ package com.l2jserver.util; import java.util.Arrays; +import java.util.Comparator; import java.util.List; import com.l2jserver.util.factory.CollectionFactory; @@ -27,14 +28,19 @@ import com.l2jserver.util.factory.CollectionFactory; */ public class ArrayUtils { @SafeVarargs - @SuppressWarnings("unchecked") - public final static T[] copyArrayExcept(T[] array, T... except) { + public final static T[] copyArrayExcept(Class type, T[] array, + T... except) { final List values = CollectionFactory.newList(); for (final T item : array) { - if (Arrays.binarySearch(except, item) < 0) { + if (Arrays.binarySearch(except, item, new Comparator() { + @Override + public int compare(Object o1, Object o2) { + return (o1 == o2 ? 1 : 0); + } + }) >= 0) { values.add(item); } } - return (T[]) values.toArray(); + return Arrays.copyOf(values.toArray(), values.size(), type); } } diff --git a/l2jserver2-common/src/test/java/com/l2jserver/util/ArrayUtilsTest.java b/l2jserver2-common/src/test/java/com/l2jserver/util/ArrayUtilsTest.java index b16506dc7..8c2fdbc65 100644 --- a/l2jserver2-common/src/test/java/com/l2jserver/util/ArrayUtilsTest.java +++ b/l2jserver2-common/src/test/java/com/l2jserver/util/ArrayUtilsTest.java @@ -29,13 +29,32 @@ import org.junit.Test; public class ArrayUtilsTest extends ArrayUtils { @Test public void testCopyArrayExcept() { - final String str1 = "one"; - final String str2 = "two"; - final String str3 = "three"; + final TestClass objA = new TestClass("a"); + final TestClass objB = new TestClass("b"); + final TestClass objC = new TestClass("c"); - String[] arr = new String[] { str1, str2, str3 }; + TestClass[] arr = new TestClass[] { objA, objB, objC }; + TestClass[] selected = ArrayUtils.copyArrayExcept(TestClass[].class, + arr, objB); - Assert.assertTrue(Arrays.equals(new String[] { str1, str3 }, - ArrayUtils.copyArrayExcept(arr, str2))); + System.out.println(Arrays.toString(selected)); + Assert.assertTrue(Arrays.equals(new TestClass[] { objA, objC }, + selected)); + } + + private static class TestClass { + private String name; + + /** + * @param string + */ + public TestClass(String string) { + this.name = string; + } + + @Override + public String toString() { + return "TestClass [name=" + name + "]"; + } } } diff --git a/l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/Lineage2PipelineFactory.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/Lineage2PipelineFactory.java index 73763fee4..32968aa24 100644 --- a/l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/Lineage2PipelineFactory.java +++ b/l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/Lineage2PipelineFactory.java @@ -21,9 +21,7 @@ import static org.jboss.netty.channel.Channels.pipeline; import org.jboss.netty.channel.ChannelPipeline; import org.jboss.netty.channel.ChannelPipelineFactory; import org.jboss.netty.handler.logging.LoggingHandler; -import org.jboss.netty.handler.timeout.IdleStateHandler; import org.jboss.netty.logging.InternalLogLevel; -import org.jboss.netty.util.HashedWheelTimer; import com.google.inject.Guice; import com.google.inject.Inject; @@ -81,9 +79,9 @@ public class Lineage2PipelineFactory implements ChannelPipelineFactory { @Override public ChannelPipeline getPipeline() throws Exception { final ChannelPipeline pipeline = pipeline(); - - pipeline.addLast("timeout.tiner", new IdleStateHandler( - new HashedWheelTimer(), 30, 30, 0)); + + // pipeline.addLast("timeout.tiner", new IdleStateHandler( + // new HashedWheelTimer(), 30, 30, 0)); pipeline.addLast("frame.encoder", new Lineage2FrameEncoder()); pipeline.addLast("frame.decoder", new Lineage2FrameDecoder()); @@ -104,7 +102,7 @@ public class Lineage2PipelineFactory implements ChannelPipelineFactory { final Lineage2TimeoutHandler timeoutHandler = new Lineage2TimeoutHandler(); pipeline.addLast("packet.handler", new Lineage2PacketHandler( nettyNetworkService, worldService, timeoutHandler)); - pipeline.addLast("timeout.handler", timeoutHandler); + //pipeline.addLast("timeout.handler", timeoutHandler); return pipeline; } diff --git a/l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/codec/Lineage2PacketReader.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/codec/Lineage2PacketReader.java index 2e3376ec5..65f7257c1 100644 --- a/l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/codec/Lineage2PacketReader.java +++ b/l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/codec/Lineage2PacketReader.java @@ -29,7 +29,7 @@ import com.l2jserver.game.net.Lineage2Client; import com.l2jserver.game.net.packet.ClientPacket; import com.l2jserver.game.net.packet.client.CM_ACTION_USE; import com.l2jserver.game.net.packet.client.CM_ADMIN_COMMAND; -import com.l2jserver.game.net.packet.client.CM_ATTACK; +import com.l2jserver.game.net.packet.client.CM_CHAR_ATTACK; import com.l2jserver.game.net.packet.client.CM_AUTH_LOGIN; import com.l2jserver.game.net.packet.client.CM_BYPASS; import com.l2jserver.game.net.packet.client.CM_CHAR_ACTION; @@ -40,8 +40,8 @@ import com.l2jserver.game.net.packet.client.CM_CHAR_OPEN_MAP; import com.l2jserver.game.net.packet.client.CM_CHAR_POSITION; import com.l2jserver.game.net.packet.client.CM_CHAR_REQ_INVENTORY; import com.l2jserver.game.net.packet.client.CM_CHAR_SELECT; -import com.l2jserver.game.net.packet.client.CM_CHAT; -import com.l2jserver.game.net.packet.client.CM_DROP_ITEM; +import com.l2jserver.game.net.packet.client.CM_CHAR_CHAT; +import com.l2jserver.game.net.packet.client.CM_ITEM_DROP; import com.l2jserver.game.net.packet.client.CM_ENTER_WORLD; import com.l2jserver.game.net.packet.client.CM_EXT_REQ_ALL_FORTRESS_INFO; import com.l2jserver.game.net.packet.client.CM_EXT_REQ_KEY_MAPPING; @@ -166,8 +166,8 @@ public class Lineage2PacketReader extends OneToOneDecoder { return CM_CHAR_MOVE.class; case CM_RESTART.OPCODE: return CM_RESTART.class; - case CM_CHAT.OPCODE: - return CM_CHAT.class; + case CM_CHAR_CHAT.OPCODE: + return CM_CHAR_CHAT.class; case CM_CHAR_POSITION.OPCODE: return CM_CHAR_POSITION.class; case CM_ENTER_WORLD.OPCODE: @@ -186,10 +186,10 @@ public class Lineage2PacketReader extends OneToOneDecoder { return CM_ACTION_USE.class; case CM_CHAR_OPEN_MAP.OPCODE: return CM_CHAR_OPEN_MAP.class; - case CM_ATTACK.OPCODE: - return CM_ATTACK.class; - case CM_DROP_ITEM.OPCODE: - return CM_DROP_ITEM.class; + case CM_CHAR_ATTACK.OPCODE: + return CM_CHAR_ATTACK.class; + case CM_ITEM_DROP.OPCODE: + return CM_ITEM_DROP.class; default: logger.warn("Unknown packet for 0x{}", Integer.toHexString(opcode)); break; diff --git a/l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/ClientPacketModule.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/ClientPacketModule.java deleted file mode 100644 index 658f8348c..000000000 --- a/l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/ClientPacketModule.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * This file is part of l2jserver2 . - * - * l2jserver2 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. - * - * l2jserver2 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 l2jserver2. If not, see . - */ -package com.l2jserver.game.net.packet; - -import com.google.inject.AbstractModule; -import com.google.inject.Module; -import com.l2jserver.game.net.packet.client.CM_PROTOCOL_VERSION; - -/** - * Google Guice {@link Module} for client packets - * - * @author Rogiel - */ -public class ClientPacketModule extends AbstractModule { - @Override - protected void configure() { - bind(CM_PROTOCOL_VERSION.class); - } -} diff --git a/l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/PacketModule.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/PacketModule.java deleted file mode 100644 index 242318e01..000000000 --- a/l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/PacketModule.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * This file is part of l2jserver2 . - * - * l2jserver2 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. - * - * l2jserver2 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 l2jserver2. If not, see . - */ -package com.l2jserver.game.net.packet; - -import com.google.inject.AbstractModule; -import com.google.inject.Module; - -/** - * Google Guice {@link Module} for packets - * - * @author Rogiel - */ -public class PacketModule extends AbstractModule { - @Override - protected void configure() { - install(new ClientPacketModule()); - install(new ServerPacketModule()); - } -} diff --git a/l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/ServerPacketModule.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/ServerPacketModule.java deleted file mode 100644 index 502035e7f..000000000 --- a/l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/ServerPacketModule.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * This file is part of l2jserver2 . - * - * l2jserver2 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. - * - * l2jserver2 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 l2jserver2. If not, see . - */ -package com.l2jserver.game.net.packet; - -import com.google.inject.AbstractModule; -import com.google.inject.Module; -import com.l2jserver.game.net.packet.client.CM_PROTOCOL_VERSION; - -/** - * Google Guice {@link Module} for server packets - * - * @author Rogiel - */ -public class ServerPacketModule extends AbstractModule { - @Override - protected void configure() { - bind(CM_PROTOCOL_VERSION.class); - } -} diff --git a/l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/client/CM_ATTACK.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/client/CM_CHAR_ATTACK.java similarity index 96% rename from l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/client/CM_ATTACK.java rename to l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/client/CM_CHAR_ATTACK.java index 8411efb98..1ebc6015d 100644 --- a/l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/client/CM_ATTACK.java +++ b/l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/client/CM_CHAR_ATTACK.java @@ -41,7 +41,7 @@ import com.l2jserver.util.geometry.Coordinate; * * @author Rogiel */ -public class CM_ATTACK extends AbstractClientPacket { +public class CM_CHAR_ATTACK extends AbstractClientPacket { /** * The packet OPCODE */ @@ -127,7 +127,7 @@ public class CM_ATTACK extends AbstractClientPacket { * the object id resolver */ @Inject - public CM_ATTACK(CharacterService charService, ObjectIDResolver idResolver) { + public CM_CHAR_ATTACK(CharacterService charService, ObjectIDResolver idResolver) { this.charService = charService; this.idResolver = idResolver; } diff --git a/l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/client/CM_CHAT.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/client/CM_CHAR_CHAT.java similarity index 96% rename from l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/client/CM_CHAT.java rename to l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/client/CM_CHAR_CHAT.java index 5dc00d2d2..e9eb86cbd 100644 --- a/l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/client/CM_CHAT.java +++ b/l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/client/CM_CHAR_CHAT.java @@ -37,7 +37,7 @@ import com.l2jserver.util.BufferUtils; * * @author Rogiel */ -public class CM_CHAT extends AbstractClientPacket { +public class CM_CHAR_CHAT extends AbstractClientPacket { /** * The packet OPCODE */ @@ -55,7 +55,7 @@ public class CM_CHAT extends AbstractClientPacket { private String target; @Inject - public CM_CHAT(ChatService chatService) { + public CM_CHAR_CHAT(ChatService chatService) { this.chatService = chatService; } diff --git a/l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/client/CM_DROP_ITEM.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/client/CM_ITEM_DROP.java similarity index 96% rename from l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/client/CM_DROP_ITEM.java rename to l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/client/CM_ITEM_DROP.java index bce690779..d93ce1afe 100644 --- a/l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/client/CM_DROP_ITEM.java +++ b/l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/client/CM_ITEM_DROP.java @@ -37,7 +37,7 @@ import com.l2jserver.util.geometry.Point3D; * * @author Rogiel */ -public class CM_DROP_ITEM extends AbstractClientPacket { +public class CM_ITEM_DROP extends AbstractClientPacket { /** * The packet OPCODE */ @@ -69,7 +69,7 @@ public class CM_DROP_ITEM extends AbstractClientPacket { * the item id provider */ @Inject - public CM_DROP_ITEM(ItemService itemService, ItemIDProvider itemIdProvider) { + public CM_ITEM_DROP(ItemService itemService, ItemIDProvider itemIdProvider) { this.itemService = itemService; this.itemIdProvider = itemIdProvider; } diff --git a/l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/server/SM_CHAT.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/server/SM_ACTOR_CHAT.java similarity index 90% rename from l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/server/SM_CHAT.java rename to l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/server/SM_ACTOR_CHAT.java index 31972c5de..82069d509 100644 --- a/l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/server/SM_CHAT.java +++ b/l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/server/SM_ACTOR_CHAT.java @@ -31,7 +31,7 @@ import com.l2jserver.util.BufferUtils; * * @author Rogiel */ -public class SM_CHAT extends AbstractServerPacket { +public class SM_ACTOR_CHAT extends AbstractServerPacket { /** * The packet OPCODE */ @@ -54,14 +54,14 @@ public class SM_CHAT extends AbstractServerPacket { */ private int messageID = 0; - public SM_CHAT(Actor character, ChatMessageType destination, String message) { + public SM_ACTOR_CHAT(Actor character, ChatMessageType destination, String message) { super(OPCODE); this.actor = character; this.destination = destination; this.message = message; } - public SM_CHAT(Actor actor, ChatMessageType destination, int messageID) { + public SM_ACTOR_CHAT(Actor actor, ChatMessageType destination, int messageID) { super(OPCODE); this.actor = actor; this.destination = destination; diff --git a/l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/server/SM_DIE.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/server/SM_ACTOR_DIE.java similarity index 94% rename from l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/server/SM_DIE.java rename to l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/server/SM_ACTOR_DIE.java index 754833ca5..aa932131a 100644 --- a/l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/server/SM_DIE.java +++ b/l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/server/SM_ACTOR_DIE.java @@ -29,7 +29,7 @@ import com.l2jserver.model.world.Actor; * @author Rogiel * @see AttackHit */ -public class SM_DIE extends AbstractServerPacket { +public class SM_ACTOR_DIE extends AbstractServerPacket { /** * The packet OPCODE */ @@ -40,7 +40,7 @@ public class SM_DIE extends AbstractServerPacket { */ private final Actor actor; - public SM_DIE(Actor actor) { + public SM_ACTOR_DIE(Actor actor) { super(OPCODE); this.actor = actor; } diff --git a/l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/server/SM_MOVE.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/server/SM_ACTOR_MOVE.java similarity index 94% rename from l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/server/SM_MOVE.java rename to l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/server/SM_ACTOR_MOVE.java index 4819666bf..cedc22010 100644 --- a/l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/server/SM_MOVE.java +++ b/l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/server/SM_ACTOR_MOVE.java @@ -30,7 +30,7 @@ import com.l2jserver.util.geometry.Coordinate; * * @author Rogiel O */ -public class SM_MOVE extends AbstractServerPacket { +public class SM_ACTOR_MOVE extends AbstractServerPacket { /** * The packet OPCODE */ @@ -45,7 +45,7 @@ public class SM_MOVE extends AbstractServerPacket { */ private Coordinate target; - public SM_MOVE(Actor actor, Coordinate target) { + public SM_ACTOR_MOVE(Actor actor, Coordinate target) { super(OPCODE); this.actor = actor; this.target = target; diff --git a/l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/server/SM_STATUS_UPDATE.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/server/SM_ACTOR_STATUS_UPDATE.java similarity index 93% rename from l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/server/SM_STATUS_UPDATE.java rename to l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/server/SM_ACTOR_STATUS_UPDATE.java index f0b793160..39d42e45a 100644 --- a/l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/server/SM_STATUS_UPDATE.java +++ b/l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/server/SM_ACTOR_STATUS_UPDATE.java @@ -32,7 +32,7 @@ import com.l2jserver.util.factory.CollectionFactory; * * @author Rogiel */ -public class SM_STATUS_UPDATE extends AbstractServerPacket { +public class SM_ACTOR_STATUS_UPDATE extends AbstractServerPacket { /** * The packet OPCODE */ @@ -67,7 +67,7 @@ public class SM_STATUS_UPDATE extends AbstractServerPacket { private final Map update = CollectionFactory.newMap(); private final Actor actor; - public SM_STATUS_UPDATE(Actor actor) { + public SM_ACTOR_STATUS_UPDATE(Actor actor) { super(OPCODE); this.actor = actor; } @@ -83,7 +83,7 @@ public class SM_STATUS_UPDATE extends AbstractServerPacket { } } - public SM_STATUS_UPDATE add(Stat stat, int value) { + public SM_ACTOR_STATUS_UPDATE add(Stat stat, int value) { update.put(stat, value); return this; } diff --git a/l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/server/SM_ENTER_WORLD.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/server/SM_CHAR_ENTER_WORLD.java similarity index 96% rename from l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/server/SM_ENTER_WORLD.java rename to l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/server/SM_CHAR_ENTER_WORLD.java index b10b756b9..fcdf19ae0 100644 --- a/l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/server/SM_ENTER_WORLD.java +++ b/l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/server/SM_CHAR_ENTER_WORLD.java @@ -29,7 +29,7 @@ import com.l2jserver.util.BufferUtils; * * @author Rogiel */ -public class SM_ENTER_WORLD extends AbstractServerPacket { +public class SM_CHAR_ENTER_WORLD extends AbstractServerPacket { /** * The packet OPCODE */ @@ -52,7 +52,7 @@ public class SM_ENTER_WORLD extends AbstractServerPacket { * @param sessionId * the session id */ - public SM_ENTER_WORLD(L2Character character, int sessionId) { + public SM_CHAR_ENTER_WORLD(L2Character character, int sessionId) { super(OPCODE); this.character = character; this.sessionId = sessionId; diff --git a/l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/server/SM_TELEPORT.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/server/SM_CHAR_TELEPORT.java similarity index 93% rename from l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/server/SM_TELEPORT.java rename to l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/server/SM_CHAR_TELEPORT.java index 700da39ca..cac03423b 100644 --- a/l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/server/SM_TELEPORT.java +++ b/l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/server/SM_CHAR_TELEPORT.java @@ -29,7 +29,7 @@ import com.l2jserver.util.geometry.Point3D; * * @author Rogiel */ -public class SM_TELEPORT extends AbstractServerPacket { +public class SM_CHAR_TELEPORT extends AbstractServerPacket { /** * The packet OPCODE */ @@ -44,7 +44,7 @@ public class SM_TELEPORT extends AbstractServerPacket { */ private final Point3D point; - public SM_TELEPORT(L2Character character, Point3D point) { + public SM_CHAR_TELEPORT(L2Character character, Point3D point) { super(OPCODE); this.character = character; this.point = point; diff --git a/l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/server/SM_ITEM_GROUND.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/server/SM_ITEM_GROUND.java index 1a5d6491e..ff9fabcf7 100644 --- a/l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/server/SM_ITEM_GROUND.java +++ b/l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/server/SM_ITEM_GROUND.java @@ -53,6 +53,6 @@ public class SM_ITEM_GROUND extends AbstractServerPacket { buffer.writeInt(0x01); // show count buffer.writeLong(item.getCount()); // count - buffer.writeInt(1); // unknown + buffer.writeInt(0); // unknown } } diff --git a/l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/server/SM_ITEM_PICK.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/server/SM_ITEM_PICK.java new file mode 100644 index 000000000..6938a321d --- /dev/null +++ b/l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/server/SM_ITEM_PICK.java @@ -0,0 +1,69 @@ +/* + * This file is part of l2jserver2 . + * + * l2jserver2 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. + * + * l2jserver2 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 l2jserver2. If not, see . + */ +package com.l2jserver.game.net.packet.server; + +import org.jboss.netty.buffer.ChannelBuffer; + +import com.l2jserver.game.net.Lineage2Client; +import com.l2jserver.game.net.packet.AbstractServerPacket; +import com.l2jserver.model.server.AttackHit; +import com.l2jserver.model.world.Item; +import com.l2jserver.model.world.L2Character; + +/** + * This packet makes an character pick up an item + * + * @author Rogiel + * @see AttackHit + */ +public class SM_ITEM_PICK extends AbstractServerPacket { + /** + * The packet OPCODE + */ + public static final int OPCODE = 0x17; + + /** + * The {@link Item} being picked up + */ + private final Item item; + /** + * The {@link L2Character} picking the item + */ + private final L2Character character; + + /** + * @param character + * the character that is picking the item + * @param item + * the item that is being picked + */ + public SM_ITEM_PICK(L2Character character, Item item) { + super(OPCODE); + this.item = item; + this.character = character; + } + + @Override + public void write(Lineage2Client conn, ChannelBuffer buffer) { + buffer.writeInt(character.getID().getID()); + buffer.writeInt(item.getID().getID()); + + buffer.writeInt(item.getPoint().getX()); + buffer.writeInt(item.getPoint().getY()); + buffer.writeInt(item.getPoint().getZ()); + } +} diff --git a/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/item/ItemPickUpEvent.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/item/ItemPickEvent.java similarity index 93% rename from l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/item/ItemPickUpEvent.java rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/item/ItemPickEvent.java index 117d417cd..cac9a1628 100644 --- a/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/item/ItemPickUpEvent.java +++ b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/item/ItemPickEvent.java @@ -29,7 +29,7 @@ import com.l2jserver.model.world.character.event.CharacterEvent; * * @author Rogiel */ -public class ItemPickUpEvent implements ItemEvent, CharacterEvent { +public class ItemPickEvent implements ItemEvent, CharacterEvent { /** * The pickupping character */ @@ -52,7 +52,7 @@ public class ItemPickUpEvent implements ItemEvent, CharacterEvent { * the picked up item * @param newItem the new {@link Item} */ - public ItemPickUpEvent(L2Character character, Item item, Item newItem) { + public ItemPickEvent(L2Character character, Item item, Item newItem) { this.character = character; this.item = item; this.newItem = newItem; diff --git a/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/npc/controller/MonsterController.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/npc/controller/MonsterController.java index 3a8178fd0..3e4b3003b 100644 --- a/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/npc/controller/MonsterController.java +++ b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/npc/controller/MonsterController.java @@ -18,8 +18,8 @@ package com.l2jserver.model.world.npc.controller; import com.google.inject.Inject; import com.l2jserver.game.net.Lineage2Client; -import com.l2jserver.game.net.packet.server.SM_STATUS_UPDATE; -import com.l2jserver.game.net.packet.server.SM_STATUS_UPDATE.Stat; +import com.l2jserver.game.net.packet.server.SM_ACTOR_STATUS_UPDATE; +import com.l2jserver.game.net.packet.server.SM_ACTOR_STATUS_UPDATE.Stat; import com.l2jserver.model.world.L2Character; import com.l2jserver.model.world.NPC; import com.l2jserver.service.game.character.CharacterService; @@ -51,7 +51,7 @@ public class MonsterController extends BaseNPCController { charService.attack(character, mob); } else { charService.target(character, mob); - conn.write(new SM_STATUS_UPDATE(mob).add(Stat.MAX_HP, + conn.write(new SM_ACTOR_STATUS_UPDATE(mob).add(Stat.MAX_HP, (int) mob.getTemplate().getMaximumHP()).add(Stat.HP, (int) mob.getHP())); } diff --git a/l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/jdbc/JDBCCharacterDAO.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/jdbc/JDBCCharacterDAO.java index 2bb1f8e23..50e92a762 100644 --- a/l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/jdbc/JDBCCharacterDAO.java +++ b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/jdbc/JDBCCharacterDAO.java @@ -23,6 +23,7 @@ import java.sql.Types; import java.util.List; import com.google.inject.Inject; +import com.l2jserver.model.Model; import com.l2jserver.model.dao.CharacterDAO; import com.l2jserver.model.id.AccountID; import com.l2jserver.model.id.object.CharacterID; @@ -430,4 +431,14 @@ public abstract class JDBCCharacterDAO extends } }); } + + @Override + protected L2Character[] wrap(Model... objects) { + final L2Character[] array = new L2Character[objects.length]; + int i = 0; + for (final Model object : objects) { + array[i++] = (L2Character) object; + } + return array; + } } diff --git a/l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/jdbc/JDBCCharacterFriendDAO.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/jdbc/JDBCCharacterFriendDAO.java index 5321b402c..cbe6fde7e 100644 --- a/l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/jdbc/JDBCCharacterFriendDAO.java +++ b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/jdbc/JDBCCharacterFriendDAO.java @@ -22,6 +22,7 @@ import java.sql.SQLException; import java.util.List; import com.google.inject.Inject; +import com.l2jserver.model.Model; import com.l2jserver.model.dao.CharacterFriendDAO; import com.l2jserver.model.game.CharacterFriend; import com.l2jserver.model.id.FriendID; @@ -213,7 +214,7 @@ public abstract class JDBCCharacterFriendDAO extends @Override public boolean save(final CharacterFriendList friends) { for (final CharacterFriend friend : friends) { - if (!save(friend)) + if (save(friend) == 0) return false; } return true; @@ -222,9 +223,19 @@ public abstract class JDBCCharacterFriendDAO extends @Override public boolean delete(final CharacterFriendList friends) { for (final CharacterFriend friend : friends) { - if (!delete(friend)) + if (deleteObjects(friend) == 0) return false; } return true; } + + @Override + protected CharacterFriend[] wrap(Model... objects) { + final CharacterFriend[] array = new CharacterFriend[objects.length]; + int i = 0; + for (final Model object : objects) { + array[i++] = (CharacterFriend) object; + } + return array; + } } diff --git a/l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/jdbc/JDBCChatMessageDAO.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/jdbc/JDBCChatMessageDAO.java index 8c235e11a..c43a76cbc 100644 --- a/l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/jdbc/JDBCChatMessageDAO.java +++ b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/jdbc/JDBCChatMessageDAO.java @@ -24,6 +24,7 @@ import java.util.Date; import java.util.List; import com.google.inject.Inject; +import com.l2jserver.model.Model; import com.l2jserver.model.dao.CharacterDAO; import com.l2jserver.model.dao.ChatMessageDAO; import com.l2jserver.model.id.ChatMessageID; @@ -225,4 +226,14 @@ public abstract class JDBCChatMessageDAO extends } }); } + + @Override + protected ChatMessage[] wrap(Model... objects) { + final ChatMessage[] array = new ChatMessage[objects.length]; + int i = 0; + for (final Model object : objects) { + array[i++] = (ChatMessage) object; + } + return array; + } } diff --git a/l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/jdbc/JDBCClanDAO.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/jdbc/JDBCClanDAO.java index ad7ed9598..96a66cad1 100644 --- a/l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/jdbc/JDBCClanDAO.java +++ b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/jdbc/JDBCClanDAO.java @@ -22,6 +22,7 @@ import java.sql.SQLException; import java.util.List; import com.google.inject.Inject; +import com.l2jserver.model.Model; import com.l2jserver.model.dao.CharacterDAO; import com.l2jserver.model.dao.ClanDAO; import com.l2jserver.model.id.object.CharacterID; @@ -175,4 +176,14 @@ public abstract class JDBCClanDAO extends AbstractJDBCDAO } }); } + + @Override + protected Clan[] wrap(Model... objects) { + final Clan[] array = new Clan[objects.length]; + int i = 0; + for (final Model object : objects) { + array[i++] = (Clan) object; + } + return array; + } } diff --git a/l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/jdbc/JDBCItemDAO.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/jdbc/JDBCItemDAO.java index 832cc7006..ee6f7e66b 100644 --- a/l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/jdbc/JDBCItemDAO.java +++ b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/jdbc/JDBCItemDAO.java @@ -26,6 +26,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.google.inject.Inject; +import com.l2jserver.model.Model; import com.l2jserver.model.dao.ItemDAO; import com.l2jserver.model.id.object.CharacterID; import com.l2jserver.model.id.object.ItemID; @@ -343,4 +344,14 @@ public abstract class JDBCItemDAO extends AbstractJDBCDAO } }); } + + @Override + protected Item[] wrap(Model... objects) { + final Item[] array = new Item[objects.length]; + int i = 0; + for (final Model object : objects) { + array[i++] = (Item) object; + } + return array; + } } diff --git a/l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/jdbc/JDBCNPCDAO.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/jdbc/JDBCNPCDAO.java index 1090650c6..c517bc578 100644 --- a/l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/jdbc/JDBCNPCDAO.java +++ b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/jdbc/JDBCNPCDAO.java @@ -25,6 +25,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.google.inject.Inject; +import com.l2jserver.model.Model; import com.l2jserver.model.dao.CharacterDAO; import com.l2jserver.model.dao.NPCDAO; import com.l2jserver.model.id.object.NPCID; @@ -300,4 +301,14 @@ public abstract class JDBCNPCDAO extends AbstractJDBCDAO implements } }); } + + @Override + protected NPC[] wrap(Model... objects) { + final NPC[] array = new NPC[objects.length]; + int i = 0; + for (final Model object : objects) { + array[i++] = (NPC) object; + } + return array; + } } diff --git a/l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/orientdb/OrientDBCharacterDAO.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/orientdb/OrientDBCharacterDAO.java index caef191fa..00f9b3c4e 100644 --- a/l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/orientdb/OrientDBCharacterDAO.java +++ b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/orientdb/OrientDBCharacterDAO.java @@ -21,6 +21,7 @@ import java.util.Collection; import java.util.List; import com.google.inject.Inject; +import com.l2jserver.model.Model; import com.l2jserver.model.dao.CharacterDAO; import com.l2jserver.model.id.AccountID; import com.l2jserver.model.id.object.CharacterID; @@ -462,4 +463,14 @@ public class OrientDBCharacterDAO extends } }); } + + @Override + protected L2Character[] wrap(Model... objects) { + final L2Character[] array = new L2Character[objects.length]; + int i = 0; + for (final Model object : objects) { + array[i++] = (L2Character) object; + } + return array; + } } diff --git a/l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/orientdb/OrientDBCharacterFriendDAO.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/orientdb/OrientDBCharacterFriendDAO.java index 0b426fab4..b36c4d62d 100644 --- a/l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/orientdb/OrientDBCharacterFriendDAO.java +++ b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/orientdb/OrientDBCharacterFriendDAO.java @@ -20,6 +20,7 @@ import java.sql.SQLException; import java.util.List; import com.google.inject.Inject; +import com.l2jserver.model.Model; import com.l2jserver.model.dao.CharacterFriendDAO; import com.l2jserver.model.game.CharacterFriend; import com.l2jserver.model.id.FriendID; @@ -265,7 +266,7 @@ public class OrientDBCharacterFriendDAO extends @Override public boolean save(final CharacterFriendList friends) { for (final CharacterFriend friend : friends) { - if (!save(friend)) + if (save(friend) == 0) return false; } return true; @@ -274,9 +275,19 @@ public class OrientDBCharacterFriendDAO extends @Override public boolean delete(final CharacterFriendList friends) { for (final CharacterFriend friend : friends) { - if (!delete(friend)) + if (deleteObjects(friend) == 0) return false; } return true; } + + @Override + protected CharacterFriend[] wrap(Model... objects) { + final CharacterFriend[] array = new CharacterFriend[objects.length]; + int i = 0; + for (final Model object : objects) { + array[i++] = (CharacterFriend) object; + } + return array; + } } diff --git a/l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/orientdb/OrientDBChatMessageDAO.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/orientdb/OrientDBChatMessageDAO.java index e01c0ea06..296f178e7 100644 --- a/l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/orientdb/OrientDBChatMessageDAO.java +++ b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/orientdb/OrientDBChatMessageDAO.java @@ -21,6 +21,7 @@ import java.util.Date; import java.util.List; import com.google.inject.Inject; +import com.l2jserver.model.Model; import com.l2jserver.model.dao.CharacterDAO; import com.l2jserver.model.dao.ChatMessageDAO; import com.l2jserver.model.id.ChatMessageID; @@ -256,4 +257,14 @@ public class OrientDBChatMessageDAO extends } }); } + + @Override + protected ChatMessage[] wrap(Model... objects) { + final ChatMessage[] array = new ChatMessage[objects.length]; + int i = 0; + for (final Model object : objects) { + array[i++] = (ChatMessage) object; + } + return array; + } } diff --git a/l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/orientdb/OrientDBClanDAO.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/orientdb/OrientDBClanDAO.java index db91d7b86..9e6ea3364 100644 --- a/l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/orientdb/OrientDBClanDAO.java +++ b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/orientdb/OrientDBClanDAO.java @@ -20,6 +20,7 @@ import java.sql.SQLException; import java.util.List; import com.google.inject.Inject; +import com.l2jserver.model.Model; import com.l2jserver.model.dao.CharacterDAO; import com.l2jserver.model.dao.ClanDAO; import com.l2jserver.model.id.ChatMessageID; @@ -223,4 +224,14 @@ public class OrientDBClanDAO extends AbstractOrientDBDAO } }); } + + @Override + protected Clan[] wrap(Model... objects) { + final Clan[] array = new Clan[objects.length]; + int i = 0; + for (final Model object : objects) { + array[i++] = (Clan) object; + } + return array; + } } diff --git a/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/character/CharacterServiceImpl.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/character/CharacterServiceImpl.java index 07e3bf2b9..8bf9740e1 100644 --- a/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/character/CharacterServiceImpl.java +++ b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/character/CharacterServiceImpl.java @@ -26,8 +26,8 @@ import com.l2jserver.game.net.SystemMessage; import com.l2jserver.game.net.packet.server.SM_CHAR_INFO; import com.l2jserver.game.net.packet.server.SM_CHAR_INFO_EXTRA; import com.l2jserver.game.net.packet.server.SM_CHAR_INVENTORY; -import com.l2jserver.game.net.packet.server.SM_CHAT; -import com.l2jserver.game.net.packet.server.SM_MOVE; +import com.l2jserver.game.net.packet.server.SM_ACTOR_CHAT; +import com.l2jserver.game.net.packet.server.SM_ACTOR_MOVE; import com.l2jserver.game.net.packet.server.SM_MOVE_TYPE; import com.l2jserver.game.net.packet.server.SM_TARGET; import com.l2jserver.model.dao.CharacterDAO; @@ -242,7 +242,7 @@ public class CharacterServiceImpl extends AbstractService implements character.getAppearance().setHairColor(hairColor); character.getAppearance().setFace(face); - if (characterDao.save(character)) + if (characterDao.save(character) > 0) return character; return null; } @@ -275,14 +275,14 @@ public class CharacterServiceImpl extends AbstractService implements final ChatChannelListener globalChatListener = new ChatChannelListener() { @Override public void onMessage(ChatChannel channel, ChatMessage message) { - conn.write(new SM_CHAT(message.getSender().getObject(), + conn.write(new SM_ACTOR_CHAT(message.getSender().getObject(), ChatMessageType.ALL, message.getMessage())); } }; final ChatChannelListener tradeChatListener = new ChatChannelListener() { @Override public void onMessage(ChatChannel channel, ChatMessage message) { - conn.write(new SM_CHAT(message.getSender().getObject(), + conn.write(new SM_ACTOR_CHAT(message.getSender().getObject(), ChatMessageType.TRADE, message.getMessage())); } }; @@ -474,7 +474,7 @@ public class CharacterServiceImpl extends AbstractService implements // for now, let's just write the packet, we don't have much validation // to be done yet. With character validation packet, another packet of // these will be broadcasted. - conn.write(new SM_MOVE(character, coordinate)); + conn.write(new SM_ACTOR_MOVE(character, coordinate)); // we don't dispatch events here, they will be dispatched by // with the same packet referred up here. } diff --git a/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/chat/ChatService.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/chat/ChatService.java index 54bbff8f3..d8fbb4bde 100644 --- a/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/chat/ChatService.java +++ b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/chat/ChatService.java @@ -16,8 +16,8 @@ */ package com.l2jserver.service.game.chat; -import com.l2jserver.game.net.packet.client.CM_CHAT; -import com.l2jserver.game.net.packet.server.SM_CHAT; +import com.l2jserver.game.net.packet.client.CM_CHAR_CHAT; +import com.l2jserver.game.net.packet.server.SM_ACTOR_CHAT; import com.l2jserver.model.id.object.CharacterID; import com.l2jserver.model.id.object.ClanID; import com.l2jserver.model.server.ChatMessage; @@ -54,8 +54,8 @@ import com.l2jserver.service.Service; * {@link ChatBanActiveChatServiceException} will be thrown. * *

Packets

- * Messages are received (from the clients) with {@link CM_CHAT} and sent (to - * the clients) with {@link SM_CHAT}. + * Messages are received (from the clients) with {@link CM_CHAR_CHAT} and sent (to + * the clients) with {@link SM_ACTOR_CHAT}. * * @author Rogiel */ diff --git a/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/item/ItemServiceImpl.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/item/ItemServiceImpl.java index 8883185a5..68adf967d 100644 --- a/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/item/ItemServiceImpl.java +++ b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/item/ItemServiceImpl.java @@ -32,7 +32,7 @@ import com.l2jserver.model.world.Item; import com.l2jserver.model.world.L2Character; import com.l2jserver.model.world.character.CharacterInventory.ItemLocation; import com.l2jserver.model.world.item.ItemDropEvent; -import com.l2jserver.model.world.item.ItemPickUpEvent; +import com.l2jserver.model.world.item.ItemPickEvent; import com.l2jserver.service.AbstractService; import com.l2jserver.service.AbstractService.Depends; import com.l2jserver.service.ServiceStartException; @@ -176,10 +176,10 @@ public class ItemServiceImpl extends AbstractService implements ItemService { stackItems[items.length] = item; try { item = stack(stackItems); - Item[] removedItems = character.getInventory().remove( - stackItems); - Item[] databaseDeleteItems = ArrayUtils.copyArrayExcept(removedItems, item); - itemDao.deleteObjects(databaseDeleteItems); + Item[] deleteItems = ArrayUtils.copyArrayExcept( + Item[].class, stackItems, item); + character.getInventory().remove(deleteItems); + itemDao.deleteObjects(deleteItems); character.getInventory().add(item); } catch (NonStackableItemsServiceException e) { character.getInventory().add(item); @@ -196,8 +196,8 @@ public class ItemServiceImpl extends AbstractService implements ItemService { itemDao.save(originalItem); } spawnService.unspawn(originalItem); - eventDispatcher.dispatch(new ItemPickUpEvent(character, - originalItem, item)); + eventDispatcher.dispatch(new ItemPickEvent(character, originalItem, + item)); return item; } diff --git a/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/spawn/SpawnServiceImpl.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/spawn/SpawnServiceImpl.java index c49ca12f2..608136cda 100644 --- a/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/spawn/SpawnServiceImpl.java +++ b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/spawn/SpawnServiceImpl.java @@ -27,7 +27,7 @@ import com.google.inject.Inject; import com.l2jserver.game.net.Lineage2Client; import com.l2jserver.game.net.packet.server.SM_CHAR_INFO; import com.l2jserver.game.net.packet.server.SM_CHAR_INFO_EXTRA; -import com.l2jserver.game.net.packet.server.SM_TELEPORT; +import com.l2jserver.game.net.packet.server.SM_CHAR_TELEPORT; import com.l2jserver.model.id.object.CharacterID; import com.l2jserver.model.world.Actor; import com.l2jserver.model.world.Actor.ActorState; @@ -234,7 +234,7 @@ public class SpawnServiceImpl extends AbstractService implements SpawnService { if (conn == null) // TODO throw an exception here return; - conn.write(new SM_TELEPORT(conn.getCharacter(), coordinate + conn.write(new SM_CHAR_TELEPORT(conn.getCharacter(), coordinate .toPoint())); ((L2Character) actor).setState(ActorState.TELEPORTING); ((L2Character) actor).setTargetLocation(coordinate.toPoint()); diff --git a/l2jserver2-gameserver/src/main/java/com/l2jserver/service/network/broadcast/BroadcastServiceImpl.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/network/broadcast/BroadcastServiceImpl.java index 1be7abdd7..a969376fb 100644 --- a/l2jserver2-gameserver/src/main/java/com/l2jserver/service/network/broadcast/BroadcastServiceImpl.java +++ b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/network/broadcast/BroadcastServiceImpl.java @@ -25,9 +25,10 @@ import com.l2jserver.game.net.Lineage2Client; import com.l2jserver.game.net.SystemMessage; import com.l2jserver.game.net.packet.server.SM_ATTACK; import com.l2jserver.game.net.packet.server.SM_CHAR_INFO_BROADCAST; -import com.l2jserver.game.net.packet.server.SM_DIE; +import com.l2jserver.game.net.packet.server.SM_ACTOR_DIE; import com.l2jserver.game.net.packet.server.SM_ITEM_GROUND; -import com.l2jserver.game.net.packet.server.SM_MOVE; +import com.l2jserver.game.net.packet.server.SM_ITEM_PICK; +import com.l2jserver.game.net.packet.server.SM_ACTOR_MOVE; import com.l2jserver.game.net.packet.server.SM_MOVE_TYPE; import com.l2jserver.game.net.packet.server.SM_NPC_INFO; import com.l2jserver.game.net.packet.server.SM_OBJECT_REMOVE; @@ -47,7 +48,7 @@ import com.l2jserver.model.world.character.event.CharacterMoveEvent; import com.l2jserver.model.world.character.event.CharacterRunningEvent; import com.l2jserver.model.world.character.event.CharacterWalkingEvent; import com.l2jserver.model.world.item.ItemDropEvent; -import com.l2jserver.model.world.item.ItemPickUpEvent; +import com.l2jserver.model.world.item.ItemPickEvent; import com.l2jserver.model.world.npc.event.NPCSpawnEvent; import com.l2jserver.model.world.player.event.PlayerTeleportedEvent; import com.l2jserver.service.AbstractService; @@ -120,15 +121,18 @@ public class BroadcastServiceImpl extends AbstractService implements broadcast(conn, e.getObject()); } else if (e instanceof CharacterMoveEvent) { final CharacterMoveEvent evt = (CharacterMoveEvent) e; - conn.write(new SM_MOVE((L2Character) object, evt.getPoint() + conn.write(new SM_ACTOR_MOVE((L2Character) object, evt.getPoint() .getCoordinate())); } else if (e instanceof PlayerTeleportedEvent || e instanceof CharacterEnterWorldEvent) { broadcast(conn, e.getObject()); + } else if (e instanceof ItemPickEvent) { + conn.write(new SM_ITEM_PICK(((ItemPickEvent) e) + .getCharacter(), (Item) object)); + conn.write(new SM_OBJECT_REMOVE(object)); } else if (e instanceof ActorTeleportingEvent || e instanceof CharacterLeaveWorldEvent - || e instanceof ActorUnspawnEvent - || e instanceof ItemPickUpEvent) { + || e instanceof ActorUnspawnEvent) { // object is now out of sight // FIXME pick up animation is not happening conn.write(new SM_OBJECT_REMOVE(object)); @@ -139,7 +143,7 @@ public class BroadcastServiceImpl extends AbstractService implements conn.write(new SM_MOVE_TYPE(((CharacterRunningEvent) e) .getCharacter())); } else if (e instanceof ActorDieEvent) { - conn.write(new SM_DIE(((ActorDieEvent) e).getActor())); + conn.write(new SM_ACTOR_DIE(((ActorDieEvent) e).getActor())); } // keep listener alive return true;