Partial sync L2jUnity free release Feb 18th 2015.
This commit is contained in:
parent
7b56568b81
commit
236412d1bf
@ -21,8 +21,8 @@ import java.sql.PreparedStatement;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.sql.Statement;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
@ -139,7 +139,7 @@ public final class MailManager
|
||||
|
||||
public final List<Message> getInbox(int objectId)
|
||||
{
|
||||
final List<Message> inbox = new ArrayList<>();
|
||||
final List<Message> inbox = new LinkedList<>();
|
||||
for (Message msg : getMessages())
|
||||
{
|
||||
if ((msg != null) && (msg.getReceiverId() == objectId) && !msg.isDeletedByReceiver())
|
||||
@ -157,7 +157,7 @@ public final class MailManager
|
||||
|
||||
public final List<Message> getOutbox(int objectId)
|
||||
{
|
||||
final List<Message> outbox = new ArrayList<>();
|
||||
final List<Message> outbox = new LinkedList<>();
|
||||
for (Message msg : getMessages())
|
||||
{
|
||||
if ((msg != null) && (msg.getSenderId() == objectId) && !msg.isDeletedBySender())
|
||||
|
@ -20,7 +20,7 @@ import java.sql.Connection;
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.Statement;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@ -30,6 +30,7 @@ import java.util.concurrent.ScheduledFuture;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import com.l2jmobius.commons.database.DatabaseFactory;
|
||||
import com.l2jmobius.gameserver.ThreadPoolManager;
|
||||
@ -643,14 +644,9 @@ public class AutoSpawnHandler
|
||||
return _npcList;
|
||||
}
|
||||
|
||||
public List<L2Spawn> getSpawns()
|
||||
public Collection<L2Spawn> getSpawns()
|
||||
{
|
||||
final List<L2Spawn> npcSpawns = new ArrayList<>();
|
||||
for (L2Npc npcInst : _npcList)
|
||||
{
|
||||
npcSpawns.add(npcInst.getSpawn());
|
||||
}
|
||||
return npcSpawns;
|
||||
return _npcList.stream().map(L2Npc::getSpawn).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
public void setSpawnCount(int spawnCount)
|
||||
|
@ -11064,11 +11064,6 @@ public final class L2PcInstance extends L2Playable
|
||||
return _lastServerPosition;
|
||||
}
|
||||
|
||||
public int getLastServerDistance(int x, int y, int z)
|
||||
{
|
||||
return (int) Util.calculateDistance(x, y, z, _lastServerPosition.getX(), _lastServerPosition.getY(), _lastServerPosition.getZ(), true, false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addExpAndSp(long addToExp, long addToSp)
|
||||
{
|
||||
|
@ -131,7 +131,7 @@ public class CharKnownList extends ObjectKnownList
|
||||
{
|
||||
pIter.remove();
|
||||
}
|
||||
else if (!player.isVisible() || !Util.checkIfInShortRadius(getDistanceToForgetObject(player), getActiveObject(), player, true))
|
||||
else if (!player.isVisible() || !Util.checkIfInShortRange(getDistanceToForgetObject(player), getActiveObject(), player, true))
|
||||
{
|
||||
pIter.remove();
|
||||
removeKnownObject(player, true);
|
||||
@ -152,7 +152,7 @@ public class CharKnownList extends ObjectKnownList
|
||||
{
|
||||
continue;
|
||||
}
|
||||
else if (!summon.isVisible() || !Util.checkIfInShortRadius(getDistanceToForgetObject(summon), getActiveObject(), summon, true))
|
||||
else if (!summon.isVisible() || !Util.checkIfInShortRange(getDistanceToForgetObject(summon), getActiveObject(), summon, true))
|
||||
{
|
||||
sIter.remove();
|
||||
removeKnownObject(summon, true);
|
||||
@ -171,7 +171,7 @@ public class CharKnownList extends ObjectKnownList
|
||||
{
|
||||
oIter.remove();
|
||||
}
|
||||
else if (!object.isVisible() || !Util.checkIfInShortRadius(getDistanceToForgetObject(object), getActiveObject(), object, true))
|
||||
else if (!object.isVisible() || !Util.checkIfInShortRange(getDistanceToForgetObject(object), getActiveObject(), object, true))
|
||||
{
|
||||
oIter.remove();
|
||||
removeKnownObject(object, true);
|
||||
|
@ -61,7 +61,7 @@ public class ObjectKnownList
|
||||
}
|
||||
|
||||
// Check if object is not inside distance to watch object
|
||||
if (!Util.checkIfInShortRadius(getDistanceToWatchObject(object), getActiveObject(), object, true))
|
||||
if (!Util.checkIfInShortRange(getDistanceToWatchObject(object), getActiveObject(), object, true))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
@ -169,7 +169,7 @@ public class ObjectKnownList
|
||||
}
|
||||
|
||||
// Remove all objects invisible or too far
|
||||
if (!object.isVisible() || !Util.checkIfInShortRadius(getDistanceToForgetObject(object), getActiveObject(), object, true))
|
||||
if (!object.isVisible() || !Util.checkIfInShortRange(getDistanceToForgetObject(object), getActiveObject(), object, true))
|
||||
{
|
||||
oIter.remove();
|
||||
removeKnownObject(object, true);
|
||||
|
@ -135,7 +135,7 @@ public class PcStat extends PlayableStat
|
||||
|
||||
// if this player has a pet and it is in his range he takes from the owner's Exp, give the pet Exp now
|
||||
final L2Summon sPet = activeChar.getPet();
|
||||
if ((sPet != null) && Util.checkIfInShortRadius(Config.ALT_PARTY_RANGE, activeChar, sPet, false))
|
||||
if ((sPet != null) && Util.checkIfInShortRange(Config.ALT_PARTY_RANGE, activeChar, sPet, false))
|
||||
{
|
||||
final L2PetInstance pet = (L2PetInstance) sPet;
|
||||
ratioTakenByPlayer = pet.getPetLevelData().getOwnerExpTaken() / 100f;
|
||||
|
@ -17,6 +17,7 @@
|
||||
package com.l2jmobius.gameserver.model.entity;
|
||||
|
||||
import java.util.Calendar;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
import com.l2jmobius.gameserver.model.L2Clan;
|
||||
@ -37,7 +38,7 @@ public interface Siegable
|
||||
|
||||
L2SiegeClan getAttackerClan(L2Clan clan);
|
||||
|
||||
List<L2SiegeClan> getAttackerClans();
|
||||
Collection<L2SiegeClan> getAttackerClans();
|
||||
|
||||
List<L2PcInstance> getAttackersInZone();
|
||||
|
||||
|
@ -21,6 +21,8 @@ import java.sql.PreparedStatement;
|
||||
import java.sql.ResultSet;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Calendar;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
@ -70,7 +72,7 @@ public abstract class ClanHallSiegeEngine extends Quest implements Siegable
|
||||
protected final Logger _log;
|
||||
|
||||
private final Map<Integer, L2SiegeClan> _attackers = new ConcurrentHashMap<>();
|
||||
private List<L2Spawn> _guards;
|
||||
private Collection<L2Spawn> _guards;
|
||||
|
||||
public SiegableHall _hall;
|
||||
public ScheduledFuture<?> _siegeTask;
|
||||
@ -212,7 +214,12 @@ public abstract class ClanHallSiegeEngine extends Quest implements Siegable
|
||||
@Override
|
||||
public boolean checkIsAttacker(L2Clan clan)
|
||||
{
|
||||
return (clan != null) && _attackers.containsKey(clan.getId());
|
||||
if (clan == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return _attackers.containsKey(clan.getId());
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -234,9 +241,9 @@ public abstract class ClanHallSiegeEngine extends Quest implements Siegable
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<L2SiegeClan> getAttackerClans()
|
||||
public Collection<L2SiegeClan> getAttackerClans()
|
||||
{
|
||||
return new ArrayList<>(_attackers.values());
|
||||
return Collections.unmodifiableCollection(_attackers.values());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -16,9 +16,11 @@
|
||||
*/
|
||||
package com.l2jmobius.gameserver.network.serverpackets;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
import com.l2jmobius.gameserver.model.skills.Skill;
|
||||
|
||||
public class ExEnchantSkillList extends L2GameServerPacket
|
||||
{
|
||||
public enum EnchantSkillType
|
||||
@ -30,29 +32,16 @@ public class ExEnchantSkillList extends L2GameServerPacket
|
||||
}
|
||||
|
||||
private final EnchantSkillType _type;
|
||||
private final List<Skill> _skills;
|
||||
|
||||
static class Skill
|
||||
{
|
||||
public int id;
|
||||
public int nextLevel;
|
||||
|
||||
Skill(int pId, int pNextLevel)
|
||||
{
|
||||
id = pId;
|
||||
nextLevel = pNextLevel;
|
||||
}
|
||||
}
|
||||
|
||||
public void addSkill(int id, int level)
|
||||
{
|
||||
_skills.add(new Skill(id, level));
|
||||
}
|
||||
private final List<Skill> _skills = new LinkedList<>();
|
||||
|
||||
public ExEnchantSkillList(EnchantSkillType type)
|
||||
{
|
||||
_type = type;
|
||||
_skills = new ArrayList<>();
|
||||
}
|
||||
|
||||
public void addSkill(Skill skill)
|
||||
{
|
||||
_skills.add(skill);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -63,10 +52,10 @@ public class ExEnchantSkillList extends L2GameServerPacket
|
||||
|
||||
writeD(_type.ordinal());
|
||||
writeD(_skills.size());
|
||||
for (Skill sk : _skills)
|
||||
for (Skill skill : _skills)
|
||||
{
|
||||
writeD(sk.id);
|
||||
writeD(sk.nextLevel);
|
||||
writeD(skill.getId());
|
||||
writeD(skill.getLevel());
|
||||
}
|
||||
}
|
||||
}
|
@ -179,39 +179,6 @@ public final class Util
|
||||
return new String(arr);
|
||||
}
|
||||
|
||||
/**
|
||||
* (Based on ucwords() function of PHP)<br>
|
||||
* DrHouse: still functional but must be rewritten to avoid += to concat strings
|
||||
* @param str - the string to capitalize
|
||||
* @return a string with the first letter of every word in {@code str} capitalized
|
||||
*/
|
||||
@Deprecated
|
||||
public static String capitalizeWords(String str)
|
||||
{
|
||||
if ((str == null) || str.isEmpty())
|
||||
{
|
||||
return str;
|
||||
}
|
||||
|
||||
final char[] charArray = str.toCharArray();
|
||||
final StringBuilder result = new StringBuilder();
|
||||
|
||||
// Capitalize the first letter in the given string!
|
||||
charArray[0] = Character.toUpperCase(charArray[0]);
|
||||
|
||||
for (int i = 0; i < charArray.length; i++)
|
||||
{
|
||||
if (Character.isWhitespace(charArray[i]))
|
||||
{
|
||||
charArray[i + 1] = Character.toUpperCase(charArray[i + 1]);
|
||||
}
|
||||
|
||||
result.append(charArray[i]);
|
||||
}
|
||||
|
||||
return result.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param range
|
||||
* @param obj1
|
||||
@ -221,7 +188,11 @@ public final class Util
|
||||
*/
|
||||
public static boolean checkIfInRange(int range, L2Object obj1, L2Object obj2, boolean includeZAxis)
|
||||
{
|
||||
if ((obj1 == null) || (obj2 == null) || (obj1.getInstanceId() != obj2.getInstanceId()))
|
||||
if ((obj1 == null) || (obj2 == null))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (obj1.getInstanceId() != obj2.getInstanceId())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
@ -230,52 +201,39 @@ public final class Util
|
||||
return true; // not limited
|
||||
}
|
||||
|
||||
int rad = obj1 instanceof L2Character ? 0 + ((L2Character) obj1).getTemplate().getCollisionRadius() : 0;
|
||||
int radius = 0;
|
||||
if (obj1 instanceof L2Character)
|
||||
{
|
||||
radius += ((L2Character) obj1).getTemplate().getCollisionRadius();
|
||||
}
|
||||
if (obj2 instanceof L2Character)
|
||||
{
|
||||
rad += ((L2Character) obj2).getTemplate().getCollisionRadius();
|
||||
radius += ((L2Character) obj2).getTemplate().getCollisionRadius();
|
||||
}
|
||||
|
||||
final double dx = obj1.getX() - obj2.getX();
|
||||
final double dy = obj1.getY() - obj2.getY();
|
||||
double d = (dx * dx) + (dy * dy);
|
||||
|
||||
if (includeZAxis)
|
||||
{
|
||||
final double dz = obj1.getZ() - obj2.getZ();
|
||||
d += dz * dz;
|
||||
}
|
||||
return d <= ((range * range) + (2 * range * rad) + (rad * rad));
|
||||
return calculateDistance(obj1, obj2, includeZAxis, false) <= (range + radius);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if object is within short (sqrt(int.max_value)) radius, not using collisionRadius. Faster calculation than checkIfInRange if distance is short and collisionRadius isn't needed. Not for long distance checks (potential teleports, far away castles etc).
|
||||
* @param radius
|
||||
* @param range
|
||||
* @param obj1
|
||||
* @param obj2
|
||||
* @param includeZAxis if true, check also Z axis (3-dimensional check), otherwise only 2D
|
||||
* @return {@code true} if objects are within specified range between each other, {@code false} otherwise
|
||||
*/
|
||||
public static boolean checkIfInShortRadius(int radius, L2Object obj1, L2Object obj2, boolean includeZAxis)
|
||||
public static boolean checkIfInShortRange(int range, L2Object obj1, L2Object obj2, boolean includeZAxis)
|
||||
{
|
||||
if ((obj1 == null) || (obj2 == null))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (radius == -1)
|
||||
if (range == -1)
|
||||
{
|
||||
return true; // not limited
|
||||
}
|
||||
|
||||
final int dx = obj1.getX() - obj2.getX();
|
||||
final int dy = obj1.getY() - obj2.getY();
|
||||
|
||||
if (!includeZAxis)
|
||||
{
|
||||
return ((dx * dx) + (dy * dy)) <= (radius * radius);
|
||||
}
|
||||
final int dz = obj1.getZ() - obj2.getZ();
|
||||
return ((dx * dx) + (dy * dy) + (dz * dz)) <= (radius * radius);
|
||||
return calculateDistance(obj1, obj2, includeZAxis, false) <= range;
|
||||
}
|
||||
|
||||
/**
|
||||
|
Loading…
Reference in New Issue
Block a user