> {
+ /**
+ * @return the object ID
+ */
+ T getID();
+
+ /**
+ * Please note that the ID can only be set one time. Once it has been set,
+ * it cannot be changed and a {@link IllegalStateException} will be thrown
+ * if trying to change the ID.
+ *
+ * @param ID
+ * the object ID to set
+ * @throws IllegalStateException
+ * if the ID was already set
+ */
+ void setID(T ID) throws IllegalStateException;
+
+ /**
+ * Each object has an desire. Desires express what the
+ * {@link DatabaseService} should do with the object. The service
+ * automatically keep tracks of every database object (and release them when
+ * they are garbage collected).
+ *
+ * @return the database object desire
+ */
+ ObjectDesire getObjectDesire();
+
+ /**
+ * Each object has an desire. Desires express what the
+ * {@link DatabaseService} should do with the object. The service
+ * automatically keep tracks of every database object (and release them when
+ * they are garbage collected).
+ *
+ * @param desire
+ * the database object desire to set
+ */
+ void setObjectDesire(ObjectDesire desire);
+
+ /**
+ * Indicated what the object wants to do in the database. It indicates
+ * whether the object should be inserted, updated or deleted from the
+ * database.
+ *
+ * @author Rogiel
+ */
+ public enum ObjectDesire {
+ /**
+ * Don't do anything
+ */
+ NONE,
+ /**
+ * Insert a new object into database.
+ *
+ * If the primary key is auto generated by the database a clone of this
+ * object will be created.
+ * If the primary key is not auto generated by the database, an
+ * database exception will occur.
+ */
+ INSERT,
+ /**
+ * Updates the object in the database.
+ *
+ * If the object is not in the database nothing will happen.
+ */
+ UPDATE,
+ /**
+ * Deletes the object from the database.
+ *
+ * If tge object is not in the database nothing will happen.
+ */
+ DELETE;
+ }
+}
diff --git a/src/main/java/com/l2jserver/model/dao/CharacterDAO.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/dao/CharacterDAO.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/dao/CharacterDAO.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/dao/CharacterDAO.java
diff --git a/src/main/java/com/l2jserver/model/dao/CharacterFriendDAO.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/dao/CharacterFriendDAO.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/dao/CharacterFriendDAO.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/dao/CharacterFriendDAO.java
diff --git a/src/main/java/com/l2jserver/model/dao/ChatMessageDAO.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/dao/ChatMessageDAO.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/dao/ChatMessageDAO.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/dao/ChatMessageDAO.java
diff --git a/src/main/java/com/l2jserver/model/dao/ClanDAO.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/dao/ClanDAO.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/dao/ClanDAO.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/dao/ClanDAO.java
diff --git a/src/main/java/com/l2jserver/model/dao/ItemDAO.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/dao/ItemDAO.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/dao/ItemDAO.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/dao/ItemDAO.java
diff --git a/src/main/java/com/l2jserver/model/dao/NPCDAO.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/dao/NPCDAO.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/dao/NPCDAO.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/dao/NPCDAO.java
diff --git a/src/main/java/com/l2jserver/model/dao/PetDAO.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/dao/PetDAO.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/dao/PetDAO.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/dao/PetDAO.java
diff --git a/src/main/java/com/l2jserver/model/game/Castle.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/game/Castle.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/game/Castle.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/game/Castle.java
diff --git a/src/main/java/com/l2jserver/model/game/CharacterFriend.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/game/CharacterFriend.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/game/CharacterFriend.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/game/CharacterFriend.java
diff --git a/src/main/java/com/l2jserver/model/game/Fort.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/game/Fort.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/game/Fort.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/game/Fort.java
diff --git a/src/main/java/com/l2jserver/model/game/Shortcut.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/game/Shortcut.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/game/Shortcut.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/game/Shortcut.java
diff --git a/src/main/java/com/l2jserver/model/game/Skill.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/game/Skill.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/game/Skill.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/game/Skill.java
diff --git a/src/main/java/com/l2jserver/model/id/AbstractModelID.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/AbstractModelID.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/id/AbstractModelID.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/AbstractModelID.java
diff --git a/src/main/java/com/l2jserver/model/id/AccountID.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/AccountID.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/id/AccountID.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/AccountID.java
diff --git a/src/main/java/com/l2jserver/model/id/CastleID.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/CastleID.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/id/CastleID.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/CastleID.java
diff --git a/src/main/java/com/l2jserver/model/id/ChatMessageID.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/ChatMessageID.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/id/ChatMessageID.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/ChatMessageID.java
diff --git a/src/main/java/com/l2jserver/model/id/FortID.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/FortID.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/id/FortID.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/FortID.java
diff --git a/src/main/java/com/l2jserver/model/id/FriendID.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/FriendID.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/id/FriendID.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/FriendID.java
diff --git a/l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/ID.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/ID.java
new file mode 100644
index 000000000..35d5c673c
--- /dev/null
+++ b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/ID.java
@@ -0,0 +1,81 @@
+/*
+ * This file is part of l2jserver .
+ *
+ * l2jserver is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * l2jserver is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with l2jserver. If not, see .
+ */
+package com.l2jserver.model.id;
+
+import com.google.inject.Inject;
+
+/**
+ * The ID interface. Each object must be represented by an unique ID.
+ *
+ * @param
+ * the raw id type
+ *
+ * @author Rogiel
+ */
+public abstract class ID {
+ /**
+ * The id itself
+ */
+ protected final T id;
+
+ /**
+ * @param id
+ * the raw id
+ */
+ @Inject
+ protected ID(T id) {
+ this.id = id;
+ }
+
+ /**
+ * @return the id
+ */
+ public T getID() {
+ return id;
+ }
+
+ @Override
+ public String toString() {
+ return this.getClass().getSimpleName() + " [id=" + id + "]";
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + id.hashCode() + this.getClass().hashCode();
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ @SuppressWarnings("rawtypes")
+ ID other = (ID) obj;
+ if (id == null) {
+ if (other.id != null)
+ return false;
+ } else if (!id.equals(other.id))
+ return false;
+ return true;
+ }
+}
diff --git a/src/main/java/com/l2jserver/model/id/ObjectID.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/ObjectID.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/id/ObjectID.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/ObjectID.java
diff --git a/src/main/java/com/l2jserver/model/id/ShortcutID.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/ShortcutID.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/id/ShortcutID.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/ShortcutID.java
diff --git a/src/main/java/com/l2jserver/model/id/SkillID.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/SkillID.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/id/SkillID.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/SkillID.java
diff --git a/src/main/java/com/l2jserver/model/id/TemplateID.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/TemplateID.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/id/TemplateID.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/TemplateID.java
diff --git a/l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/compound/AbstractCompoundID.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/compound/AbstractCompoundID.java
new file mode 100644
index 000000000..72e51fa72
--- /dev/null
+++ b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/compound/AbstractCompoundID.java
@@ -0,0 +1,73 @@
+/*
+ * This file is part of l2jserver .
+ *
+ * l2jserver is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * l2jserver is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with l2jserver. If not, see .
+ */
+package com.l2jserver.model.id.compound;
+
+import com.l2jserver.model.id.ID;
+
+/**
+ * The compound {@link ID} is composed of two IDs.
+ *
+ * @param
+ * the first {@link ID} type
+ * @param
+ * the second {@link ID} type
+ *
+ * @author Rogiel
+ */
+public class AbstractCompoundID extends ID> {
+ /**
+ * The first ID
+ */
+ private final T1 id1;
+ /**
+ * The second ID
+ */
+ private final T2 id2;
+
+ /**
+ * Creates a new compound ID
+ *
+ * @param id1
+ * the first id
+ * @param id2
+ * the second id
+ */
+ protected AbstractCompoundID(T1 id1, T2 id2) {
+ super(null);
+ this.id1 = id1;
+ this.id2 = id2;
+ }
+
+ /**
+ * @return the first id
+ */
+ public T1 getID1() {
+ return id1;
+ }
+
+ /**
+ * @return the second id
+ */
+ public T2 getID2() {
+ return id2;
+ }
+
+ @Override
+ public AbstractCompoundID getID() {
+ return this;
+ }
+}
diff --git a/src/main/java/com/l2jserver/model/id/object/ActorID.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/object/ActorID.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/id/object/ActorID.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/object/ActorID.java
diff --git a/src/main/java/com/l2jserver/model/id/object/CharacterID.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/object/CharacterID.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/id/object/CharacterID.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/object/CharacterID.java
diff --git a/src/main/java/com/l2jserver/model/id/object/ClanID.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/object/ClanID.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/id/object/ClanID.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/object/ClanID.java
diff --git a/src/main/java/com/l2jserver/model/id/object/ItemID.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/object/ItemID.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/id/object/ItemID.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/object/ItemID.java
diff --git a/src/main/java/com/l2jserver/model/id/object/NPCID.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/object/NPCID.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/id/object/NPCID.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/object/NPCID.java
diff --git a/src/main/java/com/l2jserver/model/id/object/PetID.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/object/PetID.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/id/object/PetID.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/object/PetID.java
diff --git a/l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/object/allocator/BitSetIDAllocator.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/object/allocator/BitSetIDAllocator.java
new file mode 100644
index 000000000..4c50e0dad
--- /dev/null
+++ b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/object/allocator/BitSetIDAllocator.java
@@ -0,0 +1,163 @@
+/*
+ * This file is part of l2jserver .
+ *
+ * l2jserver is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * l2jserver is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with l2jserver. If not, see .
+ */
+package com.l2jserver.model.id.object.allocator;
+
+import java.util.BitSet;
+import java.util.concurrent.atomic.AtomicInteger;
+import java.util.concurrent.locks.Lock;
+import java.util.concurrent.locks.ReentrantLock;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.l2jserver.util.PrimeFinder;
+
+/**
+ * The {@link BitSet} id allocator allocates new IDs backed by an {@link BitSet}
+ *
+ * @author Rogiel
+ */
+public class BitSetIDAllocator implements IDAllocator {
+ /**
+ * The logger
+ */
+ private static final Logger log = LoggerFactory
+ .getLogger(BitSetIDAllocator.class);
+
+ /**
+ * Lock to guarantee synchronization
+ */
+ private Lock lock = new ReentrantLock();
+
+ /**
+ * Available IDs
+ */
+ private BitSet ids = new BitSet();
+ /**
+ * Amount of free ids
+ */
+ private AtomicInteger freeIdCount = new AtomicInteger();
+ /**
+ * Next free ID
+ */
+ private AtomicInteger nextId = new AtomicInteger();
+
+ /**
+ * Initializes this allocator
+ */
+ public void init() {
+ ids = new BitSet(PrimeFinder.nextPrime(100000));
+ ids.clear();
+ freeIdCount = new AtomicInteger(ALLOCABLE_IDS);
+
+ nextId = new AtomicInteger(ids.nextClearBit(0));
+ log.info("BitSet IDAllocator initialized. Next available ID is {}",
+ nextId.get());
+ }
+
+ @Override
+ public void allocate(int id) {
+ if (ids.get(id - FIRST_ID))
+ throw new IDAllocatorException("ID not allocated");
+ log.debug("Allocating ID {}", id);
+ lock.lock();
+ try {
+ if (id < FIRST_ID)
+ return;
+ ids.set(id - FIRST_ID);
+ nextId = new AtomicInteger(ids.nextClearBit(0));
+ } finally {
+ lock.unlock();
+ }
+ }
+
+ @Override
+ public int allocate() {
+ lock.lock();
+ try {
+ final int newID = nextId.get();
+ ids.set(newID);
+ freeIdCount.decrementAndGet();
+
+ if (log.isDebugEnabled())
+ log.debug("Allocated a new ID {}", newID + FIRST_ID);
+
+ int nextFree = ids.nextClearBit(newID);
+
+ if (nextFree < 0) {
+ nextFree = ids.nextClearBit(0);
+ }
+ if (nextFree < 0) {
+ if (ids.size() < ALLOCABLE_IDS) {
+ increaseBitSetCapacity();
+ } else {
+ log.error("ID exhaustion");
+ throw new IDAllocatorException("ID exhaustion");
+ }
+ }
+
+ nextId.set(nextFree);
+ return newID + FIRST_ID;
+ } finally {
+ lock.unlock();
+ }
+ }
+
+ @Override
+ public void release(int id) {
+ if (id < FIRST_ID)
+ throw new IDAllocatorException(
+ "Can't release ID, smaller then initial ID");
+ if (!ids.get(id - FIRST_ID))
+ throw new IDAllocatorException("ID not allocated");
+
+ log.debug("Releasing allocated ID {}", id);
+ lock.lock();
+ try {
+ ids.clear(id - FIRST_ID);
+ freeIdCount.incrementAndGet();
+ } finally {
+ lock.unlock();
+ }
+ }
+
+ @Override
+ public void clear() {
+ ids.clear();
+ }
+
+ /**
+ * Increases the {@link BitSet} capacity
+ */
+ private void increaseBitSetCapacity() {
+ log.debug("Increasing BitSet capacity from {}", ids.size());
+ BitSet newBitSet = new BitSet(
+ PrimeFinder.nextPrime((getAllocatedIDs() * 11) / 10));
+ newBitSet.or(ids);
+ ids = newBitSet;
+ }
+
+ @Override
+ public int getAllocatedIDs() {
+ return ALLOCABLE_IDS - getFreeIDs();
+ }
+
+ @Override
+ public int getFreeIDs() {
+ return freeIdCount.get();
+ }
+}
diff --git a/l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/object/allocator/IDAllocator.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/object/allocator/IDAllocator.java
new file mode 100644
index 000000000..1854e9ab8
--- /dev/null
+++ b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/object/allocator/IDAllocator.java
@@ -0,0 +1,80 @@
+/*
+ * This file is part of l2jserver .
+ *
+ * l2jserver is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * l2jserver is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with l2jserver. If not, see .
+ */
+package com.l2jserver.model.id.object.allocator;
+
+/**
+ * The ID allocator is used to alloc new ID and to release IDs that aren't used
+ * anymore.
+ *
+ * @author Rogiel
+ */
+public interface IDAllocator {
+ /**
+ * The first ID ever allocated
+ */
+ public final static int FIRST_ID = 0x10000000;
+ /**
+ * The last ID ever allocated
+ */
+ public final static int LAST_ID = 0x7FFFFFFF;
+ /**
+ * Total of available IDs for allocation
+ */
+ public final static int ALLOCABLE_IDS = LAST_ID - FIRST_ID;
+
+ /**
+ * This is method is used to register IDs as used at startup time.
+ *
+ * @param id
+ * the id
+ */
+ void allocate(int id);
+
+ /**
+ * Allocates a new ID
+ *
+ * @return the allocated ID value
+ */
+ int allocate();
+
+ /**
+ * Release an ID
+ *
+ * @param id
+ * the id
+ */
+ void release(int id);
+
+ /**
+ * Release all allocated IDs
+ */
+ void clear();
+
+ /**
+ * Get the amount of already allocated IDs
+ *
+ * @return allocated ids count
+ */
+ int getAllocatedIDs();
+
+ /**
+ * Get the amount of IDs remaining to be allocated
+ *
+ * @return free ids count
+ */
+ int getFreeIDs();
+}
diff --git a/l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/object/allocator/IDAllocatorException.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/object/allocator/IDAllocatorException.java
new file mode 100644
index 000000000..d3b85fee8
--- /dev/null
+++ b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/object/allocator/IDAllocatorException.java
@@ -0,0 +1,62 @@
+/*
+ * This file is part of l2jserver .
+ *
+ * l2jserver is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * l2jserver is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with l2jserver. If not, see .
+ */
+package com.l2jserver.model.id.object.allocator;
+
+/**
+ * Exception thrown by an {@link IDAllocator}.
+ *
+ * @author Rogiel
+ */
+public class IDAllocatorException extends RuntimeException {
+ /**
+ * The Java Serialization Serial
+ */
+ private static final long serialVersionUID = 111195059766878062L;
+
+ /**
+ * Creates an empty instance of this exception
+ */
+ public IDAllocatorException() {
+ super();
+ }
+
+ /**
+ * @param message
+ * the message
+ * @param cause
+ * the root cause
+ */
+ public IDAllocatorException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+ /**
+ * @param message
+ * the message
+ */
+ public IDAllocatorException(String message) {
+ super(message);
+ }
+
+ /**
+ * @param cause
+ * the root cause
+ */
+ public IDAllocatorException(Throwable cause) {
+ super(cause);
+ }
+}
diff --git a/src/main/java/com/l2jserver/model/id/object/iterator/WorldObjectIterable.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/object/iterator/WorldObjectIterable.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/id/object/iterator/WorldObjectIterable.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/object/iterator/WorldObjectIterable.java
diff --git a/src/main/java/com/l2jserver/model/id/object/iterator/WorldObjectIterator.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/object/iterator/WorldObjectIterator.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/id/object/iterator/WorldObjectIterator.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/object/iterator/WorldObjectIterator.java
diff --git a/src/main/java/com/l2jserver/model/id/object/provider/CharacterIDProvider.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/object/provider/CharacterIDProvider.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/id/object/provider/CharacterIDProvider.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/object/provider/CharacterIDProvider.java
diff --git a/src/main/java/com/l2jserver/model/id/object/provider/ClanIDProvider.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/object/provider/ClanIDProvider.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/id/object/provider/ClanIDProvider.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/object/provider/ClanIDProvider.java
diff --git a/src/main/java/com/l2jserver/model/id/object/provider/ItemIDProvider.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/object/provider/ItemIDProvider.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/id/object/provider/ItemIDProvider.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/object/provider/ItemIDProvider.java
diff --git a/src/main/java/com/l2jserver/model/id/object/provider/NPCIDProvider.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/object/provider/NPCIDProvider.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/id/object/provider/NPCIDProvider.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/object/provider/NPCIDProvider.java
diff --git a/src/main/java/com/l2jserver/model/id/object/provider/ObjectIDProvider.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/object/provider/ObjectIDProvider.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/id/object/provider/ObjectIDProvider.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/object/provider/ObjectIDProvider.java
diff --git a/src/main/java/com/l2jserver/model/id/object/provider/ObjectIDResolver.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/object/provider/ObjectIDResolver.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/id/object/provider/ObjectIDResolver.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/object/provider/ObjectIDResolver.java
diff --git a/src/main/java/com/l2jserver/model/id/object/provider/PetIDProvider.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/object/provider/PetIDProvider.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/id/object/provider/PetIDProvider.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/object/provider/PetIDProvider.java
diff --git a/src/main/java/com/l2jserver/model/id/provider/AccountIDProvider.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/provider/AccountIDProvider.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/id/provider/AccountIDProvider.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/provider/AccountIDProvider.java
diff --git a/src/main/java/com/l2jserver/model/id/provider/CastleIDProvider.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/provider/CastleIDProvider.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/id/provider/CastleIDProvider.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/provider/CastleIDProvider.java
diff --git a/src/main/java/com/l2jserver/model/id/provider/ChatMessageIDProvider.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/provider/ChatMessageIDProvider.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/id/provider/ChatMessageIDProvider.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/provider/ChatMessageIDProvider.java
diff --git a/l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/provider/CompoundIDProvider.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/provider/CompoundIDProvider.java
new file mode 100644
index 000000000..b02216822
--- /dev/null
+++ b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/provider/CompoundIDProvider.java
@@ -0,0 +1,47 @@
+/*
+ * This file is part of l2jserver .
+ *
+ * l2jserver is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * l2jserver is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with l2jserver. If not, see .
+ */
+package com.l2jserver.model.id.provider;
+
+import com.google.inject.assistedinject.Assisted;
+import com.l2jserver.model.id.ID;
+import com.l2jserver.model.id.compound.AbstractCompoundID;
+
+/**
+ * The ID factory is used to create instances of IDs. It will automatically make
+ * sure the ID is free before allocating it.
+ *
+ * @param
+ * the first compound {@link ID} type
+ * @param
+ * the second compound {@link ID} type
+ * @param
+ * the {@link CompoundIDProvider} type
+ * @author Rogiel
+ */
+public interface CompoundIDProvider, I2 extends ID>, T extends AbstractCompoundID> {
+ /**
+ * Creates the ID object for an EXISTING ID.
+ *
+ * @param id1
+ * the first id
+ * @param id2
+ * the second id
+ * @return the created compound {@link ID}
+ */
+ T createID(@Assisted("id1") I1 id1, @Assisted("id2") I2 id2);
+
+}
diff --git a/src/main/java/com/l2jserver/model/id/provider/FortIDProvider.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/provider/FortIDProvider.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/id/provider/FortIDProvider.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/provider/FortIDProvider.java
diff --git a/src/main/java/com/l2jserver/model/id/provider/FriendIDProvider.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/provider/FriendIDProvider.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/id/provider/FriendIDProvider.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/provider/FriendIDProvider.java
diff --git a/l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/provider/IDProvider.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/provider/IDProvider.java
new file mode 100644
index 000000000..e7c1abdf8
--- /dev/null
+++ b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/provider/IDProvider.java
@@ -0,0 +1,49 @@
+/*
+ * This file is part of l2jserver .
+ *
+ * l2jserver is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * l2jserver is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with l2jserver. If not, see .
+ */
+package com.l2jserver.model.id.provider;
+
+import com.l2jserver.model.id.ID;
+
+/**
+ * ID objects should never be directly instantiated and an provider
+ * implementation must be used to create and generate them.
+ *
+ *
+ * The ID provider is used to create instances of IDs. It will automatically
+ * make sure the ID is free before allocating it.
+ *
+ * The provider will also make sure only a single instance for each raw ID
+ * exits, that is for any given ID instance for raw value 1 only a single
+ * object will be created and following calls will always return the same
+ * object.
+ *
+ * @param
+ * the raw id type
+ * @param
+ * the {@link ID} implementation
+ * @author Rogiel
+ */
+public interface IDProvider> {
+ /**
+ * Creates the ID object for an EXISTING ID.
+ *
+ * @param id
+ * the raw id value
+ * @return the resolved {@link ID} object
+ */
+ T resolveID(I id);
+}
diff --git a/src/main/java/com/l2jserver/model/id/provider/IDProviderModule.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/provider/IDProviderModule.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/id/provider/IDProviderModule.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/provider/IDProviderModule.java
diff --git a/src/main/java/com/l2jserver/model/id/template/ActorTemplateID.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/template/ActorTemplateID.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/id/template/ActorTemplateID.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/template/ActorTemplateID.java
diff --git a/src/main/java/com/l2jserver/model/id/template/CharacterTemplateID.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/template/CharacterTemplateID.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/id/template/CharacterTemplateID.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/template/CharacterTemplateID.java
diff --git a/src/main/java/com/l2jserver/model/id/template/ItemTemplateID.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/template/ItemTemplateID.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/id/template/ItemTemplateID.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/template/ItemTemplateID.java
diff --git a/src/main/java/com/l2jserver/model/id/template/NPCTemplateID.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/template/NPCTemplateID.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/id/template/NPCTemplateID.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/template/NPCTemplateID.java
diff --git a/src/main/java/com/l2jserver/model/id/template/SkillTemplateID.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/template/SkillTemplateID.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/id/template/SkillTemplateID.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/template/SkillTemplateID.java
diff --git a/src/main/java/com/l2jserver/model/id/template/TeleportationTemplateID.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/template/TeleportationTemplateID.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/id/template/TeleportationTemplateID.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/template/TeleportationTemplateID.java
diff --git a/src/main/java/com/l2jserver/model/id/template/provider/CharacterTemplateIDProvider.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/template/provider/CharacterTemplateIDProvider.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/id/template/provider/CharacterTemplateIDProvider.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/template/provider/CharacterTemplateIDProvider.java
diff --git a/src/main/java/com/l2jserver/model/id/template/provider/ItemTemplateIDProvider.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/template/provider/ItemTemplateIDProvider.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/id/template/provider/ItemTemplateIDProvider.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/template/provider/ItemTemplateIDProvider.java
diff --git a/src/main/java/com/l2jserver/model/id/template/provider/NPCTemplateIDProvider.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/template/provider/NPCTemplateIDProvider.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/id/template/provider/NPCTemplateIDProvider.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/template/provider/NPCTemplateIDProvider.java
diff --git a/src/main/java/com/l2jserver/model/id/template/provider/SkillTemplateIDProvider.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/template/provider/SkillTemplateIDProvider.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/id/template/provider/SkillTemplateIDProvider.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/template/provider/SkillTemplateIDProvider.java
diff --git a/src/main/java/com/l2jserver/model/id/template/provider/TeleportationTemplateIDProvider.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/template/provider/TeleportationTemplateIDProvider.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/id/template/provider/TeleportationTemplateIDProvider.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/template/provider/TeleportationTemplateIDProvider.java
diff --git a/src/main/java/com/l2jserver/model/id/template/provider/TemplateIDProvider.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/template/provider/TemplateIDProvider.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/id/template/provider/TemplateIDProvider.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/id/template/provider/TemplateIDProvider.java
diff --git a/src/main/java/com/l2jserver/model/server/AttackHit.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/server/AttackHit.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/server/AttackHit.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/server/AttackHit.java
diff --git a/src/main/java/com/l2jserver/model/server/ChatMessage.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/server/ChatMessage.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/server/ChatMessage.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/server/ChatMessage.java
diff --git a/src/main/java/com/l2jserver/model/server/attack/AttackCalculator.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/server/attack/AttackCalculator.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/server/attack/AttackCalculator.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/server/attack/AttackCalculator.java
diff --git a/src/main/java/com/l2jserver/model/server/attack/AttackCalculatorContext.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/server/attack/AttackCalculatorContext.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/server/attack/AttackCalculatorContext.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/server/attack/AttackCalculatorContext.java
diff --git a/src/main/java/com/l2jserver/model/server/attack/AttackCalculatorFunction.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/server/attack/AttackCalculatorFunction.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/server/attack/AttackCalculatorFunction.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/server/attack/AttackCalculatorFunction.java
diff --git a/src/main/java/com/l2jserver/model/server/attack/PhysicalAttackCalculator.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/server/attack/PhysicalAttackCalculator.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/server/attack/PhysicalAttackCalculator.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/server/attack/PhysicalAttackCalculator.java
diff --git a/src/main/java/com/l2jserver/model/template/AbstractTemplate.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/template/AbstractTemplate.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/template/AbstractTemplate.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/template/AbstractTemplate.java
diff --git a/src/main/java/com/l2jserver/model/template/ActorTemplate.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/template/ActorTemplate.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/template/ActorTemplate.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/template/ActorTemplate.java
diff --git a/src/main/java/com/l2jserver/model/template/AugmentTemplate.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/template/AugmentTemplate.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/template/AugmentTemplate.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/template/AugmentTemplate.java
diff --git a/src/main/java/com/l2jserver/model/template/CharacterTemplate.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/template/CharacterTemplate.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/template/CharacterTemplate.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/template/CharacterTemplate.java
diff --git a/src/main/java/com/l2jserver/model/template/EffectTemplate.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/template/EffectTemplate.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/template/EffectTemplate.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/template/EffectTemplate.java
diff --git a/src/main/java/com/l2jserver/model/template/ItemTemplate.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/template/ItemTemplate.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/template/ItemTemplate.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/template/ItemTemplate.java
diff --git a/src/main/java/com/l2jserver/model/template/NPCTemplate.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/template/NPCTemplate.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/template/NPCTemplate.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/template/NPCTemplate.java
diff --git a/src/main/java/com/l2jserver/model/template/SkillTemplate.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/template/SkillTemplate.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/template/SkillTemplate.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/template/SkillTemplate.java
diff --git a/src/main/java/com/l2jserver/model/template/TeleportationTemplate.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/template/TeleportationTemplate.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/template/TeleportationTemplate.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/template/TeleportationTemplate.java
diff --git a/src/main/java/com/l2jserver/model/template/Template.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/template/Template.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/template/Template.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/template/Template.java
diff --git a/src/main/java/com/l2jserver/model/template/actor/ActorSex.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/template/actor/ActorSex.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/template/actor/ActorSex.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/template/actor/ActorSex.java
diff --git a/src/main/java/com/l2jserver/model/template/calculator/ItemSetActorCalculator.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/template/calculator/ItemSetActorCalculator.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/template/calculator/ItemSetActorCalculator.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/template/calculator/ItemSetActorCalculator.java
diff --git a/src/main/java/com/l2jserver/model/template/capability/Dropable.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/template/capability/Dropable.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/template/capability/Dropable.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/template/capability/Dropable.java
diff --git a/src/main/java/com/l2jserver/model/template/capability/Enchantable.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/template/capability/Enchantable.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/template/capability/Enchantable.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/template/capability/Enchantable.java
diff --git a/src/main/java/com/l2jserver/model/template/capability/Interactable.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/template/capability/Interactable.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/template/capability/Interactable.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/template/capability/Interactable.java
diff --git a/src/main/java/com/l2jserver/model/template/capability/Sellable.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/template/capability/Sellable.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/template/capability/Sellable.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/template/capability/Sellable.java
diff --git a/src/main/java/com/l2jserver/model/template/capability/TemplateCapability.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/template/capability/TemplateCapability.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/template/capability/TemplateCapability.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/template/capability/TemplateCapability.java
diff --git a/src/main/java/com/l2jserver/model/template/capability/Tradable.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/template/capability/Tradable.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/template/capability/Tradable.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/template/capability/Tradable.java
diff --git a/src/main/java/com/l2jserver/model/template/character/CharacterClass.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/template/character/CharacterClass.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/template/character/CharacterClass.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/template/character/CharacterClass.java
diff --git a/src/main/java/com/l2jserver/model/template/character/CharacterRace.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/template/character/CharacterRace.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/template/character/CharacterRace.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/template/character/CharacterRace.java
diff --git a/src/main/java/com/l2jserver/model/template/item/ArmorType.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/template/item/ArmorType.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/template/item/ArmorType.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/template/item/ArmorType.java
diff --git a/src/main/java/com/l2jserver/model/template/item/ItemMaterial.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/template/item/ItemMaterial.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/template/item/ItemMaterial.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/template/item/ItemMaterial.java
diff --git a/src/main/java/com/l2jserver/model/template/item/ItemType.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/template/item/ItemType.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/template/item/ItemType.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/template/item/ItemType.java
diff --git a/src/main/java/com/l2jserver/model/template/item/WeaponType.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/template/item/WeaponType.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/template/item/WeaponType.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/template/item/WeaponType.java
diff --git a/src/main/java/com/l2jserver/model/template/npc/NPCRace.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/template/npc/NPCRace.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/template/npc/NPCRace.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/template/npc/NPCRace.java
diff --git a/src/main/java/com/l2jserver/model/world/AbstractObject.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/AbstractObject.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/AbstractObject.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/AbstractObject.java
diff --git a/src/main/java/com/l2jserver/model/world/Actor.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/Actor.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/Actor.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/Actor.java
diff --git a/src/main/java/com/l2jserver/model/world/Clan.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/Clan.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/Clan.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/Clan.java
diff --git a/src/main/java/com/l2jserver/model/world/Item.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/Item.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/Item.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/Item.java
diff --git a/src/main/java/com/l2jserver/model/world/L2Character.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/L2Character.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/L2Character.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/L2Character.java
diff --git a/src/main/java/com/l2jserver/model/world/NPC.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/NPC.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/NPC.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/NPC.java
diff --git a/src/main/java/com/l2jserver/model/world/Pet.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/Pet.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/Pet.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/Pet.java
diff --git a/src/main/java/com/l2jserver/model/world/Player.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/Player.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/Player.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/Player.java
diff --git a/src/main/java/com/l2jserver/model/world/PositionableObject.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/PositionableObject.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/PositionableObject.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/PositionableObject.java
diff --git a/src/main/java/com/l2jserver/model/world/WorldObject.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/WorldObject.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/WorldObject.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/WorldObject.java
diff --git a/src/main/java/com/l2jserver/model/world/actor/ActorEffects.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/actor/ActorEffects.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/actor/ActorEffects.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/actor/ActorEffects.java
diff --git a/src/main/java/com/l2jserver/model/world/actor/ActorExperience.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/actor/ActorExperience.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/actor/ActorExperience.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/actor/ActorExperience.java
diff --git a/src/main/java/com/l2jserver/model/world/actor/ActorSkillContainer.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/actor/ActorSkillContainer.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/actor/ActorSkillContainer.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/actor/ActorSkillContainer.java
diff --git a/src/main/java/com/l2jserver/model/world/actor/calculator/ActorCalculator.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/actor/calculator/ActorCalculator.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/actor/calculator/ActorCalculator.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/actor/calculator/ActorCalculator.java
diff --git a/src/main/java/com/l2jserver/model/world/actor/calculator/ActorCalculatorContext.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/actor/calculator/ActorCalculatorContext.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/actor/calculator/ActorCalculatorContext.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/actor/calculator/ActorCalculatorContext.java
diff --git a/src/main/java/com/l2jserver/model/world/actor/calculator/ActorCalculatorFunction.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/actor/calculator/ActorCalculatorFunction.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/actor/calculator/ActorCalculatorFunction.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/actor/calculator/ActorCalculatorFunction.java
diff --git a/src/main/java/com/l2jserver/model/world/actor/calculator/ActorFormula.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/actor/calculator/ActorFormula.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/actor/calculator/ActorFormula.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/actor/calculator/ActorFormula.java
diff --git a/src/main/java/com/l2jserver/model/world/actor/calculator/AttackAccuracyBonusCalculator.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/actor/calculator/AttackAccuracyBonusCalculator.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/actor/calculator/AttackAccuracyBonusCalculator.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/actor/calculator/AttackAccuracyBonusCalculator.java
diff --git a/src/main/java/com/l2jserver/model/world/actor/calculator/AttackEvasionBonusCalculator.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/actor/calculator/AttackEvasionBonusCalculator.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/actor/calculator/AttackEvasionBonusCalculator.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/actor/calculator/AttackEvasionBonusCalculator.java
diff --git a/src/main/java/com/l2jserver/model/world/actor/calculator/MagicalAttackBonusCalculator.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/actor/calculator/MagicalAttackBonusCalculator.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/actor/calculator/MagicalAttackBonusCalculator.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/actor/calculator/MagicalAttackBonusCalculator.java
diff --git a/src/main/java/com/l2jserver/model/world/actor/calculator/MagicalAttackSpeedBonusCalculator.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/actor/calculator/MagicalAttackSpeedBonusCalculator.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/actor/calculator/MagicalAttackSpeedBonusCalculator.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/actor/calculator/MagicalAttackSpeedBonusCalculator.java
diff --git a/src/main/java/com/l2jserver/model/world/actor/calculator/MagicalCriticalRateBonusCalculator.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/actor/calculator/MagicalCriticalRateBonusCalculator.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/actor/calculator/MagicalCriticalRateBonusCalculator.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/actor/calculator/MagicalCriticalRateBonusCalculator.java
diff --git a/src/main/java/com/l2jserver/model/world/actor/calculator/MagicalDefenseBonusCalculator.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/actor/calculator/MagicalDefenseBonusCalculator.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/actor/calculator/MagicalDefenseBonusCalculator.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/actor/calculator/MagicalDefenseBonusCalculator.java
diff --git a/src/main/java/com/l2jserver/model/world/actor/calculator/MaximumHPBonusCalculator.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/actor/calculator/MaximumHPBonusCalculator.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/actor/calculator/MaximumHPBonusCalculator.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/actor/calculator/MaximumHPBonusCalculator.java
diff --git a/src/main/java/com/l2jserver/model/world/actor/calculator/MaximumMPBonusCalculator.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/actor/calculator/MaximumMPBonusCalculator.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/actor/calculator/MaximumMPBonusCalculator.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/actor/calculator/MaximumMPBonusCalculator.java
diff --git a/src/main/java/com/l2jserver/model/world/actor/calculator/PhysicalAttackBonusCalculator.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/actor/calculator/PhysicalAttackBonusCalculator.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/actor/calculator/PhysicalAttackBonusCalculator.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/actor/calculator/PhysicalAttackBonusCalculator.java
diff --git a/src/main/java/com/l2jserver/model/world/actor/calculator/PhysicalAttackSpeedBonusCalculator.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/actor/calculator/PhysicalAttackSpeedBonusCalculator.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/actor/calculator/PhysicalAttackSpeedBonusCalculator.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/actor/calculator/PhysicalAttackSpeedBonusCalculator.java
diff --git a/src/main/java/com/l2jserver/model/world/actor/calculator/PhysicalCriticalRateBonusCalculator.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/actor/calculator/PhysicalCriticalRateBonusCalculator.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/actor/calculator/PhysicalCriticalRateBonusCalculator.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/actor/calculator/PhysicalCriticalRateBonusCalculator.java
diff --git a/src/main/java/com/l2jserver/model/world/actor/calculator/PhysicalDefenseBonusCalculator.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/actor/calculator/PhysicalDefenseBonusCalculator.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/actor/calculator/PhysicalDefenseBonusCalculator.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/actor/calculator/PhysicalDefenseBonusCalculator.java
diff --git a/src/main/java/com/l2jserver/model/world/actor/calculator/RunSpeedBonusCalculator.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/actor/calculator/RunSpeedBonusCalculator.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/actor/calculator/RunSpeedBonusCalculator.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/actor/calculator/RunSpeedBonusCalculator.java
diff --git a/src/main/java/com/l2jserver/model/world/actor/calculator/WalkSpeedBonusCalculator.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/actor/calculator/WalkSpeedBonusCalculator.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/actor/calculator/WalkSpeedBonusCalculator.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/actor/calculator/WalkSpeedBonusCalculator.java
diff --git a/src/main/java/com/l2jserver/model/world/actor/event/ActorAttackHitEvent.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/actor/event/ActorAttackHitEvent.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/actor/event/ActorAttackHitEvent.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/actor/event/ActorAttackHitEvent.java
diff --git a/src/main/java/com/l2jserver/model/world/actor/event/ActorDieEvent.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/actor/event/ActorDieEvent.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/actor/event/ActorDieEvent.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/actor/event/ActorDieEvent.java
diff --git a/src/main/java/com/l2jserver/model/world/actor/event/ActorEvent.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/actor/event/ActorEvent.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/actor/event/ActorEvent.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/actor/event/ActorEvent.java
diff --git a/src/main/java/com/l2jserver/model/world/actor/event/ActorListener.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/actor/event/ActorListener.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/actor/event/ActorListener.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/actor/event/ActorListener.java
diff --git a/src/main/java/com/l2jserver/model/world/actor/event/ActorSpawnEvent.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/actor/event/ActorSpawnEvent.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/actor/event/ActorSpawnEvent.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/actor/event/ActorSpawnEvent.java
diff --git a/src/main/java/com/l2jserver/model/world/actor/event/ActorUnspawnEvent.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/actor/event/ActorUnspawnEvent.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/actor/event/ActorUnspawnEvent.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/actor/event/ActorUnspawnEvent.java
diff --git a/src/main/java/com/l2jserver/model/world/actor/stat/ActorStats.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/actor/stat/ActorStats.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/actor/stat/ActorStats.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/actor/stat/ActorStats.java
diff --git a/src/main/java/com/l2jserver/model/world/actor/stat/BaseStats.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/actor/stat/BaseStats.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/actor/stat/BaseStats.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/actor/stat/BaseStats.java
diff --git a/src/main/java/com/l2jserver/model/world/actor/stat/StatType.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/actor/stat/StatType.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/actor/stat/StatType.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/actor/stat/StatType.java
diff --git a/src/main/java/com/l2jserver/model/world/character/CharacterAppearance.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/character/CharacterAppearance.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/character/CharacterAppearance.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/character/CharacterAppearance.java
diff --git a/src/main/java/com/l2jserver/model/world/character/CharacterFriendList.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/character/CharacterFriendList.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/character/CharacterFriendList.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/character/CharacterFriendList.java
diff --git a/src/main/java/com/l2jserver/model/world/character/CharacterInventory.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/character/CharacterInventory.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/character/CharacterInventory.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/character/CharacterInventory.java
diff --git a/src/main/java/com/l2jserver/model/world/character/CharacterShortcutContainer.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/character/CharacterShortcutContainer.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/character/CharacterShortcutContainer.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/character/CharacterShortcutContainer.java
diff --git a/src/main/java/com/l2jserver/model/world/character/CharacterStats.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/character/CharacterStats.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/character/CharacterStats.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/character/CharacterStats.java
diff --git a/src/main/java/com/l2jserver/model/world/character/calculator/CharacterCalculator.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/character/calculator/CharacterCalculator.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/character/calculator/CharacterCalculator.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/character/calculator/CharacterCalculator.java
diff --git a/src/main/java/com/l2jserver/model/world/character/calculator/CharacterCalculatorContext.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/character/calculator/CharacterCalculatorContext.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/character/calculator/CharacterCalculatorContext.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/character/calculator/CharacterCalculatorContext.java
diff --git a/src/main/java/com/l2jserver/model/world/character/calculator/CharacterCalculatorFunction.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/character/calculator/CharacterCalculatorFunction.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/character/calculator/CharacterCalculatorFunction.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/character/calculator/CharacterCalculatorFunction.java
diff --git a/src/main/java/com/l2jserver/model/world/character/calculator/CharacterFormula.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/character/calculator/CharacterFormula.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/character/calculator/CharacterFormula.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/character/calculator/CharacterFormula.java
diff --git a/src/main/java/com/l2jserver/model/world/character/calculator/MaximumCPAddCalculator.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/character/calculator/MaximumCPAddCalculator.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/character/calculator/MaximumCPAddCalculator.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/character/calculator/MaximumCPAddCalculator.java
diff --git a/src/main/java/com/l2jserver/model/world/character/calculator/MaximumCPBonusCalculator.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/character/calculator/MaximumCPBonusCalculator.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/character/calculator/MaximumCPBonusCalculator.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/character/calculator/MaximumCPBonusCalculator.java
diff --git a/src/main/java/com/l2jserver/model/world/character/calculator/MaximumHPAddCalculator.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/character/calculator/MaximumHPAddCalculator.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/character/calculator/MaximumHPAddCalculator.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/character/calculator/MaximumHPAddCalculator.java
diff --git a/src/main/java/com/l2jserver/model/world/character/calculator/MaximumMPAddCalculator.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/character/calculator/MaximumMPAddCalculator.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/character/calculator/MaximumMPAddCalculator.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/character/calculator/MaximumMPAddCalculator.java
diff --git a/src/main/java/com/l2jserver/model/world/character/calculator/base/CharacterBaseAttackAccuracyCalculator.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/character/calculator/base/CharacterBaseAttackAccuracyCalculator.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/character/calculator/base/CharacterBaseAttackAccuracyCalculator.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/character/calculator/base/CharacterBaseAttackAccuracyCalculator.java
diff --git a/src/main/java/com/l2jserver/model/world/character/calculator/base/CharacterBaseAttackEvasionCalculator.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/character/calculator/base/CharacterBaseAttackEvasionCalculator.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/character/calculator/base/CharacterBaseAttackEvasionCalculator.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/character/calculator/base/CharacterBaseAttackEvasionCalculator.java
diff --git a/src/main/java/com/l2jserver/model/world/character/calculator/base/CharacterBaseCPCalculator.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/character/calculator/base/CharacterBaseCPCalculator.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/character/calculator/base/CharacterBaseCPCalculator.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/character/calculator/base/CharacterBaseCPCalculator.java
diff --git a/src/main/java/com/l2jserver/model/world/character/calculator/base/CharacterBaseConcentrationCalculator.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/character/calculator/base/CharacterBaseConcentrationCalculator.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/character/calculator/base/CharacterBaseConcentrationCalculator.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/character/calculator/base/CharacterBaseConcentrationCalculator.java
diff --git a/src/main/java/com/l2jserver/model/world/character/calculator/base/CharacterBaseDexterityCalculator.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/character/calculator/base/CharacterBaseDexterityCalculator.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/character/calculator/base/CharacterBaseDexterityCalculator.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/character/calculator/base/CharacterBaseDexterityCalculator.java
diff --git a/src/main/java/com/l2jserver/model/world/character/calculator/base/CharacterBaseHPCalculator.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/character/calculator/base/CharacterBaseHPCalculator.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/character/calculator/base/CharacterBaseHPCalculator.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/character/calculator/base/CharacterBaseHPCalculator.java
diff --git a/src/main/java/com/l2jserver/model/world/character/calculator/base/CharacterBaseIntelligenceCalculator.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/character/calculator/base/CharacterBaseIntelligenceCalculator.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/character/calculator/base/CharacterBaseIntelligenceCalculator.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/character/calculator/base/CharacterBaseIntelligenceCalculator.java
diff --git a/src/main/java/com/l2jserver/model/world/character/calculator/base/CharacterBaseMPCalculator.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/character/calculator/base/CharacterBaseMPCalculator.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/character/calculator/base/CharacterBaseMPCalculator.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/character/calculator/base/CharacterBaseMPCalculator.java
diff --git a/src/main/java/com/l2jserver/model/world/character/calculator/base/CharacterBaseMagicalAttackCalculator.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/character/calculator/base/CharacterBaseMagicalAttackCalculator.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/character/calculator/base/CharacterBaseMagicalAttackCalculator.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/character/calculator/base/CharacterBaseMagicalAttackCalculator.java
diff --git a/src/main/java/com/l2jserver/model/world/character/calculator/base/CharacterBaseMagicalAttackSpeedCalculator.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/character/calculator/base/CharacterBaseMagicalAttackSpeedCalculator.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/character/calculator/base/CharacterBaseMagicalAttackSpeedCalculator.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/character/calculator/base/CharacterBaseMagicalAttackSpeedCalculator.java
diff --git a/src/main/java/com/l2jserver/model/world/character/calculator/base/CharacterBaseMagicalCriticalRateCalculator.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/character/calculator/base/CharacterBaseMagicalCriticalRateCalculator.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/character/calculator/base/CharacterBaseMagicalCriticalRateCalculator.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/character/calculator/base/CharacterBaseMagicalCriticalRateCalculator.java
diff --git a/src/main/java/com/l2jserver/model/world/character/calculator/base/CharacterBaseMagicalDefenseCalculator.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/character/calculator/base/CharacterBaseMagicalDefenseCalculator.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/character/calculator/base/CharacterBaseMagicalDefenseCalculator.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/character/calculator/base/CharacterBaseMagicalDefenseCalculator.java
diff --git a/src/main/java/com/l2jserver/model/world/character/calculator/base/CharacterBaseMentalityCalculator.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/character/calculator/base/CharacterBaseMentalityCalculator.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/character/calculator/base/CharacterBaseMentalityCalculator.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/character/calculator/base/CharacterBaseMentalityCalculator.java
diff --git a/src/main/java/com/l2jserver/model/world/character/calculator/base/CharacterBasePhysicalAttackCalculator.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/character/calculator/base/CharacterBasePhysicalAttackCalculator.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/character/calculator/base/CharacterBasePhysicalAttackCalculator.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/character/calculator/base/CharacterBasePhysicalAttackCalculator.java
diff --git a/src/main/java/com/l2jserver/model/world/character/calculator/base/CharacterBasePhysicalAttackSpeedCalculator.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/character/calculator/base/CharacterBasePhysicalAttackSpeedCalculator.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/character/calculator/base/CharacterBasePhysicalAttackSpeedCalculator.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/character/calculator/base/CharacterBasePhysicalAttackSpeedCalculator.java
diff --git a/src/main/java/com/l2jserver/model/world/character/calculator/base/CharacterBasePhysicalCriticalRateCalculator.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/character/calculator/base/CharacterBasePhysicalCriticalRateCalculator.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/character/calculator/base/CharacterBasePhysicalCriticalRateCalculator.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/character/calculator/base/CharacterBasePhysicalCriticalRateCalculator.java
diff --git a/src/main/java/com/l2jserver/model/world/character/calculator/base/CharacterBasePhysicalDefenseCalculator.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/character/calculator/base/CharacterBasePhysicalDefenseCalculator.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/character/calculator/base/CharacterBasePhysicalDefenseCalculator.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/character/calculator/base/CharacterBasePhysicalDefenseCalculator.java
diff --git a/src/main/java/com/l2jserver/model/world/character/calculator/base/CharacterBaseRunSpeedCalculator.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/character/calculator/base/CharacterBaseRunSpeedCalculator.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/character/calculator/base/CharacterBaseRunSpeedCalculator.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/character/calculator/base/CharacterBaseRunSpeedCalculator.java
diff --git a/src/main/java/com/l2jserver/model/world/character/calculator/base/CharacterBaseStrengthCalculator.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/character/calculator/base/CharacterBaseStrengthCalculator.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/character/calculator/base/CharacterBaseStrengthCalculator.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/character/calculator/base/CharacterBaseStrengthCalculator.java
diff --git a/src/main/java/com/l2jserver/model/world/character/calculator/base/CharacterBaseWalkSpeedCalculator.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/character/calculator/base/CharacterBaseWalkSpeedCalculator.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/character/calculator/base/CharacterBaseWalkSpeedCalculator.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/character/calculator/base/CharacterBaseWalkSpeedCalculator.java
diff --git a/src/main/java/com/l2jserver/model/world/character/calculator/base/CharacterBaseWitnessCalculator.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/character/calculator/base/CharacterBaseWitnessCalculator.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/character/calculator/base/CharacterBaseWitnessCalculator.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/character/calculator/base/CharacterBaseWitnessCalculator.java
diff --git a/src/main/java/com/l2jserver/model/world/character/event/CharacterAttackEvent.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/character/event/CharacterAttackEvent.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/character/event/CharacterAttackEvent.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/character/event/CharacterAttackEvent.java
diff --git a/src/main/java/com/l2jserver/model/world/character/event/CharacterEnterWorldEvent.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/character/event/CharacterEnterWorldEvent.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/character/event/CharacterEnterWorldEvent.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/character/event/CharacterEnterWorldEvent.java
diff --git a/src/main/java/com/l2jserver/model/world/character/event/CharacterEvent.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/character/event/CharacterEvent.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/character/event/CharacterEvent.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/character/event/CharacterEvent.java
diff --git a/src/main/java/com/l2jserver/model/world/character/event/CharacterLeaveWorldEvent.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/character/event/CharacterLeaveWorldEvent.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/character/event/CharacterLeaveWorldEvent.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/character/event/CharacterLeaveWorldEvent.java
diff --git a/src/main/java/com/l2jserver/model/world/character/event/CharacterListener.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/character/event/CharacterListener.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/character/event/CharacterListener.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/character/event/CharacterListener.java
diff --git a/src/main/java/com/l2jserver/model/world/character/event/CharacterMoveEvent.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/character/event/CharacterMoveEvent.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/character/event/CharacterMoveEvent.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/character/event/CharacterMoveEvent.java
diff --git a/src/main/java/com/l2jserver/model/world/character/event/CharacterRunningEvent.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/character/event/CharacterRunningEvent.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/character/event/CharacterRunningEvent.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/character/event/CharacterRunningEvent.java
diff --git a/src/main/java/com/l2jserver/model/world/character/event/CharacterStopMoveEvent.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/character/event/CharacterStopMoveEvent.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/character/event/CharacterStopMoveEvent.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/character/event/CharacterStopMoveEvent.java
diff --git a/src/main/java/com/l2jserver/model/world/character/event/CharacterTargetDeselectedEvent.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/character/event/CharacterTargetDeselectedEvent.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/character/event/CharacterTargetDeselectedEvent.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/character/event/CharacterTargetDeselectedEvent.java
diff --git a/src/main/java/com/l2jserver/model/world/character/event/CharacterTargetSelectedEvent.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/character/event/CharacterTargetSelectedEvent.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/character/event/CharacterTargetSelectedEvent.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/character/event/CharacterTargetSelectedEvent.java
diff --git a/src/main/java/com/l2jserver/model/world/character/event/CharacterWalkingEvent.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/character/event/CharacterWalkingEvent.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/character/event/CharacterWalkingEvent.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/character/event/CharacterWalkingEvent.java
diff --git a/src/main/java/com/l2jserver/model/world/clan/ClanEvent.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/clan/ClanEvent.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/clan/ClanEvent.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/clan/ClanEvent.java
diff --git a/src/main/java/com/l2jserver/model/world/clan/ClanListener.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/clan/ClanListener.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/clan/ClanListener.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/clan/ClanListener.java
diff --git a/src/main/java/com/l2jserver/model/world/clan/ClanMembers.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/clan/ClanMembers.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/clan/ClanMembers.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/clan/ClanMembers.java
diff --git a/src/main/java/com/l2jserver/model/world/event/SpawnEvent.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/event/SpawnEvent.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/event/SpawnEvent.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/event/SpawnEvent.java
diff --git a/src/main/java/com/l2jserver/model/world/event/UnspawnEvent.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/event/UnspawnEvent.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/event/UnspawnEvent.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/event/UnspawnEvent.java
diff --git a/src/main/java/com/l2jserver/model/world/item/ItemDropEvent.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/item/ItemDropEvent.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/item/ItemDropEvent.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/item/ItemDropEvent.java
diff --git a/src/main/java/com/l2jserver/model/world/item/ItemEvent.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/item/ItemEvent.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/item/ItemEvent.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/item/ItemEvent.java
diff --git a/src/main/java/com/l2jserver/model/world/item/ItemListener.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/item/ItemListener.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/item/ItemListener.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/item/ItemListener.java
diff --git a/src/main/java/com/l2jserver/model/world/npc/NPCStats.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/npc/NPCStats.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/npc/NPCStats.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/npc/NPCStats.java
diff --git a/src/main/java/com/l2jserver/model/world/npc/calculator/NPCCalculator.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/npc/calculator/NPCCalculator.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/npc/calculator/NPCCalculator.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/npc/calculator/NPCCalculator.java
diff --git a/src/main/java/com/l2jserver/model/world/npc/calculator/NPCCalculatorContext.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/npc/calculator/NPCCalculatorContext.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/npc/calculator/NPCCalculatorContext.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/npc/calculator/NPCCalculatorContext.java
diff --git a/src/main/java/com/l2jserver/model/world/npc/calculator/NPCCalculatorFunction.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/npc/calculator/NPCCalculatorFunction.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/npc/calculator/NPCCalculatorFunction.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/npc/calculator/NPCCalculatorFunction.java
diff --git a/src/main/java/com/l2jserver/model/world/npc/calculator/NPCFormula.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/npc/calculator/NPCFormula.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/npc/calculator/NPCFormula.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/npc/calculator/NPCFormula.java
diff --git a/src/main/java/com/l2jserver/model/world/npc/calculator/base/NPCBaseAttackEvasionCalculator.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/npc/calculator/base/NPCBaseAttackEvasionCalculator.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/npc/calculator/base/NPCBaseAttackEvasionCalculator.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/npc/calculator/base/NPCBaseAttackEvasionCalculator.java
diff --git a/src/main/java/com/l2jserver/model/world/npc/calculator/base/NPCBaseConcentrationCalculator.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/npc/calculator/base/NPCBaseConcentrationCalculator.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/npc/calculator/base/NPCBaseConcentrationCalculator.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/npc/calculator/base/NPCBaseConcentrationCalculator.java
diff --git a/src/main/java/com/l2jserver/model/world/npc/calculator/base/NPCBaseDexterityCalculator.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/npc/calculator/base/NPCBaseDexterityCalculator.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/npc/calculator/base/NPCBaseDexterityCalculator.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/npc/calculator/base/NPCBaseDexterityCalculator.java
diff --git a/src/main/java/com/l2jserver/model/world/npc/calculator/base/NPCBaseHPCalculator.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/npc/calculator/base/NPCBaseHPCalculator.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/npc/calculator/base/NPCBaseHPCalculator.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/npc/calculator/base/NPCBaseHPCalculator.java
diff --git a/src/main/java/com/l2jserver/model/world/npc/calculator/base/NPCBaseIntelligenceCalculator.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/npc/calculator/base/NPCBaseIntelligenceCalculator.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/npc/calculator/base/NPCBaseIntelligenceCalculator.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/npc/calculator/base/NPCBaseIntelligenceCalculator.java
diff --git a/src/main/java/com/l2jserver/model/world/npc/calculator/base/NPCBaseMPCalculator.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/npc/calculator/base/NPCBaseMPCalculator.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/npc/calculator/base/NPCBaseMPCalculator.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/npc/calculator/base/NPCBaseMPCalculator.java
diff --git a/src/main/java/com/l2jserver/model/world/npc/calculator/base/NPCBaseMagicalAttackCalculator.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/npc/calculator/base/NPCBaseMagicalAttackCalculator.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/npc/calculator/base/NPCBaseMagicalAttackCalculator.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/npc/calculator/base/NPCBaseMagicalAttackCalculator.java
diff --git a/src/main/java/com/l2jserver/model/world/npc/calculator/base/NPCBaseMagicalAttackSpeedCalculator.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/npc/calculator/base/NPCBaseMagicalAttackSpeedCalculator.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/npc/calculator/base/NPCBaseMagicalAttackSpeedCalculator.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/npc/calculator/base/NPCBaseMagicalAttackSpeedCalculator.java
diff --git a/src/main/java/com/l2jserver/model/world/npc/calculator/base/NPCBaseMagicalCriticalRateCalculator.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/npc/calculator/base/NPCBaseMagicalCriticalRateCalculator.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/npc/calculator/base/NPCBaseMagicalCriticalRateCalculator.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/npc/calculator/base/NPCBaseMagicalCriticalRateCalculator.java
diff --git a/src/main/java/com/l2jserver/model/world/npc/calculator/base/NPCBaseMagicalDefenseCalculator.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/npc/calculator/base/NPCBaseMagicalDefenseCalculator.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/npc/calculator/base/NPCBaseMagicalDefenseCalculator.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/npc/calculator/base/NPCBaseMagicalDefenseCalculator.java
diff --git a/src/main/java/com/l2jserver/model/world/npc/calculator/base/NPCBaseMentalityCalculator.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/npc/calculator/base/NPCBaseMentalityCalculator.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/npc/calculator/base/NPCBaseMentalityCalculator.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/npc/calculator/base/NPCBaseMentalityCalculator.java
diff --git a/src/main/java/com/l2jserver/model/world/npc/calculator/base/NPCBasePhysicalAttackCalculator.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/npc/calculator/base/NPCBasePhysicalAttackCalculator.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/npc/calculator/base/NPCBasePhysicalAttackCalculator.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/npc/calculator/base/NPCBasePhysicalAttackCalculator.java
diff --git a/src/main/java/com/l2jserver/model/world/npc/calculator/base/NPCBasePhysicalAttackSpeedCalculator.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/npc/calculator/base/NPCBasePhysicalAttackSpeedCalculator.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/npc/calculator/base/NPCBasePhysicalAttackSpeedCalculator.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/npc/calculator/base/NPCBasePhysicalAttackSpeedCalculator.java
diff --git a/src/main/java/com/l2jserver/model/world/npc/calculator/base/NPCBasePhysicalCriticalRateCalculator.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/npc/calculator/base/NPCBasePhysicalCriticalRateCalculator.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/npc/calculator/base/NPCBasePhysicalCriticalRateCalculator.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/npc/calculator/base/NPCBasePhysicalCriticalRateCalculator.java
diff --git a/src/main/java/com/l2jserver/model/world/npc/calculator/base/NPCBasePhysicalDefenseCalculator.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/npc/calculator/base/NPCBasePhysicalDefenseCalculator.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/npc/calculator/base/NPCBasePhysicalDefenseCalculator.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/npc/calculator/base/NPCBasePhysicalDefenseCalculator.java
diff --git a/src/main/java/com/l2jserver/model/world/npc/calculator/base/NPCBaseRunSpeedCalculator.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/npc/calculator/base/NPCBaseRunSpeedCalculator.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/npc/calculator/base/NPCBaseRunSpeedCalculator.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/npc/calculator/base/NPCBaseRunSpeedCalculator.java
diff --git a/src/main/java/com/l2jserver/model/world/npc/calculator/base/NPCBaseStrengthCalculator.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/npc/calculator/base/NPCBaseStrengthCalculator.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/npc/calculator/base/NPCBaseStrengthCalculator.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/npc/calculator/base/NPCBaseStrengthCalculator.java
diff --git a/src/main/java/com/l2jserver/model/world/npc/calculator/base/NPCBaseWalkSpeedCalculator.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/npc/calculator/base/NPCBaseWalkSpeedCalculator.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/npc/calculator/base/NPCBaseWalkSpeedCalculator.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/npc/calculator/base/NPCBaseWalkSpeedCalculator.java
diff --git a/src/main/java/com/l2jserver/model/world/npc/calculator/base/NPCBaseWitnessCalculator.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/npc/calculator/base/NPCBaseWitnessCalculator.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/npc/calculator/base/NPCBaseWitnessCalculator.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/npc/calculator/base/NPCBaseWitnessCalculator.java
diff --git a/src/main/java/com/l2jserver/model/world/npc/controller/BaseNPCController.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/npc/controller/BaseNPCController.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/npc/controller/BaseNPCController.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/npc/controller/BaseNPCController.java
diff --git a/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
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/npc/controller/MonsterController.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/npc/controller/MonsterController.java
diff --git a/src/main/java/com/l2jserver/model/world/npc/controller/NPCController.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/npc/controller/NPCController.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/npc/controller/NPCController.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/npc/controller/NPCController.java
diff --git a/src/main/java/com/l2jserver/model/world/npc/controller/NotImplementedNPCController.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/npc/controller/NotImplementedNPCController.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/npc/controller/NotImplementedNPCController.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/npc/controller/NotImplementedNPCController.java
diff --git a/src/main/java/com/l2jserver/model/world/npc/controller/TeleporterController.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/npc/controller/TeleporterController.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/npc/controller/TeleporterController.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/npc/controller/TeleporterController.java
diff --git a/src/main/java/com/l2jserver/model/world/npc/event/NPCDieEvent.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/npc/event/NPCDieEvent.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/npc/event/NPCDieEvent.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/npc/event/NPCDieEvent.java
diff --git a/src/main/java/com/l2jserver/model/world/npc/event/NPCEvent.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/npc/event/NPCEvent.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/npc/event/NPCEvent.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/npc/event/NPCEvent.java
diff --git a/src/main/java/com/l2jserver/model/world/npc/event/NPCListener.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/npc/event/NPCListener.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/npc/event/NPCListener.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/npc/event/NPCListener.java
diff --git a/src/main/java/com/l2jserver/model/world/npc/event/NPCSpawnEvent.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/npc/event/NPCSpawnEvent.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/npc/event/NPCSpawnEvent.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/npc/event/NPCSpawnEvent.java
diff --git a/src/main/java/com/l2jserver/model/world/npc/event/NPCUnspawnEvent.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/npc/event/NPCUnspawnEvent.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/npc/event/NPCUnspawnEvent.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/npc/event/NPCUnspawnEvent.java
diff --git a/src/main/java/com/l2jserver/model/world/player/event/PlayerEvent.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/player/event/PlayerEvent.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/player/event/PlayerEvent.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/player/event/PlayerEvent.java
diff --git a/src/main/java/com/l2jserver/model/world/player/event/PlayerListener.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/player/event/PlayerListener.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/player/event/PlayerListener.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/player/event/PlayerListener.java
diff --git a/src/main/java/com/l2jserver/model/world/player/event/PlayerSpawnEvent.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/player/event/PlayerSpawnEvent.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/player/event/PlayerSpawnEvent.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/player/event/PlayerSpawnEvent.java
diff --git a/src/main/java/com/l2jserver/model/world/player/event/PlayerTeleportedEvent.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/player/event/PlayerTeleportedEvent.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/player/event/PlayerTeleportedEvent.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/player/event/PlayerTeleportedEvent.java
diff --git a/src/main/java/com/l2jserver/model/world/player/event/PlayerTeleportingEvent.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/player/event/PlayerTeleportingEvent.java
similarity index 100%
rename from src/main/java/com/l2jserver/model/world/player/event/PlayerTeleportingEvent.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/model/world/player/event/PlayerTeleportingEvent.java
diff --git a/src/main/java/com/l2jserver/service/ServiceModule.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/ServiceModule.java
similarity index 97%
rename from src/main/java/com/l2jserver/service/ServiceModule.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/ServiceModule.java
index 5d83b7dec..9557969f0 100644
--- a/src/main/java/com/l2jserver/service/ServiceModule.java
+++ b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/ServiceModule.java
@@ -30,7 +30,7 @@ import com.l2jserver.service.core.threading.ThreadServiceImpl;
import com.l2jserver.service.core.vfs.Java7VFSService;
import com.l2jserver.service.core.vfs.VFSService;
import com.l2jserver.service.database.DatabaseService;
-import com.l2jserver.service.database.JDBCDatabaseService;
+import com.l2jserver.service.database.GameServerJDBCDatabaseService;
import com.l2jserver.service.game.AttackService;
import com.l2jserver.service.game.AttackServiceImpl;
import com.l2jserver.service.game.admin.AdministratorService;
@@ -85,7 +85,7 @@ public class ServiceModule extends AbstractModule {
bind(CacheService.class).to(SoftCacheService.class)
.in(Scopes.SINGLETON);
- bind(DatabaseService.class).to(JDBCDatabaseService.class).in(
+ bind(DatabaseService.class).to(GameServerJDBCDatabaseService.class).in(
Scopes.SINGLETON);
bind(WorldIDService.class).to(CachedWorldIDService.class).in(
Scopes.SINGLETON);
diff --git a/l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/DerbyDAOModule.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/DerbyDAOModule.java
new file mode 100644
index 000000000..b279e6540
--- /dev/null
+++ b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/DerbyDAOModule.java
@@ -0,0 +1,57 @@
+/*
+ * This file is part of l2jserver .
+ *
+ * l2jserver is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * l2jserver is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with l2jserver. If not, see .
+ */
+package com.l2jserver.service.database;
+
+import com.google.inject.AbstractModule;
+import com.google.inject.Module;
+import com.google.inject.Scopes;
+import com.l2jserver.model.dao.CharacterDAO;
+import com.l2jserver.model.dao.CharacterFriendDAO;
+import com.l2jserver.model.dao.ChatMessageDAO;
+import com.l2jserver.model.dao.ClanDAO;
+import com.l2jserver.model.dao.ItemDAO;
+import com.l2jserver.model.dao.NPCDAO;
+import com.l2jserver.service.database.jdbc.derby.DerbyCharacterDAO;
+import com.l2jserver.service.database.jdbc.derby.DerbyCharacterFriendDAO;
+import com.l2jserver.service.database.jdbc.derby.DerbyChatMessageDAO;
+import com.l2jserver.service.database.jdbc.derby.DerbyClanDAO;
+import com.l2jserver.service.database.jdbc.derby.DerbyItemDAO;
+import com.l2jserver.service.database.jdbc.derby.DerbyNPCDAO;
+
+/**
+ * Google Guice {@link Module} for Derby DAOs
+ *
+ * @author Rogiel
+ */
+public class DerbyDAOModule extends AbstractModule {
+ @Override
+ protected void configure() {
+ bind(CharacterDAO.class).to(DerbyCharacterDAO.class).in(
+ Scopes.SINGLETON);
+ bind(CharacterFriendDAO.class).to(DerbyCharacterFriendDAO.class).in(
+ Scopes.SINGLETON);
+
+ bind(NPCDAO.class).to(DerbyNPCDAO.class).in(Scopes.SINGLETON);
+
+ bind(ItemDAO.class).to(DerbyItemDAO.class).in(Scopes.SINGLETON);
+ bind(ClanDAO.class).to(DerbyClanDAO.class).in(Scopes.SINGLETON);
+
+ // logs
+ bind(ChatMessageDAO.class).to(DerbyChatMessageDAO.class).in(
+ Scopes.SINGLETON);
+ }
+}
diff --git a/l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/GameServerJDBCDatabaseService.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/GameServerJDBCDatabaseService.java
new file mode 100644
index 000000000..d2b0040db
--- /dev/null
+++ b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/GameServerJDBCDatabaseService.java
@@ -0,0 +1,119 @@
+/*
+ * This file is part of l2jserver .
+ *
+ * l2jserver is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * l2jserver is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with l2jserver. If not, see .
+ */
+package com.l2jserver.service.database;
+
+import java.sql.ResultSet;
+
+import com.google.inject.Injector;
+import com.l2jserver.model.Model;
+import com.l2jserver.model.dao.CharacterDAO;
+import com.l2jserver.model.dao.ClanDAO;
+import com.l2jserver.model.dao.ItemDAO;
+import com.l2jserver.model.dao.NPCDAO;
+import com.l2jserver.model.dao.PetDAO;
+import com.l2jserver.model.id.ID;
+import com.l2jserver.model.world.Clan;
+import com.l2jserver.model.world.Item;
+import com.l2jserver.model.world.L2Character;
+import com.l2jserver.model.world.NPC;
+import com.l2jserver.model.world.Pet;
+import com.l2jserver.service.AbstractService.Depends;
+import com.l2jserver.service.cache.CacheService;
+import com.l2jserver.service.configuration.ConfigurationService;
+import com.l2jserver.service.core.LoggingService;
+import com.l2jserver.service.core.threading.ThreadService;
+import com.l2jserver.service.game.template.TemplateService;
+import com.l2jserver.util.ClassUtils;
+
+/**
+ * This is an implementation of {@link DatabaseService} that provides an layer
+ * to JDBC.
+ *
+ * Internal specification
The
+ * {@link com.l2jserver.service.database.AbstractJDBCDatabaseService.Query
+ * Query} object
+ *
+ * If you wish to implement a new {@link DataAccessObject} you should try not
+ * use {@link com.l2jserver.service.database.AbstractJDBCDatabaseService.Query
+ * Query} object directly because it only provides low level access to the JDBC
+ * architecture. Instead, you could use an specialized class, like
+ * {@link com.l2jserver.service.database.AbstractJDBCDatabaseService.InsertUpdateQuery
+ * InsertUpdateQuery} ,
+ * {@link com.l2jserver.service.database.AbstractJDBCDatabaseService.SelectListQuery
+ * SelectListQuery} or
+ * {@link com.l2jserver.service.database.AbstractJDBCDatabaseService.SelectSingleQuery
+ * SelectSingleQuery} . If you do need low level access, feel free to use the
+ * {@link com.l2jserver.service.database.AbstractJDBCDatabaseService.Query
+ * Query} class directly.
+ *
+ * The
+ * {@link com.l2jserver.service.database.AbstractJDBCDatabaseService.Mapper
+ * Mapper} object
+ *
+ * The {@link com.l2jserver.service.database.AbstractJDBCDatabaseService.Mapper
+ * Mapper} object maps an JDBC {@link ResultSet} into an Java {@link Object}.
+ * All {@link Model} objects support
+ * {@link com.l2jserver.service.database.AbstractJDBCDatabaseService.CachedMapper
+ * CachedMapper} that will cache result based on its {@link ID} and always use
+ * the same object with the same {@link ID}.
+ *
+ * @author Rogiel
+ */
+@Depends({ LoggingService.class, CacheService.class,
+ ConfigurationService.class, TemplateService.class, ThreadService.class })
+public class GameServerJDBCDatabaseService extends AbstractJDBCDatabaseService
+ implements DatabaseService {
+ /**
+ * The Google Guice {@link Injector}. It is used to get DAO instances.
+ */
+ private final Injector injector;
+
+ /**
+ * @param configService
+ * the config service
+ * @param injector
+ * the Guice {@link Injector}
+ * @param cacheService
+ * the cache service
+ * @param threadService
+ * the thread service
+ */
+ public GameServerJDBCDatabaseService(ConfigurationService configService,
+ Injector injector, CacheService cacheService,
+ ThreadService threadService) {
+ super(configService, cacheService, threadService);
+ this.injector = injector;
+ }
+
+ @Override
+ @SuppressWarnings({ "unchecked", "rawtypes" })
+ public , I extends ID> DataAccessObject getDAO(
+ Class model) {
+ if (ClassUtils.isSubclass(model, L2Character.class)) {
+ return (DataAccessObject) injector.getInstance(CharacterDAO.class);
+ } else if (ClassUtils.isSubclass(model, Clan.class)) {
+ return (DataAccessObject) injector.getInstance(ClanDAO.class);
+ } else if (ClassUtils.isSubclass(model, Item.class)) {
+ return (DataAccessObject) injector.getInstance(ItemDAO.class);
+ } else if (ClassUtils.isSubclass(model, NPC.class)) {
+ return (DataAccessObject) injector.getInstance(NPCDAO.class);
+ } else if (ClassUtils.isSubclass(model, Pet.class)) {
+ return (DataAccessObject) injector.getInstance(PetDAO.class);
+ }
+ return null;
+ }
+}
diff --git a/src/main/java/com/l2jserver/service/database/H2DAOModule.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/H2DAOModule.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/database/H2DAOModule.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/H2DAOModule.java
diff --git a/src/main/java/com/l2jserver/service/database/MySQL5DAOModule.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/MySQL5DAOModule.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/database/MySQL5DAOModule.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/MySQL5DAOModule.java
diff --git a/src/main/java/com/l2jserver/service/database/jdbc/JDBCCharacterDAO.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/jdbc/JDBCCharacterDAO.java
similarity index 97%
rename from src/main/java/com/l2jserver/service/database/jdbc/JDBCCharacterDAO.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/jdbc/JDBCCharacterDAO.java
index c3fc66ac7..d1f4bce68 100644
--- a/src/main/java/com/l2jserver/service/database/jdbc/JDBCCharacterDAO.java
+++ b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/jdbc/JDBCCharacterDAO.java
@@ -42,12 +42,12 @@ import com.l2jserver.model.world.character.CharacterAppearance;
import com.l2jserver.model.world.character.CharacterAppearance.CharacterFace;
import com.l2jserver.model.world.character.CharacterAppearance.CharacterHairColor;
import com.l2jserver.model.world.character.CharacterAppearance.CharacterHairStyle;
+import com.l2jserver.service.database.AbstractJDBCDatabaseService.CachedMapper;
+import com.l2jserver.service.database.AbstractJDBCDatabaseService.InsertUpdateQuery;
+import com.l2jserver.service.database.AbstractJDBCDatabaseService.Mapper;
+import com.l2jserver.service.database.AbstractJDBCDatabaseService.SelectListQuery;
+import com.l2jserver.service.database.AbstractJDBCDatabaseService.SelectSingleQuery;
import com.l2jserver.service.database.DatabaseService;
-import com.l2jserver.service.database.JDBCDatabaseService.CachedMapper;
-import com.l2jserver.service.database.JDBCDatabaseService.InsertUpdateQuery;
-import com.l2jserver.service.database.JDBCDatabaseService.Mapper;
-import com.l2jserver.service.database.JDBCDatabaseService.SelectListQuery;
-import com.l2jserver.service.database.JDBCDatabaseService.SelectSingleQuery;
import com.l2jserver.util.geometry.Point3D;
/**
diff --git a/src/main/java/com/l2jserver/service/database/jdbc/JDBCCharacterFriendDAO.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/jdbc/JDBCCharacterFriendDAO.java
similarity index 93%
rename from src/main/java/com/l2jserver/service/database/jdbc/JDBCCharacterFriendDAO.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/jdbc/JDBCCharacterFriendDAO.java
index a01e4b7e2..e878124c4 100644
--- a/src/main/java/com/l2jserver/service/database/jdbc/JDBCCharacterFriendDAO.java
+++ b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/jdbc/JDBCCharacterFriendDAO.java
@@ -30,12 +30,12 @@ import com.l2jserver.model.id.object.provider.CharacterIDProvider;
import com.l2jserver.model.id.provider.FriendIDProvider;
import com.l2jserver.model.world.L2Character;
import com.l2jserver.model.world.character.CharacterFriendList;
+import com.l2jserver.service.database.AbstractJDBCDatabaseService.CachedMapper;
+import com.l2jserver.service.database.AbstractJDBCDatabaseService.InsertUpdateQuery;
+import com.l2jserver.service.database.AbstractJDBCDatabaseService.Mapper;
+import com.l2jserver.service.database.AbstractJDBCDatabaseService.SelectListQuery;
+import com.l2jserver.service.database.AbstractJDBCDatabaseService.SelectSingleQuery;
import com.l2jserver.service.database.DatabaseService;
-import com.l2jserver.service.database.JDBCDatabaseService.CachedMapper;
-import com.l2jserver.service.database.JDBCDatabaseService.InsertUpdateQuery;
-import com.l2jserver.service.database.JDBCDatabaseService.Mapper;
-import com.l2jserver.service.database.JDBCDatabaseService.SelectListQuery;
-import com.l2jserver.service.database.JDBCDatabaseService.SelectSingleQuery;
/**
* {@link CharacterFriendDAO} implementation for JDBC
diff --git a/src/main/java/com/l2jserver/service/database/jdbc/JDBCChatMessageDAO.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/jdbc/JDBCChatMessageDAO.java
similarity index 93%
rename from src/main/java/com/l2jserver/service/database/jdbc/JDBCChatMessageDAO.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/jdbc/JDBCChatMessageDAO.java
index 098e8561f..f1d19c965 100644
--- a/src/main/java/com/l2jserver/service/database/jdbc/JDBCChatMessageDAO.java
+++ b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/jdbc/JDBCChatMessageDAO.java
@@ -31,12 +31,12 @@ import com.l2jserver.model.id.object.CharacterID;
import com.l2jserver.model.id.object.provider.CharacterIDProvider;
import com.l2jserver.model.id.provider.ChatMessageIDProvider;
import com.l2jserver.model.server.ChatMessage;
+import com.l2jserver.service.database.AbstractJDBCDatabaseService.CachedMapper;
+import com.l2jserver.service.database.AbstractJDBCDatabaseService.InsertUpdateQuery;
+import com.l2jserver.service.database.AbstractJDBCDatabaseService.Mapper;
+import com.l2jserver.service.database.AbstractJDBCDatabaseService.SelectListQuery;
+import com.l2jserver.service.database.AbstractJDBCDatabaseService.SelectSingleQuery;
import com.l2jserver.service.database.DatabaseService;
-import com.l2jserver.service.database.JDBCDatabaseService.CachedMapper;
-import com.l2jserver.service.database.JDBCDatabaseService.InsertUpdateQuery;
-import com.l2jserver.service.database.JDBCDatabaseService.Mapper;
-import com.l2jserver.service.database.JDBCDatabaseService.SelectListQuery;
-import com.l2jserver.service.database.JDBCDatabaseService.SelectSingleQuery;
import com.l2jserver.service.game.chat.ChatMessageType;
/**
diff --git a/src/main/java/com/l2jserver/service/database/jdbc/JDBCClanDAO.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/jdbc/JDBCClanDAO.java
similarity index 91%
rename from src/main/java/com/l2jserver/service/database/jdbc/JDBCClanDAO.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/jdbc/JDBCClanDAO.java
index 45be7f18c..a67dac1ef 100644
--- a/src/main/java/com/l2jserver/service/database/jdbc/JDBCClanDAO.java
+++ b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/jdbc/JDBCClanDAO.java
@@ -30,11 +30,11 @@ import com.l2jserver.model.id.object.provider.CharacterIDProvider;
import com.l2jserver.model.id.object.provider.ClanIDProvider;
import com.l2jserver.model.world.Clan;
import com.l2jserver.service.database.DatabaseService;
-import com.l2jserver.service.database.JDBCDatabaseService.CachedMapper;
-import com.l2jserver.service.database.JDBCDatabaseService.InsertUpdateQuery;
-import com.l2jserver.service.database.JDBCDatabaseService.Mapper;
-import com.l2jserver.service.database.JDBCDatabaseService.SelectListQuery;
-import com.l2jserver.service.database.JDBCDatabaseService.SelectSingleQuery;
+import com.l2jserver.service.database.AbstractJDBCDatabaseService.CachedMapper;
+import com.l2jserver.service.database.AbstractJDBCDatabaseService.InsertUpdateQuery;
+import com.l2jserver.service.database.AbstractJDBCDatabaseService.Mapper;
+import com.l2jserver.service.database.AbstractJDBCDatabaseService.SelectListQuery;
+import com.l2jserver.service.database.AbstractJDBCDatabaseService.SelectSingleQuery;
/**
* {@link CharacterDAO} implementation for JDBC
diff --git a/src/main/java/com/l2jserver/service/database/jdbc/JDBCItemDAO.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/jdbc/JDBCItemDAO.java
similarity index 94%
rename from src/main/java/com/l2jserver/service/database/jdbc/JDBCItemDAO.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/jdbc/JDBCItemDAO.java
index f447ba6b7..923ba2b91 100644
--- a/src/main/java/com/l2jserver/service/database/jdbc/JDBCItemDAO.java
+++ b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/jdbc/JDBCItemDAO.java
@@ -35,12 +35,12 @@ import com.l2jserver.model.world.L2Character;
import com.l2jserver.model.world.character.CharacterInventory;
import com.l2jserver.model.world.character.CharacterInventory.InventoryLocation;
import com.l2jserver.model.world.character.CharacterInventory.InventoryPaperdoll;
+import com.l2jserver.service.database.AbstractJDBCDatabaseService.CachedMapper;
+import com.l2jserver.service.database.AbstractJDBCDatabaseService.InsertUpdateQuery;
+import com.l2jserver.service.database.AbstractJDBCDatabaseService.Mapper;
+import com.l2jserver.service.database.AbstractJDBCDatabaseService.SelectListQuery;
+import com.l2jserver.service.database.AbstractJDBCDatabaseService.SelectSingleQuery;
import com.l2jserver.service.database.DatabaseService;
-import com.l2jserver.service.database.JDBCDatabaseService.CachedMapper;
-import com.l2jserver.service.database.JDBCDatabaseService.InsertUpdateQuery;
-import com.l2jserver.service.database.JDBCDatabaseService.Mapper;
-import com.l2jserver.service.database.JDBCDatabaseService.SelectListQuery;
-import com.l2jserver.service.database.JDBCDatabaseService.SelectSingleQuery;
import com.l2jserver.util.geometry.Coordinate;
/**
diff --git a/src/main/java/com/l2jserver/service/database/jdbc/JDBCNPCDAO.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/jdbc/JDBCNPCDAO.java
similarity index 95%
rename from src/main/java/com/l2jserver/service/database/jdbc/JDBCNPCDAO.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/jdbc/JDBCNPCDAO.java
index 720047010..f51c39548 100644
--- a/src/main/java/com/l2jserver/service/database/jdbc/JDBCNPCDAO.java
+++ b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/jdbc/JDBCNPCDAO.java
@@ -33,12 +33,12 @@ import com.l2jserver.model.id.template.NPCTemplateID;
import com.l2jserver.model.id.template.provider.NPCTemplateIDProvider;
import com.l2jserver.model.template.NPCTemplate;
import com.l2jserver.model.world.NPC;
+import com.l2jserver.service.database.AbstractJDBCDatabaseService.CachedMapper;
+import com.l2jserver.service.database.AbstractJDBCDatabaseService.InsertUpdateQuery;
+import com.l2jserver.service.database.AbstractJDBCDatabaseService.Mapper;
+import com.l2jserver.service.database.AbstractJDBCDatabaseService.SelectListQuery;
+import com.l2jserver.service.database.AbstractJDBCDatabaseService.SelectSingleQuery;
import com.l2jserver.service.database.DatabaseService;
-import com.l2jserver.service.database.JDBCDatabaseService.CachedMapper;
-import com.l2jserver.service.database.JDBCDatabaseService.InsertUpdateQuery;
-import com.l2jserver.service.database.JDBCDatabaseService.Mapper;
-import com.l2jserver.service.database.JDBCDatabaseService.SelectListQuery;
-import com.l2jserver.service.database.JDBCDatabaseService.SelectSingleQuery;
import com.l2jserver.util.geometry.Point3D;
/**
diff --git a/l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/jdbc/derby/DerbyCharacterDAO.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/jdbc/derby/DerbyCharacterDAO.java
new file mode 100644
index 000000000..83e650afb
--- /dev/null
+++ b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/jdbc/derby/DerbyCharacterDAO.java
@@ -0,0 +1,55 @@
+/*
+ * This file is part of l2jserver .
+ *
+ * l2jserver is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * l2jserver is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with l2jserver. If not, see .
+ */
+package com.l2jserver.service.database.jdbc.derby;
+
+import com.google.inject.Inject;
+import com.l2jserver.model.dao.CharacterDAO;
+import com.l2jserver.model.id.object.provider.CharacterIDProvider;
+import com.l2jserver.model.id.object.provider.ClanIDProvider;
+import com.l2jserver.model.id.provider.AccountIDProvider;
+import com.l2jserver.model.id.template.provider.CharacterTemplateIDProvider;
+import com.l2jserver.service.database.DatabaseService;
+import com.l2jserver.service.database.jdbc.JDBCCharacterDAO;
+
+/**
+ * {@link CharacterDAO} implementation for MySQL5
+ *
+ * @author Rogiel
+ */
+public class DerbyCharacterDAO extends JDBCCharacterDAO implements
+ CharacterDAO {
+ /**
+ * @param database
+ * the database service
+ * @param idFactory
+ * the character id provider
+ * @param templateIdFactory
+ * the template id provider
+ * @param accountIdFactory
+ * the account id provider
+ * @param clanIdFactory
+ * the clan id provider
+ */
+ @Inject
+ public DerbyCharacterDAO(DatabaseService database,
+ CharacterIDProvider idFactory,
+ CharacterTemplateIDProvider templateIdFactory,
+ AccountIDProvider accountIdFactory, ClanIDProvider clanIdFactory) {
+ super(database, idFactory, templateIdFactory, accountIdFactory,
+ clanIdFactory);
+ }
+}
diff --git a/l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/jdbc/derby/DerbyCharacterFriendDAO.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/jdbc/derby/DerbyCharacterFriendDAO.java
new file mode 100644
index 000000000..f4225b123
--- /dev/null
+++ b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/jdbc/derby/DerbyCharacterFriendDAO.java
@@ -0,0 +1,46 @@
+/*
+ * This file is part of l2jserver .
+ *
+ * l2jserver is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * l2jserver is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with l2jserver. If not, see .
+ */
+package com.l2jserver.service.database.jdbc.derby;
+
+import com.google.inject.Inject;
+import com.l2jserver.model.dao.CharacterFriendDAO;
+import com.l2jserver.model.id.object.provider.CharacterIDProvider;
+import com.l2jserver.model.id.provider.FriendIDProvider;
+import com.l2jserver.service.database.DatabaseService;
+import com.l2jserver.service.database.jdbc.JDBCCharacterFriendDAO;
+
+/**
+ * {@link CharacterFriendDAO} implementation for MySQL5
+ *
+ * @author Rogiel
+ */
+public class DerbyCharacterFriendDAO extends JDBCCharacterFriendDAO implements
+ CharacterFriendDAO {
+ /**
+ * @param database
+ * the database service
+ * @param idProvider
+ * the frind id provider
+ * @param charIdProvider
+ * the character id provider
+ */
+ @Inject
+ public DerbyCharacterFriendDAO(DatabaseService database,
+ FriendIDProvider idProvider, CharacterIDProvider charIdProvider) {
+ super(database, idProvider, charIdProvider);
+ }
+}
diff --git a/l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/jdbc/derby/DerbyChatMessageDAO.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/jdbc/derby/DerbyChatMessageDAO.java
new file mode 100644
index 000000000..9ed9a3544
--- /dev/null
+++ b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/jdbc/derby/DerbyChatMessageDAO.java
@@ -0,0 +1,46 @@
+/*
+ * This file is part of l2jserver .
+ *
+ * l2jserver is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * l2jserver is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with l2jserver. If not, see .
+ */
+package com.l2jserver.service.database.jdbc.derby;
+
+import com.google.inject.Inject;
+import com.l2jserver.model.dao.ChatMessageDAO;
+import com.l2jserver.model.id.object.provider.CharacterIDProvider;
+import com.l2jserver.model.id.provider.ChatMessageIDProvider;
+import com.l2jserver.service.database.DatabaseService;
+import com.l2jserver.service.database.jdbc.JDBCChatMessageDAO;
+
+/**
+ * {@link ChatMessageDAO} implementation for MySQL5
+ *
+ * @author Rogiel
+ */
+public class DerbyChatMessageDAO extends JDBCChatMessageDAO implements
+ ChatMessageDAO {
+ /**
+ * @param database
+ * the database service
+ * @param idFactory
+ * the chat message id provider
+ * @param charIdFactory
+ * the character id provider
+ */
+ @Inject
+ public DerbyChatMessageDAO(DatabaseService database,
+ ChatMessageIDProvider idFactory, CharacterIDProvider charIdFactory) {
+ super(database, idFactory, charIdFactory);
+ }
+}
diff --git a/l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/jdbc/derby/DerbyClanDAO.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/jdbc/derby/DerbyClanDAO.java
new file mode 100644
index 000000000..486e492eb
--- /dev/null
+++ b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/jdbc/derby/DerbyClanDAO.java
@@ -0,0 +1,46 @@
+/*
+ * This file is part of l2jserver .
+ *
+ * l2jserver is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * l2jserver is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with l2jserver. If not, see .
+ */
+package com.l2jserver.service.database.jdbc.derby;
+
+import com.google.inject.Inject;
+import com.l2jserver.model.dao.CharacterDAO;
+import com.l2jserver.model.dao.ClanDAO;
+import com.l2jserver.model.id.object.provider.CharacterIDProvider;
+import com.l2jserver.model.id.object.provider.ClanIDProvider;
+import com.l2jserver.service.database.DatabaseService;
+import com.l2jserver.service.database.jdbc.JDBCClanDAO;
+
+/**
+ * {@link CharacterDAO} implementation for MySQL5
+ *
+ * @author Rogiel
+ */
+public class DerbyClanDAO extends JDBCClanDAO implements ClanDAO {
+ /**
+ * @param database
+ * the database service
+ * @param clanIdFactory
+ * the clan id provider
+ * @param idFactory
+ * the character id provider
+ */
+ @Inject
+ public DerbyClanDAO(DatabaseService database,
+ ClanIDProvider clanIdFactory, CharacterIDProvider idFactory) {
+ super(database, clanIdFactory, idFactory);
+ }
+}
diff --git a/l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/jdbc/derby/DerbyItemDAO.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/jdbc/derby/DerbyItemDAO.java
new file mode 100644
index 000000000..07ad55c26
--- /dev/null
+++ b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/jdbc/derby/DerbyItemDAO.java
@@ -0,0 +1,49 @@
+/*
+ * This file is part of l2jserver .
+ *
+ * l2jserver is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * l2jserver is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with l2jserver. If not, see .
+ */
+package com.l2jserver.service.database.jdbc.derby;
+
+import com.google.inject.Inject;
+import com.l2jserver.model.dao.ItemDAO;
+import com.l2jserver.model.id.object.provider.CharacterIDProvider;
+import com.l2jserver.model.id.object.provider.ItemIDProvider;
+import com.l2jserver.model.id.template.provider.ItemTemplateIDProvider;
+import com.l2jserver.service.database.DatabaseService;
+import com.l2jserver.service.database.jdbc.JDBCItemDAO;
+
+/**
+ * {@link ItemDAO} implementation for MySQL5
+ *
+ * @author Rogiel
+ */
+public class DerbyItemDAO extends JDBCItemDAO implements ItemDAO {
+ /**
+ * @param database
+ * the database service
+ * @param idFactory
+ * the item id provider
+ * @param templateIdFactory
+ * the item template id provider
+ * @param charIdFactory
+ * the character id provider
+ */
+ @Inject
+ public DerbyItemDAO(DatabaseService database, ItemIDProvider idFactory,
+ ItemTemplateIDProvider templateIdFactory,
+ CharacterIDProvider charIdFactory) {
+ super(database, idFactory, templateIdFactory, charIdFactory);
+ }
+}
diff --git a/l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/jdbc/derby/DerbyNPCDAO.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/jdbc/derby/DerbyNPCDAO.java
new file mode 100644
index 000000000..977198bac
--- /dev/null
+++ b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/jdbc/derby/DerbyNPCDAO.java
@@ -0,0 +1,46 @@
+/*
+ * This file is part of l2jserver .
+ *
+ * l2jserver is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * l2jserver is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with l2jserver. If not, see .
+ */
+package com.l2jserver.service.database.jdbc.derby;
+
+import com.google.inject.Inject;
+import com.l2jserver.model.dao.CharacterDAO;
+import com.l2jserver.model.dao.NPCDAO;
+import com.l2jserver.model.id.object.provider.NPCIDProvider;
+import com.l2jserver.model.id.template.provider.NPCTemplateIDProvider;
+import com.l2jserver.service.database.DatabaseService;
+import com.l2jserver.service.database.jdbc.JDBCNPCDAO;
+
+/**
+ * {@link CharacterDAO} implementation for MySQL5
+ *
+ * @author Rogiel
+ */
+public class DerbyNPCDAO extends JDBCNPCDAO implements NPCDAO {
+ /**
+ * @param database
+ * the database service
+ * @param idProvider
+ * the npc id provider
+ * @param templateIdProvider
+ * the npc template id provider
+ */
+ @Inject
+ public DerbyNPCDAO(DatabaseService database, NPCIDProvider idProvider,
+ NPCTemplateIDProvider templateIdProvider) {
+ super(database, idProvider, templateIdProvider);
+ }
+}
diff --git a/src/main/java/com/l2jserver/service/database/jdbc/h2/H2CharacterDAO.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/jdbc/h2/H2CharacterDAO.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/database/jdbc/h2/H2CharacterDAO.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/jdbc/h2/H2CharacterDAO.java
diff --git a/src/main/java/com/l2jserver/service/database/jdbc/h2/H2CharacterFriendDAO.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/jdbc/h2/H2CharacterFriendDAO.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/database/jdbc/h2/H2CharacterFriendDAO.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/jdbc/h2/H2CharacterFriendDAO.java
diff --git a/src/main/java/com/l2jserver/service/database/jdbc/h2/H2ChatMessageDAO.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/jdbc/h2/H2ChatMessageDAO.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/database/jdbc/h2/H2ChatMessageDAO.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/jdbc/h2/H2ChatMessageDAO.java
diff --git a/src/main/java/com/l2jserver/service/database/jdbc/h2/H2ClanDAO.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/jdbc/h2/H2ClanDAO.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/database/jdbc/h2/H2ClanDAO.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/jdbc/h2/H2ClanDAO.java
diff --git a/src/main/java/com/l2jserver/service/database/jdbc/h2/H2ItemDAO.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/jdbc/h2/H2ItemDAO.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/database/jdbc/h2/H2ItemDAO.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/jdbc/h2/H2ItemDAO.java
diff --git a/src/main/java/com/l2jserver/service/database/jdbc/h2/H2NPCDAO.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/jdbc/h2/H2NPCDAO.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/database/jdbc/h2/H2NPCDAO.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/jdbc/h2/H2NPCDAO.java
diff --git a/src/main/java/com/l2jserver/service/database/jdbc/mysql5/MySQL5CharacterDAO.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/jdbc/mysql5/MySQL5CharacterDAO.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/database/jdbc/mysql5/MySQL5CharacterDAO.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/jdbc/mysql5/MySQL5CharacterDAO.java
diff --git a/src/main/java/com/l2jserver/service/database/jdbc/mysql5/MySQL5CharacterFriendDAO.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/jdbc/mysql5/MySQL5CharacterFriendDAO.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/database/jdbc/mysql5/MySQL5CharacterFriendDAO.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/jdbc/mysql5/MySQL5CharacterFriendDAO.java
diff --git a/src/main/java/com/l2jserver/service/database/jdbc/mysql5/MySQL5ChatMessageDAO.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/jdbc/mysql5/MySQL5ChatMessageDAO.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/database/jdbc/mysql5/MySQL5ChatMessageDAO.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/jdbc/mysql5/MySQL5ChatMessageDAO.java
diff --git a/src/main/java/com/l2jserver/service/database/jdbc/mysql5/MySQL5ClanDAO.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/jdbc/mysql5/MySQL5ClanDAO.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/database/jdbc/mysql5/MySQL5ClanDAO.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/jdbc/mysql5/MySQL5ClanDAO.java
diff --git a/src/main/java/com/l2jserver/service/database/jdbc/mysql5/MySQL5ItemDAO.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/jdbc/mysql5/MySQL5ItemDAO.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/database/jdbc/mysql5/MySQL5ItemDAO.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/jdbc/mysql5/MySQL5ItemDAO.java
diff --git a/src/main/java/com/l2jserver/service/database/jdbc/mysql5/MySQL5NPCDAO.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/jdbc/mysql5/MySQL5NPCDAO.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/database/jdbc/mysql5/MySQL5NPCDAO.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/database/jdbc/mysql5/MySQL5NPCDAO.java
diff --git a/src/main/java/com/l2jserver/service/game/AttackService.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/AttackService.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/AttackService.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/AttackService.java
diff --git a/src/main/java/com/l2jserver/service/game/AttackServiceImpl.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/AttackServiceImpl.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/AttackServiceImpl.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/AttackServiceImpl.java
diff --git a/src/main/java/com/l2jserver/service/game/DuelService.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/DuelService.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/DuelService.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/DuelService.java
diff --git a/src/main/java/com/l2jserver/service/game/DuelServiceImpl.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/DuelServiceImpl.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/DuelServiceImpl.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/DuelServiceImpl.java
diff --git a/src/main/java/com/l2jserver/service/game/GameTimeService.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/GameTimeService.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/GameTimeService.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/GameTimeService.java
diff --git a/src/main/java/com/l2jserver/service/game/GameTimeServiceImpl.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/GameTimeServiceImpl.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/GameTimeServiceImpl.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/GameTimeServiceImpl.java
diff --git a/src/main/java/com/l2jserver/service/game/LotteryService.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/LotteryService.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/LotteryService.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/LotteryService.java
diff --git a/src/main/java/com/l2jserver/service/game/PKService.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/PKService.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/PKService.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/PKService.java
diff --git a/src/main/java/com/l2jserver/service/game/PvPService.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/PvPService.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/PvPService.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/PvPService.java
diff --git a/src/main/java/com/l2jserver/service/game/admin/AdministratorService.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/admin/AdministratorService.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/admin/AdministratorService.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/admin/AdministratorService.java
diff --git a/src/main/java/com/l2jserver/service/game/admin/AdministratorServiceImpl.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/admin/AdministratorServiceImpl.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/admin/AdministratorServiceImpl.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/admin/AdministratorServiceImpl.java
diff --git a/src/main/java/com/l2jserver/service/game/admin/GMService.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/admin/GMService.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/admin/GMService.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/admin/GMService.java
diff --git a/src/main/java/com/l2jserver/service/game/admin/panel/AdminHomeTemplate.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/admin/panel/AdminHomeTemplate.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/admin/panel/AdminHomeTemplate.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/admin/panel/AdminHomeTemplate.java
diff --git a/src/main/java/com/l2jserver/service/game/admin/panel/TeleportTemplate.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/admin/panel/TeleportTemplate.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/admin/panel/TeleportTemplate.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/admin/panel/TeleportTemplate.java
diff --git a/src/main/java/com/l2jserver/service/game/ai/AIScript.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/ai/AIScript.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/ai/AIScript.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/ai/AIScript.java
diff --git a/src/main/java/com/l2jserver/service/game/ai/AIService.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/ai/AIService.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/ai/AIService.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/ai/AIService.java
diff --git a/src/main/java/com/l2jserver/service/game/ai/AIServiceImpl.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/ai/AIServiceImpl.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/ai/AIServiceImpl.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/ai/AIServiceImpl.java
diff --git a/src/main/java/com/l2jserver/service/game/castle/CastleService.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/castle/CastleService.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/castle/CastleService.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/castle/CastleService.java
diff --git a/src/main/java/com/l2jserver/service/game/castle/SiegeService.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/castle/SiegeService.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/castle/SiegeService.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/castle/SiegeService.java
diff --git a/src/main/java/com/l2jserver/service/game/character/ActorIsNotAttackableServiceException.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/character/ActorIsNotAttackableServiceException.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/character/ActorIsNotAttackableServiceException.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/character/ActorIsNotAttackableServiceException.java
diff --git a/src/main/java/com/l2jserver/service/game/character/CannotSetTargetServiceException.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/character/CannotSetTargetServiceException.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/character/CannotSetTargetServiceException.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/character/CannotSetTargetServiceException.java
diff --git a/src/main/java/com/l2jserver/service/game/character/CharacterAlreadyRunningServiceException.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/character/CharacterAlreadyRunningServiceException.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/character/CharacterAlreadyRunningServiceException.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/character/CharacterAlreadyRunningServiceException.java
diff --git a/src/main/java/com/l2jserver/service/game/character/CharacterAlreadyWalkingServiceException.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/character/CharacterAlreadyWalkingServiceException.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/character/CharacterAlreadyWalkingServiceException.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/character/CharacterAlreadyWalkingServiceException.java
diff --git a/src/main/java/com/l2jserver/service/game/character/CharacterInJailServiceException.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/character/CharacterInJailServiceException.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/character/CharacterInJailServiceException.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/character/CharacterInJailServiceException.java
diff --git a/src/main/java/com/l2jserver/service/game/character/CharacterInvalidAppearanceException.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/character/CharacterInvalidAppearanceException.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/character/CharacterInvalidAppearanceException.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/character/CharacterInvalidAppearanceException.java
diff --git a/src/main/java/com/l2jserver/service/game/character/CharacterInvalidNameException.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/character/CharacterInvalidNameException.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/character/CharacterInvalidNameException.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/character/CharacterInvalidNameException.java
diff --git a/src/main/java/com/l2jserver/service/game/character/CharacterNameAlreadyExistsException.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/character/CharacterNameAlreadyExistsException.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/character/CharacterNameAlreadyExistsException.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/character/CharacterNameAlreadyExistsException.java
diff --git a/src/main/java/com/l2jserver/service/game/character/CharacterNotInJailServiceException.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/character/CharacterNotInJailServiceException.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/character/CharacterNotInJailServiceException.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/character/CharacterNotInJailServiceException.java
diff --git a/src/main/java/com/l2jserver/service/game/character/CharacterService.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/character/CharacterService.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/character/CharacterService.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/character/CharacterService.java
diff --git a/src/main/java/com/l2jserver/service/game/character/CharacterServiceException.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/character/CharacterServiceException.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/character/CharacterServiceException.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/character/CharacterServiceException.java
diff --git a/src/main/java/com/l2jserver/service/game/character/CharacterServiceImpl.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/character/CharacterServiceImpl.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/character/CharacterServiceImpl.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/character/CharacterServiceImpl.java
diff --git a/src/main/java/com/l2jserver/service/game/chat/CannotChatToSelfChatServiceException.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/chat/CannotChatToSelfChatServiceException.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/chat/CannotChatToSelfChatServiceException.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/chat/CannotChatToSelfChatServiceException.java
diff --git a/src/main/java/com/l2jserver/service/game/chat/ChatBanActiveChatServiceException.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/chat/ChatBanActiveChatServiceException.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/chat/ChatBanActiveChatServiceException.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/chat/ChatBanActiveChatServiceException.java
diff --git a/src/main/java/com/l2jserver/service/game/chat/ChatChannel.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/chat/ChatChannel.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/chat/ChatChannel.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/chat/ChatChannel.java
diff --git a/src/main/java/com/l2jserver/service/game/chat/ChatChannelFilter.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/chat/ChatChannelFilter.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/chat/ChatChannelFilter.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/chat/ChatChannelFilter.java
diff --git a/src/main/java/com/l2jserver/service/game/chat/ChatChannelListener.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/chat/ChatChannelListener.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/chat/ChatChannelListener.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/chat/ChatChannelListener.java
diff --git a/src/main/java/com/l2jserver/service/game/chat/ChatLoggingService.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/chat/ChatLoggingService.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/chat/ChatLoggingService.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/chat/ChatLoggingService.java
diff --git a/src/main/java/com/l2jserver/service/game/chat/ChatMessageType.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/chat/ChatMessageType.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/chat/ChatMessageType.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/chat/ChatMessageType.java
diff --git a/src/main/java/com/l2jserver/service/game/chat/ChatService.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/chat/ChatService.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/chat/ChatService.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/chat/ChatService.java
diff --git a/src/main/java/com/l2jserver/service/game/chat/ChatServiceException.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/chat/ChatServiceException.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/chat/ChatServiceException.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/chat/ChatServiceException.java
diff --git a/src/main/java/com/l2jserver/service/game/chat/ChatTargetOfflineServiceException.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/chat/ChatTargetOfflineServiceException.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/chat/ChatTargetOfflineServiceException.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/chat/ChatTargetOfflineServiceException.java
diff --git a/src/main/java/com/l2jserver/service/game/chat/DatabaseChatLoggingService.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/chat/DatabaseChatLoggingService.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/chat/DatabaseChatLoggingService.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/chat/DatabaseChatLoggingService.java
diff --git a/src/main/java/com/l2jserver/service/game/chat/PrivateChatChannel.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/chat/PrivateChatChannel.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/chat/PrivateChatChannel.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/chat/PrivateChatChannel.java
diff --git a/src/main/java/com/l2jserver/service/game/chat/PublicChatChannel.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/chat/PublicChatChannel.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/chat/PublicChatChannel.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/chat/PublicChatChannel.java
diff --git a/src/main/java/com/l2jserver/service/game/chat/SimpleChatService.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/chat/SimpleChatService.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/chat/SimpleChatService.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/chat/SimpleChatService.java
diff --git a/src/main/java/com/l2jserver/service/game/chat/TargetNotFoundChatServiceException.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/chat/TargetNotFoundChatServiceException.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/chat/TargetNotFoundChatServiceException.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/chat/TargetNotFoundChatServiceException.java
diff --git a/src/main/java/com/l2jserver/service/game/clan/ClanService.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/clan/ClanService.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/clan/ClanService.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/clan/ClanService.java
diff --git a/src/main/java/com/l2jserver/service/game/clan/FortService.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/clan/FortService.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/clan/FortService.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/clan/FortService.java
diff --git a/src/main/java/com/l2jserver/service/game/effect/EffectService.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/effect/EffectService.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/effect/EffectService.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/effect/EffectService.java
diff --git a/src/main/java/com/l2jserver/service/game/map/GeoDataMapService.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/map/GeoDataMapService.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/map/GeoDataMapService.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/map/GeoDataMapService.java
diff --git a/src/main/java/com/l2jserver/service/game/map/MapService.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/map/MapService.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/map/MapService.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/map/MapService.java
diff --git a/src/main/java/com/l2jserver/service/game/map/Tile.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/map/Tile.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/map/Tile.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/map/Tile.java
diff --git a/src/main/java/com/l2jserver/service/game/map/pathing/AStarPathingService.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/map/pathing/AStarPathingService.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/map/pathing/AStarPathingService.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/map/pathing/AStarPathingService.java
diff --git a/src/main/java/com/l2jserver/service/game/map/pathing/AbstractPath.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/map/pathing/AbstractPath.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/map/pathing/AbstractPath.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/map/pathing/AbstractPath.java
diff --git a/src/main/java/com/l2jserver/service/game/map/pathing/MapperPathingService.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/map/pathing/MapperPathingService.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/map/pathing/MapperPathingService.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/map/pathing/MapperPathingService.java
diff --git a/src/main/java/com/l2jserver/service/game/map/pathing/Path.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/map/pathing/Path.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/map/pathing/Path.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/map/pathing/Path.java
diff --git a/src/main/java/com/l2jserver/service/game/map/pathing/PathingService.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/map/pathing/PathingService.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/map/pathing/PathingService.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/map/pathing/PathingService.java
diff --git a/src/main/java/com/l2jserver/service/game/npc/ActionServiceException.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/npc/ActionServiceException.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/npc/ActionServiceException.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/npc/ActionServiceException.java
diff --git a/src/main/java/com/l2jserver/service/game/npc/NPCService.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/npc/NPCService.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/npc/NPCService.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/npc/NPCService.java
diff --git a/src/main/java/com/l2jserver/service/game/npc/NPCServiceException.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/npc/NPCServiceException.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/npc/NPCServiceException.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/npc/NPCServiceException.java
diff --git a/src/main/java/com/l2jserver/service/game/npc/NPCServiceImpl.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/npc/NPCServiceImpl.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/npc/NPCServiceImpl.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/npc/NPCServiceImpl.java
diff --git a/src/main/java/com/l2jserver/service/game/npc/NotAttackableNPCServiceException.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/npc/NotAttackableNPCServiceException.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/npc/NotAttackableNPCServiceException.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/npc/NotAttackableNPCServiceException.java
diff --git a/src/main/java/com/l2jserver/service/game/region/Region.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/region/Region.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/region/Region.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/region/Region.java
diff --git a/src/main/java/com/l2jserver/service/game/region/RegionService.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/region/RegionService.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/region/RegionService.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/region/RegionService.java
diff --git a/src/main/java/com/l2jserver/service/game/scripting/CompilationResult.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/scripting/CompilationResult.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/scripting/CompilationResult.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/scripting/CompilationResult.java
diff --git a/src/main/java/com/l2jserver/service/game/scripting/ScriptClassLoader.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/scripting/ScriptClassLoader.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/scripting/ScriptClassLoader.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/scripting/ScriptClassLoader.java
diff --git a/src/main/java/com/l2jserver/service/game/scripting/ScriptCompiler.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/scripting/ScriptCompiler.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/scripting/ScriptCompiler.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/scripting/ScriptCompiler.java
diff --git a/src/main/java/com/l2jserver/service/game/scripting/ScriptContext.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/scripting/ScriptContext.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/scripting/ScriptContext.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/scripting/ScriptContext.java
diff --git a/src/main/java/com/l2jserver/service/game/scripting/ScriptingService.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/scripting/ScriptingService.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/scripting/ScriptingService.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/scripting/ScriptingService.java
diff --git a/src/main/java/com/l2jserver/service/game/scripting/ScriptingServiceImpl.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/scripting/ScriptingServiceImpl.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/scripting/ScriptingServiceImpl.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/scripting/ScriptingServiceImpl.java
diff --git a/src/main/java/com/l2jserver/service/game/scripting/classlistener/ClassListener.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/scripting/classlistener/ClassListener.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/scripting/classlistener/ClassListener.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/scripting/classlistener/ClassListener.java
diff --git a/src/main/java/com/l2jserver/service/game/scripting/classlistener/DefaultClassListener.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/scripting/classlistener/DefaultClassListener.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/scripting/classlistener/DefaultClassListener.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/scripting/classlistener/DefaultClassListener.java
diff --git a/src/main/java/com/l2jserver/service/game/scripting/classlistener/Loader.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/scripting/classlistener/Loader.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/scripting/classlistener/Loader.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/scripting/classlistener/Loader.java
diff --git a/src/main/java/com/l2jserver/service/game/scripting/classlistener/Unloader.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/scripting/classlistener/Unloader.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/scripting/classlistener/Unloader.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/scripting/classlistener/Unloader.java
diff --git a/src/main/java/com/l2jserver/service/game/scripting/impl/BinaryClass.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/scripting/impl/BinaryClass.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/scripting/impl/BinaryClass.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/scripting/impl/BinaryClass.java
diff --git a/src/main/java/com/l2jserver/service/game/scripting/impl/ErrorListener.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/scripting/impl/ErrorListener.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/scripting/impl/ErrorListener.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/scripting/impl/ErrorListener.java
diff --git a/src/main/java/com/l2jserver/service/game/scripting/impl/JavaSourceFromByteArray.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/scripting/impl/JavaSourceFromByteArray.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/scripting/impl/JavaSourceFromByteArray.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/scripting/impl/JavaSourceFromByteArray.java
diff --git a/src/main/java/com/l2jserver/service/game/scripting/impl/JavaSourceFromFile.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/scripting/impl/JavaSourceFromFile.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/scripting/impl/JavaSourceFromFile.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/scripting/impl/JavaSourceFromFile.java
diff --git a/src/main/java/com/l2jserver/service/game/scripting/impl/ScriptContextImpl.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/scripting/impl/ScriptContextImpl.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/scripting/impl/ScriptContextImpl.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/scripting/impl/ScriptContextImpl.java
diff --git a/src/main/java/com/l2jserver/service/game/scripting/impl/compiled/PrecompiledScriptClassLoader.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/scripting/impl/compiled/PrecompiledScriptClassLoader.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/scripting/impl/compiled/PrecompiledScriptClassLoader.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/scripting/impl/compiled/PrecompiledScriptClassLoader.java
diff --git a/src/main/java/com/l2jserver/service/game/scripting/impl/compiled/PrecompiledScriptCompiler.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/scripting/impl/compiled/PrecompiledScriptCompiler.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/scripting/impl/compiled/PrecompiledScriptCompiler.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/scripting/impl/compiled/PrecompiledScriptCompiler.java
diff --git a/src/main/java/com/l2jserver/service/game/scripting/impl/javacc/ClassFileManager.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/scripting/impl/javacc/ClassFileManager.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/scripting/impl/javacc/ClassFileManager.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/scripting/impl/javacc/ClassFileManager.java
diff --git a/src/main/java/com/l2jserver/service/game/scripting/impl/javacc/ScriptClassLoaderImpl.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/scripting/impl/javacc/ScriptClassLoaderImpl.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/scripting/impl/javacc/ScriptClassLoaderImpl.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/scripting/impl/javacc/ScriptClassLoaderImpl.java
diff --git a/src/main/java/com/l2jserver/service/game/scripting/impl/javacc/ScriptCompilerImpl.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/scripting/impl/javacc/ScriptCompilerImpl.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/scripting/impl/javacc/ScriptCompilerImpl.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/scripting/impl/javacc/ScriptCompilerImpl.java
diff --git a/src/main/java/com/l2jserver/service/game/scripting/impl/javacc/VirtualClassURLConnection.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/scripting/impl/javacc/VirtualClassURLConnection.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/scripting/impl/javacc/VirtualClassURLConnection.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/scripting/impl/javacc/VirtualClassURLConnection.java
diff --git a/src/main/java/com/l2jserver/service/game/scripting/impl/javacc/VirtualClassURLStreamHandler.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/scripting/impl/javacc/VirtualClassURLStreamHandler.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/scripting/impl/javacc/VirtualClassURLStreamHandler.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/scripting/impl/javacc/VirtualClassURLStreamHandler.java
diff --git a/src/main/java/com/l2jserver/service/game/scripting/scriptmanager/ScriptInfo.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/scripting/scriptmanager/ScriptInfo.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/scripting/scriptmanager/ScriptInfo.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/scripting/scriptmanager/ScriptInfo.java
diff --git a/src/main/java/com/l2jserver/service/game/scripting/scriptmanager/ScriptList.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/scripting/scriptmanager/ScriptList.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/scripting/scriptmanager/ScriptList.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/scripting/scriptmanager/ScriptList.java
diff --git a/src/main/java/com/l2jserver/service/game/spawn/AlreadySpawnedServiceException.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/spawn/AlreadySpawnedServiceException.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/spawn/AlreadySpawnedServiceException.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/spawn/AlreadySpawnedServiceException.java
diff --git a/src/main/java/com/l2jserver/service/game/spawn/CharacterAlreadyTeleportingServiceException.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/spawn/CharacterAlreadyTeleportingServiceException.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/spawn/CharacterAlreadyTeleportingServiceException.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/spawn/CharacterAlreadyTeleportingServiceException.java
diff --git a/src/main/java/com/l2jserver/service/game/spawn/CharacterNotTeleportingServiceException.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/spawn/CharacterNotTeleportingServiceException.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/spawn/CharacterNotTeleportingServiceException.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/spawn/CharacterNotTeleportingServiceException.java
diff --git a/src/main/java/com/l2jserver/service/game/spawn/NotSpawnedServiceException.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/spawn/NotSpawnedServiceException.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/spawn/NotSpawnedServiceException.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/spawn/NotSpawnedServiceException.java
diff --git a/src/main/java/com/l2jserver/service/game/spawn/SpawnPointNotFoundServiceException.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/spawn/SpawnPointNotFoundServiceException.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/spawn/SpawnPointNotFoundServiceException.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/spawn/SpawnPointNotFoundServiceException.java
diff --git a/src/main/java/com/l2jserver/service/game/spawn/SpawnService.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/spawn/SpawnService.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/spawn/SpawnService.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/spawn/SpawnService.java
diff --git a/src/main/java/com/l2jserver/service/game/spawn/SpawnServiceException.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/spawn/SpawnServiceException.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/spawn/SpawnServiceException.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/spawn/SpawnServiceException.java
diff --git a/src/main/java/com/l2jserver/service/game/spawn/SpawnServiceImpl.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/spawn/SpawnServiceImpl.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/spawn/SpawnServiceImpl.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/spawn/SpawnServiceImpl.java
diff --git a/src/main/java/com/l2jserver/service/game/template/TemplateService.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/template/TemplateService.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/template/TemplateService.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/template/TemplateService.java
diff --git a/src/main/java/com/l2jserver/service/game/template/XMLTemplateService.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/template/XMLTemplateService.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/template/XMLTemplateService.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/template/XMLTemplateService.java
diff --git a/src/main/java/com/l2jserver/service/game/world/CachedWorldIDService.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/world/CachedWorldIDService.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/world/CachedWorldIDService.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/world/CachedWorldIDService.java
diff --git a/src/main/java/com/l2jserver/service/game/world/WorldIDService.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/world/WorldIDService.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/world/WorldIDService.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/world/WorldIDService.java
diff --git a/src/main/java/com/l2jserver/service/game/world/WorldService.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/world/WorldService.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/world/WorldService.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/world/WorldService.java
diff --git a/src/main/java/com/l2jserver/service/game/world/WorldServiceImpl.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/world/WorldServiceImpl.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/world/WorldServiceImpl.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/world/WorldServiceImpl.java
diff --git a/src/main/java/com/l2jserver/service/game/world/event/FilteredWorldListener.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/world/event/FilteredWorldListener.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/world/event/FilteredWorldListener.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/world/event/FilteredWorldListener.java
diff --git a/src/main/java/com/l2jserver/service/game/world/event/TypedWorldListener.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/world/event/TypedWorldListener.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/world/event/TypedWorldListener.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/world/event/TypedWorldListener.java
diff --git a/src/main/java/com/l2jserver/service/game/world/event/WorldEvent.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/world/event/WorldEvent.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/world/event/WorldEvent.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/world/event/WorldEvent.java
diff --git a/src/main/java/com/l2jserver/service/game/world/event/WorldEventDispatcher.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/world/event/WorldEventDispatcher.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/world/event/WorldEventDispatcher.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/world/event/WorldEventDispatcher.java
diff --git a/src/main/java/com/l2jserver/service/game/world/event/WorldEventDispatcherImpl.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/world/event/WorldEventDispatcherImpl.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/world/event/WorldEventDispatcherImpl.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/world/event/WorldEventDispatcherImpl.java
diff --git a/src/main/java/com/l2jserver/service/game/world/event/WorldEventFuture.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/world/event/WorldEventFuture.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/world/event/WorldEventFuture.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/world/event/WorldEventFuture.java
diff --git a/src/main/java/com/l2jserver/service/game/world/event/WorldListener.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/world/event/WorldListener.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/world/event/WorldListener.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/world/event/WorldListener.java
diff --git a/src/main/java/com/l2jserver/service/game/world/filter/AndFilter.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/world/filter/AndFilter.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/world/filter/AndFilter.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/world/filter/AndFilter.java
diff --git a/src/main/java/com/l2jserver/service/game/world/filter/ExcludeFilter.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/world/filter/ExcludeFilter.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/world/filter/ExcludeFilter.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/world/filter/ExcludeFilter.java
diff --git a/src/main/java/com/l2jserver/service/game/world/filter/FilterIterator.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/world/filter/FilterIterator.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/world/filter/FilterIterator.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/world/filter/FilterIterator.java
diff --git a/src/main/java/com/l2jserver/service/game/world/filter/NotFilter.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/world/filter/NotFilter.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/world/filter/NotFilter.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/world/filter/NotFilter.java
diff --git a/src/main/java/com/l2jserver/service/game/world/filter/OrFilter.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/world/filter/OrFilter.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/world/filter/OrFilter.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/world/filter/OrFilter.java
diff --git a/src/main/java/com/l2jserver/service/game/world/filter/WorldFilters.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/world/filter/WorldFilters.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/world/filter/WorldFilters.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/world/filter/WorldFilters.java
diff --git a/src/main/java/com/l2jserver/service/game/world/filter/WorldObjectFilter.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/world/filter/WorldObjectFilter.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/world/filter/WorldObjectFilter.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/world/filter/WorldObjectFilter.java
diff --git a/src/main/java/com/l2jserver/service/game/world/filter/impl/CharacterBroadcastFilter.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/world/filter/impl/CharacterBroadcastFilter.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/world/filter/impl/CharacterBroadcastFilter.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/world/filter/impl/CharacterBroadcastFilter.java
diff --git a/src/main/java/com/l2jserver/service/game/world/filter/impl/IDFilter.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/world/filter/impl/IDFilter.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/world/filter/impl/IDFilter.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/world/filter/impl/IDFilter.java
diff --git a/src/main/java/com/l2jserver/service/game/world/filter/impl/InstanceFilter.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/world/filter/impl/InstanceFilter.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/world/filter/impl/InstanceFilter.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/world/filter/impl/InstanceFilter.java
diff --git a/src/main/java/com/l2jserver/service/game/world/filter/impl/KnownListFilter.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/world/filter/impl/KnownListFilter.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/world/filter/impl/KnownListFilter.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/world/filter/impl/KnownListFilter.java
diff --git a/src/main/java/com/l2jserver/service/game/world/filter/impl/KnownListUpdateFilter.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/world/filter/impl/KnownListUpdateFilter.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/world/filter/impl/KnownListUpdateFilter.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/world/filter/impl/KnownListUpdateFilter.java
diff --git a/src/main/java/com/l2jserver/service/game/world/filter/impl/RangeFilter.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/world/filter/impl/RangeFilter.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/world/filter/impl/RangeFilter.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/world/filter/impl/RangeFilter.java
diff --git a/src/main/java/com/l2jserver/service/game/world/filter/impl/RangePointFilter.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/world/filter/impl/RangePointFilter.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/game/world/filter/impl/RangePointFilter.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/world/filter/impl/RangePointFilter.java
diff --git a/src/main/java/com/l2jserver/service/network/NettyNetworkService.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/network/NettyNetworkService.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/network/NettyNetworkService.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/network/NettyNetworkService.java
diff --git a/src/main/java/com/l2jserver/service/network/NetworkService.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/network/NetworkService.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/network/NetworkService.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/network/NetworkService.java
diff --git a/src/main/java/com/l2jserver/service/network/broadcast/BroadcastService.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/network/broadcast/BroadcastService.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/network/broadcast/BroadcastService.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/network/broadcast/BroadcastService.java
diff --git a/src/main/java/com/l2jserver/service/network/broadcast/BroadcastServiceImpl.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/network/broadcast/BroadcastServiceImpl.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/network/broadcast/BroadcastServiceImpl.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/network/broadcast/BroadcastServiceImpl.java
diff --git a/src/main/java/com/l2jserver/service/network/gameguard/GameGuardService.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/network/gameguard/GameGuardService.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/network/gameguard/GameGuardService.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/network/gameguard/GameGuardService.java
diff --git a/src/main/java/com/l2jserver/service/network/gameguard/GameGuardServiceImpl.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/network/gameguard/GameGuardServiceImpl.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/network/gameguard/GameGuardServiceImpl.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/network/gameguard/GameGuardServiceImpl.java
diff --git a/src/main/java/com/l2jserver/service/network/keygen/BlowfishKeygenService.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/network/keygen/BlowfishKeygenService.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/network/keygen/BlowfishKeygenService.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/network/keygen/BlowfishKeygenService.java
diff --git a/src/main/java/com/l2jserver/service/network/keygen/PseudoRandomBlowfishKeygenService.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/network/keygen/PseudoRandomBlowfishKeygenService.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/network/keygen/PseudoRandomBlowfishKeygenService.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/network/keygen/PseudoRandomBlowfishKeygenService.java
diff --git a/src/main/java/com/l2jserver/service/network/keygen/SecureBlowfishKeygenService.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/network/keygen/SecureBlowfishKeygenService.java
similarity index 100%
rename from src/main/java/com/l2jserver/service/network/keygen/SecureBlowfishKeygenService.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/service/network/keygen/SecureBlowfishKeygenService.java
diff --git a/src/main/java/com/l2jserver/util/calculator/AbstractDoubleFunction.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/util/calculator/AbstractDoubleFunction.java
similarity index 100%
rename from src/main/java/com/l2jserver/util/calculator/AbstractDoubleFunction.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/util/calculator/AbstractDoubleFunction.java
diff --git a/src/main/java/com/l2jserver/util/calculator/Calculator.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/util/calculator/Calculator.java
similarity index 100%
rename from src/main/java/com/l2jserver/util/calculator/Calculator.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/util/calculator/Calculator.java
diff --git a/src/main/java/com/l2jserver/util/calculator/CalculatorContext.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/util/calculator/CalculatorContext.java
similarity index 100%
rename from src/main/java/com/l2jserver/util/calculator/CalculatorContext.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/util/calculator/CalculatorContext.java
diff --git a/src/main/java/com/l2jserver/util/calculator/ComplexCalculator.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/util/calculator/ComplexCalculator.java
similarity index 100%
rename from src/main/java/com/l2jserver/util/calculator/ComplexCalculator.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/util/calculator/ComplexCalculator.java
diff --git a/src/main/java/com/l2jserver/util/calculator/Function.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/util/calculator/Function.java
similarity index 100%
rename from src/main/java/com/l2jserver/util/calculator/Function.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/util/calculator/Function.java
diff --git a/src/main/java/com/l2jserver/util/calculator/SimpleCalculator.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/util/calculator/SimpleCalculator.java
similarity index 100%
rename from src/main/java/com/l2jserver/util/calculator/SimpleCalculator.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/util/calculator/SimpleCalculator.java
diff --git a/src/main/java/com/l2jserver/util/html/L2BodyTag.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/util/html/L2BodyTag.java
similarity index 100%
rename from src/main/java/com/l2jserver/util/html/L2BodyTag.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/util/html/L2BodyTag.java
diff --git a/src/main/java/com/l2jserver/util/html/L2BrTag.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/util/html/L2BrTag.java
similarity index 100%
rename from src/main/java/com/l2jserver/util/html/L2BrTag.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/util/html/L2BrTag.java
diff --git a/src/main/java/com/l2jserver/util/html/L2CenterTag.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/util/html/L2CenterTag.java
similarity index 100%
rename from src/main/java/com/l2jserver/util/html/L2CenterTag.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/util/html/L2CenterTag.java
diff --git a/src/main/java/com/l2jserver/util/html/L2DivTag.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/util/html/L2DivTag.java
similarity index 100%
rename from src/main/java/com/l2jserver/util/html/L2DivTag.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/util/html/L2DivTag.java
diff --git a/src/main/java/com/l2jserver/util/html/L2FontTag.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/util/html/L2FontTag.java
similarity index 100%
rename from src/main/java/com/l2jserver/util/html/L2FontTag.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/util/html/L2FontTag.java
diff --git a/src/main/java/com/l2jserver/util/html/L2HeadTag.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/util/html/L2HeadTag.java
similarity index 100%
rename from src/main/java/com/l2jserver/util/html/L2HeadTag.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/util/html/L2HeadTag.java
diff --git a/src/main/java/com/l2jserver/util/html/L2HtmlTag.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/util/html/L2HtmlTag.java
similarity index 100%
rename from src/main/java/com/l2jserver/util/html/L2HtmlTag.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/util/html/L2HtmlTag.java
diff --git a/src/main/java/com/l2jserver/util/html/L2ImageTag.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/util/html/L2ImageTag.java
similarity index 100%
rename from src/main/java/com/l2jserver/util/html/L2ImageTag.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/util/html/L2ImageTag.java
diff --git a/src/main/java/com/l2jserver/util/html/L2LinkTag.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/util/html/L2LinkTag.java
similarity index 100%
rename from src/main/java/com/l2jserver/util/html/L2LinkTag.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/util/html/L2LinkTag.java
diff --git a/src/main/java/com/l2jserver/util/html/L2NewLineTag.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/util/html/L2NewLineTag.java
similarity index 100%
rename from src/main/java/com/l2jserver/util/html/L2NewLineTag.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/util/html/L2NewLineTag.java
diff --git a/src/main/java/com/l2jserver/util/html/L2TitleTag.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/util/html/L2TitleTag.java
similarity index 100%
rename from src/main/java/com/l2jserver/util/html/L2TitleTag.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/util/html/L2TitleTag.java
diff --git a/src/main/java/com/l2jserver/util/html/markup/HtmlTemplate.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/util/html/markup/HtmlTemplate.java
similarity index 100%
rename from src/main/java/com/l2jserver/util/html/markup/HtmlTemplate.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/util/html/markup/HtmlTemplate.java
diff --git a/src/main/java/com/l2jserver/util/html/markup/MarkupTag.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/util/html/markup/MarkupTag.java
similarity index 100%
rename from src/main/java/com/l2jserver/util/html/markup/MarkupTag.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/util/html/markup/MarkupTag.java
diff --git a/src/main/java/com/l2jserver/util/jaxb/CharacterTemplateIDAdapter.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/util/jaxb/CharacterTemplateIDAdapter.java
similarity index 100%
rename from src/main/java/com/l2jserver/util/jaxb/CharacterTemplateIDAdapter.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/util/jaxb/CharacterTemplateIDAdapter.java
diff --git a/src/main/java/com/l2jserver/util/jaxb/CoordinateAdapter.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/util/jaxb/CoordinateAdapter.java
similarity index 100%
rename from src/main/java/com/l2jserver/util/jaxb/CoordinateAdapter.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/util/jaxb/CoordinateAdapter.java
diff --git a/src/main/java/com/l2jserver/util/jaxb/ItemTemplateIDAdapter.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/util/jaxb/ItemTemplateIDAdapter.java
similarity index 100%
rename from src/main/java/com/l2jserver/util/jaxb/ItemTemplateIDAdapter.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/util/jaxb/ItemTemplateIDAdapter.java
diff --git a/src/main/java/com/l2jserver/util/jaxb/MapAdapter.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/util/jaxb/MapAdapter.java
similarity index 100%
rename from src/main/java/com/l2jserver/util/jaxb/MapAdapter.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/util/jaxb/MapAdapter.java
diff --git a/src/main/java/com/l2jserver/util/jaxb/NPCTemplateIDAdapter.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/util/jaxb/NPCTemplateIDAdapter.java
similarity index 100%
rename from src/main/java/com/l2jserver/util/jaxb/NPCTemplateIDAdapter.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/util/jaxb/NPCTemplateIDAdapter.java
diff --git a/src/main/java/com/l2jserver/util/jaxb/SkillTemplateIDAdapter.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/util/jaxb/SkillTemplateIDAdapter.java
similarity index 100%
rename from src/main/java/com/l2jserver/util/jaxb/SkillTemplateIDAdapter.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/util/jaxb/SkillTemplateIDAdapter.java
diff --git a/src/main/java/com/l2jserver/util/jaxb/TeleportationTemplateIDAdapter.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/util/jaxb/TeleportationTemplateIDAdapter.java
similarity index 100%
rename from src/main/java/com/l2jserver/util/jaxb/TeleportationTemplateIDAdapter.java
rename to l2jserver2-gameserver/src/main/java/com/l2jserver/util/jaxb/TeleportationTemplateIDAdapter.java
diff --git a/src/test/java/com/l2jserver/db/dao/mysql5/MySQL5CharacterDAOTest.java b/l2jserver2-gameserver/src/test/java/com/l2jserver/db/dao/mysql5/MySQL5CharacterDAOTest.java
similarity index 100%
rename from src/test/java/com/l2jserver/db/dao/mysql5/MySQL5CharacterDAOTest.java
rename to l2jserver2-gameserver/src/test/java/com/l2jserver/db/dao/mysql5/MySQL5CharacterDAOTest.java
diff --git a/src/test/java/com/l2jserver/model/id/factory/IDFactoryTest.java b/l2jserver2-gameserver/src/test/java/com/l2jserver/model/id/provider/CharacterIDProviderTest.java
similarity index 95%
rename from src/test/java/com/l2jserver/model/id/factory/IDFactoryTest.java
rename to l2jserver2-gameserver/src/test/java/com/l2jserver/model/id/provider/CharacterIDProviderTest.java
index 994c82687..cfaac26b0 100644
--- a/src/test/java/com/l2jserver/model/id/factory/IDFactoryTest.java
+++ b/l2jserver2-gameserver/src/test/java/com/l2jserver/model/id/provider/CharacterIDProviderTest.java
@@ -14,7 +14,7 @@
* You should have received a copy of the GNU General Public License
* along with l2jserver. If not, see .
*/
-package com.l2jserver.model.id.factory;
+package com.l2jserver.model.id.provider;
import junit.framework.Assert;
@@ -26,7 +26,6 @@ import com.google.inject.Injector;
import com.l2jserver.model.id.ID;
import com.l2jserver.model.id.object.CharacterID;
import com.l2jserver.model.id.object.provider.CharacterIDProvider;
-import com.l2jserver.model.id.provider.IDProviderModule;
import com.l2jserver.model.world.L2Character;
import com.l2jserver.service.ServiceManager;
import com.l2jserver.service.ServiceModule;
@@ -36,7 +35,7 @@ import com.l2jserver.service.database.H2DAOModule;
import com.l2jserver.service.game.template.TemplateService;
import com.l2jserver.service.game.world.WorldService;
-public class IDFactoryTest {
+public class CharacterIDProviderTest {
private final Injector injector = Guice.createInjector(new ServiceModule(),
new H2DAOModule(), new IDProviderModule());
private CharacterIDProvider charIdFactory;
diff --git a/src/test/java/com/l2jserver/service/game/scripting/ScriptingServiceImplTest.java b/l2jserver2-gameserver/src/test/java/com/l2jserver/service/game/scripting/ScriptingServiceImplTest.java
similarity index 100%
rename from src/test/java/com/l2jserver/service/game/scripting/ScriptingServiceImplTest.java
rename to l2jserver2-gameserver/src/test/java/com/l2jserver/service/game/scripting/ScriptingServiceImplTest.java
diff --git a/src/test/java/com/l2jserver/service/game/scripting/impl/compiled/PrecompiledScriptCompilerTest.java b/l2jserver2-gameserver/src/test/java/com/l2jserver/service/game/scripting/impl/compiled/PrecompiledScriptCompilerTest.java
similarity index 100%
rename from src/test/java/com/l2jserver/service/game/scripting/impl/compiled/PrecompiledScriptCompilerTest.java
rename to l2jserver2-gameserver/src/test/java/com/l2jserver/service/game/scripting/impl/compiled/PrecompiledScriptCompilerTest.java
diff --git a/src/test/java/com/l2jserver/service/game/template/StaticTemplateServiceTest.java b/l2jserver2-gameserver/src/test/java/com/l2jserver/service/game/template/StaticTemplateServiceTest.java
similarity index 100%
rename from src/test/java/com/l2jserver/service/game/template/StaticTemplateServiceTest.java
rename to l2jserver2-gameserver/src/test/java/com/l2jserver/service/game/template/StaticTemplateServiceTest.java
diff --git a/src/test/java/com/l2jserver/service/world/WorldEventDispatcherImplTest.java b/l2jserver2-gameserver/src/test/java/com/l2jserver/service/world/WorldEventDispatcherImplTest.java
similarity index 99%
rename from src/test/java/com/l2jserver/service/world/WorldEventDispatcherImplTest.java
rename to l2jserver2-gameserver/src/test/java/com/l2jserver/service/world/WorldEventDispatcherImplTest.java
index aa3fec3ab..23f1bfc12 100644
--- a/src/test/java/com/l2jserver/service/world/WorldEventDispatcherImplTest.java
+++ b/l2jserver2-gameserver/src/test/java/com/l2jserver/service/world/WorldEventDispatcherImplTest.java
@@ -18,8 +18,7 @@ package com.l2jserver.service.world;
import java.util.concurrent.atomic.AtomicBoolean;
-import junit.framework.Assert;
-
+import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
diff --git a/src/test/java/com/l2jserver/service/world/WorldServiceImplTest.java b/l2jserver2-gameserver/src/test/java/com/l2jserver/service/world/WorldServiceImplTest.java
similarity index 100%
rename from src/test/java/com/l2jserver/service/world/WorldServiceImplTest.java
rename to l2jserver2-gameserver/src/test/java/com/l2jserver/service/world/WorldServiceImplTest.java
diff --git a/src/test/java/com/l2jserver/util/calculator/CalculatorTest.java b/l2jserver2-gameserver/src/test/java/com/l2jserver/util/calculator/CalculatorTest.java
similarity index 100%
rename from src/test/java/com/l2jserver/util/calculator/CalculatorTest.java
rename to l2jserver2-gameserver/src/test/java/com/l2jserver/util/calculator/CalculatorTest.java
diff --git a/src/test/resources/scripting/ScriptingCompilerTest.java b/l2jserver2-gameserver/src/test/resources/scripting/ScriptingCompilerTest.java
similarity index 100%
rename from src/test/resources/scripting/ScriptingCompilerTest.java
rename to l2jserver2-gameserver/src/test/resources/scripting/ScriptingCompilerTest.java
diff --git a/src/test/resources/scripting/testcase.xml b/l2jserver2-gameserver/src/test/resources/scripting/testcase.xml
similarity index 100%
rename from src/test/resources/scripting/testcase.xml
rename to l2jserver2-gameserver/src/test/resources/scripting/testcase.xml
diff --git a/src/test/resources/test-config.xml b/l2jserver2-gameserver/src/test/resources/test-config.xml
similarity index 100%
rename from src/test/resources/test-config.xml
rename to l2jserver2-gameserver/src/test/resources/test-config.xml
diff --git a/src/tool/java/com/l2jserver/model/template/CharacterTemplateConverter.java b/l2jserver2-gameserver/src/tool/java/com/l2jserver/model/template/CharacterTemplateConverter.java
similarity index 100%
rename from src/tool/java/com/l2jserver/model/template/CharacterTemplateConverter.java
rename to l2jserver2-gameserver/src/tool/java/com/l2jserver/model/template/CharacterTemplateConverter.java
diff --git a/src/tool/java/com/l2jserver/model/template/NPCTemplateConverter.java b/l2jserver2-gameserver/src/tool/java/com/l2jserver/model/template/NPCTemplateConverter.java
similarity index 100%
rename from src/tool/java/com/l2jserver/model/template/NPCTemplateConverter.java
rename to l2jserver2-gameserver/src/tool/java/com/l2jserver/model/template/NPCTemplateConverter.java
diff --git a/src/tool/java/com/l2jserver/model/template/SkillTemplateConverter.java b/l2jserver2-gameserver/src/tool/java/com/l2jserver/model/template/SkillTemplateConverter.java
similarity index 100%
rename from src/tool/java/com/l2jserver/model/template/SkillTemplateConverter.java
rename to l2jserver2-gameserver/src/tool/java/com/l2jserver/model/template/SkillTemplateConverter.java
diff --git a/src/tool/java/com/l2jserver/tool/CharacterSQLEnumGenerator.java b/l2jserver2-gameserver/src/tool/java/com/l2jserver/tool/CharacterSQLEnumGenerator.java
similarity index 100%
rename from src/tool/java/com/l2jserver/tool/CharacterSQLEnumGenerator.java
rename to l2jserver2-gameserver/src/tool/java/com/l2jserver/tool/CharacterSQLEnumGenerator.java
diff --git a/src/tool/java/com/l2jserver/tool/EndianessTest.java b/l2jserver2-gameserver/src/tool/java/com/l2jserver/tool/EndianessTest.java
similarity index 100%
rename from src/tool/java/com/l2jserver/tool/EndianessTest.java
rename to l2jserver2-gameserver/src/tool/java/com/l2jserver/tool/EndianessTest.java
diff --git a/src/tool/java/com/l2jserver/tool/conversor/itemtemplate/ItemListXml.java b/l2jserver2-gameserver/src/tool/java/com/l2jserver/tool/conversor/itemtemplate/ItemListXml.java
similarity index 100%
rename from src/tool/java/com/l2jserver/tool/conversor/itemtemplate/ItemListXml.java
rename to l2jserver2-gameserver/src/tool/java/com/l2jserver/tool/conversor/itemtemplate/ItemListXml.java
diff --git a/src/tool/java/com/l2jserver/tool/conversor/itemtemplate/ItemSetXml.java b/l2jserver2-gameserver/src/tool/java/com/l2jserver/tool/conversor/itemtemplate/ItemSetXml.java
similarity index 100%
rename from src/tool/java/com/l2jserver/tool/conversor/itemtemplate/ItemSetXml.java
rename to l2jserver2-gameserver/src/tool/java/com/l2jserver/tool/conversor/itemtemplate/ItemSetXml.java
diff --git a/src/tool/java/com/l2jserver/tool/conversor/itemtemplate/ItemTemplateBase.txt b/l2jserver2-gameserver/src/tool/java/com/l2jserver/tool/conversor/itemtemplate/ItemTemplateBase.txt
similarity index 100%
rename from src/tool/java/com/l2jserver/tool/conversor/itemtemplate/ItemTemplateBase.txt
rename to l2jserver2-gameserver/src/tool/java/com/l2jserver/tool/conversor/itemtemplate/ItemTemplateBase.txt
diff --git a/src/tool/java/com/l2jserver/tool/conversor/itemtemplate/ItemTemplateConversor.java b/l2jserver2-gameserver/src/tool/java/com/l2jserver/tool/conversor/itemtemplate/ItemTemplateConversor.java
similarity index 100%
rename from src/tool/java/com/l2jserver/tool/conversor/itemtemplate/ItemTemplateConversor.java
rename to l2jserver2-gameserver/src/tool/java/com/l2jserver/tool/conversor/itemtemplate/ItemTemplateConversor.java
diff --git a/src/tool/java/com/l2jserver/tool/conversor/itemtemplate/ItemValueXml.java b/l2jserver2-gameserver/src/tool/java/com/l2jserver/tool/conversor/itemtemplate/ItemValueXml.java
similarity index 100%
rename from src/tool/java/com/l2jserver/tool/conversor/itemtemplate/ItemValueXml.java
rename to l2jserver2-gameserver/src/tool/java/com/l2jserver/tool/conversor/itemtemplate/ItemValueXml.java
diff --git a/src/tool/java/com/l2jserver/tool/conversor/itemtemplate/ItemXml.java b/l2jserver2-gameserver/src/tool/java/com/l2jserver/tool/conversor/itemtemplate/ItemXml.java
similarity index 100%
rename from src/tool/java/com/l2jserver/tool/conversor/itemtemplate/ItemXml.java
rename to l2jserver2-gameserver/src/tool/java/com/l2jserver/tool/conversor/itemtemplate/ItemXml.java
diff --git a/src/tool/java/com/l2jserver/tool/conversor/itemtemplate/doc.txt b/l2jserver2-gameserver/src/tool/java/com/l2jserver/tool/conversor/itemtemplate/doc.txt
similarity index 100%
rename from src/tool/java/com/l2jserver/tool/conversor/itemtemplate/doc.txt
rename to l2jserver2-gameserver/src/tool/java/com/l2jserver/tool/conversor/itemtemplate/doc.txt
diff --git a/l2jserver2-loginserver/pom.xml b/l2jserver2-loginserver/pom.xml
new file mode 100644
index 000000000..f6d6e5ec8
--- /dev/null
+++ b/l2jserver2-loginserver/pom.xml
@@ -0,0 +1,88 @@
+
+ 4.0.0
+
+ l2jserver2
+ com.l2jserver
+ 2.0.0
+ ..
+
+ l2jserver2-loginserver
+
+
+
+ junit
+ junit
+ 4.8.2
+ jar
+ compile
+
+
+ org.jboss.netty
+ netty
+ 3.2.4.Final
+ runtime
+
+
+ com.google.inject
+ guice
+ 3.0
+ jar
+ runtime
+
+
+ com.google.inject.extensions
+ guice-assistedinject
+ 3.0
+ jar
+ runtime
+
+
+ org.slf4j
+ slf4j-log4j12
+ 1.6.1
+ jar
+ runtime
+
+
+ mysql
+ mysql-connector-java
+ 5.1.16
+ jar
+ runtime
+
+
+ javacc
+ javacc
+ 4.1
+ jar
+ runtime
+
+
+ org.apache.commons
+ commons-io
+ 1.3.2
+ jar
+ runtime
+
+
+ commons-dbcp
+ commons-dbcp
+ 20030825.184428
+ jar
+ runtime
+
+
+ commons-pool
+ commons-pool
+ 20030825.183949
+ jar
+ runtime
+
+
+ com.l2jserver
+ l2jserver2-common
+ 2.0.0
+
+
+
\ No newline at end of file
diff --git a/l2jserver2-loginserver/src/main/java/com/l2jserver/L2JLoginServer.java b/l2jserver2-loginserver/src/main/java/com/l2jserver/L2JLoginServer.java
new file mode 100644
index 000000000..feba99504
--- /dev/null
+++ b/l2jserver2-loginserver/src/main/java/com/l2jserver/L2JLoginServer.java
@@ -0,0 +1,13 @@
+package com.l2jserver;
+
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+
+public class L2JLoginServer {
+ private final Injector injector = Guice
+ .createInjector(new LoginServerModule());
+
+ public Injector getInjector() {
+ return injector;
+ }
+}
diff --git a/l2jserver2-loginserver/src/main/java/com/l2jserver/LoginServerMain.java b/l2jserver2-loginserver/src/main/java/com/l2jserver/LoginServerMain.java
new file mode 100644
index 000000000..2c5483b50
--- /dev/null
+++ b/l2jserver2-loginserver/src/main/java/com/l2jserver/LoginServerMain.java
@@ -0,0 +1,8 @@
+package com.l2jserver;
+
+public class LoginServerMain {
+ public static void main(String[] args) {
+ // final L2JLoginServer server = new L2JLoginServer();
+ // TODO initilization
+ }
+}
diff --git a/l2jserver2-loginserver/src/main/java/com/l2jserver/LoginServerModule.java b/l2jserver2-loginserver/src/main/java/com/l2jserver/LoginServerModule.java
new file mode 100644
index 000000000..f9ddead7c
--- /dev/null
+++ b/l2jserver2-loginserver/src/main/java/com/l2jserver/LoginServerModule.java
@@ -0,0 +1,11 @@
+package com.l2jserver;
+
+import com.google.inject.AbstractModule;
+import com.l2jserver.service.ServiceModule;
+
+public class LoginServerModule extends AbstractModule {
+ @Override
+ protected void configure() {
+ install(new ServiceModule());
+ }
+}
diff --git a/l2jserver2-loginserver/src/main/java/com/l2jserver/game/net/Lineage2LSChannelPipelineFactory.java b/l2jserver2-loginserver/src/main/java/com/l2jserver/game/net/Lineage2LSChannelPipelineFactory.java
new file mode 100644
index 000000000..e8d13db9c
--- /dev/null
+++ b/l2jserver2-loginserver/src/main/java/com/l2jserver/game/net/Lineage2LSChannelPipelineFactory.java
@@ -0,0 +1,16 @@
+package com.l2jserver.game.net;
+
+import org.jboss.netty.channel.ChannelPipeline;
+import org.jboss.netty.channel.ChannelPipelineFactory;
+import static org.jboss.netty.channel.Channels.*;
+
+public class Lineage2LSChannelPipelineFactory implements ChannelPipelineFactory {
+ @Override
+ public ChannelPipeline getPipeline() throws Exception {
+ final ChannelPipeline pipeline = pipeline();
+
+ pipeline.addLast("", null);
+
+ return pipeline;
+ }
+}
diff --git a/l2jserver2-loginserver/src/main/java/com/l2jserver/game/net/codec/Lineage2LSFrameDecoder.java b/l2jserver2-loginserver/src/main/java/com/l2jserver/game/net/codec/Lineage2LSFrameDecoder.java
new file mode 100644
index 000000000..6de192f02
--- /dev/null
+++ b/l2jserver2-loginserver/src/main/java/com/l2jserver/game/net/codec/Lineage2LSFrameDecoder.java
@@ -0,0 +1,9 @@
+package com.l2jserver.game.net.codec;
+
+import org.jboss.netty.handler.codec.frame.LengthFieldBasedFrameDecoder;
+
+public class Lineage2LSFrameDecoder extends LengthFieldBasedFrameDecoder {
+ public Lineage2LSFrameDecoder() {
+ super(16 * 1024, 0, 2);
+ }
+}
diff --git a/l2jserver2-loginserver/src/main/java/com/l2jserver/game/net/codec/Lineage2LSFrameEncoder.java b/l2jserver2-loginserver/src/main/java/com/l2jserver/game/net/codec/Lineage2LSFrameEncoder.java
new file mode 100644
index 000000000..7b318f35d
--- /dev/null
+++ b/l2jserver2-loginserver/src/main/java/com/l2jserver/game/net/codec/Lineage2LSFrameEncoder.java
@@ -0,0 +1,9 @@
+package com.l2jserver.game.net.codec;
+
+import org.jboss.netty.handler.codec.frame.LengthFieldPrepender;
+
+public class Lineage2LSFrameEncoder extends LengthFieldPrepender {
+ public Lineage2LSFrameEncoder() {
+ super(2);
+ }
+}
diff --git a/l2jserver2-loginserver/src/main/java/com/l2jserver/ls/net/LoginServerChannelPipelineFactory.java b/l2jserver2-loginserver/src/main/java/com/l2jserver/ls/net/LoginServerChannelPipelineFactory.java
new file mode 100644
index 000000000..3a3d22a95
--- /dev/null
+++ b/l2jserver2-loginserver/src/main/java/com/l2jserver/ls/net/LoginServerChannelPipelineFactory.java
@@ -0,0 +1,38 @@
+package com.l2jserver.ls.net;
+
+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.codec.frame.LengthFieldBasedFrameDecoder;
+import org.jboss.netty.handler.codec.frame.LengthFieldPrepender;
+import org.jboss.netty.handler.codec.serialization.ObjectDecoder;
+import org.jboss.netty.handler.codec.serialization.ObjectEncoder;
+
+import com.l2jserver.service.gameserver.GameServerNetworkService;
+
+public class LoginServerChannelPipelineFactory implements
+ ChannelPipelineFactory {
+ @SuppressWarnings("unused")
+ private final GameServerNetworkService networkService;
+
+ public LoginServerChannelPipelineFactory(
+ GameServerNetworkService networkService) {
+ this.networkService = networkService;
+ }
+
+ @Override
+ public ChannelPipeline getPipeline() throws Exception {
+ final ChannelPipeline pipeline = pipeline();
+
+ // pipeline.addLast("ssl", new SslHandler());
+ pipeline.addLast("frameEncoder", new LengthFieldPrepender(4));
+ pipeline.addLast("frameDecoder", new LengthFieldBasedFrameDecoder(
+ 1048576, 0, 4, 0, 4));
+
+ pipeline.addLast("encoder", new ObjectEncoder());
+ pipeline.addLast("decoder", new ObjectDecoder());
+
+ return null;
+ }
+}
diff --git a/l2jserver2-loginserver/src/main/java/com/l2jserver/ls/net/Message.java b/l2jserver2-loginserver/src/main/java/com/l2jserver/ls/net/Message.java
new file mode 100644
index 000000000..33e708ddd
--- /dev/null
+++ b/l2jserver2-loginserver/src/main/java/com/l2jserver/ls/net/Message.java
@@ -0,0 +1,7 @@
+package com.l2jserver.ls.net;
+
+import java.io.Serializable;
+
+public interface Message extends Serializable {
+
+}
diff --git a/l2jserver2-loginserver/src/main/java/com/l2jserver/ls/net/handler/ServiceHandler.java b/l2jserver2-loginserver/src/main/java/com/l2jserver/ls/net/handler/ServiceHandler.java
new file mode 100644
index 000000000..0d6ff08d7
--- /dev/null
+++ b/l2jserver2-loginserver/src/main/java/com/l2jserver/ls/net/handler/ServiceHandler.java
@@ -0,0 +1,22 @@
+package com.l2jserver.ls.net.handler;
+
+import org.jboss.netty.channel.ChannelHandlerContext;
+import org.jboss.netty.channel.ChannelStateEvent;
+import org.jboss.netty.channel.MessageEvent;
+import org.jboss.netty.channel.SimpleChannelHandler;
+
+public class ServiceHandler extends SimpleChannelHandler {
+ @Override
+ public void channelConnected(ChannelHandlerContext ctx, ChannelStateEvent e)
+ throws Exception {
+
+ super.channelConnected(ctx, e);
+ }
+
+ @Override
+ public void messageReceived(ChannelHandlerContext ctx, MessageEvent e)
+ throws Exception {
+ // TODO Auto-generated method stub
+ super.messageReceived(ctx, e);
+ }
+}
diff --git a/l2jserver2-loginserver/src/main/java/com/l2jserver/ls/net/message/AuthRequestMessage.java b/l2jserver2-loginserver/src/main/java/com/l2jserver/ls/net/message/AuthRequestMessage.java
new file mode 100644
index 000000000..722fbe840
--- /dev/null
+++ b/l2jserver2-loginserver/src/main/java/com/l2jserver/ls/net/message/AuthRequestMessage.java
@@ -0,0 +1,150 @@
+/*
+ * This program 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.
+ *
+ * This program 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
+ * this program. If not, see .
+ */
+package com.l2jserver.ls.net.message;
+
+import com.l2jserver.ls.net.Message;
+
+public class AuthRequestMessage implements Message {
+ private static final long serialVersionUID = -1983769628118961790L;
+
+ private int id;
+ private boolean acceptAlternate;
+ private byte[] hexid;
+ private int port;
+ private boolean reserveHost;
+ private int maxplayer;
+ private String[] subnets;
+ private String[] hosts;
+
+ /**
+ * @return the id
+ */
+ public int getId() {
+ return id;
+ }
+
+ /**
+ * @param id
+ * the id to set
+ */
+ public void setId(int id) {
+ this.id = id;
+ }
+
+ /**
+ * @return the acceptAlternate
+ */
+ public boolean isAcceptAlternate() {
+ return acceptAlternate;
+ }
+
+ /**
+ * @param acceptAlternate
+ * the acceptAlternate to set
+ */
+ public void setAcceptAlternate(boolean acceptAlternate) {
+ this.acceptAlternate = acceptAlternate;
+ }
+
+ /**
+ * @return the hexid
+ */
+ public byte[] getHexid() {
+ return hexid;
+ }
+
+ /**
+ * @param hexid
+ * the hexid to set
+ */
+ public void setHexid(byte[] hexid) {
+ this.hexid = hexid;
+ }
+
+ /**
+ * @return the port
+ */
+ public int getPort() {
+ return port;
+ }
+
+ /**
+ * @param port
+ * the port to set
+ */
+ public void setPort(int port) {
+ this.port = port;
+ }
+
+ /**
+ * @return the reserveHost
+ */
+ public boolean isReserveHost() {
+ return reserveHost;
+ }
+
+ /**
+ * @param reserveHost
+ * the reserveHost to set
+ */
+ public void setReserveHost(boolean reserveHost) {
+ this.reserveHost = reserveHost;
+ }
+
+ /**
+ * @return the maxplayer
+ */
+ public int getMaxplayer() {
+ return maxplayer;
+ }
+
+ /**
+ * @param maxplayer
+ * the maxplayer to set
+ */
+ public void setMaxplayer(int maxplayer) {
+ this.maxplayer = maxplayer;
+ }
+
+ /**
+ * @return the subnets
+ */
+ public String[] getSubnets() {
+ return subnets;
+ }
+
+ /**
+ * @param subnets
+ * the subnets to set
+ */
+ public void setSubnets(String[] subnets) {
+ this.subnets = subnets;
+ }
+
+ /**
+ * @return the hosts
+ */
+ public String[] getHosts() {
+ return hosts;
+ }
+
+ /**
+ * @param hosts
+ * the hosts to set
+ */
+ public void setHosts(String[] hosts) {
+ this.hosts = hosts;
+ }
+}
\ No newline at end of file
diff --git a/l2jserver2-loginserver/src/main/java/com/l2jserver/ls/net/message/AuthResponseMessage.java b/l2jserver2-loginserver/src/main/java/com/l2jserver/ls/net/message/AuthResponseMessage.java
new file mode 100644
index 000000000..fba39ae18
--- /dev/null
+++ b/l2jserver2-loginserver/src/main/java/com/l2jserver/ls/net/message/AuthResponseMessage.java
@@ -0,0 +1,47 @@
+/*
+ * This program 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.
+ *
+ * This program 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
+ * this program. If not, see .
+ */
+package com.l2jserver.ls.net.message;
+
+import com.l2jserver.ls.net.Message;
+
+/**
+ * @author -Wooden-
+ *
+ */
+public class AuthResponseMessage implements Message {
+ private static final long serialVersionUID = -8422461240360413638L;
+
+ private int serverId;
+ private String serverName;
+
+ public AuthResponseMessage() {
+ }
+
+ public int getServerId() {
+ return serverId;
+ }
+
+ public void setServerId(int serverId) {
+ this.serverId = serverId;
+ }
+
+ public String getServerName() {
+ return serverName;
+ }
+
+ public void setServerName(String serverName) {
+ this.serverName = serverName;
+ }
+}
diff --git a/l2jserver2-loginserver/src/main/java/com/l2jserver/ls/net/message/ChangeAccessLevelMessage.java b/l2jserver2-loginserver/src/main/java/com/l2jserver/ls/net/message/ChangeAccessLevelMessage.java
new file mode 100644
index 000000000..addd425d3
--- /dev/null
+++ b/l2jserver2-loginserver/src/main/java/com/l2jserver/ls/net/message/ChangeAccessLevelMessage.java
@@ -0,0 +1,58 @@
+/*
+ * This program 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.
+ *
+ * This program 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
+ * this program. If not, see .
+ */
+package com.l2jserver.ls.net.message;
+
+import com.l2jserver.ls.net.Message;
+
+/**
+ * @author -Wooden-
+ *
+ */
+public class ChangeAccessLevelMessage implements Message {
+ private static final long serialVersionUID = 3955787866005767089L;
+
+ private String player;
+ private int access;
+
+ /**
+ * @return the player
+ */
+ public String getPlayer() {
+ return player;
+ }
+
+ /**
+ * @param player
+ * the player to set
+ */
+ public void setPlayer(String player) {
+ this.player = player;
+ }
+
+ /**
+ * @return the access
+ */
+ public int getAccess() {
+ return access;
+ }
+
+ /**
+ * @param access
+ * the access to set
+ */
+ public void setAccess(int access) {
+ this.access = access;
+ }
+}
\ No newline at end of file
diff --git a/l2jserver2-loginserver/src/main/java/com/l2jserver/ls/net/message/InitLSMessage.java b/l2jserver2-loginserver/src/main/java/com/l2jserver/ls/net/message/InitLSMessage.java
new file mode 100644
index 000000000..85f38c9f9
--- /dev/null
+++ b/l2jserver2-loginserver/src/main/java/com/l2jserver/ls/net/message/InitLSMessage.java
@@ -0,0 +1,54 @@
+/*
+ * This program 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.
+ *
+ * This program 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
+ * this program. If not, see .
+ */
+package com.l2jserver.ls.net.message;
+
+import com.l2jserver.ls.net.Message;
+
+public class InitLSMessage implements Message {
+ private static final long serialVersionUID = 6277036140453399066L;
+
+ private int rev;
+ private byte[] key;
+
+ /**
+ * @return the rev
+ */
+ public int getRev() {
+ return rev;
+ }
+
+ /**
+ * @param rev
+ * the rev to set
+ */
+ public void setRev(int rev) {
+ this.rev = rev;
+ }
+
+ /**
+ * @return the key
+ */
+ public byte[] getKey() {
+ return key;
+ }
+
+ /**
+ * @param key
+ * the key to set
+ */
+ public void setKey(byte[] key) {
+ this.key = key;
+ }
+}
\ No newline at end of file
diff --git a/l2jserver2-loginserver/src/main/java/com/l2jserver/ls/net/message/KickPlayerMessage.java b/l2jserver2-loginserver/src/main/java/com/l2jserver/ls/net/message/KickPlayerMessage.java
new file mode 100644
index 000000000..24489add0
--- /dev/null
+++ b/l2jserver2-loginserver/src/main/java/com/l2jserver/ls/net/message/KickPlayerMessage.java
@@ -0,0 +1,38 @@
+/*
+ * This program 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.
+ *
+ * This program 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
+ * this program. If not, see .
+ */
+package com.l2jserver.ls.net.message;
+
+import com.l2jserver.ls.net.Message;
+
+public class KickPlayerMessage implements Message {
+ private static final long serialVersionUID = 6409419918667594810L;
+
+ private String account;
+
+ /**
+ * @return the account
+ */
+ public String getAccount() {
+ return account;
+ }
+
+ /**
+ * @param account
+ * the account to set
+ */
+ public void setAccount(String account) {
+ this.account = account;
+ }
+}
\ No newline at end of file
diff --git a/l2jserver2-loginserver/src/main/java/com/l2jserver/ls/net/message/LoginServerFailMessage.java b/l2jserver2-loginserver/src/main/java/com/l2jserver/ls/net/message/LoginServerFailMessage.java
new file mode 100644
index 000000000..3f96fe3b4
--- /dev/null
+++ b/l2jserver2-loginserver/src/main/java/com/l2jserver/ls/net/message/LoginServerFailMessage.java
@@ -0,0 +1,49 @@
+/*
+ * This program 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.
+ *
+ * This program 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
+ * this program. If not, see .
+ */
+package com.l2jserver.ls.net.message;
+
+import com.l2jserver.ls.net.Message;
+
+public class LoginServerFailMessage implements Message {
+ private static final long serialVersionUID = -4031976482500361984L;
+
+ private static final String[] REASONS = { "None", "Reason: ip banned",
+ "Reason: ip reserved", "Reason: wrong hexid",
+ "Reason: id reserved", "Reason: no free ID", "Not authed",
+ "Reason: already logged in" };
+ private int reason;
+
+ /**
+ * @return the reason
+ */
+ public int getReason() {
+ return reason;
+ }
+
+ /**
+ * @return the reason
+ */
+ public String getReasonAsString() {
+ return REASONS[reason];
+ }
+
+ /**
+ * @param reason
+ * the reason to set
+ */
+ public void setReason(int reason) {
+ this.reason = reason;
+ }
+}
\ No newline at end of file
diff --git a/l2jserver2-loginserver/src/main/java/com/l2jserver/ls/net/message/PlayerAuthRequestMessage.java b/l2jserver2-loginserver/src/main/java/com/l2jserver/ls/net/message/PlayerAuthRequestMessage.java
new file mode 100644
index 000000000..64183b793
--- /dev/null
+++ b/l2jserver2-loginserver/src/main/java/com/l2jserver/ls/net/message/PlayerAuthRequestMessage.java
@@ -0,0 +1,106 @@
+/*
+ * This program 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.
+ *
+ * This program 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
+ * this program. If not, see .
+ */
+package com.l2jserver.ls.net.message;
+
+import com.l2jserver.ls.net.Message;
+
+/**
+ * @author -Wooden-
+ *
+ */
+public class PlayerAuthRequestMessage implements Message {
+ private static final long serialVersionUID = 4583147564841961379L;
+
+ private String account;
+ private int playOkId1;
+ private int playOkId2;
+ private int loginOkId1;
+ private int loginOkId2;
+
+ /**
+ * @return the account
+ */
+ public String getAccount() {
+ return account;
+ }
+
+ /**
+ * @param account
+ * the account to set
+ */
+ public void setAccount(String account) {
+ this.account = account;
+ }
+
+ /**
+ * @return the playOkId1
+ */
+ public int getPlayOkId1() {
+ return playOkId1;
+ }
+
+ /**
+ * @param playOkId1
+ * the playOkId1 to set
+ */
+ public void setPlayOkId1(int playOkId1) {
+ this.playOkId1 = playOkId1;
+ }
+
+ /**
+ * @return the playOkId2
+ */
+ public int getPlayOkId2() {
+ return playOkId2;
+ }
+
+ /**
+ * @param playOkId2
+ * the playOkId2 to set
+ */
+ public void setPlayOkId2(int playOkId2) {
+ this.playOkId2 = playOkId2;
+ }
+
+ /**
+ * @return the loginOkId1
+ */
+ public int getLoginOkId1() {
+ return loginOkId1;
+ }
+
+ /**
+ * @param loginOkId1
+ * the loginOkId1 to set
+ */
+ public void setLoginOkId1(int loginOkId1) {
+ this.loginOkId1 = loginOkId1;
+ }
+
+ /**
+ * @return the loginOkId2
+ */
+ public int getLoginOkId2() {
+ return loginOkId2;
+ }
+
+ /**
+ * @param loginOkId2
+ * the loginOkId2 to set
+ */
+ public void setLoginOkId2(int loginOkId2) {
+ this.loginOkId2 = loginOkId2;
+ }
+}
\ No newline at end of file
diff --git a/l2jserver2-loginserver/src/main/java/com/l2jserver/ls/net/message/PlayerAuthResponseMessage.java b/l2jserver2-loginserver/src/main/java/com/l2jserver/ls/net/message/PlayerAuthResponseMessage.java
new file mode 100644
index 000000000..0acea8df2
--- /dev/null
+++ b/l2jserver2-loginserver/src/main/java/com/l2jserver/ls/net/message/PlayerAuthResponseMessage.java
@@ -0,0 +1,58 @@
+/*
+ * This program 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.
+ *
+ * This program 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
+ * this program. If not, see .
+ */
+package com.l2jserver.ls.net.message;
+
+import com.l2jserver.ls.net.Message;
+
+/**
+ * @author -Wooden-
+ *
+ */
+public class PlayerAuthResponseMessage implements Message {
+ private static final long serialVersionUID = -2769385090218023613L;
+
+ private String account;
+ private boolean authed;
+
+ /**
+ * @return the account
+ */
+ public String getAccount() {
+ return account;
+ }
+
+ /**
+ * @param account
+ * the account to set
+ */
+ public void setAccount(String account) {
+ this.account = account;
+ }
+
+ /**
+ * @return the authed
+ */
+ public boolean isAuthed() {
+ return authed;
+ }
+
+ /**
+ * @param authed
+ * the authed to set
+ */
+ public void setAuthed(boolean authed) {
+ this.authed = authed;
+ }
+}
\ No newline at end of file
diff --git a/l2jserver2-loginserver/src/main/java/com/l2jserver/ls/net/message/PlayerInGameMessage.java b/l2jserver2-loginserver/src/main/java/com/l2jserver/ls/net/message/PlayerInGameMessage.java
new file mode 100644
index 000000000..5e9159c2e
--- /dev/null
+++ b/l2jserver2-loginserver/src/main/java/com/l2jserver/ls/net/message/PlayerInGameMessage.java
@@ -0,0 +1,42 @@
+/*
+ * This program 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.
+ *
+ * This program 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
+ * this program. If not, see .
+ */
+package com.l2jserver.ls.net.message;
+
+import com.l2jserver.ls.net.Message;
+
+/**
+ * @author -Wooden-
+ *
+ */
+public class PlayerInGameMessage implements Message {
+ private static final long serialVersionUID = 636969531052790109L;
+
+ private String player;
+
+ /**
+ * @return the player
+ */
+ public String getPlayer() {
+ return player;
+ }
+
+ /**
+ * @param player
+ * the player to set
+ */
+ public void setPlayer(String player) {
+ this.player = player;
+ }
+}
\ No newline at end of file
diff --git a/l2jserver2-loginserver/src/main/java/com/l2jserver/ls/net/message/PlayerLogoutMessage.java b/l2jserver2-loginserver/src/main/java/com/l2jserver/ls/net/message/PlayerLogoutMessage.java
new file mode 100644
index 000000000..5c79fb3c0
--- /dev/null
+++ b/l2jserver2-loginserver/src/main/java/com/l2jserver/ls/net/message/PlayerLogoutMessage.java
@@ -0,0 +1,42 @@
+/*
+ * This program 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.
+ *
+ * This program 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
+ * this program. If not, see .
+ */
+package com.l2jserver.ls.net.message;
+
+import com.l2jserver.ls.net.Message;
+
+/**
+ * @author -Wooden-
+ *
+ */
+public class PlayerLogoutMessage implements Message {
+ private static final long serialVersionUID = -5088785875080568929L;
+
+ private String player;
+
+ /**
+ * @return the player
+ */
+ public String getPlayer() {
+ return player;
+ }
+
+ /**
+ * @param player
+ * the player to set
+ */
+ public void setPlayer(String player) {
+ this.player = player;
+ }
+}
\ No newline at end of file
diff --git a/l2jserver2-loginserver/src/main/java/com/l2jserver/ls/net/message/PlayerTracertMessage.java b/l2jserver2-loginserver/src/main/java/com/l2jserver/ls/net/message/PlayerTracertMessage.java
new file mode 100644
index 000000000..b9a1d4ab0
--- /dev/null
+++ b/l2jserver2-loginserver/src/main/java/com/l2jserver/ls/net/message/PlayerTracertMessage.java
@@ -0,0 +1,122 @@
+/*
+ * This program 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.
+ *
+ * This program 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
+ * this program. If not, see .
+ */
+package com.l2jserver.ls.net.message;
+
+import com.l2jserver.ls.net.Message;
+
+/**
+ * @author mrTJO
+ *
+ */
+public class PlayerTracertMessage implements Message {
+ private static final long serialVersionUID = 5148890222662873608L;
+
+ private String account;
+ private String pcIp;
+ private String hop1;
+ private String hop2;
+ private String hop3;
+ private String hop4;
+
+ /**
+ * @return the account
+ */
+ public String getAccount() {
+ return account;
+ }
+
+ /**
+ * @param account
+ * the account to set
+ */
+ public void setAccount(String account) {
+ this.account = account;
+ }
+
+ /**
+ * @return the pcIp
+ */
+ public String getPcIp() {
+ return pcIp;
+ }
+
+ /**
+ * @param pcIp
+ * the pcIp to set
+ */
+ public void setPcIp(String pcIp) {
+ this.pcIp = pcIp;
+ }
+
+ /**
+ * @return the hop1
+ */
+ public String getHop1() {
+ return hop1;
+ }
+
+ /**
+ * @param hop1
+ * the hop1 to set
+ */
+ public void setHop1(String hop1) {
+ this.hop1 = hop1;
+ }
+
+ /**
+ * @return the hop2
+ */
+ public String getHop2() {
+ return hop2;
+ }
+
+ /**
+ * @param hop2
+ * the hop2 to set
+ */
+ public void setHop2(String hop2) {
+ this.hop2 = hop2;
+ }
+
+ /**
+ * @return the hop3
+ */
+ public String getHop3() {
+ return hop3;
+ }
+
+ /**
+ * @param hop3
+ * the hop3 to set
+ */
+ public void setHop3(String hop3) {
+ this.hop3 = hop3;
+ }
+
+ /**
+ * @return the hop4
+ */
+ public String getHop4() {
+ return hop4;
+ }
+
+ /**
+ * @param hop4
+ * the hop4 to set
+ */
+ public void setHop4(String hop4) {
+ this.hop4 = hop4;
+ }
+}
\ No newline at end of file
diff --git a/l2jserver2-loginserver/src/main/java/com/l2jserver/ls/net/message/ServerStatusMessage.java b/l2jserver2-loginserver/src/main/java/com/l2jserver/ls/net/message/ServerStatusMessage.java
new file mode 100644
index 000000000..8c2e377b3
--- /dev/null
+++ b/l2jserver2-loginserver/src/main/java/com/l2jserver/ls/net/message/ServerStatusMessage.java
@@ -0,0 +1,88 @@
+/*
+ * This program 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.
+ *
+ * This program 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
+ * this program. If not, see .
+ */
+package com.l2jserver.ls.net.message;
+
+import java.util.ArrayList;
+
+import com.l2jserver.ls.net.Message;
+
+/**
+ * @author -Wooden-
+ *
+ */
+public class ServerStatusMessage implements Message {
+ private static final long serialVersionUID = 251392846109402522L;
+
+ private ArrayList attributes;
+
+ public static final String[] STATUS_STRING = { "Auto", "Good", "Normal",
+ "Full", "Down", "Gm Only" };
+
+ public static final int SERVER_LIST_STATUS = 0x01;
+ public static final int SERVER_TYPE = 0x02;
+ public static final int SERVER_LIST_SQUARE_BRACKET = 0x03;
+ public static final int MAX_PLAYERS = 0x04;
+ public static final int SERVER_AGE = 0x05;
+
+ // Server Status
+ public static final int STATUS_AUTO = 0x00;
+ public static final int STATUS_GOOD = 0x01;
+ public static final int STATUS_NORMAL = 0x02;
+ public static final int STATUS_FULL = 0x03;
+ public static final int STATUS_DOWN = 0x04;
+ public static final int STATUS_GM_ONLY = 0x05;
+
+ // Server Types
+ public static final int SERVER_NORMAL = 0x01;
+ public static final int SERVER_RELAX = 0x02;
+ public static final int SERVER_TEST = 0x04;
+ public static final int SERVER_NOLABEL = 0x08;
+ public static final int SERVER_CREATION_RESTRICTED = 0x10;
+ public static final int SERVER_EVENT = 0x20;
+ public static final int SERVER_FREE = 0x40;
+
+ // Server Ages
+ public static final int SERVER_AGE_ALL = 0x00;
+ public static final int SERVER_AGE_15 = 0x0F;
+ public static final int SERVER_AGE_18 = 0x12;
+
+ public static final int ON = 0x01;
+ public static final int OFF = 0x00;
+
+ public static class Attribute {
+ public int id;
+ public int value;
+
+ Attribute(int pId, int pValue) {
+ id = pId;
+ value = pValue;
+ }
+ }
+
+ /**
+ * @return the attributes
+ */
+ public ArrayList getAttributes() {
+ return attributes;
+ }
+
+ /**
+ * @param attributes
+ * the attributes to set
+ */
+ public void setAttributes(ArrayList attributes) {
+ this.attributes = attributes;
+ }
+}
\ No newline at end of file
diff --git a/l2jserver2-loginserver/src/main/java/com/l2jserver/service/ServiceModule.java b/l2jserver2-loginserver/src/main/java/com/l2jserver/service/ServiceModule.java
new file mode 100644
index 000000000..381ab565b
--- /dev/null
+++ b/l2jserver2-loginserver/src/main/java/com/l2jserver/service/ServiceModule.java
@@ -0,0 +1,23 @@
+package com.l2jserver.service;
+
+import com.google.inject.AbstractModule;
+import com.google.inject.Scopes;
+import com.l2jserver.service.configuration.ConfigurationService;
+import com.l2jserver.service.configuration.ProxyConfigurationService;
+import com.l2jserver.service.core.Log4JLoggingService;
+import com.l2jserver.service.core.LoggingService;
+import com.l2jserver.service.database.DatabaseService;
+import com.l2jserver.service.database.LoginServerJDBCDatabaseService;
+
+public class ServiceModule extends AbstractModule {
+ @Override
+ protected void configure() {
+ bind(ServiceManager.class).in(Scopes.SINGLETON);
+ bind(LoggingService.class).to(Log4JLoggingService.class).in(
+ Scopes.SINGLETON);
+ bind(ConfigurationService.class).to(ProxyConfigurationService.class)
+ .in(Scopes.SINGLETON);
+ bind(DatabaseService.class).to(LoginServerJDBCDatabaseService.class)
+ .in(Scopes.SINGLETON);
+ }
+}
diff --git a/l2jserver2-loginserver/src/main/java/com/l2jserver/service/database/H2DAOModule.java b/l2jserver2-loginserver/src/main/java/com/l2jserver/service/database/H2DAOModule.java
new file mode 100644
index 000000000..0af18e7fe
--- /dev/null
+++ b/l2jserver2-loginserver/src/main/java/com/l2jserver/service/database/H2DAOModule.java
@@ -0,0 +1,32 @@
+/*
+ * This file is part of l2jserver .
+ *
+ * l2jserver is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * l2jserver is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with l2jserver. If not, see .
+ */
+package com.l2jserver.service.database;
+
+import com.google.inject.AbstractModule;
+import com.google.inject.Module;
+
+/**
+ * Google Guice {@link Module} for H2 DAOs
+ *
+ * @author Rogiel
+ */
+public class H2DAOModule extends AbstractModule {
+ @Override
+ protected void configure() {
+
+ }
+}
diff --git a/l2jserver2-loginserver/src/main/java/com/l2jserver/service/database/LoginServerJDBCDatabaseService.java b/l2jserver2-loginserver/src/main/java/com/l2jserver/service/database/LoginServerJDBCDatabaseService.java
new file mode 100644
index 000000000..157ffb9ce
--- /dev/null
+++ b/l2jserver2-loginserver/src/main/java/com/l2jserver/service/database/LoginServerJDBCDatabaseService.java
@@ -0,0 +1,97 @@
+/*
+ * This file is part of l2jserver .
+ *
+ * l2jserver is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * l2jserver is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with l2jserver. If not, see .
+ */
+package com.l2jserver.service.database;
+
+import java.sql.ResultSet;
+
+import com.google.inject.Injector;
+import com.l2jserver.model.Model;
+import com.l2jserver.model.id.ID;
+import com.l2jserver.service.AbstractService.Depends;
+import com.l2jserver.service.cache.CacheService;
+import com.l2jserver.service.configuration.ConfigurationService;
+import com.l2jserver.service.core.LoggingService;
+import com.l2jserver.service.core.threading.ThreadService;
+
+/**
+ * This is an implementation of {@link DatabaseService} that provides an layer
+ * to JDBC.
+ *
+ * Internal specification
The
+ * {@link com.l2jserver.service.database.AbstractJDBCDatabaseService.Query
+ * Query} object
+ *
+ * If you wish to implement a new {@link DataAccessObject} you should try not
+ * use {@link com.l2jserver.service.database.AbstractJDBCDatabaseService.Query
+ * Query} object directly because it only provides low level access to the JDBC
+ * architecture. Instead, you could use an specialized class, like
+ * {@link com.l2jserver.service.database.AbstractJDBCDatabaseService.InsertUpdateQuery
+ * InsertUpdateQuery} ,
+ * {@link com.l2jserver.service.database.AbstractJDBCDatabaseService.SelectListQuery
+ * SelectListQuery} or
+ * {@link com.l2jserver.service.database.AbstractJDBCDatabaseService.SelectSingleQuery
+ * SelectSingleQuery} . If you do need low level access, feel free to use the
+ * {@link com.l2jserver.service.database.AbstractJDBCDatabaseService.Query
+ * Query} class directly.
+ *
+ * The
+ * {@link com.l2jserver.service.database.AbstractJDBCDatabaseService.Mapper
+ * Mapper} object
+ *
+ * The {@link com.l2jserver.service.database.AbstractJDBCDatabaseService.Mapper
+ * Mapper} object maps an JDBC {@link ResultSet} into an Java {@link Object}.
+ * All {@link Model} objects support
+ * {@link com.l2jserver.service.database.AbstractJDBCDatabaseService.CachedMapper
+ * CachedMapper} that will cache result based on its {@link ID} and always use
+ * the same object with the same {@link ID}.
+ *
+ * @author Rogiel
+ */
+@Depends({ LoggingService.class, CacheService.class,
+ ConfigurationService.class, ThreadService.class })
+public class LoginServerJDBCDatabaseService extends AbstractJDBCDatabaseService
+ implements DatabaseService {
+ /**
+ * The Google Guice {@link Injector}. It is used to get DAO instances.
+ */
+ @SuppressWarnings("unused")
+ private final Injector injector;
+
+ /**
+ * @param configService
+ * the config service
+ * @param injector
+ * the Guice {@link Injector}
+ * @param cacheService
+ * the cache service
+ * @param threadService
+ * the thread service
+ */
+ public LoginServerJDBCDatabaseService(ConfigurationService configService,
+ Injector injector, CacheService cacheService,
+ ThreadService threadService) {
+ super(configService, cacheService, threadService);
+ this.injector = injector;
+ }
+
+ @Override
+ public , I extends ID> DataAccessObject getDAO(
+ Class model) {
+ // TODO
+ return null;
+ }
+}
diff --git a/l2jserver2-loginserver/src/main/java/com/l2jserver/service/database/MySQL5DAOModule.java b/l2jserver2-loginserver/src/main/java/com/l2jserver/service/database/MySQL5DAOModule.java
new file mode 100644
index 000000000..b984d88a5
--- /dev/null
+++ b/l2jserver2-loginserver/src/main/java/com/l2jserver/service/database/MySQL5DAOModule.java
@@ -0,0 +1,32 @@
+/*
+ * This file is part of l2jserver .
+ *
+ * l2jserver is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * l2jserver is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with l2jserver. If not, see .
+ */
+package com.l2jserver.service.database;
+
+import com.google.inject.AbstractModule;
+import com.google.inject.Module;
+
+/**
+ * Google Guice {@link Module} for MySQL5 DAOs
+ *
+ * @author Rogiel
+ */
+public class MySQL5DAOModule extends AbstractModule {
+ @Override
+ protected void configure() {
+
+ }
+}
diff --git a/l2jserver2-loginserver/src/main/java/com/l2jserver/service/gameserver/GameServerNetworkService.java b/l2jserver2-loginserver/src/main/java/com/l2jserver/service/gameserver/GameServerNetworkService.java
new file mode 100644
index 000000000..41d2f06be
--- /dev/null
+++ b/l2jserver2-loginserver/src/main/java/com/l2jserver/service/gameserver/GameServerNetworkService.java
@@ -0,0 +1,62 @@
+/*
+ * This file is part of l2jserver .
+ *
+ * l2jserver is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * l2jserver is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with l2jserver. If not, see .
+ */
+package com.l2jserver.service.gameserver;
+
+import java.net.InetSocketAddress;
+
+import com.l2jserver.service.Service;
+import com.l2jserver.service.ServiceConfiguration;
+import com.l2jserver.service.configuration.Configuration;
+import com.l2jserver.service.configuration.ProxyConfigurationService.ConfigurationName;
+import com.l2jserver.service.configuration.ProxyConfigurationService.ConfigurationPropertiesKey;
+import com.l2jserver.service.configuration.XMLConfigurationService.ConfigurationXPath;
+
+/**
+ * TODO
+ *
+ * @author Rogiel
+ */
+public interface GameServerNetworkService extends Service {
+ /**
+ * The network {@link Configuration}
+ *
+ * @author Rogiel
+ */
+ @ConfigurationName("network")
+ public interface NetworkConfiguration extends ServiceConfiguration {
+ /**
+ * Get the server listen address
+ *
+ * @return the listen address
+ */
+ @ConfigurationPropertyGetter(defaultValue = "0.0.0.0:2104")
+ @ConfigurationPropertiesKey("network.listen")
+ @ConfigurationXPath("/configuration/services/network/listen")
+ InetSocketAddress getListenAddress();
+
+ /**
+ * Set the server listen address
+ *
+ * @param addr
+ * the listen address
+ */
+ @ConfigurationPropertySetter
+ @ConfigurationPropertiesKey("network.listen")
+ @ConfigurationXPath("/configuration/services/network/listen")
+ void setListenAddress(InetSocketAddress addr);
+ }
+}
diff --git a/l2jserver2-tools/pom.xml b/l2jserver2-tools/pom.xml
new file mode 100644
index 000000000..da350bd2e
--- /dev/null
+++ b/l2jserver2-tools/pom.xml
@@ -0,0 +1,17 @@
+
+ 4.0.0
+
+ l2jserver2
+ com.l2jserver
+ 2.0.0
+ ..
+
+ l2jserver2-tools
+
+
+ com.l2jserver
+ l2jserver2-gameserver
+ 2.0.0
+
+
+
\ No newline at end of file
diff --git a/l2jserver2-tools/src/main/java/com/l2jserver/model/template/CharacterTemplateConverter.java b/l2jserver2-tools/src/main/java/com/l2jserver/model/template/CharacterTemplateConverter.java
new file mode 100644
index 000000000..bb15e7d7a
--- /dev/null
+++ b/l2jserver2-tools/src/main/java/com/l2jserver/model/template/CharacterTemplateConverter.java
@@ -0,0 +1,186 @@
+/*
+ * This file is part of l2jserver .
+ *
+ * l2jserver is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * l2jserver is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with l2jserver. If not, see .
+ */
+package com.l2jserver.model.template;
+
+import java.io.File;
+import java.io.IOException;
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBException;
+import javax.xml.bind.Marshaller;
+import javax.xml.bind.SchemaOutputResolver;
+import javax.xml.transform.Result;
+import javax.xml.transform.stream.StreamResult;
+
+import com.l2jserver.model.template.CharacterTemplate.CharacterStatsMetadata;
+import com.l2jserver.model.template.CharacterTemplate.CharacterStatsMetadata.AttackMetadata;
+import com.l2jserver.model.template.CharacterTemplate.CharacterStatsMetadata.AttackMetadata.AttackValueMetadata;
+import com.l2jserver.model.template.CharacterTemplate.CharacterStatsMetadata.BaseMetadata;
+import com.l2jserver.model.template.CharacterTemplate.CharacterStatsMetadata.DefenseMetadata;
+import com.l2jserver.model.template.CharacterTemplate.CharacterStatsMetadata.DefenseMetadata.DefenseValueMetadata;
+import com.l2jserver.model.template.CharacterTemplate.CharacterStatsMetadata.MoveMetadata;
+import com.l2jserver.model.template.CharacterTemplate.CharacterStatsMetadata.Stat;
+import com.l2jserver.model.template.CharacterTemplate.CollitionMetadataContainer;
+import com.l2jserver.model.template.CharacterTemplate.CollitionMetadataContainer.CollisionMetadata;
+
+/**
+ * The need to use this package to get access to protected fields.
+ *
+ * @author Rogiel
+ */
+public class CharacterTemplateConverter {
+ private static final String JDBC_URL = "jdbc:mysql://localhost/l2j-old";
+ private static final String JDBC_USERNAME = "l2j";
+ private static final String JDBC_PASSWORD = "changeme";
+
+ public static void main(String[] args) throws SQLException, IOException,
+ ClassNotFoundException, JAXBException {
+ Class.forName("com.mysql.jdbc.Driver");
+ final File target = new File("generated/template");
+
+ System.out.println("Generating template classes...");
+
+ final JAXBContext c = JAXBContext.newInstance(CharacterTemplate.class);
+ c.generateSchema(new SchemaOutputResolver() {
+ @Override
+ public Result createOutput(String namespaceUri,
+ String suggestedFileName) throws IOException {
+ return new StreamResult(new File(target, "character.xsd"));
+ }
+ });
+
+ final Marshaller m = c.createMarshaller();
+ m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
+ m.setProperty(Marshaller.JAXB_NO_NAMESPACE_SCHEMA_LOCATION, "character");
+ m.setProperty(Marshaller.JAXB_SCHEMA_LOCATION,
+ "character ../character.xsd");
+
+ final Connection conn = DriverManager.getConnection(JDBC_URL,
+ JDBC_USERNAME, JDBC_PASSWORD);
+ try {
+ final PreparedStatement st = conn
+ .prepareStatement("SELECT * FROM char_templates "
+ + "LEFT JOIN lvlupgain ON (char_templates.Classid = lvlupgain.classid)");
+ try {
+ st.execute();
+ final ResultSet rs = st.getResultSet();
+ while (rs.next()) {
+ CharacterTemplate t = fillTemplate(rs);
+
+ final File file = new File(target, "character/"
+ + camelCase(t.getCharacterClass().name()) + ".xml");
+ file.getParentFile().mkdirs();
+
+ m.marshal(t, file);
+
+ // m.marshal(t, System.out);
+ // System.exit(0);
+ }
+ } finally {
+ st.close();
+ }
+ } finally {
+ conn.close();
+ }
+ }
+
+ private static CharacterTemplate fillTemplate(ResultSet rs)
+ throws SQLException {
+ final CharacterTemplate t = new CharacterTemplate();
+
+ t.stats = new CharacterStatsMetadata();
+ t.stats.hp = new Stat();
+ t.stats.hp.base = rs.getDouble("defaulthpbase");
+ t.stats.hp.modifier = rs.getDouble("defaulthpmod");
+ t.stats.hp.add = rs.getDouble("defaulthpadd");
+
+ t.stats.mp = new Stat();
+ t.stats.mp.base = rs.getDouble("defaultmpbase");
+ t.stats.mp.modifier = rs.getDouble("defaultmpmod");
+ t.stats.mp.add = rs.getDouble("defaultmpadd");
+
+ t.stats.cp = new Stat();
+ t.stats.cp.base = rs.getDouble("defaultcpbase");
+ t.stats.cp.modifier = rs.getDouble("defaultcpmod");
+ t.stats.cp.add = rs.getDouble("defaultcpadd");
+
+ t.stats.base = new BaseMetadata();
+ t.stats.base.intelligence = rs.getInt("_INT");
+ t.stats.base.strength = rs.getInt("STR");
+ t.stats.base.concentration = rs.getInt("CON");
+ t.stats.base.mentality = rs.getInt("MEN");
+ t.stats.base.dexterity = rs.getInt("DEX");
+ t.stats.base.witness = rs.getInt("WIT");
+
+ t.stats.attack = new AttackMetadata();
+ t.stats.attack.critical = rs.getInt("CRITICAL");
+ t.stats.attack.evasion = rs.getInt("EVASION");
+ t.stats.attack.accuracy = rs.getInt("ACC");
+
+ t.stats.attack.physical = new AttackValueMetadata();
+ t.stats.attack.physical.damage = rs.getDouble("P_ATK");
+ t.stats.attack.physical.speed = rs.getDouble("P_SPD");
+ t.stats.attack.magical = new AttackValueMetadata();
+ t.stats.attack.magical.damage = rs.getDouble("M_ATK");
+ t.stats.attack.magical.speed = rs.getDouble("M_SPD");
+
+ t.stats.defense = new DefenseMetadata();
+ t.stats.defense.physical = new DefenseValueMetadata();
+ t.stats.defense.physical.value = rs.getDouble("P_DEF");
+ t.stats.defense.magical = new DefenseValueMetadata();
+ t.stats.defense.magical.value = rs.getDouble("M_DEF");
+
+ t.stats.move = new MoveMetadata();
+ t.stats.move.run = rs.getInt("MOVE_SPD");
+ // TODO this is not really the same
+ t.stats.move.walk = rs.getInt("MOVE_SPD");
+
+ t.stats.level = rs.getInt("class_lvl");
+ t.stats.maximumLoad = rs.getInt("_LOAD");
+ t.stats.crafter = rs.getBoolean("canCraft");
+
+ t.collision = new CollitionMetadataContainer();
+ t.collision.male = new CollisionMetadata();
+ t.collision.male.radius = rs.getDouble("M_COL_R");
+ t.collision.male.height = rs.getDouble("M_COL_H");
+ t.collision.female = new CollisionMetadata();
+ t.collision.female.radius = rs.getDouble("F_COL_R");
+ t.collision.female.height = rs.getDouble("F_COL_H");
+
+ return t;
+ }
+
+ private static String camelCase(String c) {
+ Pattern p = Pattern.compile("[a-zA-Z0-9]+");
+ Matcher m = p.matcher(c.replaceAll("_", " "));
+ StringBuffer result = new StringBuffer();
+ String word;
+ while (m.find()) {
+ word = m.group();
+ result.append(word.substring(0, 1).toUpperCase()
+ + word.substring(1).toLowerCase());
+ }
+ return result.toString();
+ }
+}
diff --git a/l2jserver2-tools/src/main/java/com/l2jserver/model/template/NPCTemplateConverter.java b/l2jserver2-tools/src/main/java/com/l2jserver/model/template/NPCTemplateConverter.java
new file mode 100644
index 000000000..4e2128641
--- /dev/null
+++ b/l2jserver2-tools/src/main/java/com/l2jserver/model/template/NPCTemplateConverter.java
@@ -0,0 +1,531 @@
+/*
+ * This file is part of l2jserver .
+ *
+ * l2jserver is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * l2jserver is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with l2jserver. If not, see .
+ */
+package com.l2jserver.model.template;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBException;
+import javax.xml.bind.MarshalException;
+import javax.xml.bind.Marshaller;
+import javax.xml.bind.SchemaOutputResolver;
+import javax.xml.transform.Result;
+import javax.xml.transform.stream.StreamResult;
+
+import org.apache.commons.io.FileUtils;
+
+import com.l2jserver.model.id.template.ItemTemplateID;
+import com.l2jserver.model.id.template.NPCTemplateID;
+import com.l2jserver.model.id.template.SkillTemplateID;
+import com.l2jserver.model.id.template.TeleportationTemplateID;
+import com.l2jserver.model.template.NPCTemplate.Chat;
+import com.l2jserver.model.template.NPCTemplate.DropItemMetadata;
+import com.l2jserver.model.template.NPCTemplate.DropItemMetadata.DropCategory;
+import com.l2jserver.model.template.NPCTemplate.NPCInformationMetadata;
+import com.l2jserver.model.template.NPCTemplate.NPCInformationMetadata.CollisionMetadata;
+import com.l2jserver.model.template.NPCTemplate.NPCInformationMetadata.ItemMetadata;
+import com.l2jserver.model.template.NPCTemplate.NPCInformationMetadata.NPCNameMetadata;
+import com.l2jserver.model.template.NPCTemplate.NPCInformationMetadata.NPCStatsMetadata;
+import com.l2jserver.model.template.NPCTemplate.NPCInformationMetadata.NPCStatsMetadata.AttackMetadata;
+import com.l2jserver.model.template.NPCTemplate.NPCInformationMetadata.NPCStatsMetadata.AttackMetadata.AttackValueMetadata;
+import com.l2jserver.model.template.NPCTemplate.NPCInformationMetadata.NPCStatsMetadata.BaseMetadata;
+import com.l2jserver.model.template.NPCTemplate.NPCInformationMetadata.NPCStatsMetadata.DefenseMetadata;
+import com.l2jserver.model.template.NPCTemplate.NPCInformationMetadata.NPCStatsMetadata.DefenseMetadata.DefenseValueMetadata;
+import com.l2jserver.model.template.NPCTemplate.NPCInformationMetadata.NPCStatsMetadata.MoveMetadata;
+import com.l2jserver.model.template.NPCTemplate.NPCInformationMetadata.NPCStatsMetadata.Stat;
+import com.l2jserver.model.template.NPCTemplate.NPCInformationMetadata.NPCTitleMetadata;
+import com.l2jserver.model.template.NPCTemplate.SkillMetadata;
+import com.l2jserver.model.template.NPCTemplate.TalkMetadata;
+import com.l2jserver.model.template.TeleportationTemplate.TeleportRestriction;
+import com.l2jserver.model.template.actor.ActorSex;
+import com.l2jserver.model.template.npc.NPCRace;
+import com.l2jserver.model.world.npc.controller.BaseNPCController;
+import com.l2jserver.model.world.npc.controller.MonsterController;
+import com.l2jserver.model.world.npc.controller.NPCController;
+import com.l2jserver.model.world.npc.controller.NotImplementedNPCController;
+import com.l2jserver.model.world.npc.controller.TeleporterController;
+import com.l2jserver.service.game.template.XMLTemplateService.TeleportationTemplateContainer;
+import com.l2jserver.util.factory.CollectionFactory;
+import com.l2jserver.util.geometry.Coordinate;
+import com.sun.org.apache.xml.internal.serialize.OutputFormat;
+import com.sun.org.apache.xml.internal.serialize.XMLSerializer;
+
+@SuppressWarnings("restriction")
+public class NPCTemplateConverter {
+ private static final String JDBC_URL = "jdbc:mysql://localhost/l2jlegacy";
+ private static final String JDBC_USERNAME = "l2j";
+ private static final String JDBC_PASSWORD = "changeme";
+ private static final File L2J_HTML_FOLDER = new File(
+ "../L2J_DataPack_BETA/data/html");
+
+ private static final Map> controllers = CollectionFactory
+ .newMap();
+
+ private static List templates = CollectionFactory.newList();
+ private static Collection htmlScannedFiles;
+ private static TeleportationTemplateContainer teleportation = new TeleportationTemplateContainer();
+
+ public static void main(String[] args) throws SQLException, IOException,
+ ClassNotFoundException, JAXBException {
+ controllers.put("L2Teleporter", TeleporterController.class);
+ controllers.put("L2CastleTeleporter", TeleporterController.class);
+ controllers.put("L2Npc", BaseNPCController.class);
+ controllers.put("L2Monster", MonsterController.class);
+ controllers.put("L2FlyMonster", MonsterController.class);
+ Class.forName("com.mysql.jdbc.Driver");
+
+ final File target = new File("data/templates");
+
+ System.out.println("Scaning legacy HTML files...");
+ htmlScannedFiles = FileUtils.listFiles(L2J_HTML_FOLDER, new String[] {
+ "html", "htm" }, true);
+
+ final JAXBContext c = JAXBContext.newInstance(NPCTemplate.class,
+ TeleportationTemplateContainer.class);
+
+ final Connection conn = DriverManager.getConnection(JDBC_URL,
+ JDBC_USERNAME, JDBC_PASSWORD);
+ {
+ System.out.println("Converting teleport templates...");
+ teleportation.templates = CollectionFactory.newList();
+
+ final Marshaller m = c.createMarshaller();
+ m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
+ m.setProperty(Marshaller.JAXB_NO_NAMESPACE_SCHEMA_LOCATION,
+ "teleportation");
+ m.setProperty(Marshaller.JAXB_SCHEMA_LOCATION,
+ "teleportation teleportation.xsd");
+
+ final PreparedStatement st = conn
+ .prepareStatement("SELECT * FROM teleport");
+ st.execute();
+ final ResultSet rs = st.getResultSet();
+ while (rs.next()) {
+ final TeleportationTemplate template = new TeleportationTemplate();
+
+ template.id = new TeleportationTemplateID(rs.getInt("id"), null);
+ template.name = rs.getString("Description");
+ template.coordinate = Coordinate.fromXYZ(rs.getInt("loc_x"),
+ rs.getInt("loc_y"), rs.getInt("loc_z"));
+ template.price = rs.getInt("price");
+ template.itemTemplateID = new ItemTemplateID(
+ rs.getInt("itemId"), null);
+ if (rs.getBoolean("fornoble")) {
+ template.restrictions = Arrays
+ .asList(TeleportRestriction.NOBLE);
+ }
+ teleportation.templates.add(template);
+ }
+ m.marshal(teleportation, getXMLSerializer(new FileOutputStream(
+ new File(target, "../teleports.xml"))));
+ // System.exit(0);
+ }
+
+ System.out.println("Generating template XML files...");
+ c.generateSchema(new SchemaOutputResolver() {
+ @Override
+ public Result createOutput(String namespaceUri,
+ String suggestedFileName) throws IOException {
+ // System.out.println(new File(target, suggestedFileName));
+ // return null;
+ return new StreamResult(new File(target, suggestedFileName));
+ }
+ });
+
+ try {
+ final Marshaller m = c.createMarshaller();
+ m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
+ m.setProperty(Marshaller.JAXB_NO_NAMESPACE_SCHEMA_LOCATION, "npc");
+
+ final PreparedStatement st = conn
+ .prepareStatement("SELECT npc.*, npcskills.level AS race "
+ + "FROM npc "
+ + "LEFT JOIN npcskills "
+ + "ON(npc.idTemplate = npcskills.npcid AND npcskills.skillid = ?)");
+ st.setInt(1, 4416);
+ st.execute();
+ final ResultSet rs = st.getResultSet();
+ while (rs.next()) {
+ Object[] result = fillNPC(rs);
+ NPCTemplate t = (NPCTemplate) result[0];
+ String type = (String) result[1];
+
+ String folder = createFolder(type);
+ if (folder.isEmpty()) {
+ m.setProperty(Marshaller.JAXB_SCHEMA_LOCATION,
+ "npc ../npc.xsd");
+ } else {
+ m.setProperty(Marshaller.JAXB_SCHEMA_LOCATION,
+ "npc ../../npc.xsd");
+ }
+
+ final File file = new File(target, "npc/"
+ + folder
+ + "/"
+ + t.id.getID()
+ + (t.info.nameMetadata != null ? "-"
+ + camelCase(t.info.nameMetadata.name) : "")
+ + ".xml");
+ file.getParentFile().mkdirs();
+ templates.add(t);
+
+ try {
+ m.marshal(t, getXMLSerializer(new FileOutputStream(file)));
+ } catch (MarshalException e) {
+ System.err
+ .println("Could not generate XML template file for "
+ + t.getName() + " - " + t.getID());
+ file.delete();
+ }
+ }
+
+ System.out.println("Generated " + templates.size() + " templates");
+
+ System.gc();
+ System.out.println("Free: "
+ + FileUtils.byteCountToDisplaySize(Runtime.getRuntime()
+ .freeMemory()));
+ System.out.println("Total: "
+ + FileUtils.byteCountToDisplaySize(Runtime.getRuntime()
+ .totalMemory()));
+ System.out
+ .println("Used: "
+ + FileUtils.byteCountToDisplaySize(Runtime
+ .getRuntime().totalMemory()
+ - Runtime.getRuntime().freeMemory()));
+ System.out.println("Max: "
+ + FileUtils.byteCountToDisplaySize(Runtime.getRuntime()
+ .maxMemory()));
+ } finally {
+ conn.close();
+ }
+ }
+
+ private static Object[] fillNPC(ResultSet rs) throws SQLException,
+ IOException {
+ final NPCTemplate template = new NPCTemplate();
+ template.id = new NPCTemplateID(rs.getInt("idTemplate"), null);
+
+ template.controller = controllers.get(rs.getString("type"));
+ if (template.controller == null)
+ template.controller = NotImplementedNPCController.class;
+ template.info = new NPCInformationMetadata();
+
+ template.info.nameMetadata = new NPCNameMetadata();
+ template.info.nameMetadata.name = rs.getString("name");
+ template.info.nameMetadata.display = rs.getBoolean("show_name");
+ template.info.nameMetadata.send = rs.getBoolean("serverSideName");
+
+ template.info.titleMetadata = new NPCTitleMetadata();
+ template.info.titleMetadata.title = rs.getString("title");
+ template.info.titleMetadata.send = rs.getBoolean("serverSideTitle");
+
+ if (template.info.titleMetadata.title.length() == 0)
+ template.info.titleMetadata = null;
+ if (template.info.nameMetadata.name.length() == 0)
+ template.info.nameMetadata = null;
+
+ template.info.level = rs.getInt("level");
+ template.info.race = getRace(rs.getInt("race"));
+ if (!rs.getString("sex").equals("etc"))
+ template.info.sex = ActorSex.valueOf(rs.getString("sex")
+ .toUpperCase());
+ // template.info.attackable = rs.getBoolean("attackable");
+ template.info.targetable = rs.getBoolean("targetable");
+ template.info.aggressive = rs.getBoolean("aggro");
+ template.info.attackable = true; // FIXME
+
+ template.info.stats = new NPCStatsMetadata();
+
+ template.info.stats.hp = new Stat();
+ template.info.stats.hp.max = rs.getDouble("hp");
+ template.info.stats.hp.regen = rs.getDouble("hpreg");
+
+ template.info.stats.mp = new Stat();
+ template.info.stats.mp.max = rs.getDouble("mp");
+ template.info.stats.mp.regen = rs.getDouble("mpreg");
+
+ template.info.stats.attack = new AttackMetadata();
+ template.info.stats.attack.range = rs.getInt("attackrange");
+ template.info.stats.attack.critical = rs.getInt("critical");
+
+ template.info.stats.attack.physical = new AttackValueMetadata();
+ template.info.stats.attack.physical.damage = rs.getDouble("patk");
+ template.info.stats.attack.physical.speed = rs.getDouble("atkspd");
+
+ template.info.stats.attack.magical = new AttackValueMetadata();
+ template.info.stats.attack.magical.damage = rs.getDouble("matk");
+ template.info.stats.attack.magical.speed = rs.getDouble("matkspd");
+
+ template.info.stats.defense = new DefenseMetadata();
+ template.info.stats.defense.physical = new DefenseValueMetadata();
+ template.info.stats.defense.physical.value = rs.getDouble("pdef");
+ template.info.stats.defense.magical = new DefenseValueMetadata();
+ template.info.stats.defense.magical.value = rs.getDouble("mdef");
+
+ template.info.stats.move = new MoveMetadata();
+ template.info.stats.move.run = rs.getDouble("runspd");
+ template.info.stats.move.walk = rs.getDouble("walkspd");
+
+ template.info.stats.base = new BaseMetadata();
+ template.info.stats.base.intelligence = rs.getInt("int");
+ template.info.stats.base.strength = rs.getInt("str");
+ template.info.stats.base.concentration = rs.getInt("con");
+ template.info.stats.base.dexterity = rs.getInt("dex");
+ template.info.stats.base.witness = rs.getInt("wit");
+ template.info.stats.base.mentality = rs.getInt("men");
+
+ template.info.experience = rs.getLong("exp");
+ template.info.sp = rs.getInt("sp");
+
+ if (rs.getInt("rhand") > 0 || rs.getInt("lhand") > 0)
+ template.info.item = new ItemMetadata();
+ if (rs.getInt("rhand") > 0)
+ template.info.item.rightHand = new ItemTemplateID(
+ rs.getInt("rhand"), null);
+ if (rs.getInt("lhand") > 0)
+ template.info.item.leftHand = new ItemTemplateID(
+ rs.getInt("lhand"), null);
+
+ template.info.collision = new CollisionMetadata();
+ template.info.collision.radius = rs.getDouble("collision_radius");
+ template.info.collision.height = rs.getDouble("collision_height");
+
+ template.droplist = fillDropList(rs, template.id.getID());
+ template.skills = fillSkillList(rs, template.id.getID());
+ template.talk = fillHtmlChat(template.id.getID());
+
+ return new Object[] { template, createParentType(rs.getString("type")) };
+ }
+
+ private static List fillDropList(ResultSet npcRs,
+ int npcId) throws SQLException {
+ final Connection conn = npcRs.getStatement().getConnection();
+ final List drops = CollectionFactory.newList();
+
+ final PreparedStatement st = conn
+ .prepareStatement("SELECT * FROM droplist WHERE mobId = ?");
+ st.setInt(1, npcId);
+ st.execute();
+ final ResultSet rs = st.getResultSet();
+ while (rs.next()) {
+ DropItemMetadata m = new DropItemMetadata();
+ m.item = new ItemTemplateID(rs.getInt("itemId"), null);
+ m.min = rs.getInt("min");
+ m.max = rs.getInt("max");
+ m.chance = rs.getInt("chance");
+ m.category = getCategory(rs.getInt("category"));
+ drops.add(m);
+ }
+ if (drops.size() == 0)
+ return null;
+ return drops;
+ }
+
+ private static TalkMetadata fillHtmlChat(int npcId) throws IOException {
+ final TalkMetadata talk = new TalkMetadata();
+ talk.defaultChat = "default";
+ talk.chats = CollectionFactory.newList();
+ for (final File file : htmlScannedFiles) {
+ String id = null;
+ if (file.getName().startsWith(npcId + "-")) {
+ int preffixLength = (npcId + "-").length();
+ id = file.getName().substring(preffixLength,
+ file.getName().indexOf("."));
+ } else if (file.getName().startsWith(npcId + ".")) {
+ id = "default";
+ }
+ if (id != null && !file.getAbsolutePath().contains("/half/")
+ && !file.getAbsolutePath().contains("/free/")) {
+ Chat chat = new Chat();
+ chat.id = id;
+ chat.html = FileUtils.readFileToString(file);
+ talk.chats.add(chat);
+ }
+ }
+
+ if (talk.chats.size() == 0)
+ return null;
+ return talk;
+ }
+
+ private static List fillSkillList(ResultSet npcRs, int npcId)
+ throws SQLException {
+ final Connection conn = npcRs.getStatement().getConnection();
+ final List skills = CollectionFactory.newList();
+
+ final PreparedStatement st = conn
+ .prepareStatement("SELECT * FROM npcskills WHERE npcid = ?");
+ st.setInt(1, npcId);
+ st.execute();
+ final ResultSet rs = st.getResultSet();
+ while (rs.next()) {
+ SkillMetadata m = new SkillMetadata();
+ m.skill = new SkillTemplateID(rs.getInt("skillid"), null);
+ m.level = rs.getInt("level");
+ skills.add(m);
+ }
+ if (skills.size() == 0)
+ return null;
+ return skills;
+ }
+
+ private static String camelCase(String c) {
+ Pattern p = Pattern.compile("[a-zA-Z0-9]+");
+ Matcher m = p.matcher(c.replaceAll("_", " ").replaceAll("\\.", " "));
+ StringBuffer result = new StringBuffer();
+ String word;
+ while (m.find()) {
+ word = m.group();
+ result.append(word.substring(0, 1).toUpperCase()
+ + word.substring(1).toLowerCase());
+ }
+ return result.toString();
+ }
+
+ private static String createParentType(String l2j) {
+ if (l2j.startsWith("L2"))
+ l2j = l2j.substring(2);
+ if (l2j.equals("Npc"))
+ return "";
+ if (l2j.contains("VillageMaster"))
+ return (l2j.replaceAll("VillageMaster", "") + "VillageMaster");
+ if (l2j.contains("Npc"))
+ l2j = l2j.replaceAll("Npc", "");
+ return l2j;
+ }
+
+ private static String createFolder(String l2j) {
+ if (l2j.startsWith("L2"))
+ l2j = l2j.substring(2);
+ if (l2j.equals("Npc"))
+ return "";
+ if (l2j.toLowerCase().contains("monster"))
+ return "monster";
+ if (l2j.toLowerCase().contains("castle"))
+ return "castle";
+ if (l2j.toLowerCase().contains("fort"))
+ return "fort";
+ if (l2j.toLowerCase().contains("xmasstree"))
+ return "misc";
+ return l2j.toLowerCase();
+ }
+
+ private static XMLSerializer getXMLSerializer(OutputStream w) {
+ // configure an OutputFormat to handle CDATA
+ OutputFormat of = new OutputFormat();
+
+ // specify which of your elements you want to be handled as CDATA.
+ // The use of the '^' between the namespaceURI and the localname
+ // seems to be an implementation detail of the xerces code.
+ // When processing xml that doesn't use namespaces, simply omit the
+ // namespace prefix as shown in the third CDataElement below.
+ of.setCDataElements(new String[] { "^chat" });
+
+ // set any other options you'd like
+ of.setPreserveSpace(false);
+ of.setIndenting(true);
+
+ // create the serializer
+ XMLSerializer serializer = new XMLSerializer(of);
+ serializer.setOutputByteStream(w);
+
+ return serializer;
+ }
+
+ public static NPCRace getRace(int id) {
+ switch (id) {
+ case 1:
+ return NPCRace.UNDEAD;
+ case 2:
+ return NPCRace.MAGIC_CREATURE;
+ case 3:
+ return NPCRace.BEAST;
+ case 4:
+ return NPCRace.ANIMAL;
+ case 5:
+ return NPCRace.PLANT;
+ case 6:
+ return NPCRace.HUMANOID;
+ case 7:
+ return NPCRace.SPIRIT;
+ case 8:
+ return NPCRace.ANGEL;
+ case 9:
+ return NPCRace.DEMON;
+ case 10:
+ return NPCRace.DRAGON;
+ case 11:
+ return NPCRace.GIANT;
+ case 12:
+ return NPCRace.BUG;
+ case 13:
+ return NPCRace.FAIRIE;
+ case 14:
+ return NPCRace.HUMAN;
+ case 15:
+ return NPCRace.ELVEN;
+ case 16:
+ return NPCRace.DARKELVEN;
+ case 17:
+ return NPCRace.ORC;
+ case 18:
+ return NPCRace.DWARVEN;
+ case 19:
+ return NPCRace.OTHER;
+ case 20:
+ return NPCRace.NON_LIVING;
+ case 21:
+ return NPCRace.SIEGE_WEAPON;
+ case 22:
+ return NPCRace.DEFENDING_ARMY;
+ case 23:
+ return NPCRace.MERCENARIE;
+ case 24:
+ return NPCRace.UNKNOWN;
+ case 25:
+ return NPCRace.KAMAEL;
+ default:
+ return NPCRace.NONE;
+ }
+ }
+
+ public static DropCategory getCategory(int id) {
+ switch (id) {
+ case -1:
+ return DropCategory.SPOIL;
+ case 0:
+ return DropCategory.DROP;
+ default:
+ return DropCategory.valueOf("UNK_" + id);
+ }
+ }
+}
diff --git a/l2jserver2-tools/src/main/java/com/l2jserver/model/template/SkillTemplateConverter.java b/l2jserver2-tools/src/main/java/com/l2jserver/model/template/SkillTemplateConverter.java
new file mode 100644
index 000000000..33fdb6070
--- /dev/null
+++ b/l2jserver2-tools/src/main/java/com/l2jserver/model/template/SkillTemplateConverter.java
@@ -0,0 +1,188 @@
+/*
+ * This file is part of l2jserver .
+ *
+ * l2jserver is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * l2jserver is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with l2jserver. If not, see .
+ */
+package com.l2jserver.model.template;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.SQLException;
+import java.util.Collection;
+import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBException;
+import javax.xml.bind.MarshalException;
+import javax.xml.bind.Marshaller;
+import javax.xml.bind.SchemaOutputResolver;
+import javax.xml.bind.Unmarshaller;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.transform.Result;
+import javax.xml.transform.stream.StreamResult;
+
+import org.apache.commons.io.FileUtils;
+
+import com.l2jserver.model.id.template.SkillTemplateID;
+import com.l2jserver.util.factory.CollectionFactory;
+import com.sun.org.apache.xml.internal.serialize.OutputFormat;
+import com.sun.org.apache.xml.internal.serialize.XMLSerializer;
+
+@SuppressWarnings("restriction")
+public class SkillTemplateConverter {
+ private static final String JDBC_URL = "jdbc:mysql://localhost/l2jlegacy";
+ private static final String JDBC_USERNAME = "l2j";
+ private static final String JDBC_PASSWORD = "changeme";
+
+ private static final String LEGACY_SKILL_FOLDER = "../L2J_DataPack_BETA/data/stats/skills";
+
+ private static List templates = CollectionFactory.newList();
+
+ public static void main(String[] args) throws SQLException, IOException,
+ ClassNotFoundException, JAXBException {
+ Class.forName("com.mysql.jdbc.Driver");
+
+ final File target = new File("data/templates");
+ final JAXBContext c = JAXBContext.newInstance(SkillTemplate.class,
+ LegacySkillList.class);
+ final Connection conn = DriverManager.getConnection(JDBC_URL,
+ JDBC_USERNAME, JDBC_PASSWORD);
+
+ System.out.println("Generating template XML files...");
+ c.generateSchema(new SchemaOutputResolver() {
+ @Override
+ public Result createOutput(String namespaceUri,
+ String suggestedFileName) throws IOException {
+ return new StreamResult(new File(target, suggestedFileName));
+ }
+ });
+
+ try {
+ final Unmarshaller u = c.createUnmarshaller();
+ final Marshaller m = c.createMarshaller();
+ m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
+ m.setProperty(Marshaller.JAXB_NO_NAMESPACE_SCHEMA_LOCATION, "skill");
+ m.setProperty(Marshaller.JAXB_SCHEMA_LOCATION, "skill ../skill.xsd");
+
+ Collection files = FileUtils.listFiles(new File(
+ LEGACY_SKILL_FOLDER), new String[] { "xml" }, true);
+ for (final File legacyFile : files) {
+ LegacySkillList list = (LegacySkillList) u
+ .unmarshal(legacyFile);
+ for (final LegacySkill legacySkill : list.skills) {
+ SkillTemplate t = fillSkill(legacySkill);
+ final File file = new File(target, "skill/"
+ + t.id.getID()
+ + (t.getName() != null ? "-"
+ + camelCase(t.getName()) : "") + ".xml");
+ templates.add(t);
+
+ try {
+ m.marshal(t,
+ getXMLSerializer(new FileOutputStream(file)));
+ } catch (MarshalException e) {
+ System.err
+ .println("Could not generate XML template file for "
+ + t.getName() + " - " + t.getID());
+ file.delete();
+ }
+ }
+ }
+
+ System.out.println("Generated " + templates.size() + " templates");
+
+ System.gc();
+ System.out.println("Free: "
+ + FileUtils.byteCountToDisplaySize(Runtime.getRuntime()
+ .freeMemory()));
+ System.out.println("Total: "
+ + FileUtils.byteCountToDisplaySize(Runtime.getRuntime()
+ .totalMemory()));
+ System.out
+ .println("Used: "
+ + FileUtils.byteCountToDisplaySize(Runtime
+ .getRuntime().totalMemory()
+ - Runtime.getRuntime().freeMemory()));
+ System.out.println("Max: "
+ + FileUtils.byteCountToDisplaySize(Runtime.getRuntime()
+ .maxMemory()));
+ } finally {
+ conn.close();
+ }
+ }
+
+ private static SkillTemplate fillSkill(LegacySkill legacy)
+ throws SQLException, IOException {
+ final SkillTemplate template = new SkillTemplate();
+ template.id = new SkillTemplateID(legacy.id, null);
+ template.name = legacy.name;
+ return template;
+ }
+
+ private static String camelCase(String c) {
+ Pattern p = Pattern.compile("[a-zA-Z0-9]+");
+ Matcher m = p.matcher(c.replaceAll("_", " ").replaceAll("\\.", " "));
+ StringBuffer result = new StringBuffer();
+ String word;
+ while (m.find()) {
+ word = m.group();
+ result.append(word.substring(0, 1).toUpperCase()
+ + word.substring(1).toLowerCase());
+ }
+ return result.toString();
+ }
+
+ private static XMLSerializer getXMLSerializer(OutputStream w) {
+ // configure an OutputFormat to handle CDATA
+ OutputFormat of = new OutputFormat();
+
+ // specify which of your elements you want to be handled as CDATA.
+ // The use of the '^' between the namespaceURI and the localname
+ // seems to be an implementation detail of the xerces code.
+ // When processing xml that doesn't use namespaces, simply omit the
+ // namespace prefix as shown in the third CDataElement below.
+ of.setCDataElements(new String[] { "^chat" });
+
+ // set any other options you'd like
+ of.setPreserveSpace(false);
+ of.setIndenting(true);
+
+ // create the serializer
+ XMLSerializer serializer = new XMLSerializer(of);
+ serializer.setOutputByteStream(w);
+
+ return serializer;
+ }
+
+ @XmlRootElement(name = "list")
+ public static class LegacySkillList {
+ @XmlElement(name = "skill")
+ private List skills;
+ }
+
+ public static class LegacySkill {
+ @XmlAttribute(name = "id")
+ private int id;
+ @XmlAttribute(name = "name")
+ private String name;
+ }
+}
diff --git a/l2jserver2-tools/src/main/java/com/l2jserver/tool/CharacterSQLEnumGenerator.java b/l2jserver2-tools/src/main/java/com/l2jserver/tool/CharacterSQLEnumGenerator.java
new file mode 100644
index 000000000..2a0871345
--- /dev/null
+++ b/l2jserver2-tools/src/main/java/com/l2jserver/tool/CharacterSQLEnumGenerator.java
@@ -0,0 +1,38 @@
+/*
+ * This file is part of l2jserver .
+ *
+ * l2jserver is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * l2jserver is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with l2jserver. If not, see .
+ */
+package com.l2jserver.tool;
+
+import com.l2jserver.model.template.character.CharacterClass;
+
+public class CharacterSQLEnumGenerator {
+ public static void main(String[] args) {
+ System.out.println("== 'Character' SQL STATEMENT ==");
+ System.out.println(createClassStatement());
+ }
+
+ private static String createClassStatement() {
+ final StringBuilder builder = new StringBuilder();
+ builder.append("ALTER TABLE `character` CHANGE `class` `class` ENUM(");
+ for (CharacterClass c : CharacterClass.values()) {
+ if (!c.name().startsWith("DUMMY"))
+ builder.append("'" + c.name() + "',");
+ }
+ builder.replace(builder.length() - 1, builder.length(), "");
+ builder.append(") CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL DEFAULT 'HUMAN_FIGHTER';");
+ return builder.toString();
+ }
+}
diff --git a/l2jserver2-tools/src/main/java/com/l2jserver/tool/EndianessTest.java b/l2jserver2-tools/src/main/java/com/l2jserver/tool/EndianessTest.java
new file mode 100644
index 000000000..d5bba02b5
--- /dev/null
+++ b/l2jserver2-tools/src/main/java/com/l2jserver/tool/EndianessTest.java
@@ -0,0 +1,39 @@
+/*
+ * This file is part of l2jserver .
+ *
+ * l2jserver is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * l2jserver is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with l2jserver. If not, see .
+ */
+package com.l2jserver.tool;
+
+import java.nio.ByteBuffer;
+import java.nio.ByteOrder;
+import java.util.Arrays;
+
+public class EndianessTest {
+ /**
+ * @param args
+ * the arguments
+ */
+ public static void main(String[] args) {
+ final ByteBuffer bigEndian = ByteBuffer.allocate(8);
+ bigEndian.order(ByteOrder.BIG_ENDIAN);
+ bigEndian.putDouble(20);
+ System.out.println(Arrays.toString(bigEndian.array()));
+
+ final ByteBuffer littleEndian = ByteBuffer.allocate(8);
+ littleEndian.order(ByteOrder.LITTLE_ENDIAN);
+ littleEndian.putDouble(20);
+ System.out.println(Arrays.toString(littleEndian.array()));
+ }
+}
diff --git a/l2jserver2-tools/src/main/java/com/l2jserver/tool/conversor/itemtemplate/ItemListXml.java b/l2jserver2-tools/src/main/java/com/l2jserver/tool/conversor/itemtemplate/ItemListXml.java
new file mode 100644
index 000000000..d111de5c6
--- /dev/null
+++ b/l2jserver2-tools/src/main/java/com/l2jserver/tool/conversor/itemtemplate/ItemListXml.java
@@ -0,0 +1,46 @@
+/*
+ * This file is part of l2jserver .
+ *
+ * l2jserver is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * l2jserver is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with l2jserver. If not, see .
+ */
+package com.l2jserver.tool.conversor.itemtemplate;
+
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+
+@XmlRootElement(name = "list")
+@XmlAccessorType(XmlAccessType.NONE)
+public class ItemListXml {
+ @XmlElement(name = "item")
+ private List items;
+
+ /**
+ * @return the items
+ */
+ public List getItems() {
+ return items;
+ }
+
+ /**
+ * @param items
+ * the items to set
+ */
+ public void setItems(List items) {
+ this.items = items;
+ }
+}
diff --git a/l2jserver2-tools/src/main/java/com/l2jserver/tool/conversor/itemtemplate/ItemSetXml.java b/l2jserver2-tools/src/main/java/com/l2jserver/tool/conversor/itemtemplate/ItemSetXml.java
new file mode 100644
index 000000000..436a03c1d
--- /dev/null
+++ b/l2jserver2-tools/src/main/java/com/l2jserver/tool/conversor/itemtemplate/ItemSetXml.java
@@ -0,0 +1,78 @@
+/*
+ * This file is part of l2jserver .
+ *
+ * l2jserver is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * l2jserver is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with l2jserver. If not, see .
+ */
+package com.l2jserver.tool.conversor.itemtemplate;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlRootElement;
+
+@XmlRootElement(name = "set")
+@XmlAccessorType(XmlAccessType.NONE)
+public class ItemSetXml {
+ @XmlAttribute(name = "order")
+ private int order;
+ @XmlAttribute(name = "stat")
+ private String stat;
+ @XmlAttribute(name = "val")
+ private int val;
+
+ /**
+ * @return the order
+ */
+ public int getOrder() {
+ return order;
+ }
+
+ /**
+ * @param order
+ * the order to set
+ */
+ public void setOrder(int order) {
+ this.order = order;
+ }
+
+ /**
+ * @return the stat
+ */
+ public String getStat() {
+ return stat;
+ }
+
+ /**
+ * @param stat
+ * the stat to set
+ */
+ public void setStat(String stat) {
+ this.stat = stat;
+ }
+
+ /**
+ * @return the val
+ */
+ public int getVal() {
+ return val;
+ }
+
+ /**
+ * @param val
+ * the val to set
+ */
+ public void setVal(int val) {
+ this.val = val;
+ }
+}
diff --git a/l2jserver2-tools/src/main/java/com/l2jserver/tool/conversor/itemtemplate/ItemTemplateBase.txt b/l2jserver2-tools/src/main/java/com/l2jserver/tool/conversor/itemtemplate/ItemTemplateBase.txt
new file mode 100644
index 000000000..5c3be42a6
--- /dev/null
+++ b/l2jserver2-tools/src/main/java/com/l2jserver/tool/conversor/itemtemplate/ItemTemplateBase.txt
@@ -0,0 +1,16 @@
+package script.template.item${package};
+
+import com.google.inject.Inject;
+import com.l2jserver.model.id.template.factory.ItemTemplateIDFactory;
+${import}
+import com.l2jserver.model.world.Item;
+
+public class ${className}Template ${extends} ${implements} {
+ public static final int ID = ${id};
+
+ @Inject
+ public ${className}Template(ItemTemplateIDFactory factory) {
+ super(factory.createID(ID));
+ ${values}
+ }
+}
\ No newline at end of file
diff --git a/l2jserver2-tools/src/main/java/com/l2jserver/tool/conversor/itemtemplate/ItemTemplateConversor.java b/l2jserver2-tools/src/main/java/com/l2jserver/tool/conversor/itemtemplate/ItemTemplateConversor.java
new file mode 100644
index 000000000..be6d185d5
--- /dev/null
+++ b/l2jserver2-tools/src/main/java/com/l2jserver/tool/conversor/itemtemplate/ItemTemplateConversor.java
@@ -0,0 +1,218 @@
+/*
+ * This file is part of l2jserver .
+ *
+ * l2jserver is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * l2jserver is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with l2jserver. If not, see .
+ */
+package com.l2jserver.tool.conversor.itemtemplate;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.util.Collection;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import javax.xml.bind.JAXB;
+
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.io.IOUtils;
+
+public class ItemTemplateConversor {
+ private static String template;
+
+ public static void main(String[] args) throws IOException {
+ template = IOUtils.toString(ItemTemplateConversor.class
+ .getResourceAsStream("ItemTemplateBase.txt"));
+
+ Collection files = FileUtils
+ .listFiles(
+ new File(
+ "/home/rogiel/Documents/Eclipse/lineage2/L2J_DataPack_BETA/data/stats/items"),
+ new String[] { "xml" }, false);
+
+ for (final File file : files) {
+ processFile(file.getAbsolutePath());
+ }
+ }
+
+ private static void processFile(String file) throws FileNotFoundException {
+ ItemListXml xml = JAXB.unmarshal(new FileInputStream(file),
+ ItemListXml.class);
+ for (final ItemXml item : xml.getItems()) {
+ String template = ItemTemplateConversor.template;
+ String values = "";
+ for (final ItemValueXml val : item.getValues()) {
+ values += generateSet(val.getName(), val.getValue());
+ }
+ template = replace(template, "values", values);
+ template = replace(template, "package", "");
+ template = replace(template, "import", "");
+ template = replace(template, "className", camelCase(item.getName()));
+ template = replace(template, "extends", " extends "
+ + camelCase(item.getType()) + "Template");
+ template = replace(template, "implements", "");
+ template = replace(template, "id", item.getId() + "");
+ }
+ }
+
+ private static String generateSet(String property, String value) {
+ value = convertValue(property, value);
+ if (value == null)
+ return "";
+ property = convertPropertyName(property);
+ if (property == null)
+ return "";
+
+ if (property.contains("_")) {
+ System.out.println(property + " -> " + value);
+ System.exit(0);
+ }
+
+ return "this." + convertPropertyName(property) + " = " + value + ";\n";
+ }
+
+ private static String convertPropertyName(String property) {
+ if ("default_action".equals(property))
+ return null;
+ if ("is_tradable".equals(property))
+ return null;
+ if ("is_dropable".equals(property))
+ return null;
+ if ("is_sellable".equals(property))
+ return null;
+ if ("is_destroyable".equals(property))
+ return null;
+ if ("is_depositable".equals(property))
+ return null;
+ if ("is_questitem".equals(property))
+ return null;
+ if ("enchant_enabled".equals(property))
+ return null;
+ if ("element_enabled".equals(property))
+ return null;
+ if ("enchant4_skill".equals(property))
+ return null;
+ if ("is_premium".equals(property))
+ return null;
+ if ("is_oly_restricted".equals(property))
+ return null;
+ if ("change_weaponId".equals(property))
+ return null;
+ if ("use_condition".equals(property))
+ return null;
+ if ("oncast_chance".equals(property))
+ return "castChance";
+ if ("oncast_skill".equals(property))
+ return "castSkill";
+ if ("oncrit_skill".equals(property))
+ return "criticalSkill";
+ if ("unequip_skill".equals(property))
+ return "unequipSkill";
+ if ("equip_condition".equals(property))
+ return null;
+ if ("reduced_soulshot".equals(property))
+ return null;
+ if ("reduced_mp_consume".equals(property))
+ return null;
+ if ("equip_reuse_delay".equals(property))
+ return null;
+ if ("recipe_id".equals(property))
+ return null;
+ if ("shared_reuse_group".equals(property))
+ return null;
+ if ("ex_immediate_effect".equals(property))
+ return null;
+ if ("oncrit_chance".equals(property))
+ return null; // TODO
+ if ("capsuled_items".equals(property))
+ return "capsuled";
+ if ("mp_consume".equals(property))
+ return "mpConsume";
+ if ("reuse_delay".equals(property))
+ return "reuseDelay";
+ if ("item_skill".equals(property))
+ return "itemSkill";
+ if ("is_magic_weapon".equals(property))
+ return null;
+ if ("immediate_effect".equals(property))
+ return "immediateEffect";
+ if ("bodypart".equals(property))
+ return "paperdoll";
+ if ("is_stackable".equals(property))
+ return null;
+ if ("etcitem_type".equals(property))
+ return null;
+ if ("weapon_type".equals(property))
+ return "type";
+ if ("armor_type".equals(property))
+ return "type";
+ if ("attack_range".equals(property))
+ return "attackRange";
+ if ("damage_range".equals(property))
+ return "damageRange";
+ if ("random_damage".equals(property))
+ return "randomDamage";
+ if ("crystal_count".equals(property))
+ return "crystals";
+ if ("crystal_type".equals(property))
+ return "crystal";
+ return property;
+ }
+
+ private static String convertValue(String property, String value) {
+ if ("material".equals(property))
+ return "ItemMaterial." + value.toUpperCase();
+ if ("weapon_type".equals(property))
+ return "WeaponType." + value.toUpperCase();
+ if ("bodypart".equals(property))
+ return "InventoryPaperdoll." + value.toUpperCase();
+ if ("icon".equals(property))
+ return convertString(value);
+ if ("damage_range".equals(property))
+ return convertArray(value, "int");
+ return value;
+ }
+
+ public static String convertString(String value) {
+ return "\"" + value + "\"";
+ }
+
+ public static String convertArray(String value, String type) {
+ String v = "new " + type + "[] {";
+ String[] args = value.split(";");
+ for (final String r : args) {
+ v += r + ",";
+ }
+ v = v.substring(0, v.length() - 1);
+ return v + "}";
+ }
+
+ private static String replace(String template, String key, String value) {
+ return template.replaceAll("\\$\\{" + key + "\\}", value);
+ }
+
+ private static String camelCase(String c) {
+ Pattern p = Pattern.compile("[a-zA-Z0-9]+");
+ Matcher m = p.matcher(c.replaceAll("_", " "));
+ StringBuffer result = new StringBuffer();
+ String word;
+ while (m.find()) {
+ word = m.group();
+ result.append(word.substring(0, 1).toUpperCase()
+ + word.substring(1).toLowerCase());
+ }
+ return result.toString();
+ }
+}
diff --git a/l2jserver2-tools/src/main/java/com/l2jserver/tool/conversor/itemtemplate/ItemValueXml.java b/l2jserver2-tools/src/main/java/com/l2jserver/tool/conversor/itemtemplate/ItemValueXml.java
new file mode 100644
index 000000000..3da373f68
--- /dev/null
+++ b/l2jserver2-tools/src/main/java/com/l2jserver/tool/conversor/itemtemplate/ItemValueXml.java
@@ -0,0 +1,61 @@
+/*
+ * This file is part of l2jserver .
+ *
+ * l2jserver is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * l2jserver is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with l2jserver. If not, see .
+ */
+package com.l2jserver.tool.conversor.itemtemplate;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlRootElement;
+
+@XmlRootElement(name = "set")
+@XmlAccessorType(XmlAccessType.NONE)
+public class ItemValueXml {
+ @XmlAttribute(name = "name")
+ private String name;
+ @XmlAttribute(name = "val")
+ private String value;
+
+ /**
+ * @return the name
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * @param name
+ * the name to set
+ */
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ /**
+ * @return the value
+ */
+ public String getValue() {
+ return value;
+ }
+
+ /**
+ * @param value
+ * the value to set
+ */
+ public void setValue(String value) {
+ this.value = value;
+ }
+}
diff --git a/l2jserver2-tools/src/main/java/com/l2jserver/tool/conversor/itemtemplate/ItemXml.java b/l2jserver2-tools/src/main/java/com/l2jserver/tool/conversor/itemtemplate/ItemXml.java
new file mode 100644
index 000000000..dbb71a25f
--- /dev/null
+++ b/l2jserver2-tools/src/main/java/com/l2jserver/tool/conversor/itemtemplate/ItemXml.java
@@ -0,0 +1,117 @@
+/*
+ * This file is part of l2jserver .
+ *
+ * l2jserver is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * l2jserver is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with l2jserver. If not, see .
+ */
+package com.l2jserver.tool.conversor.itemtemplate;
+
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlElementRef;
+import javax.xml.bind.annotation.XmlRootElement;
+
+@XmlRootElement(name = "item")
+@XmlAccessorType(XmlAccessType.NONE)
+public class ItemXml {
+ @XmlAttribute(name = "id")
+ private int id;
+ @XmlAttribute(name = "name")
+ private String name;
+ @XmlAttribute(name = "type")
+ private String type;
+
+ @XmlElementRef
+ private List values;
+ @XmlElement(name = "for")
+ private List sets;
+
+ /**
+ * @return the id
+ */
+ public int getId() {
+ return id;
+ }
+
+ /**
+ * @param id
+ * the id to set
+ */
+ public void setId(int id) {
+ this.id = id;
+ }
+
+ /**
+ * @return the name
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * @param name
+ * the name to set
+ */
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ /**
+ * @return the type
+ */
+ public String getType() {
+ return type;
+ }
+
+ /**
+ * @param type
+ * the type to set
+ */
+ public void setType(String type) {
+ this.type = type;
+ }
+
+ /**
+ * @return the values
+ */
+ public List getValues() {
+ return values;
+ }
+
+ /**
+ * @param values
+ * the values to set
+ */
+ public void setValues(List values) {
+ this.values = values;
+ }
+
+ /**
+ * @return the sets
+ */
+ public List getSets() {
+ return sets;
+ }
+
+ /**
+ * @param sets
+ * the sets to set
+ */
+ public void setSets(List sets) {
+ this.sets = sets;
+ }
+}
diff --git a/l2jserver2-tools/src/main/java/com/l2jserver/tool/conversor/itemtemplate/doc.txt b/l2jserver2-tools/src/main/java/com/l2jserver/tool/conversor/itemtemplate/doc.txt
new file mode 100644
index 000000000..b4a0083c5
--- /dev/null
+++ b/l2jserver2-tools/src/main/java/com/l2jserver/tool/conversor/itemtemplate/doc.txt
@@ -0,0 +1,13 @@
+possible attribs: [blessed, item_skill, change_weaponId, is_oly_restricted, is_sellable, time, crystal_type,
+ oncast_chance, random_damage, bodypart, spiritshots, soulshots, crystal_count, enchant_enabled,
+ is_destroyable, armor_type, attack_range, is_stackable, etcitem_type, mp_consume, reduced_soulshot,
+ is_questitem, immediate_effect, price, use_condition, is_premium, shared_reuse_group, equip_reuse_delay,
+ weight, reuse_delay, capsuled_items, is_tradable, is_magic_weapon, icon, item_equip_option, oncrit_skill,
+ is_dropable, enchant4_skill, damage_range, is_depositable, default_action, material, equip_condition,
+ recipe_id, ex_immediate_effect, duration, unequip_skill, oncast_skill, element_enabled, reduced_mp_consume,
+ handler, weapon_type, oncrit_chance]
+
+etc_types: [race_ticket, castle_guard, dye, bolt, recipe, arrow, bless_scrl_enchant_wp, lure, rune, crop,
+ scrl_enchant_am, ancient_crystal_enchant_am, bless_scrl_enchant_am, potion, scrl_enchant_wp, coupon,
+ scrl_enchant_attr, seed2, scroll, seed, ticket_of_lord, rune_select, maturecrop, elixir, material,
+ lotto, scrl_inc_enchant_prop_wp, ancient_crystal_enchant_wp, scrl_inc_enchant_prop_am, harvest, pet_collar]
diff --git a/pom.xml b/pom.xml
index 1621984a3..c2901f9c9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -2,11 +2,20 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
com.l2jserver
- l2j2-gameserver
+ l2jserver2
2.0.0
+ pom
+
L2JServer - Game Server
Lineage II server emulator
2011
+
+
+ l2jserver2-common
+ l2jserver2-gameserver
+ l2jserver2-loginserver
+ l2jserver2-tools
+
GitHub
@@ -118,136 +127,6 @@
jar
test
-
-
- org.jboss.netty
- netty
- 3.2.4.Final
- runtime
-
-
-
- com.google.inject
- guice
- 3.0
- jar
- runtime
-
-
- com.google.inject.extensions
- guice-assistedinject
- 3.0
- jar
- runtime
-
-
- com.google.inject.extensions
- guice-multibindings
- 3.0
- jar
- runtime
-
-
-
- org.slf4j
- slf4j-log4j12
- 1.6.1
- jar
- runtime
-
-
- org.slf4j
- jcl-over-slf4j
- 1.6.1
- jar
- runtime
-
-
-
- mysql
- mysql-connector-java
- 5.1.16
- jar
- runtime
-
-
- com.h2database
- h2
- 1.3.155
- jar
- runtime
-
-
- org.apache.derby
- derby
- 10.8.1.2
-
-
- commons-dbcp
- commons-dbcp
- 1.4
- jar
- runtime
-
-
-
- net.sf.ehcache
- ehcache-core
- 2.4.2
- jar
- runtime
-
-
-
- org.htmlparser
- htmlparser
- 2.1
- jar
- runtime
-
-
-
- javolution
- javolution
- 5.5.1
- jar
- runtime
-
-
- com.google.guava
- guava
- r09
- jar
- runtime
-
-
- commons-io
- commons-io
- 2.0.1
- jar
- runtime
-
-
- commons-pool
- commons-pool
- 1.5.6
- jar
- runtime
-
-
- commons-collections
- commons-collections
- 3.2.1
- jar
- runtime
-
-
- org.apache.commons
- commons-math
- 2.2
- jar
- runtime
-