1
0
mirror of https://github.com/Rogiel/l2jserver2 synced 2025-12-10 09:22:49 +00:00

Update assembly descriptor and improves significantly the documentation

Fixes an issue in the assembly descriptor that included older
compilation binaries into assemblies.
Improved javadoc documentation in more than 150 classes, including
fixing mistakes.
This commit is contained in:
2011-09-15 01:21:52 -03:00
parent 8a8557606f
commit a2e8680f72
155 changed files with 1223 additions and 225 deletions

View File

@@ -22,6 +22,9 @@ import com.l2jserver.model.id.ID;
/**
* Simple model interface implementing {@link ID} related methods
*
* @param <T>
* the ID type used to represent this {@link Model}
*
* @author <a href="http://www.rogiel.com">Rogiel</a>
*/
public abstract class AbstractModel<T extends ID<?>> implements Model<T> {
@@ -63,6 +66,7 @@ public abstract class AbstractModel<T extends ID<?>> implements Model<T> {
* {@link ObjectDesire#INSERT} or {@link ObjectDesire#DELETE} the desire
* will not be changed.
*/
@SuppressWarnings("javadoc")
protected void desireUpdate() {
if (this.desire != ObjectDesire.INSERT
&& this.desire != ObjectDesire.DELETE)
@@ -73,6 +77,7 @@ public abstract class AbstractModel<T extends ID<?>> implements Model<T> {
* Set this object desire to {@link ObjectDesire#INSERT}. If the desire is
* {@link ObjectDesire#DELETE} the desire will not be changed.
*/
@SuppressWarnings("javadoc")
protected void desireInsert() {
if (this.desire != ObjectDesire.DELETE)
this.desire = ObjectDesire.INSERT;

View File

@@ -20,8 +20,13 @@ import com.l2jserver.model.id.ID;
import com.l2jserver.service.database.DatabaseService;
/**
* @author <a href="http://www.rogiel.com">Rogiel</a>
* Base model. Each object model must implement this interface to be able to be
* inserted into the database.
*
* @param <T>
* the {@link ID} type used to represent this {@link Model}
*
* @author <a href="http://www.rogiel.com">Rogiel</a>
*/
public interface Model<T extends ID<?>> {
/**

View File

@@ -41,7 +41,7 @@ public interface NPCDAO extends DataAccessObject<NPC, NPCID>, Cacheable {
/**
* Select an {@link NPC} by its template.
*
* @param name
* @param templateID
* the npc template id
* @return the found NPC. Null if does not exists.
*/

View File

@@ -0,0 +1,133 @@
/*
* This file is part of l2jserver <l2jserver.com>.
*
* 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 <http://www.gnu.org/licenses/>.
*/
package com.l2jserver.model.game;
import java.util.Date;
import com.l2jserver.model.AbstractModel;
import com.l2jserver.model.id.CastleID;
import com.l2jserver.model.id.FortID;
import com.l2jserver.model.id.object.CharacterID;
/**
* An fort in Lineage II game world
*
* @author <a href="http://www.rogiel.com">Rogiel</a>
*/
public class Castle extends AbstractModel<FortID> {
/**
* The {@link Castle} of which this {@link Castle} belongs to
*/
private CastleID castleID;
/**
* The owner (clan leader) of which this {@link Castle} belongs to.
*/
private CharacterID ownerID;
/**
* The castle name
*/
private String name;
/**
* The siege date
*/
private Date siegeDate;
/**
* The last time this fort was owned by someone
*/
private Date lastOwnedTime;
/**
* @return the castleID
*/
public CastleID getCastleID() {
return castleID;
}
/**
* @param castleID
* the castleID to set
*/
public void setCastleID(CastleID castleID) {
desireUpdate();
this.castleID = castleID;
}
/**
* @return the ownerID
*/
public CharacterID getOwnerID() {
return ownerID;
}
/**
* @param ownerID
* the ownerID to set
*/
public void setOwnerID(CharacterID ownerID) {
desireUpdate();
this.ownerID = ownerID;
}
/**
* @return the name
*/
public String getName() {
return name;
}
/**
* @param name
* the name to set
*/
public void setName(String name) {
desireUpdate();
this.name = name;
}
/**
* @return the siegeDate
*/
public Date getSiegeDate() {
return siegeDate;
}
/**
* @param siegeDate
* the siegeDate to set
*/
public void setSiegeDate(Date siegeDate) {
desireUpdate();
this.siegeDate = siegeDate;
}
/**
* @return the lastOwnedTime
*/
public Date getLastOwnedTime() {
return lastOwnedTime;
}
/**
* @param lastOwnedTime
* the lastOwnedTime to set
*/
public void setLastOwnedTime(Date lastOwnedTime) {
desireUpdate();
this.lastOwnedTime = lastOwnedTime;
}
}

View File

@@ -27,22 +27,38 @@ import com.l2jserver.model.world.L2Character;
* @author <a href="http://www.rogiel.com">Rogiel</a>
*/
public class CharacterFriend extends AbstractModel<FriendID> {
/**
* @param id
* the friend id
*/
public CharacterFriend(FriendID id) {
this.setID(id);
}
/**
* @return the character id
*/
public CharacterID getCharacterID() {
return id.getID1();
}
/**
* @return the character
*/
public L2Character getCharacter() {
return id.getID1().getObject();
}
/**
* @return the friend id
*/
public CharacterID getFriendID() {
return id.getID2();
}
/**
* @return the friend
*/
public L2Character getFriend() {
return id.getID2().getObject();
}

View File

@@ -61,7 +61,14 @@ public class Fort extends AbstractModel<FortID> {
* @author <a href="http://www.rogiel.com">Rogiel</a>
*/
public enum FortType {
TYPE1, TYPE2;
/**
* Fort type 1
*/
TYPE1,
/**
* Fort type 2
*/
TYPE2;
}
/**

View File

@@ -63,13 +63,39 @@ public class Shortcut extends AbstractModel<ShortcutID> {
* @author <a href="http://www.rogiel.com">Rogiel</a>
*/
public enum ShortcutType {
ITEM(1), SKILL(2), ACTION(3), MACRO(4), RECIPE(5), TPBOOKMARK(6);
/**
* Item shortcut
*/
ITEM(1),
/**
* Skill shortcut
*/
SKILL(2),
/**
* Social action shortcut
*/
ACTION(3),
/**
* Macro shortcut
*/
MACRO(4),
/**
* Recipe shortcut
*/
RECIPE(5),
/**
* Bookmark shortcut
*/
TPBOOKMARK(6);
/**
* The shortcut type id
*/
public final int id;
/**
* @param id the numeric id
*/
ShortcutType(int id) {
this.id = id;
}
@@ -78,7 +104,7 @@ public class Shortcut extends AbstractModel<ShortcutID> {
*
* @param id
* the type id
* @return
* @return the {@link ShortcutType}
*/
public static ShortcutType fromID(int id) {
for (final ShortcutType shortcut : values()) {
@@ -101,8 +127,8 @@ public class Shortcut extends AbstractModel<ShortcutID> {
/**
* Creates a new instance
*
* @param character
* the character
* @param characterID
* the character id
*/
public Shortcut(CharacterID characterID) {
this.characterID = characterID;

View File

@@ -29,6 +29,9 @@ import com.l2jserver.model.world.Actor;
* @author <a href="http://www.rogiel.com">Rogiel</a>
*/
public class Skill extends AbstractModel<SkillID> {
/**
* The {@link Skill} template id
*/
private final SkillTemplateID templateID;
/**
* The skill level learned
@@ -38,6 +41,8 @@ public class Skill extends AbstractModel<SkillID> {
/**
* Creates a new instance in level one
*
* @param templateID
* the {@link SkillTemplateID} instance
* @param level
* the level of this skill
*/
@@ -48,6 +53,9 @@ public class Skill extends AbstractModel<SkillID> {
/**
* Creates a new instance in level one
*
* @param templateID
* the {@link SkillTemplateID} instance
*/
public Skill(SkillTemplateID templateID) {
this(templateID, 1);

View File

@@ -22,6 +22,11 @@ import com.l2jserver.model.Model;
* This is an abstract ID for most model objects that do not extend
* {@link ObjectID}.
*
* @param <T>
* the raw id type
* @param <O>
* the model this {@link ID} provides
*
* @author <a href="http://www.rogiel.com">Rogiel</a>
*/
public abstract class AbstractModelID<T, O extends Model<? extends ID<T>>>

View File

@@ -18,6 +18,7 @@ package com.l2jserver.model.id;
import com.google.inject.Inject;
import com.google.inject.assistedinject.Assisted;
import com.l2jserver.model.game.Castle;
import com.l2jserver.model.id.provider.IDProvider;
/**

View File

@@ -21,6 +21,9 @@ import com.google.inject.Inject;
/**
* The ID interface. Each object must be represented by an unique ID.
*
* @param <T>
* the raw id type
*
* @author <a href="http://www.rogiel.com">Rogiel</a>
*/
public abstract class ID<T> {
@@ -29,6 +32,9 @@ public abstract class ID<T> {
*/
protected final T id;
/**
* @param id the raw id
*/
@Inject
protected ID(T id) {
this.id = id;

View File

@@ -21,6 +21,7 @@ import java.lang.ref.SoftReference;
import com.l2jserver.model.id.provider.IDProvider;
import com.l2jserver.model.template.Template;
import com.l2jserver.service.game.template.TemplateService;
/**
* Templates IDs, different from {@link ObjectID}s, can be repeated and are
@@ -29,9 +30,22 @@ import com.l2jserver.model.template.Template;
* Please, do not directly instantiate this class, use an {@link IDProvider}
* instead.
*
* @param <T>
* the template type provided by this {@link TemplateID}
* @param <I>
* the raw ID type
*
* @author <a href="http://www.rogiel.com">Rogiel</a>
*/
public abstract class TemplateID<T extends Template<?>, I> extends ID<I> {
/**
* The cached template {@link Reference}
* <p>
* Please, avoid using it directly. Instead use {@link #getTemplate()} to
* retrieve the template object, since it will check if the reference is
* still valid and if not, will request the template with
* {@link TemplateService}.
*/
private Reference<T> cached;
/**

View File

@@ -21,6 +21,11 @@ import com.l2jserver.model.id.ID;
/**
* The compound {@link ID} is composed of two IDs.
*
* @param <T1>
* the first {@link ID} type
* @param <T2>
* the second {@link ID} type
*
* @author <a href="http://www.rogiel.com">Rogiel</a>
*/
public class AbstractCompoundID<T1, T2> extends ID<AbstractCompoundID<T1, T2>> {

View File

@@ -33,6 +33,9 @@ import com.l2jserver.model.world.Actor;
* the actor subclass
*/
public abstract class ActorID<T extends Actor> extends ObjectID<T> {
/**
* @param id the raw id
*/
@Inject
public ActorID(@Assisted int id) {
super(id);

View File

@@ -37,6 +37,10 @@ public final class CharacterID extends ActorID<L2Character> {
*/
private transient final CharacterDAO characterDao;
/**
* @param id the raw id
* @param characterDao the character DAO
*/
@Inject
public CharacterID(@Assisted int id, CharacterDAO characterDao) {
super(id);

View File

@@ -37,6 +37,10 @@ public final class ClanID extends ObjectID<Clan> {
*/
private final ClanDAO clanDao;
/**
* @param id the raw id
* @param clanDao the clan DAO
*/
@Inject
protected ClanID(@Assisted int id, ClanDAO clanDao) {
super(id);

View File

@@ -37,6 +37,10 @@ public final class ItemID extends ObjectID<Item> {
*/
private final ItemDAO itemDao;
/**
* @param id the raw id
* @param itemDao the item DAO
*/
@Inject
protected ItemID(@Assisted int id, ItemDAO itemDao) {
super(id);

View File

@@ -40,6 +40,12 @@ public final class NPCID extends ActorID<NPC> {
*/
private final WorldService worldService;
/**
* @param id
* the raw id
* @param worldService
* the world service
*/
@Inject
public NPCID(@Assisted int id, WorldService worldService) {
super(id);

View File

@@ -36,6 +36,10 @@ public final class PetID extends ActorID<Pet> {
*/
private final PetDAO petDao;
/**
* @param id the raw id
* @param petDao the pet DAO
*/
@Inject
protected PetID(int id, PetDAO petDao) {
super(id);

View File

@@ -22,20 +22,40 @@ package com.l2jserver.model.id.object.allocator;
* @author <a href="http://www.rogiel.com">Rogiel</a>
*/
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);
}

View File

@@ -42,6 +42,14 @@ public class CharacterIDProvider implements ObjectIDProvider<CharacterID> {
*/
private final CharacterIDGuiceFactory factory;
/**
* @param allocator
* the id allocator
* @param idService
* the world id service
* @param factory
* the character id factory
*/
@Inject
public CharacterIDProvider(IDAllocator allocator, WorldIDService idService,
CharacterIDGuiceFactory factory) {

View File

@@ -42,6 +42,14 @@ public class ClanIDProvider implements ObjectIDProvider<ClanID> {
*/
private final ClanIDGuiceFactory factory;
/**
* @param allocator
* the id allocator
* @param idService
* the world id service
* @param factory
* the clan id factory
*/
@Inject
public ClanIDProvider(IDAllocator allocator, WorldIDService idService,
ClanIDGuiceFactory factory) {

View File

@@ -42,6 +42,14 @@ public class ItemIDProvider implements ObjectIDProvider<ItemID> {
*/
private final ItemIDGuiceFactory factory;
/**
* @param allocator
* the id allocator
* @param idService
* the world id service
* @param factory
* the item id factory
*/
@Inject
public ItemIDProvider(IDAllocator allocator, WorldIDService idService,
ItemIDGuiceFactory factory) {

View File

@@ -42,6 +42,14 @@ public class NPCIDProvider implements ObjectIDProvider<NPCID> {
*/
private final NPCIDGuiceFactory factory;
/**
* @param allocator
* the id allocator
* @param idService
* the world id service
* @param factory
* the npc id factory
*/
@Inject
public NPCIDProvider(IDAllocator allocator, WorldIDService idService,
NPCIDGuiceFactory factory) {

View File

@@ -19,6 +19,12 @@ package com.l2jserver.model.id.object.provider;
import com.l2jserver.model.id.ObjectID;
import com.l2jserver.model.id.provider.IDProvider;
/**
* @author <a href="http://www.rogiel.com">Rogiel</a>
*
* @param <T>
* the ID type provided
*/
public interface ObjectIDProvider<T extends ObjectID<?>> extends
IDProvider<Integer, T> {
/**

View File

@@ -55,6 +55,10 @@ public class ObjectIDResolver implements ObjectIDProvider<ObjectID<?>> {
*/
private final WorldIDService idService;
/**
* @param idService
* the world id service
*/
@Inject
public ObjectIDResolver(WorldIDService idService) {
this.idService = idService;
@@ -64,6 +68,7 @@ public class ObjectIDResolver implements ObjectIDProvider<ObjectID<?>> {
* Resolvers do not support creating new IDs
*
* @throws UnsupportedOperationException
* always
*/
@Override
public ObjectID<?> createID() {
@@ -94,6 +99,7 @@ public class ObjectIDResolver implements ObjectIDProvider<ObjectID<?>> {
* Resolvers do not support destroying IDs
*
* @throws UnsupportedOperationException
* always
*/
@Override
public void destroy(ObjectID<?> id) {

View File

@@ -42,6 +42,14 @@ public class PetIDProvider implements ObjectIDProvider<PetID> {
*/
private final PetIDGuiceFactory factory;
/**
* @param allocator
* the id allocator
* @param idService
* the world id service
* @param factory
* the pet id factory
*/
@Inject
public PetIDProvider(IDAllocator allocator, WorldIDService idService,
PetIDGuiceFactory factory) {

View File

@@ -24,6 +24,12 @@ 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 <I1>
* the first compound {@link ID} type
* @param <I2>
* the second compound {@link ID} type
* @param <T>
* the {@link CompoundIDProvider} type
* @author <a href="http://www.rogiel.com">Rogiel</a>
*/
public interface CompoundIDProvider<I1 extends ID<?>, I2 extends ID<?>, T extends AbstractCompoundID<I1, I2>> {

View File

@@ -31,6 +31,10 @@ import com.l2jserver.model.id.ID;
* object will be created and following calls will always return the same
* object.
*
* @param <I>
* the raw id type
* @param <T>
* the {@link ID} implementation
* @author <a href="http://www.rogiel.com">Rogiel</a>
*/
public interface IDProvider<I, T extends ID<I>> {
@@ -38,7 +42,8 @@ public interface IDProvider<I, T extends ID<I>> {
* Creates the ID object for an <b>EXISTING</b> ID.
*
* @param id
* @return
* the raw id value
* @return the resolved {@link ID} object
*/
T resolveID(I id);
}

View File

@@ -27,6 +27,8 @@ import com.l2jserver.service.game.template.TemplateService;
/**
* An {@link TemplateID} instance representing an {@link ActorTemplate} object
*
* @param <T>
* the type of {@link ActorTemplate} this {@link TemplateID} represents
* @author <a href="http://www.rogiel.com">Rogiel</a>
*/
public class ActorTemplateID<T extends ActorTemplate<?>> extends
@@ -36,6 +38,10 @@ public class ActorTemplateID<T extends ActorTemplate<?>> extends
*/
private transient final TemplateService templateService;
/**
* @param id the raw id
* @param templateService the template service
*/
@Inject
protected ActorTemplateID(@Assisted int id, TemplateService templateService) {
super(id);

View File

@@ -29,6 +29,10 @@ import com.l2jserver.service.game.template.TemplateService;
* @author <a href="http://www.rogiel.com">Rogiel</a>
*/
public class CharacterTemplateID extends ActorTemplateID<CharacterTemplate> {
/**
* @param id the raw id
* @param templateService the template service
*/
@Inject
public CharacterTemplateID(@Assisted int id, TemplateService templateService) {
super(id, templateService);

View File

@@ -36,8 +36,11 @@ public class ItemTemplateID extends TemplateID<ItemTemplate, Integer> {
*/
private final TemplateService templateService;
/**
* @param id the raw id
* @param templateService the template service
*/
@Inject
// FIXME this should be protected
public ItemTemplateID(@Assisted int id, TemplateService templateService) {
super(id);
this.templateService = templateService;

View File

@@ -32,6 +32,10 @@ import com.l2jserver.util.jaxb.NPCTemplateIDAdapter;
*/
@XmlJavaTypeAdapter(value = NPCTemplateIDAdapter.class)
public class NPCTemplateID extends ActorTemplateID<NPCTemplate> {
/**
* @param id the raw id
* @param templateService the template service
*/
@Inject
public NPCTemplateID(@Assisted int id, TemplateService templateService) {
super(id, templateService);

View File

@@ -33,6 +33,10 @@ public class SkillTemplateID extends TemplateID<SkillTemplate, Integer> {
*/
private final TemplateService templateService;
/**
* @param id the raw id
* @param templateService the template service
*/
@Inject
public SkillTemplateID(@Assisted int id, TemplateService templateService) {
super(id);

View File

@@ -39,6 +39,10 @@ public class TeleportationTemplateID extends
*/
private final TemplateService templateService;
/**
* @param id the raw id
* @param templateService the template service
*/
@Inject
public TeleportationTemplateID(@Assisted int id,
TemplateService templateService) {

View File

@@ -22,10 +22,11 @@ import com.l2jserver.model.id.provider.IDProvider;
/**
* Creates a new {@link TemplateID}
*
* @author <a href="http://www.rogiel.com">Rogiel</a>
*
* @param <I>
* the raw id type
* @param <T>
* the subclass of {@link TemplateID} that will be createdF
* the subclass of {@link TemplateID} that will be created
* @author <a href="http://www.rogiel.com">Rogiel</a>
*/
public interface TemplateIDProvider<I, T extends TemplateID<?, I>> extends
IDProvider<I, T> {

View File

@@ -73,6 +73,10 @@ public class AttackHit {
*/
public final byte flag;
/**
* @param flag
* the bitset flag
*/
AttackHitFlag(byte flag) {
this.flag = flag;
}

View File

@@ -24,11 +24,23 @@ import com.l2jserver.util.calculator.ComplexCalculator;
*/
public class AttackCalculator extends
ComplexCalculator<AttackCalculatorContext, AttackCalculatorType> {
/**
* @param functions
* the functions
*/
public AttackCalculator(AttackCalculatorFunction... functions) {
super(AttackCalculatorType.class, functions);
}
/**
* The calculator attributes
*
* @author <a href="http://www.rogiel.com">Rogiel</a>
*/
public enum AttackCalculatorType {
/**
* Calculates the damage dealt by the attack
*/
DAMAGE;
}
}

View File

@@ -23,9 +23,21 @@ import com.l2jserver.util.calculator.CalculatorContext;
* @author <a href="http://www.rogiel.com">Rogiel</a>
*/
public class AttackCalculatorContext extends CalculatorContext {
/**
* The attacker actor
*/
public final Actor attacker;
/**
* The target actor
*/
public final Actor target;
/**
* @param attacker
* the attacker
* @param target
* the target
*/
public AttackCalculatorContext(Actor attacker, Actor target) {
this.attacker = attacker;
this.target = target;

View File

@@ -25,6 +25,12 @@ import com.l2jserver.util.calculator.AbstractDoubleFunction;
*/
public abstract class AttackCalculatorFunction extends
AbstractDoubleFunction<AttackCalculatorContext, AttackCalculatorType> {
/**
* @param order
* the calculation order
* @param type
* the function attribute
*/
public AttackCalculatorFunction(int order, AttackCalculatorType type) {
super(order, type);
}
@@ -34,5 +40,14 @@ public abstract class AttackCalculatorFunction extends
return calculate(ctx.attacker, ctx.target, value);
}
/**
* @param attacker
* the attacker
* @param target
* the target
* @param value
* the original value
* @return the calculated value
*/
public abstract double calculate(Actor attacker, Actor target, double value);
}

View File

@@ -24,6 +24,9 @@ import com.l2jserver.model.world.Actor;
* @author <a href="http://www.rogiel.com">Rogiel</a>
*/
public class PhysicalAttackCalculator extends AttackCalculator {
/**
* Creates a new instance
*/
public PhysicalAttackCalculator() {
super(new AttackCalculatorFunction(0x000, AttackCalculatorType.DAMAGE) {
@Override

View File

@@ -24,6 +24,8 @@ import com.l2jserver.model.world.Actor;
/**
* Template for {@link Actor}
*
* @param <T>
* the {@link Actor} type this template is for
* @author <a href="http://www.rogiel.com">Rogiel</a>
*/
public abstract class ActorTemplate<T extends Actor> extends
@@ -42,5 +44,10 @@ public abstract class ActorTemplate<T extends Actor> extends
return actor;
}
/**
* Creates a new instance
*
* @return the created template instance
*/
protected abstract T createInstance();
}

View File

@@ -207,6 +207,9 @@ public class CharacterTemplate extends ActorTemplate<L2Character> {
return stats.crafter;
}
/**
* @return the base HP
*/
public double getBaseHP() {
if (stats == null)
return 0;
@@ -215,6 +218,9 @@ public class CharacterTemplate extends ActorTemplate<L2Character> {
return stats.hp.base;
}
/**
* @return the base HP modifier
*/
public double getBaseHPModifier() {
if (stats == null)
return 0;
@@ -223,6 +229,9 @@ public class CharacterTemplate extends ActorTemplate<L2Character> {
return stats.hp.modifier;
}
/**
* @return the base HP add
*/
public double getBaseHPAdd() {
if (stats == null)
return 0;
@@ -231,7 +240,10 @@ public class CharacterTemplate extends ActorTemplate<L2Character> {
return stats.hp.add;
}
public double getBaseBaseMP() {
/**
* @return the base MP
*/
public double getBaseMP() {
if (stats == null)
return 0;
if (stats.mp == null)
@@ -239,6 +251,9 @@ public class CharacterTemplate extends ActorTemplate<L2Character> {
return stats.mp.base;
}
/**
* @return the base MP modifier
*/
public double getBaseMPModifier() {
if (stats == null)
return 0;
@@ -247,6 +262,9 @@ public class CharacterTemplate extends ActorTemplate<L2Character> {
return stats.mp.modifier;
}
/**
* @return the base MP add
*/
public double getBaseMPAdd() {
if (stats == null)
return 0;
@@ -255,6 +273,9 @@ public class CharacterTemplate extends ActorTemplate<L2Character> {
return stats.mp.add;
}
/**
* @return the base CP
*/
public double getBaseCP() {
if (stats == null)
return 0;
@@ -263,6 +284,9 @@ public class CharacterTemplate extends ActorTemplate<L2Character> {
return stats.cp.base;
}
/**
* @return the base CP modifier
*/
public double getBaseCPModifier() {
if (stats == null)
return 0;
@@ -271,6 +295,9 @@ public class CharacterTemplate extends ActorTemplate<L2Character> {
return stats.cp.modifier;
}
/**
* @return the base CP add
*/
public double getBaseCPAdd() {
if (stats == null)
return 0;
@@ -390,6 +417,9 @@ public class CharacterTemplate extends ActorTemplate<L2Character> {
return stats.attack.magical.speed;
}
/**
* @return the base run speed
*/
public double getBaseRunSpeed() {
if (stats == null)
return 0;
@@ -398,6 +428,9 @@ public class CharacterTemplate extends ActorTemplate<L2Character> {
return stats.move.run;
}
/**
* @return the base walk speed
*/
public double getBaseWalkSpeed() {
if (stats == null)
return 0;
@@ -481,6 +514,9 @@ public class CharacterTemplate extends ActorTemplate<L2Character> {
return stats.maximumLoad;
}
/**
* @return the male collision radius
*/
public double getMaleCollisionRadius() {
if (collision == null)
return 0;
@@ -489,6 +525,9 @@ public class CharacterTemplate extends ActorTemplate<L2Character> {
return collision.male.radius;
}
/**
* @return the male collision height
*/
public double getMaleCollisionHeight() {
if (collision == null)
return 0;
@@ -497,6 +536,9 @@ public class CharacterTemplate extends ActorTemplate<L2Character> {
return collision.male.height;
}
/**
* @return the female collision radius
*/
public double getFemaleCollisionRadius() {
if (collision == null)
return 0;
@@ -505,6 +547,9 @@ public class CharacterTemplate extends ActorTemplate<L2Character> {
return collision.female.radius;
}
/**
* @return the female collision height
*/
public double getFemaleCollisionHeight() {
if (collision == null)
return 0;

View File

@@ -57,6 +57,14 @@ public class SkillTemplate extends AbstractTemplate<Skill> {
return create(null);
}
/**
* Creates a new instance
*
* @param actorID
* the actor ID
*
* @return the created template instance
*/
public Skill create(ActorID<?> actorID) {
final Skill skill = new Skill(id);
if (actorID != null)

View File

@@ -7,14 +7,33 @@ package com.l2jserver.model.template.actor;
* @author <a href="http://www.rogiel.com">Rogiel</a>
*/
public enum ActorSex {
MALE(0x00), FEMALE(0x01);
/**
* Represents an male character
*/
MALE(0x00),
/**
* Represents an female character
*/
FEMALE(0x01);
/**
* The numeric sex option
*/
public final int option;
/**
* @param option
* the numeric sex option
*/
ActorSex(int option) {
this.option = option;
}
/**
* @param option
* the numeric sex option
* @return the resolved {@link ActorSex}
*/
public static ActorSex fromOption(int option) {
for (ActorSex sex : values()) {
if (sex.option == option)

View File

@@ -27,8 +27,17 @@ import com.l2jserver.model.world.actor.stat.StatType;
*
*/
public class ItemSetActorCalculator extends ActorFormula {
/**
* The stat set
*/
private final StatSet set;
/**
* @param set
* the stat set
* @param type
* the stat type
*/
public ItemSetActorCalculator(StatSet set, StatType type) {
super(set.getOrder(), type);
this.set = set;

View File

@@ -24,13 +24,16 @@ import com.l2jserver.util.exception.L2Exception;
/**
* Defines an {@link Template} which the player can interact with
*
* @param <T>
* the interable {@link WorldObject} type
* @author <a href="http://www.rogiel.com">Rogiel</a>
*
*/
public interface Interactable<T extends WorldObject> extends TemplateCapability {
/**
* Performs an interaction with this template.
*
* @param object
* the object to interact with
* @param character
* the interacting character
* @param args

View File

@@ -13,6 +13,9 @@ public enum CharacterRace {
*/
public final int id;
/**
* @param id the race numeric id
*/
CharacterRace(int id) {
this.id = id;
}

View File

@@ -133,6 +133,10 @@ public enum ItemType {
*/
public final int id;
/**
* @param id
* the numeric id
*/
ItemType(int id) {
this.id = id;
}

View File

@@ -78,12 +78,12 @@ public enum WeaponType {
DUALDAGGER(StatType.DUALDAGGER_WPN_VULN);
/**
* This weapon type weaknesses
* This weapon type of weaknesses
*/
public final StatType weaknessesStat;
/**
* @param weaknesses
* @param weaknessesStat
* the weapon weaknesses
*/
WeaponType(StatType weaknessesStat) {

View File

@@ -16,6 +16,7 @@
*/
package com.l2jserver.model.world;
import com.l2jserver.model.id.TemplateID;
import com.l2jserver.model.id.object.ActorID;
import com.l2jserver.model.id.template.ActorTemplateID;
import com.l2jserver.model.template.ActorTemplate;
@@ -30,6 +31,9 @@ import com.l2jserver.model.world.actor.stat.ActorStats;
* @author <a href="http://www.rogiel.com">Rogiel</a>
*/
public abstract class Actor extends PositionableObject {
/**
* The {@link Actor} {@link TemplateID}
*/
protected ActorTemplateID<?> templateID;
/**
@@ -101,10 +105,17 @@ public abstract class Actor extends PositionableObject {
*/
protected final ActorSkillContainer skills = new ActorSkillContainer(this);
/**
* @param templateID
* the actor template id
*/
protected Actor(ActorTemplateID<?> templateID) {
this.templateID = templateID;
}
/**
* @return the actor stats
*/
public abstract ActorStats<?> getStats();
/**
@@ -267,6 +278,9 @@ public abstract class Actor extends PositionableObject {
return effects;
}
/**
* @return the actor skills
*/
public ActorSkillContainer getSkills() {
return skills;
}

View File

@@ -69,6 +69,9 @@ public class Item extends PositionableObject {
*/
private long count = 1;
/**
* @param templateID the item template id
*/
public Item(ItemTemplateID templateID) {
this.templateID = templateID;
}

View File

@@ -136,10 +136,25 @@ public class L2Character extends Player {
* @author <a href="http://www.rogiel.com">Rogiel</a>
*/
public enum CharacterMoveType {
RUN(0x01), WALK(0x00);
/**
* Run mode
*/
RUN(0x01),
/**
* Walk mode
*/
WALK(0x00);
/**
* The move mode numeric id
*/
public final int id;
/**
* @param id
* the mode numeric id
*/
CharacterMoveType(int id) {
this.id = id;
}
@@ -158,8 +173,8 @@ public class L2Character extends Player {
/**
* Creates a new instance
*
* @param baseAttributes
* the base attribute for this character
* @param templateID
* the {@link CharacterTemplateID}
*/
public L2Character(CharacterTemplateID templateID) {
super(templateID);

View File

@@ -93,18 +93,32 @@ public class NPC extends Actor {
throw new UnsupportedOperationException();
}
/**
* @return the maximum HP
*/
public double getMaxHP() {
return this.getTemplate().getMaximumHP();
}
/**
* @param maxHP the maximum HP
* @throws UnsupportedOperationException always
*/
public void setMaxHP(double maxHP) {
throw new UnsupportedOperationException();
}
/**
* @return the maximum MP
*/
public double getMaxMP() {
return this.getTemplate().getMaximumMP();
}
/**
* @param maxMP the maximum MP
* @throws UnsupportedOperationException always
*/
public void setMaxMP(double maxMP) {
throw new UnsupportedOperationException();
}

View File

@@ -36,6 +36,9 @@ public class Pet extends Player {
*/
private ItemID itemID;
/**
* @param templateID the pet template id
*/
public Pet(ActorTemplateID<?> templateID) {
super(templateID);
}

View File

@@ -25,6 +25,9 @@ import com.l2jserver.model.id.template.ActorTemplateID;
* @author <a href="http://www.rogiel.com">Rogiel</a>
*/
public abstract class Player extends Actor {
/**
* @param templateID the actor template id
*/
public Player(ActorTemplateID<?> templateID) {
super(templateID);
}

View File

@@ -47,10 +47,16 @@ public abstract class PositionableObject extends AbstractObject {
this.point = point;
}
/**
* @return the position coodinate
*/
public Coordinate getPosition() {
return point.getCoordinate();
}
/**
* @param coord sets the current position
*/
public void setPosition(Coordinate coord) {
desireUpdate();
this.point = new Point3D(coord, (point != null ? point.getAngle() : 0));

View File

@@ -78,6 +78,9 @@ public enum ActorExperience {
*/
public final int level;
/**
* @param experience the minimum experience for the level
*/
ActorExperience(long experience) {
this.experience = experience;
this.level = this.ordinal();

View File

@@ -25,8 +25,12 @@ import com.l2jserver.util.calculator.ComplexCalculator;
*/
public class ActorCalculator extends
ComplexCalculator<ActorCalculatorContext, StatType> {
public ActorCalculator(Class<StatType> type,
/**
* @param calculators
* the calculators
*/
public ActorCalculator(
Calculator<ActorCalculatorContext, StatType>... calculators) {
super(type, calculators);
super(StatType.class, calculators);
}
}

View File

@@ -29,6 +29,10 @@ public class ActorCalculatorContext extends CalculatorContext {
*/
public final Actor actor;
/**
* @param actor
* the actor
*/
public ActorCalculatorContext(Actor actor) {
this.actor = actor;
}

View File

@@ -28,6 +28,12 @@ import com.l2jserver.util.calculator.AbstractDoubleFunction;
*/
public abstract class ActorCalculatorFunction extends
AbstractDoubleFunction<ActorCalculatorContext, StatType> {
/**
* @param order
* the calculation order
* @param type
* the stat type
*/
public ActorCalculatorFunction(int order, StatType type) {
super(order, type);
}
@@ -37,6 +43,15 @@ public abstract class ActorCalculatorFunction extends
return calculate(ctx.actor, ctx.actor.getTemplate(), value);
}
/**
* @param a
* the actor
* @param t
* the actor template
* @param value
* the original value
* @return the calculated value
*/
protected abstract double calculate(Actor a, ActorTemplate<?> t,
double value);
}

View File

@@ -22,6 +22,12 @@ import com.l2jserver.model.world.actor.stat.StatType;
* @author <a href="http://www.rogiel.com">Rogiel</a>
*/
public abstract class ActorFormula extends ActorCalculatorFunction {
/**
* @param order
* the calculation order
* @param type
* the stat type
*/
public ActorFormula(int order, StatType type) {
super(order, type);
}

View File

@@ -38,6 +38,9 @@ import com.l2jserver.model.world.actor.stat.StatType;
* @author <a href="http://www.rogiel.com">Rogiel</a>
*/
public class AttackAccuracyBonusCalculator extends ActorFormula {
/**
* Creates a new instance
*/
public AttackAccuracyBonusCalculator() {
super(0x200, StatType.ACCURACY_COMBAT);
}

View File

@@ -38,6 +38,9 @@ import com.l2jserver.model.world.actor.stat.StatType;
* @author <a href="http://www.rogiel.com">Rogiel</a>
*/
public class AttackEvasionBonusCalculator extends ActorFormula {
/**
* Creates a new instance
*/
public AttackEvasionBonusCalculator() {
super(0x200, StatType.EVASION_RATE);
}

View File

@@ -32,6 +32,9 @@ import com.l2jserver.model.world.actor.stat.StatType;
* @author <a href="http://www.rogiel.com">Rogiel</a>
*/
public class MagicalAttackBonusCalculator extends ActorFormula {
/**
* Creates a new instance
*/
public MagicalAttackBonusCalculator() {
super(0x200, StatType.MAGIC_ATTACK);
}

View File

@@ -32,6 +32,9 @@ import com.l2jserver.model.world.actor.stat.StatType;
* @author <a href="http://www.rogiel.com">Rogiel</a>
*/
public class MagicalAttackSpeedBonusCalculator extends ActorFormula {
/**
* Creates a new instance
*/
public MagicalAttackSpeedBonusCalculator() {
super(0x200, StatType.MAGIC_ATTACK_SPEED);
}

View File

@@ -32,6 +32,9 @@ import com.l2jserver.model.world.actor.stat.StatType;
* @author <a href="http://www.rogiel.com">Rogiel</a>
*/
public class MagicalCriticalRateBonusCalculator extends ActorFormula {
/**
* Creates a new instance
*/
public MagicalCriticalRateBonusCalculator() {
super(0x300, StatType.MCRITICAL_RATE);
}

View File

@@ -42,6 +42,9 @@ import com.l2jserver.model.world.actor.stat.StatType;
* @author <a href="http://www.rogiel.com">Rogiel</a>
*/
public class MagicalDefenseBonusCalculator extends ActorFormula {
/**
* Creates a new instance
*/
public MagicalDefenseBonusCalculator() {
super(0x200, StatType.MAGIC_DEFENSE);
}

View File

@@ -31,6 +31,9 @@ import com.l2jserver.model.world.actor.stat.StatType;
* @author <a href="http://www.rogiel.com">Rogiel</a>
*/
public class MaximumHPBonusCalculator extends ActorFormula {
/**
* Creates a new instance
*/
public MaximumHPBonusCalculator() {
super(0x200, StatType.MAX_HP);
}

View File

@@ -31,6 +31,9 @@ import com.l2jserver.model.world.actor.stat.StatType;
* @author <a href="http://www.rogiel.com">Rogiel</a>
*/
public class MaximumMPBonusCalculator extends ActorFormula {
/**
* Creates a new instance
*/
public MaximumMPBonusCalculator() {
super(0x200, StatType.MAX_MP);
}

View File

@@ -33,6 +33,9 @@ import com.l2jserver.model.world.actor.stat.StatType;
* @author <a href="http://www.rogiel.com">Rogiel</a>
*/
public class PhysicalAttackBonusCalculator extends ActorFormula {
/**
* Creates a new instance
*/
public PhysicalAttackBonusCalculator() {
super(0x100, StatType.POWER_ATTACK);
}

View File

@@ -32,6 +32,9 @@ import com.l2jserver.model.world.actor.stat.StatType;
* @author <a href="http://www.rogiel.com">Rogiel</a>
*/
public class PhysicalAttackSpeedBonusCalculator extends ActorFormula {
/**
* Creates a new instance
*/
public PhysicalAttackSpeedBonusCalculator() {
super(0x200, StatType.POWER_ATTACK_SPEED);
}

View File

@@ -33,6 +33,9 @@ import com.l2jserver.model.world.actor.stat.StatType;
* @author <a href="http://www.rogiel.com">Rogiel</a>
*/
public class PhysicalCriticalRateBonusCalculator extends ActorFormula {
/**
* Creates a new instance
*/
public PhysicalCriticalRateBonusCalculator() {
super(0x090, StatType.CRITICAL_RATE);
}

View File

@@ -43,6 +43,9 @@ import com.l2jserver.model.world.actor.stat.StatType;
* @author <a href="http://www.rogiel.com">Rogiel</a>
*/
public class PhysicalDefenseBonusCalculator extends ActorFormula {
/**
* Creates a new instance
*/
public PhysicalDefenseBonusCalculator() {
super(0x200, StatType.POWER_DEFENSE);
}

View File

@@ -31,6 +31,9 @@ import com.l2jserver.model.world.actor.stat.StatType;
* @author <a href="http://www.rogiel.com">Rogiel</a>
*/
public class RunSpeedBonusCalculator extends ActorFormula {
/**
* Creates a new instance
*/
public RunSpeedBonusCalculator() {
super(0x300, StatType.RUN_SPEED);
}

View File

@@ -31,6 +31,9 @@ import com.l2jserver.model.world.actor.stat.StatType;
* @author <a href="http://www.rogiel.com">Rogiel</a>
*/
public class WalkSpeedBonusCalculator extends ActorFormula {
/**
* Creates a new instance
*/
public WalkSpeedBonusCalculator() {
super(0x300, StatType.WALK_SPEED);
}

View File

@@ -25,5 +25,8 @@ import com.l2jserver.service.game.world.event.WorldEvent;
* @author <a href="http://www.rogiel.com">Rogiel</a>
*/
public interface ActorEvent extends WorldEvent {
/**
* @return the event actor
*/
Actor getActor();
}

View File

@@ -24,6 +24,9 @@ import com.l2jserver.service.game.world.event.TypedWorldListener;
* @author <a href="http://www.rogiel.com">Rogiel</a>
*/
public abstract class ActorListener extends TypedWorldListener<ActorEvent> {
/**
* Creates a new instance
*/
public ActorListener() {
super(ActorEvent.class);
}

View File

@@ -36,7 +36,8 @@ import com.l2jserver.model.world.actor.calculator.WalkSpeedBonusCalculator;
/**
* @author <a href="http://www.rogiel.com">Rogiel</a>
*
* @param <T>
* the {@link ActorCalculatorContext} type
*/
public abstract class ActorStats<T extends ActorCalculatorContext> {
// bonuses
@@ -142,6 +143,12 @@ public abstract class ActorStats<T extends ActorCalculatorContext> {
*/
private static final ActorFormula ATTACK_EVASION_BONUS_FORMULA = new AttackEvasionBonusCalculator();
/**
* Adds default formulas to the <tt>calculator</tt>
*
* @param calculator
* the calculator
*/
@SuppressWarnings("unchecked")
protected void addTo(ActorCalculator calculator) {
calculator.addNoSort(HP_BONUS_FORMULA, MP_BONUS_FORMULA,
@@ -318,7 +325,13 @@ public abstract class ActorStats<T extends ActorCalculatorContext> {
return getCalculator().calculate(type, ctx);
}
/**
* @return the calculator
*/
protected abstract ActorCalculator getCalculator();
/**
* @return the new context
*/
protected abstract T createContext();
}

View File

@@ -50,17 +50,16 @@ import com.l2jserver.model.world.character.calculator.base.CharacterBaseRunSpeed
import com.l2jserver.model.world.character.calculator.base.CharacterBaseStrengthCalculator;
import com.l2jserver.model.world.character.calculator.base.CharacterBaseWalkSpeedCalculator;
import com.l2jserver.model.world.character.calculator.base.CharacterBaseWitnessCalculator;
import com.l2jserver.util.calculator.SimpleCalculator;
/**
* This class is responsible for calculating the real character stats. The real
* stats vary from the values from the templates, also, skills and items
* equipped can change those values. Once an buff is applied, a new calculator
* is {@link SimpleCalculator#importFunctions(SimpleCalculator) imported} and
* their functions are added to this class calculator. Once the skill effect has
* past away, all the functions that were imported are now
* {@link SimpleCalculator#removeFunctions(SimpleCalculator) removed} and the
* calculator return to its original state.
* is {@link CharacterCalculator#add(com.l2jserver.util.calculator.Function...)
* imported} and their functions are added to this class calculator. Once the
* skill effect has past away, all the functions that were imported are now
* {@link CharacterCalculator#remove(com.l2jserver.util.calculator.Function)
* removed} and the calculator return to its original state.
* <p>
* Another important note is that calculators should perform calculations as
* fast as possible.
@@ -262,8 +261,7 @@ public class CharacterStats extends ActorStats<CharacterCalculatorContext> {
private final L2Character character;
@SuppressWarnings("unchecked")
private static final CharacterCalculator calculator = new CharacterCalculator(
StatType.class);
private static final CharacterCalculator calculator = new CharacterCalculator();
/**
* Creates a new {@link CharacterStats} and adds default calculators

View File

@@ -27,8 +27,8 @@ import com.l2jserver.util.calculator.Calculator;
* @author <a href="http://www.rogiel.com">Rogiel</a>
*/
public class CharacterCalculator extends ActorCalculator {
public CharacterCalculator(Class<StatType> type,
public CharacterCalculator(
Calculator<ActorCalculatorContext, StatType>... calculators) {
super(type, calculators);
super(calculators);
}
}

View File

@@ -37,6 +37,6 @@ public class CharacterBaseMPCalculator extends CharacterFormula {
@Override
public double calculate(L2Character c, CharacterTemplate t, double value) {
return t.getBaseBaseMP();
return t.getBaseMP();
}
}

View File

@@ -46,9 +46,11 @@ public class CharacterAttackEvent implements CharacterEvent {
* Creates a new instance
*
* @param character
* the character
* @param point
* the character being attacked
* the character instance
* @param target
* the target character being attacked
* @param hit
* the {@link AttackHit} objects
*/
public CharacterAttackEvent(L2Character character, L2Character target,
AttackHit hit) {

View File

@@ -42,8 +42,8 @@ public class CharacterTargetDeselectedEvent implements CharacterEvent {
*
* @param character
* the character
* @param target
* the character target
* @param oldTarget
* the character target before deselecting
*/
public CharacterTargetDeselectedEvent(L2Character character, Actor oldTarget) {
this.character = character;

View File

@@ -19,7 +19,6 @@ package com.l2jserver.model.world.npc;
import com.l2jserver.model.world.NPC;
import com.l2jserver.model.world.actor.calculator.ActorCalculator;
import com.l2jserver.model.world.actor.stat.ActorStats;
import com.l2jserver.model.world.actor.stat.StatType;
import com.l2jserver.model.world.npc.calculator.NPCCalculator;
import com.l2jserver.model.world.npc.calculator.NPCCalculatorContext;
import com.l2jserver.model.world.npc.calculator.NPCFormula;
@@ -42,17 +41,16 @@ import com.l2jserver.model.world.npc.calculator.base.NPCBaseRunSpeedCalculator;
import com.l2jserver.model.world.npc.calculator.base.NPCBaseStrengthCalculator;
import com.l2jserver.model.world.npc.calculator.base.NPCBaseWalkSpeedCalculator;
import com.l2jserver.model.world.npc.calculator.base.NPCBaseWitnessCalculator;
import com.l2jserver.util.calculator.SimpleCalculator;
/**
* This class is responsible for calculating the real NPC stats. The real stats
* vary from the values from the templates, also, skills and items equipped can
* change those values. Once an buff is applied, a new calculator is
* {@link SimpleCalculator#importFunctions(SimpleCalculator) imported} and their
* functions are added to this class calculator. Once the skill effect has past
* away, all the functions that were imported are now
* {@link SimpleCalculator#removeFunctions(SimpleCalculator) removed} and the
* calculator return to its original state.
* {@link NPCCalculator#add(com.l2jserver.util.calculator.Function...) imported}
* and their functions are added to this class calculator. Once the skill effect
* has past away, all the functions that were imported are now
* {@link NPCCalculator#remove(com.l2jserver.util.calculator.Function) removed}
* and the calculator return to its original state.
* <p>
* Another important note is that calculators should perform calculations as
* fast as possible.
@@ -206,8 +204,7 @@ public class NPCStats extends ActorStats<NPCCalculatorContext> {
*/
private final NPC npc;
private static final NPCCalculator calculator = new NPCCalculator(
StatType.class);
private static final NPCCalculator calculator = new NPCCalculator();
/**
* Creates a new {@link NPCStats} and adds default calculators

View File

@@ -17,14 +17,13 @@
package com.l2jserver.model.world.npc.calculator;
import com.l2jserver.model.world.actor.calculator.ActorCalculator;
import com.l2jserver.model.world.actor.stat.StatType;
/**
* @author <a href="http://www.rogiel.com">Rogiel</a>
*
*/
public class NPCCalculator extends ActorCalculator {
public NPCCalculator(Class<StatType> type, NPCCalculator... calculators) {
super(type, calculators);
public NPCCalculator(NPCCalculator... calculators) {
super(calculators);
}
}

View File

@@ -79,6 +79,7 @@ public class BaseNPCController implements NPCController {
* the action arguments
* @return true if chat message was sent
* @throws L2Exception
* if the talk action could not be performed
*/
protected boolean talk(NPC npc, Lineage2Client conn, L2Character character,
String... args) throws L2Exception {

View File

@@ -29,8 +29,8 @@ public class NPCDieEvent extends ActorDieEvent implements NPCEvent {
/**
* @param npc
* the died npc
* @param the
* actor who killed the <tt>npc</tt>
* @param killer
* the actor who killed the <tt>npc</tt>
*/
public NPCDieEvent(NPC npc, Actor killer) {
super(npc, killer);

View File

@@ -27,7 +27,7 @@ import com.l2jserver.util.geometry.Point3D;
*/
public class PlayerSpawnEvent extends ActorSpawnEvent implements PlayerEvent {
/**
* @param actor
* @param player
* the player
* @param point
* the spawn point