mirror of
https://github.com/Rogiel/l2jserver2
synced 2025-12-06 07:32:46 +00:00
@@ -21,6 +21,7 @@ import java.util.List;
|
|||||||
import com.l2jserver.model.id.AccountID;
|
import com.l2jserver.model.id.AccountID;
|
||||||
import com.l2jserver.model.id.ID;
|
import com.l2jserver.model.id.ID;
|
||||||
import com.l2jserver.model.id.object.CharacterID;
|
import com.l2jserver.model.id.object.CharacterID;
|
||||||
|
import com.l2jserver.model.world.Clan;
|
||||||
import com.l2jserver.model.world.L2Character;
|
import com.l2jserver.model.world.L2Character;
|
||||||
import com.l2jserver.service.cache.Cacheable;
|
import com.l2jserver.service.cache.Cacheable;
|
||||||
import com.l2jserver.service.cache.IgnoreCaching;
|
import com.l2jserver.service.cache.IgnoreCaching;
|
||||||
@@ -41,6 +42,14 @@ public interface CharacterDAO extends DataAccessObject<L2Character>, Cacheable {
|
|||||||
*/
|
*/
|
||||||
L2Character load(CharacterID id);
|
L2Character load(CharacterID id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Load the members of the given <tt>clan</tt>
|
||||||
|
*
|
||||||
|
* @param clan
|
||||||
|
* the clan
|
||||||
|
*/
|
||||||
|
void load(Clan clan);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Select an character by its name.
|
* Select an character by its name.
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -35,6 +35,7 @@ import com.l2jserver.model.id.template.factory.CharacterTemplateIDFactory;
|
|||||||
import com.l2jserver.model.template.CharacterTemplate;
|
import com.l2jserver.model.template.CharacterTemplate;
|
||||||
import com.l2jserver.model.world.AbstractActor.Race;
|
import com.l2jserver.model.world.AbstractActor.Race;
|
||||||
import com.l2jserver.model.world.AbstractActor.Sex;
|
import com.l2jserver.model.world.AbstractActor.Sex;
|
||||||
|
import com.l2jserver.model.world.Clan;
|
||||||
import com.l2jserver.model.world.L2Character;
|
import com.l2jserver.model.world.L2Character;
|
||||||
import com.l2jserver.model.world.character.CharacterAppearance;
|
import com.l2jserver.model.world.character.CharacterAppearance;
|
||||||
import com.l2jserver.model.world.character.CharacterAppearance.CharacterFace;
|
import com.l2jserver.model.world.character.CharacterAppearance.CharacterFace;
|
||||||
@@ -42,7 +43,6 @@ import com.l2jserver.model.world.character.CharacterAppearance.CharacterHairColo
|
|||||||
import com.l2jserver.model.world.character.CharacterAppearance.CharacterHairStyle;
|
import com.l2jserver.model.world.character.CharacterAppearance.CharacterHairStyle;
|
||||||
import com.l2jserver.model.world.character.CharacterClass;
|
import com.l2jserver.model.world.character.CharacterClass;
|
||||||
import com.l2jserver.service.database.DatabaseService;
|
import com.l2jserver.service.database.DatabaseService;
|
||||||
import com.l2jserver.service.database.MySQLDatabaseService;
|
|
||||||
import com.l2jserver.service.database.MySQLDatabaseService.CachedMapper;
|
import com.l2jserver.service.database.MySQLDatabaseService.CachedMapper;
|
||||||
import com.l2jserver.service.database.MySQLDatabaseService.InsertUpdateQuery;
|
import com.l2jserver.service.database.MySQLDatabaseService.InsertUpdateQuery;
|
||||||
import com.l2jserver.service.database.MySQLDatabaseService.Mapper;
|
import com.l2jserver.service.database.MySQLDatabaseService.Mapper;
|
||||||
@@ -114,28 +114,18 @@ public class MySQL5CharacterDAO extends AbstractMySQL5DAO<L2Character>
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The {@link Mapper} instance
|
* The {@link Mapper} for {@link L2Character}
|
||||||
*/
|
*/
|
||||||
private final CharacterMapper mapper = new CharacterMapper(database);
|
private final Mapper<L2Character> mapper = new CachedMapper<L2Character, CharacterID>(
|
||||||
|
database) {
|
||||||
/**
|
|
||||||
* Character mapper class
|
|
||||||
*
|
|
||||||
* @author <a href="http://www.rogiel.com">Rogiel</a>
|
|
||||||
*/
|
|
||||||
private final class CharacterMapper extends
|
|
||||||
CachedMapper<L2Character, CharacterID> {
|
|
||||||
public CharacterMapper(MySQLDatabaseService database) {
|
|
||||||
super(database);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected CharacterID createID(ResultSet rs) throws SQLException {
|
protected CharacterID createID(ResultSet rs) throws SQLException {
|
||||||
return idFactory.createID(rs.getInt(CHAR_ID));
|
return idFactory.createID(rs.getInt(CHAR_ID));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected L2Character map(CharacterID id, ResultSet rs) throws SQLException {
|
protected L2Character map(CharacterID id, ResultSet rs)
|
||||||
|
throws SQLException {
|
||||||
final CharacterClass charClass = CharacterClass.valueOf(rs
|
final CharacterClass charClass = CharacterClass.valueOf(rs
|
||||||
.getString(CLASS));
|
.getString(CLASS));
|
||||||
final CharacterTemplateID templateId = templateIdFactory
|
final CharacterTemplateID templateId = templateIdFactory
|
||||||
@@ -176,63 +166,19 @@ public class MySQL5CharacterDAO extends AbstractMySQL5DAO<L2Character>
|
|||||||
character.getAppearance().setFace(
|
character.getAppearance().setFace(
|
||||||
CharacterFace.valueOf(rs.getString(APPEARANCE_FACE)));
|
CharacterFace.valueOf(rs.getString(APPEARANCE_FACE)));
|
||||||
|
|
||||||
database.updateCache(character.getID(), character);
|
|
||||||
|
|
||||||
return character;
|
return character;
|
||||||
}
|
}
|
||||||
|
};
|
||||||
|
|
||||||
// @Override
|
/**
|
||||||
// public L2Character map(ResultSet rs) throws SQLException {
|
* The mapper for {@link CharacterID}
|
||||||
// final CharacterID id = idFactory.createID(rs.getInt(CHAR_ID));
|
*/
|
||||||
//
|
private final Mapper<CharacterID> idMapper = new Mapper<CharacterID>() {
|
||||||
// if (database.hasCachedObject(id))
|
@Override
|
||||||
// return (L2Character) database.getCachedObject(id);
|
public CharacterID map(ResultSet rs) throws SQLException {
|
||||||
//
|
return idFactory.createID(rs.getInt(CHAR_ID));
|
||||||
// final CharacterClass charClass = CharacterClass.valueOf(rs
|
}
|
||||||
// .getString(CLASS));
|
};
|
||||||
// final CharacterTemplateID templateId = templateIdFactory
|
|
||||||
// .createID(charClass.id);
|
|
||||||
// final CharacterTemplate template = templateId.getTemplate();
|
|
||||||
//
|
|
||||||
// final L2Character character = new L2Character(
|
|
||||||
// template.getBaseAttributes());
|
|
||||||
//
|
|
||||||
// character.setID(id);
|
|
||||||
// character.setAccountID(accountIdFactory.createID(rs
|
|
||||||
// .getString(ACCOUNT_ID)));
|
|
||||||
// if (rs.getString(CLAN_ID) != null)
|
|
||||||
// character.setClanID(clanIdFactory.createID(rs.getInt(CLAN_ID)));
|
|
||||||
//
|
|
||||||
// character.setName(rs.getString(NAME));
|
|
||||||
//
|
|
||||||
// character.setRace(Race.valueOf(rs.getString(RACE)));
|
|
||||||
// character.setCharacterClass(CharacterClass.valueOf(rs
|
|
||||||
// .getString(CLASS)));
|
|
||||||
// character.setSex(Sex.valueOf(rs.getString(SEX)));
|
|
||||||
//
|
|
||||||
// character.setLevel(rs.getInt(LEVEL));
|
|
||||||
// // TODO load experience
|
|
||||||
// // TODO load sp
|
|
||||||
//
|
|
||||||
// character.setPoint(Point.fromXYZA(rs.getInt(POINT_X),
|
|
||||||
// rs.getInt(POINT_Y), rs.getInt(POINT_Z),
|
|
||||||
// rs.getDouble(POINT_ANGLE)));
|
|
||||||
//
|
|
||||||
// // appearance
|
|
||||||
// character.getAppearance().setHairStyle(
|
|
||||||
// CharacterHairStyle.valueOf(rs
|
|
||||||
// .getString(APPEARANCE_HAIR_STYLE)));
|
|
||||||
// character.getAppearance().setHairColor(
|
|
||||||
// CharacterHairColor.valueOf(rs
|
|
||||||
// .getString(APPEARANCE_HAIR_COLOR)));
|
|
||||||
// character.getAppearance().setFace(
|
|
||||||
// CharacterFace.valueOf(rs.getString(APPEARANCE_FACE)));
|
|
||||||
//
|
|
||||||
// database.updateCache(character.getID(), character);
|
|
||||||
//
|
|
||||||
// return character;
|
|
||||||
// }
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public L2Character load(final CharacterID id) {
|
public L2Character load(final CharacterID id) {
|
||||||
@@ -255,6 +201,29 @@ public class MySQL5CharacterDAO extends AbstractMySQL5DAO<L2Character>
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void load(final Clan clan) {
|
||||||
|
clan.getMembers().load(
|
||||||
|
database.query(new SelectListQuery<CharacterID>() {
|
||||||
|
@Override
|
||||||
|
protected String query() {
|
||||||
|
return "SELECT `" + CHAR_ID + "` FROM `" + TABLE
|
||||||
|
+ "` WHERE `" + CLAN_ID + "` = ?";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void parametize(PreparedStatement st)
|
||||||
|
throws SQLException {
|
||||||
|
st.setInt(1, clan.getID().getID());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Mapper<CharacterID> mapper() {
|
||||||
|
return idMapper;
|
||||||
|
}
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public L2Character selectByName(final String name) {
|
public L2Character selectByName(final String name) {
|
||||||
return database.query(new SelectSingleQuery<L2Character>() {
|
return database.query(new SelectSingleQuery<L2Character>() {
|
||||||
@@ -301,17 +270,12 @@ public class MySQL5CharacterDAO extends AbstractMySQL5DAO<L2Character>
|
|||||||
return database.query(new SelectListQuery<CharacterID>() {
|
return database.query(new SelectListQuery<CharacterID>() {
|
||||||
@Override
|
@Override
|
||||||
protected String query() {
|
protected String query() {
|
||||||
return "SELECT * FROM `" + TABLE + "`";
|
return "SELECT `" + CHAR_ID + " FROM `" + TABLE + "`";
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Mapper<CharacterID> mapper() {
|
protected Mapper<CharacterID> mapper() {
|
||||||
return new Mapper<CharacterID>() {
|
return idMapper;
|
||||||
@Override
|
|
||||||
public CharacterID map(ResultSet rs) throws SQLException {
|
|
||||||
return idFactory.createID(rs.getInt(CHAR_ID));
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -61,21 +61,14 @@ public class MySQL5CharacterFriendDAO extends AbstractMySQL5DAO<CharacterID>
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The {@link Mapper} instance
|
* The {@link Mapper} for {@link CharacterID}
|
||||||
*/
|
*/
|
||||||
private final CharacterFriendMapper mapper = new CharacterFriendMapper();
|
private final Mapper<CharacterID> mapper = new Mapper<CharacterID>() {
|
||||||
|
|
||||||
/**
|
|
||||||
* The friend list mapper
|
|
||||||
*
|
|
||||||
* @author <a href="http://www.rogiel.com">Rogiel</a>
|
|
||||||
*/
|
|
||||||
private final class CharacterFriendMapper implements Mapper<CharacterID> {
|
|
||||||
@Override
|
@Override
|
||||||
public CharacterID map(ResultSet rs) throws SQLException {
|
public CharacterID map(ResultSet rs) throws SQLException {
|
||||||
return idFactory.createID(rs.getInt(CHAR_ID_FRIEND));
|
return idFactory.createID(rs.getInt(CHAR_ID_FRIEND));
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<CharacterID> load(final CharacterID id) {
|
public List<CharacterID> load(final CharacterID id) {
|
||||||
|
|||||||
@@ -30,7 +30,6 @@ import com.l2jserver.model.id.object.factory.CharacterIDFactory;
|
|||||||
import com.l2jserver.model.id.object.factory.ClanIDFactory;
|
import com.l2jserver.model.id.object.factory.ClanIDFactory;
|
||||||
import com.l2jserver.model.world.Clan;
|
import com.l2jserver.model.world.Clan;
|
||||||
import com.l2jserver.service.database.DatabaseService;
|
import com.l2jserver.service.database.DatabaseService;
|
||||||
import com.l2jserver.service.database.MySQLDatabaseService;
|
|
||||||
import com.l2jserver.service.database.MySQLDatabaseService.CachedMapper;
|
import com.l2jserver.service.database.MySQLDatabaseService.CachedMapper;
|
||||||
import com.l2jserver.service.database.MySQLDatabaseService.InsertUpdateQuery;
|
import com.l2jserver.service.database.MySQLDatabaseService.InsertUpdateQuery;
|
||||||
import com.l2jserver.service.database.MySQLDatabaseService.Mapper;
|
import com.l2jserver.service.database.MySQLDatabaseService.Mapper;
|
||||||
@@ -69,20 +68,9 @@ public class MySQL5ClanDAO extends AbstractMySQL5DAO<Clan> implements ClanDAO {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The {@link Mapper} instance
|
* The {@link Mapper} for {@link Clan}
|
||||||
*/
|
*/
|
||||||
private final ClanMapper mapper = new ClanMapper(database);
|
private final Mapper<Clan> mapper = new CachedMapper<Clan, ClanID>(database) {
|
||||||
|
|
||||||
/**
|
|
||||||
* Clan mapper class
|
|
||||||
*
|
|
||||||
* @author <a href="http://www.rogiel.com">Rogiel</a>
|
|
||||||
*/
|
|
||||||
private final class ClanMapper extends CachedMapper<Clan, ClanID> {
|
|
||||||
public ClanMapper(MySQLDatabaseService database) {
|
|
||||||
super(database);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected ClanID createID(ResultSet rs) throws SQLException {
|
protected ClanID createID(ResultSet rs) throws SQLException {
|
||||||
return idFactory.createID(rs.getInt(CLAN_ID));
|
return idFactory.createID(rs.getInt(CLAN_ID));
|
||||||
@@ -94,7 +82,17 @@ public class MySQL5ClanDAO extends AbstractMySQL5DAO<Clan> implements ClanDAO {
|
|||||||
clan.setID(id);
|
clan.setID(id);
|
||||||
return clan;
|
return clan;
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The {@link Mapper} for {@link ClanID}
|
||||||
|
*/
|
||||||
|
private final Mapper<ClanID> idMapper = new Mapper<ClanID>() {
|
||||||
|
@Override
|
||||||
|
public ClanID map(ResultSet rs) throws SQLException {
|
||||||
|
return idFactory.createID(rs.getInt(CLAN_ID));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Clan load(final ClanID id) {
|
public Clan load(final ClanID id) {
|
||||||
@@ -127,12 +125,7 @@ public class MySQL5ClanDAO extends AbstractMySQL5DAO<Clan> implements ClanDAO {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Mapper<ClanID> mapper() {
|
protected Mapper<ClanID> mapper() {
|
||||||
return new Mapper<ClanID>() {
|
return idMapper;
|
||||||
@Override
|
|
||||||
public ClanID map(ResultSet rs) throws SQLException {
|
|
||||||
return idFactory.createID(rs.getInt(CLAN_ID));
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -150,7 +143,6 @@ public class MySQL5ClanDAO extends AbstractMySQL5DAO<Clan> implements ClanDAO {
|
|||||||
protected void parametize(PreparedStatement st, Clan clan)
|
protected void parametize(PreparedStatement st, Clan clan)
|
||||||
throws SQLException {
|
throws SQLException {
|
||||||
int i = 1;
|
int i = 1;
|
||||||
|
|
||||||
st.setInt(i++, clan.getID().getID());
|
st.setInt(i++, clan.getID().getID());
|
||||||
}
|
}
|
||||||
}) > 0;
|
}) > 0;
|
||||||
|
|||||||
@@ -34,6 +34,7 @@ import com.l2jserver.model.world.Item;
|
|||||||
import com.l2jserver.model.world.L2Character;
|
import com.l2jserver.model.world.L2Character;
|
||||||
import com.l2jserver.model.world.character.CharacterInventory;
|
import com.l2jserver.model.world.character.CharacterInventory;
|
||||||
import com.l2jserver.service.database.DatabaseService;
|
import com.l2jserver.service.database.DatabaseService;
|
||||||
|
import com.l2jserver.service.database.MySQLDatabaseService.CachedMapper;
|
||||||
import com.l2jserver.service.database.MySQLDatabaseService.Mapper;
|
import com.l2jserver.service.database.MySQLDatabaseService.Mapper;
|
||||||
import com.l2jserver.service.database.MySQLDatabaseService.SelectListQuery;
|
import com.l2jserver.service.database.MySQLDatabaseService.SelectListQuery;
|
||||||
import com.l2jserver.service.database.MySQLDatabaseService.SelectSingleQuery;
|
import com.l2jserver.service.database.MySQLDatabaseService.SelectSingleQuery;
|
||||||
@@ -80,21 +81,14 @@ public class MySQL5ItemDAO extends AbstractMySQL5DAO<Item> implements ItemDAO {
|
|||||||
/**
|
/**
|
||||||
* The {@link Mapper} instance
|
* The {@link Mapper} instance
|
||||||
*/
|
*/
|
||||||
private final ItemMapper mapper = new ItemMapper();
|
private final Mapper<Item> mapper = new CachedMapper<Item, ItemID>(database) {
|
||||||
|
|
||||||
/**
|
|
||||||
* {@link Item} mapper class
|
|
||||||
*
|
|
||||||
* @author <a href="http://www.rogiel.com">Rogiel</a>
|
|
||||||
*/
|
|
||||||
private final class ItemMapper implements Mapper<Item> {
|
|
||||||
@Override
|
@Override
|
||||||
public Item map(ResultSet rs) throws SQLException {
|
protected ItemID createID(ResultSet rs) throws SQLException {
|
||||||
final ItemID id = idFactory.createID(rs.getInt(ITEM_ID));
|
return idFactory.createID(rs.getInt(ITEM_ID));
|
||||||
|
}
|
||||||
if (database.hasCachedObject(id))
|
|
||||||
return (Item) database.getCachedObject(id);
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Item map(ItemID id, ResultSet rs) throws SQLException {
|
||||||
final ItemTemplateID templateId = templateIdFactory.createID(rs
|
final ItemTemplateID templateId = templateIdFactory.createID(rs
|
||||||
.getInt(TEMPLATE_ID));
|
.getInt(TEMPLATE_ID));
|
||||||
final ItemTemplate template = templateId.getTemplate();
|
final ItemTemplate template = templateId.getTemplate();
|
||||||
@@ -102,12 +96,20 @@ public class MySQL5ItemDAO extends AbstractMySQL5DAO<Item> implements ItemDAO {
|
|||||||
|
|
||||||
item.setID(id);
|
item.setID(id);
|
||||||
item.setOwnerID(charIdFactory.createID(rs.getInt(CHAR_ID)));
|
item.setOwnerID(charIdFactory.createID(rs.getInt(CHAR_ID)));
|
||||||
|
|
||||||
database.updateCache(item.getID(), item);
|
|
||||||
|
|
||||||
return item;
|
return item;
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The {@link Mapper} for {@link ItemID}
|
||||||
|
*/
|
||||||
|
private final Mapper<ItemID> idMapper = new Mapper<ItemID>() {
|
||||||
|
@Override
|
||||||
|
public ItemID map(ResultSet rs) throws SQLException {
|
||||||
|
return idFactory.createID(rs.getInt(CHAR_ID));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Item load(final ItemID id) {
|
public Item load(final ItemID id) {
|
||||||
@@ -164,12 +166,7 @@ public class MySQL5ItemDAO extends AbstractMySQL5DAO<Item> implements ItemDAO {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Mapper<ItemID> mapper() {
|
protected Mapper<ItemID> mapper() {
|
||||||
return new Mapper<ItemID>() {
|
return idMapper;
|
||||||
@Override
|
|
||||||
public ItemID map(ResultSet rs) throws SQLException {
|
|
||||||
return idFactory.createID(rs.getInt(CHAR_ID));
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -76,6 +76,13 @@ public class Clan extends AbstractObject implements
|
|||||||
this.leaderID = leaderID;
|
this.leaderID = leaderID;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the members
|
||||||
|
*/
|
||||||
|
public ClanMembers getMembers() {
|
||||||
|
return members;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ClanID getID() {
|
public ClanID getID() {
|
||||||
return (ClanID) super.getID();
|
return (ClanID) super.getID();
|
||||||
|
|||||||
@@ -16,8 +16,8 @@
|
|||||||
*/
|
*/
|
||||||
package com.l2jserver.model.world.clan;
|
package com.l2jserver.model.world.clan;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
import com.l2jserver.model.id.object.CharacterID;
|
import com.l2jserver.model.id.object.CharacterID;
|
||||||
@@ -80,7 +80,7 @@ public class ClanMembers implements Iterable<CharacterID> {
|
|||||||
* @param members
|
* @param members
|
||||||
* the list of members ids
|
* the list of members ids
|
||||||
*/
|
*/
|
||||||
public void load(List<CharacterID> members) {
|
public void load(Collection<CharacterID> members) {
|
||||||
this.members.addAll(members);
|
this.members.addAll(members);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user