mirror of
https://github.com/Rogiel/l2jserver2
synced 2025-12-07 16:03:10 +00:00
Fixes item pick animation and renames few packets
This commit is contained in:
@@ -51,42 +51,39 @@ public abstract class AbstractDAO<T extends Model<?>, I extends ID<?>>
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean save(T object) {
|
public int save(T object) {
|
||||||
return save(object, false);
|
return save(object, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean save(T object, boolean force) {
|
public int save(T object, boolean force) {
|
||||||
switch (object.getObjectDesire()) {
|
switch (object.getObjectDesire()) {
|
||||||
case INSERT:
|
case INSERT:
|
||||||
return insert(object);
|
return insertObjects(wrap(object));
|
||||||
case UPDATE:
|
case UPDATE:
|
||||||
return update(object);
|
return updateObjects(wrap(object));
|
||||||
case DELETE:
|
case DELETE:
|
||||||
return delete(object);
|
return deleteObjects(wrap(object));
|
||||||
case NONE:
|
case NONE:
|
||||||
return (force ? update(object) : false);
|
return (force ? updateObjects(wrap(object)) : 0);
|
||||||
default:
|
default:
|
||||||
return false;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@SuppressWarnings("unchecked")
|
public void insert(T object) {
|
||||||
public boolean insert(T object) {
|
insertObjects(wrap(object));
|
||||||
return insertObjects(object) > 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@SuppressWarnings("unchecked")
|
public void update(T object) {
|
||||||
public boolean update(T object) {
|
updateObjects(wrap(object));
|
||||||
return updateObjects(object) > 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@SuppressWarnings("unchecked")
|
public void delete(T object) {
|
||||||
public boolean delete(T object) {
|
deleteObjects(wrap(object));
|
||||||
return deleteObjects(object) > 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -128,4 +125,6 @@ public abstract class AbstractDAO<T extends Model<?>, I extends ID<?>>
|
|||||||
public DatabaseService getDatabase() {
|
public DatabaseService getDatabase() {
|
||||||
return database;
|
return database;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected abstract T[] wrap(Model<?>... objects);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -311,7 +311,7 @@ public abstract class AbstractJDBCDatabaseService extends AbstractService
|
|||||||
.getDAO(object.getClass());
|
.getDAO(object.getClass());
|
||||||
if (dao == null)
|
if (dao == null)
|
||||||
continue;
|
continue;
|
||||||
if (dao.save(object)) {
|
if (dao.save(object) > 0) {
|
||||||
objects++;
|
objects++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -548,6 +548,7 @@ public abstract class AbstractJDBCDatabaseService extends AbstractService
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
conn.commit();
|
||||||
return rows;
|
return rows;
|
||||||
} finally {
|
} finally {
|
||||||
st.close();
|
st.close();
|
||||||
|
|||||||
@@ -210,7 +210,7 @@ public abstract class AbstractOrientDatabaseService extends AbstractService
|
|||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
final DataAccessObject<Model<?>, ?> dao = daoResolver
|
final DataAccessObject<Model<?>, ?> dao = daoResolver
|
||||||
.getDAO(object.getClass());
|
.getDAO(object.getClass());
|
||||||
if (dao.save(object)) {
|
if (dao.save(object) > 0) {
|
||||||
objects++;
|
objects++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -70,10 +70,10 @@ public interface DataAccessObject<O extends Model<?>, I extends ID<?>> extends
|
|||||||
*
|
*
|
||||||
* @param object
|
* @param object
|
||||||
* the object
|
* the object
|
||||||
* @return true if the row was inserted or updated
|
* @return the number of affected rows
|
||||||
* @see DataAccessObject#save(Model, boolean)
|
* @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
|
* Save the instance to the database. If a new database entry was created
|
||||||
@@ -83,21 +83,21 @@ public interface DataAccessObject<O extends Model<?>, I extends ID<?>> extends
|
|||||||
* the object
|
* the object
|
||||||
* @param force
|
* @param force
|
||||||
* will force an save, even if the object has not changed
|
* 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.
|
* Inserts the instance in the database.
|
||||||
*
|
*
|
||||||
* @param object
|
* @param object
|
||||||
* the 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
|
* @param objects
|
||||||
* the objects
|
* the objects
|
||||||
@@ -110,12 +110,12 @@ public interface DataAccessObject<O extends Model<?>, I extends ID<?>> extends
|
|||||||
*
|
*
|
||||||
* @param object
|
* @param object
|
||||||
* the 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
|
* @param objects
|
||||||
* the objects
|
* the objects
|
||||||
@@ -128,16 +128,16 @@ public interface DataAccessObject<O extends Model<?>, I extends ID<?>> extends
|
|||||||
*
|
*
|
||||||
* @param object
|
* @param object
|
||||||
* the 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
|
* @param objects
|
||||||
* the objects
|
* the objects
|
||||||
* @return the numver of deleted rows
|
* @return the number of deleted rows
|
||||||
*/
|
*/
|
||||||
int deleteObjects(@SuppressWarnings("unchecked") O... objects);
|
int deleteObjects(@SuppressWarnings("unchecked") O... objects);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,6 +17,7 @@
|
|||||||
package com.l2jserver.util;
|
package com.l2jserver.util;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
import java.util.Comparator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import com.l2jserver.util.factory.CollectionFactory;
|
import com.l2jserver.util.factory.CollectionFactory;
|
||||||
@@ -27,14 +28,19 @@ import com.l2jserver.util.factory.CollectionFactory;
|
|||||||
*/
|
*/
|
||||||
public class ArrayUtils {
|
public class ArrayUtils {
|
||||||
@SafeVarargs
|
@SafeVarargs
|
||||||
@SuppressWarnings("unchecked")
|
public final static <T> T[] copyArrayExcept(Class<T[]> type, T[] array,
|
||||||
public final static <T> T[] copyArrayExcept(T[] array, T... except) {
|
T... except) {
|
||||||
final List<T> values = CollectionFactory.newList();
|
final List<T> values = CollectionFactory.newList();
|
||||||
for (final T item : array) {
|
for (final T item : array) {
|
||||||
if (Arrays.binarySearch(except, item) < 0) {
|
if (Arrays.binarySearch(except, item, new Comparator<T>() {
|
||||||
|
@Override
|
||||||
|
public int compare(Object o1, Object o2) {
|
||||||
|
return (o1 == o2 ? 1 : 0);
|
||||||
|
}
|
||||||
|
}) >= 0) {
|
||||||
values.add(item);
|
values.add(item);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return (T[]) values.toArray();
|
return Arrays.copyOf(values.toArray(), values.size(), type);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,13 +29,32 @@ import org.junit.Test;
|
|||||||
public class ArrayUtilsTest extends ArrayUtils {
|
public class ArrayUtilsTest extends ArrayUtils {
|
||||||
@Test
|
@Test
|
||||||
public void testCopyArrayExcept() {
|
public void testCopyArrayExcept() {
|
||||||
final String str1 = "one";
|
final TestClass objA = new TestClass("a");
|
||||||
final String str2 = "two";
|
final TestClass objB = new TestClass("b");
|
||||||
final String str3 = "three";
|
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 },
|
System.out.println(Arrays.toString(selected));
|
||||||
ArrayUtils.copyArrayExcept(arr, str2)));
|
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 + "]";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,9 +21,7 @@ import static org.jboss.netty.channel.Channels.pipeline;
|
|||||||
import org.jboss.netty.channel.ChannelPipeline;
|
import org.jboss.netty.channel.ChannelPipeline;
|
||||||
import org.jboss.netty.channel.ChannelPipelineFactory;
|
import org.jboss.netty.channel.ChannelPipelineFactory;
|
||||||
import org.jboss.netty.handler.logging.LoggingHandler;
|
import org.jboss.netty.handler.logging.LoggingHandler;
|
||||||
import org.jboss.netty.handler.timeout.IdleStateHandler;
|
|
||||||
import org.jboss.netty.logging.InternalLogLevel;
|
import org.jboss.netty.logging.InternalLogLevel;
|
||||||
import org.jboss.netty.util.HashedWheelTimer;
|
|
||||||
|
|
||||||
import com.google.inject.Guice;
|
import com.google.inject.Guice;
|
||||||
import com.google.inject.Inject;
|
import com.google.inject.Inject;
|
||||||
@@ -82,8 +80,8 @@ public class Lineage2PipelineFactory implements ChannelPipelineFactory {
|
|||||||
public ChannelPipeline getPipeline() throws Exception {
|
public ChannelPipeline getPipeline() throws Exception {
|
||||||
final ChannelPipeline pipeline = pipeline();
|
final ChannelPipeline pipeline = pipeline();
|
||||||
|
|
||||||
pipeline.addLast("timeout.tiner", new IdleStateHandler(
|
// pipeline.addLast("timeout.tiner", new IdleStateHandler(
|
||||||
new HashedWheelTimer(), 30, 30, 0));
|
// new HashedWheelTimer(), 30, 30, 0));
|
||||||
|
|
||||||
pipeline.addLast("frame.encoder", new Lineage2FrameEncoder());
|
pipeline.addLast("frame.encoder", new Lineage2FrameEncoder());
|
||||||
pipeline.addLast("frame.decoder", new Lineage2FrameDecoder());
|
pipeline.addLast("frame.decoder", new Lineage2FrameDecoder());
|
||||||
@@ -104,7 +102,7 @@ public class Lineage2PipelineFactory implements ChannelPipelineFactory {
|
|||||||
final Lineage2TimeoutHandler timeoutHandler = new Lineage2TimeoutHandler();
|
final Lineage2TimeoutHandler timeoutHandler = new Lineage2TimeoutHandler();
|
||||||
pipeline.addLast("packet.handler", new Lineage2PacketHandler(
|
pipeline.addLast("packet.handler", new Lineage2PacketHandler(
|
||||||
nettyNetworkService, worldService, timeoutHandler));
|
nettyNetworkService, worldService, timeoutHandler));
|
||||||
pipeline.addLast("timeout.handler", timeoutHandler);
|
//pipeline.addLast("timeout.handler", timeoutHandler);
|
||||||
|
|
||||||
return pipeline;
|
return pipeline;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ import com.l2jserver.game.net.Lineage2Client;
|
|||||||
import com.l2jserver.game.net.packet.ClientPacket;
|
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_ACTION_USE;
|
||||||
import com.l2jserver.game.net.packet.client.CM_ADMIN_COMMAND;
|
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_AUTH_LOGIN;
|
||||||
import com.l2jserver.game.net.packet.client.CM_BYPASS;
|
import com.l2jserver.game.net.packet.client.CM_BYPASS;
|
||||||
import com.l2jserver.game.net.packet.client.CM_CHAR_ACTION;
|
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_POSITION;
|
||||||
import com.l2jserver.game.net.packet.client.CM_CHAR_REQ_INVENTORY;
|
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_CHAR_SELECT;
|
||||||
import com.l2jserver.game.net.packet.client.CM_CHAT;
|
import com.l2jserver.game.net.packet.client.CM_CHAR_CHAT;
|
||||||
import com.l2jserver.game.net.packet.client.CM_DROP_ITEM;
|
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_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_ALL_FORTRESS_INFO;
|
||||||
import com.l2jserver.game.net.packet.client.CM_EXT_REQ_KEY_MAPPING;
|
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;
|
return CM_CHAR_MOVE.class;
|
||||||
case CM_RESTART.OPCODE:
|
case CM_RESTART.OPCODE:
|
||||||
return CM_RESTART.class;
|
return CM_RESTART.class;
|
||||||
case CM_CHAT.OPCODE:
|
case CM_CHAR_CHAT.OPCODE:
|
||||||
return CM_CHAT.class;
|
return CM_CHAR_CHAT.class;
|
||||||
case CM_CHAR_POSITION.OPCODE:
|
case CM_CHAR_POSITION.OPCODE:
|
||||||
return CM_CHAR_POSITION.class;
|
return CM_CHAR_POSITION.class;
|
||||||
case CM_ENTER_WORLD.OPCODE:
|
case CM_ENTER_WORLD.OPCODE:
|
||||||
@@ -186,10 +186,10 @@ public class Lineage2PacketReader extends OneToOneDecoder {
|
|||||||
return CM_ACTION_USE.class;
|
return CM_ACTION_USE.class;
|
||||||
case CM_CHAR_OPEN_MAP.OPCODE:
|
case CM_CHAR_OPEN_MAP.OPCODE:
|
||||||
return CM_CHAR_OPEN_MAP.class;
|
return CM_CHAR_OPEN_MAP.class;
|
||||||
case CM_ATTACK.OPCODE:
|
case CM_CHAR_ATTACK.OPCODE:
|
||||||
return CM_ATTACK.class;
|
return CM_CHAR_ATTACK.class;
|
||||||
case CM_DROP_ITEM.OPCODE:
|
case CM_ITEM_DROP.OPCODE:
|
||||||
return CM_DROP_ITEM.class;
|
return CM_ITEM_DROP.class;
|
||||||
default:
|
default:
|
||||||
logger.warn("Unknown packet for 0x{}", Integer.toHexString(opcode));
|
logger.warn("Unknown packet for 0x{}", Integer.toHexString(opcode));
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -1,33 +0,0 @@
|
|||||||
/*
|
|
||||||
* This file is part of l2jserver2 <l2jserver2.com>.
|
|
||||||
*
|
|
||||||
* 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 <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
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 <a href="http://www.rogiel.com">Rogiel</a>
|
|
||||||
*/
|
|
||||||
public class ClientPacketModule extends AbstractModule {
|
|
||||||
@Override
|
|
||||||
protected void configure() {
|
|
||||||
bind(CM_PROTOCOL_VERSION.class);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,33 +0,0 @@
|
|||||||
/*
|
|
||||||
* This file is part of l2jserver2 <l2jserver2.com>.
|
|
||||||
*
|
|
||||||
* 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 <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
package com.l2jserver.game.net.packet;
|
|
||||||
|
|
||||||
import com.google.inject.AbstractModule;
|
|
||||||
import com.google.inject.Module;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Google Guice {@link Module} for packets
|
|
||||||
*
|
|
||||||
* @author <a href="http://www.rogiel.com">Rogiel</a>
|
|
||||||
*/
|
|
||||||
public class PacketModule extends AbstractModule {
|
|
||||||
@Override
|
|
||||||
protected void configure() {
|
|
||||||
install(new ClientPacketModule());
|
|
||||||
install(new ServerPacketModule());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,33 +0,0 @@
|
|||||||
/*
|
|
||||||
* This file is part of l2jserver2 <l2jserver2.com>.
|
|
||||||
*
|
|
||||||
* 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 <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
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 <a href="http://www.rogiel.com">Rogiel</a>
|
|
||||||
*/
|
|
||||||
public class ServerPacketModule extends AbstractModule {
|
|
||||||
@Override
|
|
||||||
protected void configure() {
|
|
||||||
bind(CM_PROTOCOL_VERSION.class);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -41,7 +41,7 @@ import com.l2jserver.util.geometry.Coordinate;
|
|||||||
*
|
*
|
||||||
* @author <a href="http://www.rogiel.com">Rogiel</a>
|
* @author <a href="http://www.rogiel.com">Rogiel</a>
|
||||||
*/
|
*/
|
||||||
public class CM_ATTACK extends AbstractClientPacket {
|
public class CM_CHAR_ATTACK extends AbstractClientPacket {
|
||||||
/**
|
/**
|
||||||
* The packet OPCODE
|
* The packet OPCODE
|
||||||
*/
|
*/
|
||||||
@@ -127,7 +127,7 @@ public class CM_ATTACK extends AbstractClientPacket {
|
|||||||
* the object id resolver
|
* the object id resolver
|
||||||
*/
|
*/
|
||||||
@Inject
|
@Inject
|
||||||
public CM_ATTACK(CharacterService charService, ObjectIDResolver idResolver) {
|
public CM_CHAR_ATTACK(CharacterService charService, ObjectIDResolver idResolver) {
|
||||||
this.charService = charService;
|
this.charService = charService;
|
||||||
this.idResolver = idResolver;
|
this.idResolver = idResolver;
|
||||||
}
|
}
|
||||||
@@ -37,7 +37,7 @@ import com.l2jserver.util.BufferUtils;
|
|||||||
*
|
*
|
||||||
* @author <a href="http://www.rogiel.com">Rogiel</a>
|
* @author <a href="http://www.rogiel.com">Rogiel</a>
|
||||||
*/
|
*/
|
||||||
public class CM_CHAT extends AbstractClientPacket {
|
public class CM_CHAR_CHAT extends AbstractClientPacket {
|
||||||
/**
|
/**
|
||||||
* The packet OPCODE
|
* The packet OPCODE
|
||||||
*/
|
*/
|
||||||
@@ -55,7 +55,7 @@ public class CM_CHAT extends AbstractClientPacket {
|
|||||||
private String target;
|
private String target;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public CM_CHAT(ChatService chatService) {
|
public CM_CHAR_CHAT(ChatService chatService) {
|
||||||
this.chatService = chatService;
|
this.chatService = chatService;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -37,7 +37,7 @@ import com.l2jserver.util.geometry.Point3D;
|
|||||||
*
|
*
|
||||||
* @author <a href="http://www.rogiel.com">Rogiel</a>
|
* @author <a href="http://www.rogiel.com">Rogiel</a>
|
||||||
*/
|
*/
|
||||||
public class CM_DROP_ITEM extends AbstractClientPacket {
|
public class CM_ITEM_DROP extends AbstractClientPacket {
|
||||||
/**
|
/**
|
||||||
* The packet OPCODE
|
* The packet OPCODE
|
||||||
*/
|
*/
|
||||||
@@ -69,7 +69,7 @@ public class CM_DROP_ITEM extends AbstractClientPacket {
|
|||||||
* the item id provider
|
* the item id provider
|
||||||
*/
|
*/
|
||||||
@Inject
|
@Inject
|
||||||
public CM_DROP_ITEM(ItemService itemService, ItemIDProvider itemIdProvider) {
|
public CM_ITEM_DROP(ItemService itemService, ItemIDProvider itemIdProvider) {
|
||||||
this.itemService = itemService;
|
this.itemService = itemService;
|
||||||
this.itemIdProvider = itemIdProvider;
|
this.itemIdProvider = itemIdProvider;
|
||||||
}
|
}
|
||||||
@@ -31,7 +31,7 @@ import com.l2jserver.util.BufferUtils;
|
|||||||
*
|
*
|
||||||
* @author <a href="http://www.rogiel.com">Rogiel</a>
|
* @author <a href="http://www.rogiel.com">Rogiel</a>
|
||||||
*/
|
*/
|
||||||
public class SM_CHAT extends AbstractServerPacket {
|
public class SM_ACTOR_CHAT extends AbstractServerPacket {
|
||||||
/**
|
/**
|
||||||
* The packet OPCODE
|
* The packet OPCODE
|
||||||
*/
|
*/
|
||||||
@@ -54,14 +54,14 @@ public class SM_CHAT extends AbstractServerPacket {
|
|||||||
*/
|
*/
|
||||||
private int messageID = 0;
|
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);
|
super(OPCODE);
|
||||||
this.actor = character;
|
this.actor = character;
|
||||||
this.destination = destination;
|
this.destination = destination;
|
||||||
this.message = message;
|
this.message = message;
|
||||||
}
|
}
|
||||||
|
|
||||||
public SM_CHAT(Actor actor, ChatMessageType destination, int messageID) {
|
public SM_ACTOR_CHAT(Actor actor, ChatMessageType destination, int messageID) {
|
||||||
super(OPCODE);
|
super(OPCODE);
|
||||||
this.actor = actor;
|
this.actor = actor;
|
||||||
this.destination = destination;
|
this.destination = destination;
|
||||||
@@ -29,7 +29,7 @@ import com.l2jserver.model.world.Actor;
|
|||||||
* @author <a href="http://www.rogiel.com">Rogiel</a>
|
* @author <a href="http://www.rogiel.com">Rogiel</a>
|
||||||
* @see AttackHit
|
* @see AttackHit
|
||||||
*/
|
*/
|
||||||
public class SM_DIE extends AbstractServerPacket {
|
public class SM_ACTOR_DIE extends AbstractServerPacket {
|
||||||
/**
|
/**
|
||||||
* The packet OPCODE
|
* The packet OPCODE
|
||||||
*/
|
*/
|
||||||
@@ -40,7 +40,7 @@ public class SM_DIE extends AbstractServerPacket {
|
|||||||
*/
|
*/
|
||||||
private final Actor actor;
|
private final Actor actor;
|
||||||
|
|
||||||
public SM_DIE(Actor actor) {
|
public SM_ACTOR_DIE(Actor actor) {
|
||||||
super(OPCODE);
|
super(OPCODE);
|
||||||
this.actor = actor;
|
this.actor = actor;
|
||||||
}
|
}
|
||||||
@@ -30,7 +30,7 @@ import com.l2jserver.util.geometry.Coordinate;
|
|||||||
*
|
*
|
||||||
* @author <a href="http://www.rogiel.com">Rogiel</a> O
|
* @author <a href="http://www.rogiel.com">Rogiel</a> O
|
||||||
*/
|
*/
|
||||||
public class SM_MOVE extends AbstractServerPacket {
|
public class SM_ACTOR_MOVE extends AbstractServerPacket {
|
||||||
/**
|
/**
|
||||||
* The packet OPCODE
|
* The packet OPCODE
|
||||||
*/
|
*/
|
||||||
@@ -45,7 +45,7 @@ public class SM_MOVE extends AbstractServerPacket {
|
|||||||
*/
|
*/
|
||||||
private Coordinate target;
|
private Coordinate target;
|
||||||
|
|
||||||
public SM_MOVE(Actor actor, Coordinate target) {
|
public SM_ACTOR_MOVE(Actor actor, Coordinate target) {
|
||||||
super(OPCODE);
|
super(OPCODE);
|
||||||
this.actor = actor;
|
this.actor = actor;
|
||||||
this.target = target;
|
this.target = target;
|
||||||
@@ -32,7 +32,7 @@ import com.l2jserver.util.factory.CollectionFactory;
|
|||||||
*
|
*
|
||||||
* @author <a href="http://www.rogiel.com">Rogiel</a>
|
* @author <a href="http://www.rogiel.com">Rogiel</a>
|
||||||
*/
|
*/
|
||||||
public class SM_STATUS_UPDATE extends AbstractServerPacket {
|
public class SM_ACTOR_STATUS_UPDATE extends AbstractServerPacket {
|
||||||
/**
|
/**
|
||||||
* The packet OPCODE
|
* The packet OPCODE
|
||||||
*/
|
*/
|
||||||
@@ -67,7 +67,7 @@ public class SM_STATUS_UPDATE extends AbstractServerPacket {
|
|||||||
private final Map<Stat, Integer> update = CollectionFactory.newMap();
|
private final Map<Stat, Integer> update = CollectionFactory.newMap();
|
||||||
private final Actor actor;
|
private final Actor actor;
|
||||||
|
|
||||||
public SM_STATUS_UPDATE(Actor actor) {
|
public SM_ACTOR_STATUS_UPDATE(Actor actor) {
|
||||||
super(OPCODE);
|
super(OPCODE);
|
||||||
this.actor = actor;
|
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);
|
update.put(stat, value);
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
@@ -29,7 +29,7 @@ import com.l2jserver.util.BufferUtils;
|
|||||||
*
|
*
|
||||||
* @author <a href="http://www.rogiel.com">Rogiel</a>
|
* @author <a href="http://www.rogiel.com">Rogiel</a>
|
||||||
*/
|
*/
|
||||||
public class SM_ENTER_WORLD extends AbstractServerPacket {
|
public class SM_CHAR_ENTER_WORLD extends AbstractServerPacket {
|
||||||
/**
|
/**
|
||||||
* The packet OPCODE
|
* The packet OPCODE
|
||||||
*/
|
*/
|
||||||
@@ -52,7 +52,7 @@ public class SM_ENTER_WORLD extends AbstractServerPacket {
|
|||||||
* @param sessionId
|
* @param sessionId
|
||||||
* the session id
|
* the session id
|
||||||
*/
|
*/
|
||||||
public SM_ENTER_WORLD(L2Character character, int sessionId) {
|
public SM_CHAR_ENTER_WORLD(L2Character character, int sessionId) {
|
||||||
super(OPCODE);
|
super(OPCODE);
|
||||||
this.character = character;
|
this.character = character;
|
||||||
this.sessionId = sessionId;
|
this.sessionId = sessionId;
|
||||||
@@ -29,7 +29,7 @@ import com.l2jserver.util.geometry.Point3D;
|
|||||||
*
|
*
|
||||||
* @author <a href="http://www.rogiel.com">Rogiel</a>
|
* @author <a href="http://www.rogiel.com">Rogiel</a>
|
||||||
*/
|
*/
|
||||||
public class SM_TELEPORT extends AbstractServerPacket {
|
public class SM_CHAR_TELEPORT extends AbstractServerPacket {
|
||||||
/**
|
/**
|
||||||
* The packet OPCODE
|
* The packet OPCODE
|
||||||
*/
|
*/
|
||||||
@@ -44,7 +44,7 @@ public class SM_TELEPORT extends AbstractServerPacket {
|
|||||||
*/
|
*/
|
||||||
private final Point3D point;
|
private final Point3D point;
|
||||||
|
|
||||||
public SM_TELEPORT(L2Character character, Point3D point) {
|
public SM_CHAR_TELEPORT(L2Character character, Point3D point) {
|
||||||
super(OPCODE);
|
super(OPCODE);
|
||||||
this.character = character;
|
this.character = character;
|
||||||
this.point = point;
|
this.point = point;
|
||||||
@@ -53,6 +53,6 @@ public class SM_ITEM_GROUND extends AbstractServerPacket {
|
|||||||
buffer.writeInt(0x01); // show count
|
buffer.writeInt(0x01); // show count
|
||||||
buffer.writeLong(item.getCount()); // count
|
buffer.writeLong(item.getCount()); // count
|
||||||
|
|
||||||
buffer.writeInt(1); // unknown
|
buffer.writeInt(0); // unknown
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,69 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of l2jserver2 <l2jserver2.com>.
|
||||||
|
*
|
||||||
|
* 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 <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
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 <a href="http://www.rogiel.com">Rogiel</a>
|
||||||
|
* @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 <code>item</code>
|
||||||
|
* @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());
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -29,7 +29,7 @@ import com.l2jserver.model.world.character.event.CharacterEvent;
|
|||||||
*
|
*
|
||||||
* @author <a href="http://www.rogiel.com">Rogiel</a>
|
* @author <a href="http://www.rogiel.com">Rogiel</a>
|
||||||
*/
|
*/
|
||||||
public class ItemPickUpEvent implements ItemEvent, CharacterEvent {
|
public class ItemPickEvent implements ItemEvent, CharacterEvent {
|
||||||
/**
|
/**
|
||||||
* The pickupping character
|
* The pickupping character
|
||||||
*/
|
*/
|
||||||
@@ -52,7 +52,7 @@ public class ItemPickUpEvent implements ItemEvent, CharacterEvent {
|
|||||||
* the picked up item
|
* the picked up item
|
||||||
* @param newItem the new {@link 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.character = character;
|
||||||
this.item = item;
|
this.item = item;
|
||||||
this.newItem = newItem;
|
this.newItem = newItem;
|
||||||
@@ -18,8 +18,8 @@ package com.l2jserver.model.world.npc.controller;
|
|||||||
|
|
||||||
import com.google.inject.Inject;
|
import com.google.inject.Inject;
|
||||||
import com.l2jserver.game.net.Lineage2Client;
|
import com.l2jserver.game.net.Lineage2Client;
|
||||||
import com.l2jserver.game.net.packet.server.SM_STATUS_UPDATE;
|
import com.l2jserver.game.net.packet.server.SM_ACTOR_STATUS_UPDATE;
|
||||||
import com.l2jserver.game.net.packet.server.SM_STATUS_UPDATE.Stat;
|
import com.l2jserver.game.net.packet.server.SM_ACTOR_STATUS_UPDATE.Stat;
|
||||||
import com.l2jserver.model.world.L2Character;
|
import com.l2jserver.model.world.L2Character;
|
||||||
import com.l2jserver.model.world.NPC;
|
import com.l2jserver.model.world.NPC;
|
||||||
import com.l2jserver.service.game.character.CharacterService;
|
import com.l2jserver.service.game.character.CharacterService;
|
||||||
@@ -51,7 +51,7 @@ public class MonsterController extends BaseNPCController {
|
|||||||
charService.attack(character, mob);
|
charService.attack(character, mob);
|
||||||
} else {
|
} else {
|
||||||
charService.target(character, mob);
|
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.getTemplate().getMaximumHP()).add(Stat.HP,
|
||||||
(int) mob.getHP()));
|
(int) mob.getHP()));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ import java.sql.Types;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import com.google.inject.Inject;
|
import com.google.inject.Inject;
|
||||||
|
import com.l2jserver.model.Model;
|
||||||
import com.l2jserver.model.dao.CharacterDAO;
|
import com.l2jserver.model.dao.CharacterDAO;
|
||||||
import com.l2jserver.model.id.AccountID;
|
import com.l2jserver.model.id.AccountID;
|
||||||
import com.l2jserver.model.id.object.CharacterID;
|
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ import java.sql.SQLException;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import com.google.inject.Inject;
|
import com.google.inject.Inject;
|
||||||
|
import com.l2jserver.model.Model;
|
||||||
import com.l2jserver.model.dao.CharacterFriendDAO;
|
import com.l2jserver.model.dao.CharacterFriendDAO;
|
||||||
import com.l2jserver.model.game.CharacterFriend;
|
import com.l2jserver.model.game.CharacterFriend;
|
||||||
import com.l2jserver.model.id.FriendID;
|
import com.l2jserver.model.id.FriendID;
|
||||||
@@ -213,7 +214,7 @@ public abstract class JDBCCharacterFriendDAO extends
|
|||||||
@Override
|
@Override
|
||||||
public boolean save(final CharacterFriendList friends) {
|
public boolean save(final CharacterFriendList friends) {
|
||||||
for (final CharacterFriend friend : friends) {
|
for (final CharacterFriend friend : friends) {
|
||||||
if (!save(friend))
|
if (save(friend) == 0)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
@@ -222,9 +223,19 @@ public abstract class JDBCCharacterFriendDAO extends
|
|||||||
@Override
|
@Override
|
||||||
public boolean delete(final CharacterFriendList friends) {
|
public boolean delete(final CharacterFriendList friends) {
|
||||||
for (final CharacterFriend friend : friends) {
|
for (final CharacterFriend friend : friends) {
|
||||||
if (!delete(friend))
|
if (deleteObjects(friend) == 0)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return true;
|
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ import java.util.Date;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import com.google.inject.Inject;
|
import com.google.inject.Inject;
|
||||||
|
import com.l2jserver.model.Model;
|
||||||
import com.l2jserver.model.dao.CharacterDAO;
|
import com.l2jserver.model.dao.CharacterDAO;
|
||||||
import com.l2jserver.model.dao.ChatMessageDAO;
|
import com.l2jserver.model.dao.ChatMessageDAO;
|
||||||
import com.l2jserver.model.id.ChatMessageID;
|
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ import java.sql.SQLException;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import com.google.inject.Inject;
|
import com.google.inject.Inject;
|
||||||
|
import com.l2jserver.model.Model;
|
||||||
import com.l2jserver.model.dao.CharacterDAO;
|
import com.l2jserver.model.dao.CharacterDAO;
|
||||||
import com.l2jserver.model.dao.ClanDAO;
|
import com.l2jserver.model.dao.ClanDAO;
|
||||||
import com.l2jserver.model.id.object.CharacterID;
|
import com.l2jserver.model.id.object.CharacterID;
|
||||||
@@ -175,4 +176,14 @@ public abstract class JDBCClanDAO extends AbstractJDBCDAO<Clan, ClanID>
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ import org.slf4j.Logger;
|
|||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import com.google.inject.Inject;
|
import com.google.inject.Inject;
|
||||||
|
import com.l2jserver.model.Model;
|
||||||
import com.l2jserver.model.dao.ItemDAO;
|
import com.l2jserver.model.dao.ItemDAO;
|
||||||
import com.l2jserver.model.id.object.CharacterID;
|
import com.l2jserver.model.id.object.CharacterID;
|
||||||
import com.l2jserver.model.id.object.ItemID;
|
import com.l2jserver.model.id.object.ItemID;
|
||||||
@@ -343,4 +344,14 @@ public abstract class JDBCItemDAO extends AbstractJDBCDAO<Item, ItemID>
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ import org.slf4j.Logger;
|
|||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import com.google.inject.Inject;
|
import com.google.inject.Inject;
|
||||||
|
import com.l2jserver.model.Model;
|
||||||
import com.l2jserver.model.dao.CharacterDAO;
|
import com.l2jserver.model.dao.CharacterDAO;
|
||||||
import com.l2jserver.model.dao.NPCDAO;
|
import com.l2jserver.model.dao.NPCDAO;
|
||||||
import com.l2jserver.model.id.object.NPCID;
|
import com.l2jserver.model.id.object.NPCID;
|
||||||
@@ -300,4 +301,14 @@ public abstract class JDBCNPCDAO extends AbstractJDBCDAO<NPC, NPCID> 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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ import java.util.Collection;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import com.google.inject.Inject;
|
import com.google.inject.Inject;
|
||||||
|
import com.l2jserver.model.Model;
|
||||||
import com.l2jserver.model.dao.CharacterDAO;
|
import com.l2jserver.model.dao.CharacterDAO;
|
||||||
import com.l2jserver.model.id.AccountID;
|
import com.l2jserver.model.id.AccountID;
|
||||||
import com.l2jserver.model.id.object.CharacterID;
|
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ import java.sql.SQLException;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import com.google.inject.Inject;
|
import com.google.inject.Inject;
|
||||||
|
import com.l2jserver.model.Model;
|
||||||
import com.l2jserver.model.dao.CharacterFriendDAO;
|
import com.l2jserver.model.dao.CharacterFriendDAO;
|
||||||
import com.l2jserver.model.game.CharacterFriend;
|
import com.l2jserver.model.game.CharacterFriend;
|
||||||
import com.l2jserver.model.id.FriendID;
|
import com.l2jserver.model.id.FriendID;
|
||||||
@@ -265,7 +266,7 @@ public class OrientDBCharacterFriendDAO extends
|
|||||||
@Override
|
@Override
|
||||||
public boolean save(final CharacterFriendList friends) {
|
public boolean save(final CharacterFriendList friends) {
|
||||||
for (final CharacterFriend friend : friends) {
|
for (final CharacterFriend friend : friends) {
|
||||||
if (!save(friend))
|
if (save(friend) == 0)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
@@ -274,9 +275,19 @@ public class OrientDBCharacterFriendDAO extends
|
|||||||
@Override
|
@Override
|
||||||
public boolean delete(final CharacterFriendList friends) {
|
public boolean delete(final CharacterFriendList friends) {
|
||||||
for (final CharacterFriend friend : friends) {
|
for (final CharacterFriend friend : friends) {
|
||||||
if (!delete(friend))
|
if (deleteObjects(friend) == 0)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return true;
|
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ import java.util.Date;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import com.google.inject.Inject;
|
import com.google.inject.Inject;
|
||||||
|
import com.l2jserver.model.Model;
|
||||||
import com.l2jserver.model.dao.CharacterDAO;
|
import com.l2jserver.model.dao.CharacterDAO;
|
||||||
import com.l2jserver.model.dao.ChatMessageDAO;
|
import com.l2jserver.model.dao.ChatMessageDAO;
|
||||||
import com.l2jserver.model.id.ChatMessageID;
|
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ import java.sql.SQLException;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import com.google.inject.Inject;
|
import com.google.inject.Inject;
|
||||||
|
import com.l2jserver.model.Model;
|
||||||
import com.l2jserver.model.dao.CharacterDAO;
|
import com.l2jserver.model.dao.CharacterDAO;
|
||||||
import com.l2jserver.model.dao.ClanDAO;
|
import com.l2jserver.model.dao.ClanDAO;
|
||||||
import com.l2jserver.model.id.ChatMessageID;
|
import com.l2jserver.model.id.ChatMessageID;
|
||||||
@@ -223,4 +224,14 @@ public class OrientDBClanDAO extends AbstractOrientDBDAO<Clan, ClanID>
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
import com.l2jserver.game.net.packet.server.SM_CHAR_INFO_EXTRA;
|
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_CHAR_INVENTORY;
|
||||||
import com.l2jserver.game.net.packet.server.SM_CHAT;
|
import com.l2jserver.game.net.packet.server.SM_ACTOR_CHAT;
|
||||||
import com.l2jserver.game.net.packet.server.SM_MOVE;
|
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_MOVE_TYPE;
|
||||||
import com.l2jserver.game.net.packet.server.SM_TARGET;
|
import com.l2jserver.game.net.packet.server.SM_TARGET;
|
||||||
import com.l2jserver.model.dao.CharacterDAO;
|
import com.l2jserver.model.dao.CharacterDAO;
|
||||||
@@ -242,7 +242,7 @@ public class CharacterServiceImpl extends AbstractService implements
|
|||||||
character.getAppearance().setHairColor(hairColor);
|
character.getAppearance().setHairColor(hairColor);
|
||||||
character.getAppearance().setFace(face);
|
character.getAppearance().setFace(face);
|
||||||
|
|
||||||
if (characterDao.save(character))
|
if (characterDao.save(character) > 0)
|
||||||
return character;
|
return character;
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@@ -275,14 +275,14 @@ public class CharacterServiceImpl extends AbstractService implements
|
|||||||
final ChatChannelListener globalChatListener = new ChatChannelListener() {
|
final ChatChannelListener globalChatListener = new ChatChannelListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onMessage(ChatChannel channel, ChatMessage message) {
|
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()));
|
ChatMessageType.ALL, message.getMessage()));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
final ChatChannelListener tradeChatListener = new ChatChannelListener() {
|
final ChatChannelListener tradeChatListener = new ChatChannelListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onMessage(ChatChannel channel, ChatMessage message) {
|
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()));
|
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
|
// 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
|
// to be done yet. With character validation packet, another packet of
|
||||||
// these will be broadcasted.
|
// 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
|
// we don't dispatch events here, they will be dispatched by
|
||||||
// with the same packet referred up here.
|
// with the same packet referred up here.
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,8 +16,8 @@
|
|||||||
*/
|
*/
|
||||||
package com.l2jserver.service.game.chat;
|
package com.l2jserver.service.game.chat;
|
||||||
|
|
||||||
import com.l2jserver.game.net.packet.client.CM_CHAT;
|
import com.l2jserver.game.net.packet.client.CM_CHAR_CHAT;
|
||||||
import com.l2jserver.game.net.packet.server.SM_CHAT;
|
import com.l2jserver.game.net.packet.server.SM_ACTOR_CHAT;
|
||||||
import com.l2jserver.model.id.object.CharacterID;
|
import com.l2jserver.model.id.object.CharacterID;
|
||||||
import com.l2jserver.model.id.object.ClanID;
|
import com.l2jserver.model.id.object.ClanID;
|
||||||
import com.l2jserver.model.server.ChatMessage;
|
import com.l2jserver.model.server.ChatMessage;
|
||||||
@@ -54,8 +54,8 @@ import com.l2jserver.service.Service;
|
|||||||
* {@link ChatBanActiveChatServiceException} will be thrown.
|
* {@link ChatBanActiveChatServiceException} will be thrown.
|
||||||
*
|
*
|
||||||
* <h1>Packets</h1>
|
* <h1>Packets</h1>
|
||||||
* Messages are received (from the clients) with {@link CM_CHAT} and sent (to
|
* Messages are received (from the clients) with {@link CM_CHAR_CHAT} and sent (to
|
||||||
* the clients) with {@link SM_CHAT}.
|
* the clients) with {@link SM_ACTOR_CHAT}.
|
||||||
*
|
*
|
||||||
* @author <a href="http://www.rogiel.com">Rogiel</a>
|
* @author <a href="http://www.rogiel.com">Rogiel</a>
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ import com.l2jserver.model.world.Item;
|
|||||||
import com.l2jserver.model.world.L2Character;
|
import com.l2jserver.model.world.L2Character;
|
||||||
import com.l2jserver.model.world.character.CharacterInventory.ItemLocation;
|
import com.l2jserver.model.world.character.CharacterInventory.ItemLocation;
|
||||||
import com.l2jserver.model.world.item.ItemDropEvent;
|
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;
|
||||||
import com.l2jserver.service.AbstractService.Depends;
|
import com.l2jserver.service.AbstractService.Depends;
|
||||||
import com.l2jserver.service.ServiceStartException;
|
import com.l2jserver.service.ServiceStartException;
|
||||||
@@ -176,10 +176,10 @@ public class ItemServiceImpl extends AbstractService implements ItemService {
|
|||||||
stackItems[items.length] = item;
|
stackItems[items.length] = item;
|
||||||
try {
|
try {
|
||||||
item = stack(stackItems);
|
item = stack(stackItems);
|
||||||
Item[] removedItems = character.getInventory().remove(
|
Item[] deleteItems = ArrayUtils.copyArrayExcept(
|
||||||
stackItems);
|
Item[].class, stackItems, item);
|
||||||
Item[] databaseDeleteItems = ArrayUtils.copyArrayExcept(removedItems, item);
|
character.getInventory().remove(deleteItems);
|
||||||
itemDao.deleteObjects(databaseDeleteItems);
|
itemDao.deleteObjects(deleteItems);
|
||||||
character.getInventory().add(item);
|
character.getInventory().add(item);
|
||||||
} catch (NonStackableItemsServiceException e) {
|
} catch (NonStackableItemsServiceException e) {
|
||||||
character.getInventory().add(item);
|
character.getInventory().add(item);
|
||||||
@@ -196,8 +196,8 @@ public class ItemServiceImpl extends AbstractService implements ItemService {
|
|||||||
itemDao.save(originalItem);
|
itemDao.save(originalItem);
|
||||||
}
|
}
|
||||||
spawnService.unspawn(originalItem);
|
spawnService.unspawn(originalItem);
|
||||||
eventDispatcher.dispatch(new ItemPickUpEvent(character,
|
eventDispatcher.dispatch(new ItemPickEvent(character, originalItem,
|
||||||
originalItem, item));
|
item));
|
||||||
|
|
||||||
return item;
|
return item;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ import com.google.inject.Inject;
|
|||||||
import com.l2jserver.game.net.Lineage2Client;
|
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;
|
||||||
import com.l2jserver.game.net.packet.server.SM_CHAR_INFO_EXTRA;
|
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.id.object.CharacterID;
|
||||||
import com.l2jserver.model.world.Actor;
|
import com.l2jserver.model.world.Actor;
|
||||||
import com.l2jserver.model.world.Actor.ActorState;
|
import com.l2jserver.model.world.Actor.ActorState;
|
||||||
@@ -234,7 +234,7 @@ public class SpawnServiceImpl extends AbstractService implements SpawnService {
|
|||||||
if (conn == null)
|
if (conn == null)
|
||||||
// TODO throw an exception here
|
// TODO throw an exception here
|
||||||
return;
|
return;
|
||||||
conn.write(new SM_TELEPORT(conn.getCharacter(), coordinate
|
conn.write(new SM_CHAR_TELEPORT(conn.getCharacter(), coordinate
|
||||||
.toPoint()));
|
.toPoint()));
|
||||||
((L2Character) actor).setState(ActorState.TELEPORTING);
|
((L2Character) actor).setState(ActorState.TELEPORTING);
|
||||||
((L2Character) actor).setTargetLocation(coordinate.toPoint());
|
((L2Character) actor).setTargetLocation(coordinate.toPoint());
|
||||||
|
|||||||
@@ -25,9 +25,10 @@ import com.l2jserver.game.net.Lineage2Client;
|
|||||||
import com.l2jserver.game.net.SystemMessage;
|
import com.l2jserver.game.net.SystemMessage;
|
||||||
import com.l2jserver.game.net.packet.server.SM_ATTACK;
|
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_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_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_MOVE_TYPE;
|
||||||
import com.l2jserver.game.net.packet.server.SM_NPC_INFO;
|
import com.l2jserver.game.net.packet.server.SM_NPC_INFO;
|
||||||
import com.l2jserver.game.net.packet.server.SM_OBJECT_REMOVE;
|
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.CharacterRunningEvent;
|
||||||
import com.l2jserver.model.world.character.event.CharacterWalkingEvent;
|
import com.l2jserver.model.world.character.event.CharacterWalkingEvent;
|
||||||
import com.l2jserver.model.world.item.ItemDropEvent;
|
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.npc.event.NPCSpawnEvent;
|
||||||
import com.l2jserver.model.world.player.event.PlayerTeleportedEvent;
|
import com.l2jserver.model.world.player.event.PlayerTeleportedEvent;
|
||||||
import com.l2jserver.service.AbstractService;
|
import com.l2jserver.service.AbstractService;
|
||||||
@@ -120,15 +121,18 @@ public class BroadcastServiceImpl extends AbstractService implements
|
|||||||
broadcast(conn, e.getObject());
|
broadcast(conn, e.getObject());
|
||||||
} else if (e instanceof CharacterMoveEvent) {
|
} else if (e instanceof CharacterMoveEvent) {
|
||||||
final CharacterMoveEvent evt = (CharacterMoveEvent) e;
|
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()));
|
.getCoordinate()));
|
||||||
} else if (e instanceof PlayerTeleportedEvent
|
} else if (e instanceof PlayerTeleportedEvent
|
||||||
|| e instanceof CharacterEnterWorldEvent) {
|
|| e instanceof CharacterEnterWorldEvent) {
|
||||||
broadcast(conn, e.getObject());
|
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
|
} else if (e instanceof ActorTeleportingEvent
|
||||||
|| e instanceof CharacterLeaveWorldEvent
|
|| e instanceof CharacterLeaveWorldEvent
|
||||||
|| e instanceof ActorUnspawnEvent
|
|| e instanceof ActorUnspawnEvent) {
|
||||||
|| e instanceof ItemPickUpEvent) {
|
|
||||||
// object is now out of sight
|
// object is now out of sight
|
||||||
// FIXME pick up animation is not happening
|
// FIXME pick up animation is not happening
|
||||||
conn.write(new SM_OBJECT_REMOVE(object));
|
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)
|
conn.write(new SM_MOVE_TYPE(((CharacterRunningEvent) e)
|
||||||
.getCharacter()));
|
.getCharacter()));
|
||||||
} else if (e instanceof ActorDieEvent) {
|
} 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
|
// keep listener alive
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
Reference in New Issue
Block a user