Sync with L2jServer HighFive Mar 25th 2015.

This commit is contained in:
MobiusDev
2015-03-25 06:48:51 +00:00
parent e0c66b1412
commit 82606870c0
194 changed files with 2619 additions and 2869 deletions

View File

@@ -247,7 +247,7 @@ public class AdminBuffs implements IAdminCommandHandler
}
else
{
effects.addAll(target.getEffectList().getPassives().values());
effects.addAll(target.getEffectList().getPassives());
}
if ((page > ((effects.size() / PAGE_LIMIT) + 1)) || (page < 1))

View File

@@ -292,8 +292,7 @@ public final class AdminCHSiege implements IAdminCommandHandler
}
else
{
ClanHallSiegeEngine siegable = hall.getSiege();
siegable.getAttackers().clear();
hall.getSiege().getAttackers().clear();
}
}
else if (split[0].equals(COMMANDS[7]))

View File

@@ -43,9 +43,23 @@ public final class MagicalAttackMp extends AbstractEffect
@Override
public boolean calcSuccess(BuffInfo info)
{
if (info.getEffected().isInvul() || !Formulas.calcMagicAffected(info.getEffector(), info.getEffected(), info.getSkill()))
if (info.getEffected().isInvul())
{
info.getEffector().sendPacket(SystemMessageId.YOU_HAVE_MISSED);
return false;
}
if (!Formulas.calcMagicAffected(info.getEffector(), info.getEffected(), info.getSkill()))
{
if (info.getEffector().isPlayer())
{
info.getEffector().sendPacket(SystemMessageId.YOUR_ATTACK_HAS_FAILED);
}
if (info.getEffected().isPlayer())
{
SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.C1_RESISTED_C2_S_MAGIC);
sm.addCharName(info.getEffected());
sm.addCharName(info.getEffector());
info.getEffected().sendPacket(sm);
}
return false;
}
return true;
@@ -102,4 +116,4 @@ public final class MagicalAttackMp extends AbstractEffect
activeChar.sendPacket(sm2);
}
}
}
}

View File

@@ -22,9 +22,17 @@ import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.lang.management.ManagementFactory;
import java.lang.management.ThreadInfo;
import java.lang.management.ThreadMXBean;
import java.net.Socket;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.StringTokenizer;
import com.l2jserver.gameserver.GameTimeController;
@@ -194,6 +202,53 @@ public class DebugHandler implements ITelnetHandler
sb.append('\n');
}
sb.append('\n');
sb.append("## Threads Information ##\n");
Map<Thread, StackTraceElement[]> allThread = Thread.getAllStackTraces();
final List<Entry<Thread, StackTraceElement[]>> entries = new ArrayList<>(allThread.entrySet());
Collections.sort(entries, (e1, e2) -> e1.getKey().getName().compareTo(e2.getKey().getName()));
for (Entry<Thread, StackTraceElement[]> entry : entries)
{
StackTraceElement[] stes = entry.getValue();
Thread t = entry.getKey();
sb.append("--------------\n");
sb.append(t.toString() + " (" + t.getId() + ")\n");
sb.append("State: " + t.getState() + '\n');
sb.append("isAlive: " + t.isAlive() + " | isDaemon: " + t.isDaemon() + " | isInterrupted: " + t.isInterrupted() + '\n');
sb.append('\n');
for (StackTraceElement ste : stes)
{
sb.append(ste.toString());
sb.append('\n');
}
sb.append('\n');
}
sb.append('\n');
ThreadMXBean mbean = ManagementFactory.getThreadMXBean();
long[] ids = findDeadlockedThreads(mbean);
if ((ids != null) && (ids.length > 0))
{
Thread[] threads = new Thread[ids.length];
for (int i = 0; i < threads.length; i++)
{
threads[i] = findMatchingThread(mbean.getThreadInfo(ids[i]));
}
sb.append("Deadlocked Threads:\n");
sb.append("-------------------\n");
for (Thread thread : threads)
{
System.err.println(thread);
for (StackTraceElement ste : thread.getStackTrace())
{
sb.append("\t" + ste);
sb.append('\n');
}
}
}
sb.append("\n\n## Thread Pool Manager Statistics ##\n");
for (String line : ThreadPoolManager.getInstance().getStats())
{
@@ -252,6 +307,29 @@ public class DebugHandler implements ITelnetHandler
return false;
}
private long[] findDeadlockedThreads(ThreadMXBean mbean)
{
// JDK 1.5 only supports the findMonitorDeadlockedThreads()
// method, so you need to comment out the following three lines
if (mbean.isSynchronizerUsageSupported())
{
return mbean.findDeadlockedThreads();
}
return mbean.findMonitorDeadlockedThreads();
}
private Thread findMatchingThread(ThreadInfo inf)
{
for (Thread thread : Thread.getAllStackTraces().keySet())
{
if (thread.getId() == inf.getThreadId())
{
return thread;
}
}
throw new IllegalStateException("Deadlocked Thread not found");
}
public String getServerStatus()
{
int playerCount = 0, objectCount = 0;