1
0
mirror of https://github.com/Rogiel/l2jserver2 synced 2025-12-08 08:23:11 +00:00

Several performance improvements, monster template and xml updates and

fixed bug while logging-in

Signed-off-by: Rogiel <rogiel@rogiel.com>
This commit is contained in:
2011-05-31 17:05:39 -03:00
parent d72bb75cb0
commit 657b555fe1
3464 changed files with 3539 additions and 3481 deletions

View File

@@ -16,6 +16,9 @@
*/
package com.l2jserver.model.id;
import java.lang.ref.Reference;
import java.lang.ref.SoftReference;
import com.l2jserver.model.template.Template;
/**
@@ -25,6 +28,8 @@ import com.l2jserver.model.template.Template;
* @author <a href="http://www.rogiel.com">Rogiel</a>
*/
public abstract class TemplateID<T extends Template<?>, I> extends ID<I> {
private Reference<T> cached;
/**
* Creates a new instance
*
@@ -40,5 +45,16 @@ public abstract class TemplateID<T extends Template<?>, I> extends ID<I> {
*
* @return the {@link Template} if existent, <tt>null</tt> otherwise
*/
public abstract T getTemplate();
public T getTemplate() {
if (cached == null || cached.get() == null)
cached = new SoftReference<T>(loadTemplate());
return cached.get();
}
/**
* Returns the {@link Template} associated with this {@link ID}
*
* @return the {@link Template} if existent, <tt>null</tt> otherwise
*/
protected abstract T loadTemplate();
}

View File

@@ -44,7 +44,7 @@ public class ActorTemplateID<T extends ActorTemplate<?>> extends
@Override
@XmlTransient
public T getTemplate() {
public T loadTemplate() {
return templateService.getTemplate(this);
}
}

View File

@@ -44,7 +44,7 @@ public class ItemTemplateID extends TemplateID<ItemTemplate, Integer> {
}
@Override
public ItemTemplate getTemplate() {
public ItemTemplate loadTemplate() {
return templateService.getTemplate(this);
}
}

View File

@@ -40,7 +40,7 @@ public class SkillTemplateID extends TemplateID<SkillTemplate, Integer> {
}
@Override
public SkillTemplate getTemplate() {
public SkillTemplate loadTemplate() {
return templateService.getTemplate(this);
}
}

View File

@@ -47,7 +47,7 @@ public class TeleportationTemplateID extends
}
@Override
public TeleportationTemplate getTemplate() {
public TeleportationTemplate loadTemplate() {
return templateService.getTemplate(this);
}
}

View File

@@ -23,6 +23,7 @@ import com.l2jserver.game.net.packet.server.SM_STATUS_UPDATE.Stat;
import com.l2jserver.model.world.L2Character;
import com.l2jserver.model.world.NPC;
import com.l2jserver.service.game.character.CharacterService;
import com.l2jserver.service.game.npc.NPCService;
import com.l2jserver.util.exception.L2Exception;
/**
@@ -36,13 +37,23 @@ public class MonsterController extends BaseNPCController {
*/
@Inject
protected CharacterService charService;
/**
* The {@link NPCService}
*/
@Inject
protected NPCService npcService;
@Override
public void action(NPC npc, Lineage2Connection conn, L2Character character,
public void action(NPC mob, Lineage2Connection conn, L2Character character,
String... args) throws L2Exception {
// send hp update
conn.write(new SM_STATUS_UPDATE(npc).add(Stat.MAX_HP,
(int) npc.getTemplate().getMaximumHP()).add(Stat.HP,
(int) npc.getHP()));
if (mob.getID().equals(character.getTargetID())) {
charService.attack(character, mob);
} else {
charService.target(character, mob);
conn.write(new SM_STATUS_UPDATE(mob).add(Stat.MAX_HP,
(int) mob.getTemplate().getMaximumHP()).add(Stat.HP,
(int) mob.getHP()));
}
}
}