Initial changes.

This commit is contained in:
MobiusDevelopment 2022-03-10 10:46:16 +00:00
parent 124da5b623
commit 2edee74e5d
15 changed files with 188 additions and 64 deletions

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>L2J_Mobius_10.1_MasterClass</name>
<name>L2J_Mobius_10.2_MasterClass</name>
<comment></comment>
<projects>
</projects>

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xml>
<project name="L2J_Mobius_10.1_MasterClass" default="cleanup" basedir=".">
<project name="L2J_Mobius_10.2_MasterClass" default="cleanup" basedir=".">
<description>
This file is part of the L2J Mobius project.
@ -134,15 +134,15 @@
</target>
<target name="adding-core" depends="jar" description="Adding the compiled jars to the Zip file.">
<zip destfile="${build}/L2J_Mobius_10.1_MasterClass.zip" basedir="${build.dist}" level="9" />
<zip destfile="${build}/L2J_Mobius_10.2_MasterClass.zip" basedir="${build.dist}" level="9" />
</target>
<target name="adding-datapack" depends="adding-core" description="Updating the Zip file with datapack content.">
<zip destfile="${build}/L2J_Mobius_10.1_MasterClass.zip" basedir="${datapack}" excludes="**/*-sources.jar" update="true" level="9" />
<zip destfile="${build}/L2J_Mobius_10.2_MasterClass.zip" basedir="${datapack}" excludes="**/*-sources.jar" update="true" level="9" />
</target>
<target name="adding-readme" depends="adding-datapack" description="Adding readme.txt to the Zip file.">
<zip destfile="${build}/L2J_Mobius_10.1_MasterClass.zip" basedir="." includes="readme.txt" update="true" level="9" />
<zip destfile="${build}/L2J_Mobius_10.2_MasterClass.zip" basedir="." includes="readme.txt" update="true" level="9" />
</target>
<target name="cleanup" depends="adding-readme" description="Cleaning the build folder.">

View File

@ -101,8 +101,8 @@ MaximumOnlineUsers = 2000
# Numbers of protocol revisions that server allows to connect.
# Delimiter is ;
# WARNING: <u><b><font color="red">Changing the protocol revision may result in incompatible communication and many errors in game!</font></b></u>
# Master Class: 338
AllowedProtocolRevisions = 338
# Master Class Chapter 2: 362
AllowedProtocolRevisions = 362
# Displays server type next to the server name on character selection.
# Notes:

View File

@ -25,9 +25,10 @@ public enum ItemListType implements IUpdateTypeComponent
{
AUGMENT_BONUS(1),
ELEMENTAL_ATTRIBUTE(2),
ENCHANT_EFFECT(4),
VISUAL_ID(8),
SOUL_CRYSTAL(16);
VISUAL_ID(4),
SOUL_CRYSTAL(8),
REUSE_DELAY(16),
BLESSED(128);
private final int _mask;

View File

@ -56,7 +56,9 @@ public enum UserInfoType implements IUpdateTypeComponent
STAT_POINTS(0x19, 16),
STAT_ABILITIES(0x1A, 18),
ELIXIR_USED(0x1B, 1);
ELIXIR_USED(0x1B, 1),
VANGUARD_MOUNT(0x1C, 1);
/** Int mask. */
private final int _mask;

View File

@ -22,6 +22,7 @@ import java.util.Objects;
import org.l2jmobius.commons.util.Chronos;
import org.l2jmobius.gameserver.enums.AttributeType;
import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.buylist.Product;
import org.l2jmobius.gameserver.model.ensoul.EnsoulOption;
import org.l2jmobius.gameserver.model.item.ItemTemplate;
@ -87,6 +88,9 @@ public class ItemInfo
private int _visualId;
private long _visualExpiration;
private int _reuseDelay;
private Player _owner;
/**
* Get all information from Item to generate ItemInfo.
* @param item
@ -153,6 +157,8 @@ public class ItemInfo
_soulCrystalSpecialOptions = item.getAdditionalSpecialAbilities();
_visualId = item.getVisualId();
_visualExpiration = item.getVisualLifeTime() > 0 ? (item.getVisualLifeTime() - Chronos.currentTimeMillis()) / 1000 : 0;
_reuseDelay = item.getReuseDelay();
_owner = item.getActingPlayer();
}
public ItemInfo(Item item, int change)
@ -408,6 +414,16 @@ public class ItemInfo
return _visualExpiration;
}
public int getReuseDelay()
{
return _reuseDelay;
}
public Player getOwner()
{
return _owner;
}
@Override
public String toString()
{

View File

@ -707,11 +707,46 @@ public enum ExIncomingPackets implements IIncomingPackets<GameClient>
EX_PACKETREADCOUNTPERSECOND(0x220, null, ConnectionState.IN_GAME),
EX_SELECT_GLOBAL_EVENT_UI(0x221, null, ConnectionState.IN_GAME),
EX_L2PASS_INFO(0x222, null, ConnectionState.IN_GAME),
EX_L2PASS_REQUEST_REWARD(0x2231, null, ConnectionState.IN_GAME),
EX_L2PASS_REQUEST_REWARD(0x223, null, ConnectionState.IN_GAME),
EX_L2PASS_REQUEST_REWARD_ALL(0x224, null, ConnectionState.IN_GAME),
EX_L2PASS_BUY_PREMIUM(0x225, null, ConnectionState.IN_GAME),
EX_SAYHAS_SUPPORT_TOGGLE(0x226, null, ConnectionState.IN_GAME),
EX_MAX(0x227, null, ConnectionState.IN_GAME);
// 362
EX_REQ_ENCHANT_FAIL_REWARD_INFO(0x227, null, ConnectionState.IN_GAME),
EX_SET_ENCHANT_CHALLENGE_POINT(0x228, null, ConnectionState.IN_GAME),
EX_RESET_ENCHANT_CHALLENGE_POINT(0x229, null, ConnectionState.IN_GAME),
EX_REQ_VIEW_ENCHANT_RESULT(0x22A, null, ConnectionState.IN_GAME),
EX_REQ_START_MULTI_ENCHANT_SCROLL(0x22B, null, ConnectionState.IN_GAME),
EX_REQ_VIEW_MULTI_ENCHANT_RESULT(0x22C, null, ConnectionState.IN_GAME),
EX_REQ_FINISH_MULTI_ENCHANT_SCROLL(0x22D, null, ConnectionState.IN_GAME),
EX_REQ_CHANGE_MULTI_ENCHANT_SCROLL(0x22E, null, ConnectionState.IN_GAME),
EX_REQ_SET_MULTI_ENCHANT_ITEM_LIST(0x22F, null, ConnectionState.IN_GAME),
EX_REQ_MULTI_ENCHANT_ITEM_LIST(0x230, null, ConnectionState.IN_GAME),
EX_WORLDCASTLEWAR_SUPPORT_PLEDGE_FLAG_SET(0x231, null, ConnectionState.IN_GAME),
EX_WORLDCASTLEWAR_SUPPORT_PLEDGE_INFO_SET(0x232, null, ConnectionState.IN_GAME),
EX_REQ_HOMUNCULUS_PROB_LIST(0x233, null, ConnectionState.IN_GAME),
EX_WORLDCASTLEWAR_HOST_CASTLE_SIEGE_ALL_RANKING_INFO(0x234, null, ConnectionState.IN_GAME),
EX_WORLDCASTLEWAR_CASTLE_SIEGE_ALL_RANKING_INFO(0x235, null, ConnectionState.IN_GAME),
EX_MISSION_LEVEL_REWARD_LIST(0x236, null, ConnectionState.IN_GAME),
EX_MISSION_LEVEL_RECEIVE_REWARD(0x237, null, ConnectionState.IN_GAME),
EX_BALROGWAR_TELEPORT(0x238, null, ConnectionState.IN_GAME),
EX_BALROGWAR_SHOW_UI(0x239, null, ConnectionState.IN_GAME),
EX_BALROGWAR_SHOW_RANKING(0x23A, null, ConnectionState.IN_GAME),
EX_BALROGWAR_GET_REWARD(0x23B, null, ConnectionState.IN_GAME),
EX_USER_RESTART_LOCKER_UPDATE(0x23C, null, ConnectionState.IN_GAME),
EX_WORLD_EXCHANGE_ITEM_LIST(0x23D, null, ConnectionState.IN_GAME),
EX_WORLD_EXCHANGE_REGI_ITEM(0x23E, null, ConnectionState.IN_GAME),
EX_WORLD_EXCHANGE_BUY_ITEM(0x23F, null, ConnectionState.IN_GAME),
EX_WORLD_EXCHANGE_SETTLE_LIST(0x240, null, ConnectionState.IN_GAME),
EX_WORLD_EXCHANGE_SETTLE_RECV_RESULT(0x241, null, ConnectionState.IN_GAME),
EX_READY_ITEM_AUTO_PEEL(0x242, null, ConnectionState.IN_GAME),
EX_REQUEST_ITEM_AUTO_PEEL(0x243, null, ConnectionState.IN_GAME),
EX_STOP_ITEM_AUTO_PEEL(0x244, null, ConnectionState.IN_GAME),
EX_VARIATION_OPEN_UI(0x245, null, ConnectionState.IN_GAME),
EX_VARIATION_CLOSE_UI(0x246, null, ConnectionState.IN_GAME),
EX_APPLY_VARIATION_OPTION(0x247, null, ConnectionState.IN_GAME),
EX_BR_VERSION(0x248, null, ConnectionState.IN_GAME),
EX_MAX(0x249, null, ConnectionState.IN_GAME);
public static final ExIncomingPackets[] PACKET_ARRAY;

View File

@ -1014,21 +1014,58 @@ public enum OutgoingPackets
EX_PRIVATE_STORE_SEARCH_ITEM(0xFE, 0x2D4),
EX_PRIVATE_STORE_SEARCH_HISTORY(0xFE, 0x2D5),
EX_PRIVATE_STORE_SEARCH_STATISTICS(0xFE, 0x2D6),
EX_WORLDCASTLEWAR_HOST_CASTLE_SIEGE_RANKING_INFO(0xFE, 0x2D7),
EX_WORLDCASTLEWAR_CASTLE_SIEGE_RANKING_INFO(0xFE, 0x2D8),
EX_NEW_HENNA_LIST(0xFE, 0x2D9),
EX_NEW_HENNA_EQUIP(0xFE, 0x2DA),
EX_NEW_HENNA_UNEQUIP(0xFE, 0x2DB),
EX_NEW_HENNA_POTEN_SELECT(0xFE, 0x2DC),
EX_NEW_HENNA_POTEN_ENCHANT(0xFE, 0x2DD),
EX_NEW_HENNA_COMPOSE(0xFE, 0x2DE),
EX_REQUEST_INVITE_PARTY(0xFE, 0x2DF),
EX_INIT_GLOBAL_EVENT_UI(0xFE, 0x2E0),
EX_SHOW_GLOBAL_EVENT_UI(0xFE, 0x2E1),
EX_L2PASS_SIMPLE_INFO(0xFE, 0x2E2),
EX_L2PASS_INFO(0xFE, 0x2E3),
EX_SAYHAS_SUPPORT_INFO(0xFE, 0x2E4),
EX_MAX(0xFE, 0x2E5);
EX_NEW_HENNA_LIST(0xFE, 0x2D7),
EX_NEW_HENNA_EQUIP(0xFE, 0x2D8),
EX_NEW_HENNA_UNEQUIP(0xFE, 0x2D9),
EX_NEW_HENNA_POTEN_SELECT(0xFE, 0x2DA),
EX_NEW_HENNA_POTEN_ENCHANT(0xFE, 0x2DB),
EX_NEW_HENNA_COMPOSE(0xFE, 0x2DC),
EX_REQUEST_INVITE_PARTY(0xFE, 0x2DD),
EX_INIT_GLOBAL_EVENT_UI(0xFE, 0x2DE),
EX_SHOW_GLOBAL_EVENT_UI(0xFE, 0x2DF),
EX_L2PASS_SIMPLE_INFO(0xFE, 0x2E0),
EX_L2PASS_INFO(0xFE, 0x2E1),
EX_SAYHAS_SUPPORT_INFO(0xFE, 0x2E2),
// 362
EX_RES_ENCHANT_ITEM_FAIL_REWARD_INFO(0xFE, 0x2E3),
EX_CHANGED_ENCHANT_TARGET_ITEM_PROB_LIST(0xFE, 0x2E4),
EX_ENCHANT_CHALLENGE_POINT_INFO(0xFE, 0x2E5),
EX_SET_ENCHANT_CHALLENGE_POINT(0xFE, 0x2E6),
EX_RESET_ENCHANT_CHALLENGE_POINT(0xFE, 0x2E7),
EX_RES_SELECT_MULTI_ENCHANT_SCROLL(0xFE, 0x2E8),
EX_RES_SET_MULTI_ENCHANT_ITEM_LIST(0xFE, 0x2E9),
EX_RES_MULTI_ENCHANT_ITEM_LIST(0xFE, 0x2EA),
EX_WORLDCASTLEWAR_HOST_SUPPORT_PLEDGE_RANKING_INFO(0xFE, 0x2EB),
EX_WORLDCASTLEWAR_HOST_PLEDGE_RANKING_INFO(0xFE, 0x2EC),
EX_WORLDCASTLEWAR_HOST_PERSONAL_RANKING_INFO(0xFE, 0x2ED),
EX_WORLDCASTLEWAR_SUPPORT_PLEDGE_RANKING_INFO(0xFE, 0x2EE),
EX_WORLDCASTLEWAR_PLEDGE_RANKING_INFO(0xFE, 0x2EF),
EX_WORLDCASTLEWAR_PERSONAL_RANKING_INFO(0xFE, 0x2F0),
EX_HOMUNCULUS_CREATE_PROB_LIST(0xFE, 0x2F1),
EX_HOMUNCULUS_COUPON_PROB_LIST(0xFE, 0x2F2),
EX_WORLDCASTLEWAR_HOST_CASTLE_SIEGE_RANKING_INFO(0xFE, 0x2F3),
EX_WORLDCASTLEWAR_CASTLE_SIEGE_RANKING_INFO(0xFE, 0x2F4),
EX_MISSION_LEVEL_REWARD_LIST(0xFE, 0x2F5),
EX_BALROGWAR_SHOW_UI(0xFE, 0x2F6),
EX_BALROGWAR_SHOW_RANKING(0xFE, 0x2F7),
EX_BALROGWAR_GET_REWARD(0xFE, 0x2F8),
EX_BALROGWAR_HUD(0xFE, 0x2F9),
EX_BALROGWAR_BOSSINFO(0xFE, 0x2FA),
EX_USER_RESTART_LOCKER_LIST(0xFE, 0x2FB),
EX_USER_RESTART_LOCKER_UPDATE(0xFE, 0x2FC),
EX_WORLD_EXCHANGE_ITEM_LIST(0xFE, 0x2FD),
EX_WORLD_EXCHANGE_REGI_ITEM(0xFE, 0x2FE),
EX_WORLD_EXCHANGE_BUY_ITEM(0xFE, 0x2FF),
EX_WORLD_EXCHANGE_SETTLE_LIST(0xFE, 0x300),
EX_WORLD_EXCHANGE_SETTLE_RECV_RESULT(0xFE, 0x301),
EX_WORLD_EXCHANGE_SELL_COMPLETE_ALARM(0xFE, 0x302),
EX_READY_ITEM_AUTO_PEEL(0xFE, 0x303),
EX_RESULT_ITEM_AUTO_PEEL(0xFE, 0x304),
EX_STOP_ITEM_AUTO_PEEL(0xFE, 0x305),
EX_TIME_RESTRICT_FIELD_DIE_LIMT_TIME(0xFE, 0x306),
EX_APPLY_VARIATION_OPTION(0xFE, 0x307),
EX_BR_VERSION(0xFE, 0x308),
EX_MAX(0xFE, 0x309);
private final int _id1;
private final int _id2;

View File

@ -85,8 +85,7 @@ public abstract class AbstractItemPacket extends AbstractMaskPacket<ItemListType
packet.writeC(0); // 270 protocol
packet.writeD(item.getTime());
packet.writeC(item.isAvailable() ? 1 : 0); // GOD Item enabled = 1 disabled (red) = 0
packet.writeC(0); // 140 protocol
packet.writeC(0); // 140 protocol
packet.writeH(0); // 140 - locked
if (containsMask(mask, ItemListType.AUGMENT_BONUS))
{
writeItemAugment(packet, item);
@ -95,10 +94,11 @@ public abstract class AbstractItemPacket extends AbstractMaskPacket<ItemListType
{
writeItemElemental(packet, item);
}
if (containsMask(mask, ItemListType.ENCHANT_EFFECT))
{
writeItemEnchantEffect(packet, item);
}
// 362 - Removed
// if (containsMask(mask, ItemListType.ENCHANT_EFFECT))
// {
// writeItemEnchantEffect(packet, item);
// }
if (containsMask(mask, ItemListType.VISUAL_ID))
{
packet.writeD(item.getVisualId()); // Item remodel visual ID
@ -107,6 +107,13 @@ public abstract class AbstractItemPacket extends AbstractMaskPacket<ItemListType
{
writeItemEnsoulOptions(packet, item);
}
// TODO:
// if (containsMask(mask, ItemListType.REUSE_DELAY))
// {
// final Player owner = item.getOwner();
// packet.writeD(owner == null ? 0 : (int) (owner.getItemRemainingReuseTime(item.getObjectId()) / 1000));
// }
// Essence
// if (containsMask(mask, ItemListType.BLESSED))
// {
// packet.writeC(1);
@ -130,8 +137,7 @@ public abstract class AbstractItemPacket extends AbstractMaskPacket<ItemListType
packet.writeC(0); // 270 protocol
packet.writeD(item.getTime());
packet.writeC(item.isAvailable() ? 1 : 0); // GOD Item enabled = 1 disabled (red) = 0
packet.writeC(0); // 140 protocol
packet.writeC(0); // 140 protocol
packet.writeH(0); // 140 - locked
if (containsMask(mask, ItemListType.AUGMENT_BONUS))
{
writeItemAugment(packet, item);
@ -140,10 +146,11 @@ public abstract class AbstractItemPacket extends AbstractMaskPacket<ItemListType
{
writeItemElemental(packet, item);
}
if (containsMask(mask, ItemListType.ENCHANT_EFFECT))
{
writeItemEnchantEffect(packet, item);
}
// 362 - Removed
// if (containsMask(mask, ItemListType.ENCHANT_EFFECT))
// {
// writeItemEnchantEffect(packet, item);
// }
if (containsMask(mask, ItemListType.VISUAL_ID))
{
packet.writeD(item.getVisualId()); // Item remodel visual ID
@ -152,6 +159,13 @@ public abstract class AbstractItemPacket extends AbstractMaskPacket<ItemListType
{
writeItemEnsoulOptions(packet, item);
}
// TODO:
// if (containsMask(mask, ItemListType.REUSE_DELAY))
// {
// final Player owner = item.getOwner();
// packet.writeD(owner == null ? 0 : (int) (owner.getItemRemainingReuseTime(item.getObjectId()) / 1000));
// }
// Essence
// if (containsMask(mask, ItemListType.BLESSED))
// {
// packet.writeC(1);
@ -169,17 +183,18 @@ public abstract class AbstractItemPacket extends AbstractMaskPacket<ItemListType
{
mask |= ItemListType.ELEMENTAL_ATTRIBUTE.getMask();
}
if (item.getEnchantOptions() != null)
{
for (int id : item.getEnchantOptions())
{
if (id > 0)
{
mask |= ItemListType.ENCHANT_EFFECT.getMask();
break;
}
}
}
// 362 - Removed
// if (item.getEnchantOptions() != null)
// {
// for (int id : item.getEnchantOptions())
// {
// if (id > 0)
// {
// mask |= ItemListType.ENCHANT_EFFECT.getMask();
// break;
// }
// }
// }
if (item.getVisualId() > 0)
{
mask |= ItemListType.VISUAL_ID.getMask();
@ -188,6 +203,12 @@ public abstract class AbstractItemPacket extends AbstractMaskPacket<ItemListType
{
mask |= ItemListType.SOUL_CRYSTAL.getMask();
}
// TODO:
// if (item.getReuseDelay() > 0)
// {
// mask |= ItemListType.REUSE_DELAY.getMask();
// }
// Essence
// if (item.isBlessed())
// {
// mask |= ItemListType.BLESSED.getMask();

View File

@ -264,6 +264,7 @@ public class CharInfo implements IClientOutgoingPacket
packet.writeC(0);
packet.writeD(_player.getVisualHairColor() + 1); // 338 - DK color.
packet.writeD(0);
packet.writeC(0); // 362 - Vanguard mount.
return true;
}

View File

@ -256,6 +256,7 @@ public class CharSelectionInfo implements IClientOutgoingPacket
packet.writeD((int) (charInfoPackage.getLastAccess() / 1000)); // 235 - last play time
packet.writeC(0); // 338
packet.writeD(charInfoPackage.getHairColor() + 1); // 338 - DK color.
packet.writeC(0); // 362 - Vanguard mount.
}
return true;
}

View File

@ -139,7 +139,7 @@ public class UserInfo extends AbstractMaskPacket<UserInfoType>
OutgoingPackets.USER_INFO.writeId(packet);
packet.writeD(_player.getObjectId());
packet.writeD(_initSize);
packet.writeH(28); // 286 - 28
packet.writeH(29); // 362 - 29
packet.writeB(_masks);
if (containsMask(UserInfoType.RELATION))
{
@ -419,8 +419,14 @@ public class UserInfo extends AbstractMaskPacket<UserInfoType>
if (containsMask(UserInfoType.ELIXIR_USED)) // 286
{
packet.writeH(1);
packet.writeD(0);
packet.writeH(0);
}
if (containsMask(UserInfoType.VANGUARD_MOUNT)) // 362
{
packet.writeC(0); // 362 - Vanguard mount.
}
// Send exp bonus change.
if (containsMask(UserInfoType.VITA_FAME))
{
@ -428,6 +434,7 @@ public class UserInfo extends AbstractMaskPacket<UserInfoType>
_player.sendPacket(new ExUserBoostStat(_player, BonusExpType.BUFFS));
_player.sendPacket(new ExUserBoostStat(_player, BonusExpType.PASSIVE));
}
return true;
}

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication">
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
<listEntry value="/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/GameServer.java"/>
<listEntry value="/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/GameServer.java"/>
</listAttribute>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
<listEntry value="1"/>
@ -12,7 +12,7 @@
<booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_CLASSPATH_ONLY_JAR" value="false"/>
<booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="true"/>
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.l2jmobius.gameserver.GameServer"/>
<stringAttribute key="org.eclipse.jdt.launching.MODULE_NAME" value="L2J_Mobius_10.1_MasterClass"/>
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="L2J_Mobius_10.1_MasterClass"/>
<stringAttribute key="org.eclipse.jdt.launching.WORKING_DIRECTORY" value="${workspace_loc:L2J_Mobius_10.1_MasterClass}/dist/game/"/>
<stringAttribute key="org.eclipse.jdt.launching.MODULE_NAME" value="L2J_Mobius_10.2_MasterClass"/>
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="L2J_Mobius_10.2_MasterClass"/>
<stringAttribute key="org.eclipse.jdt.launching.WORKING_DIRECTORY" value="${workspace_loc:L2J_Mobius_10.2_MasterClass}/dist/game/"/>
</launchConfiguration>

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication">
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
<listEntry value="/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/loginserver/LoginServer.java"/>
<listEntry value="/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/loginserver/LoginServer.java"/>
</listAttribute>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
<listEntry value="1"/>
@ -13,7 +13,7 @@
<booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_CLASSPATH_ONLY_JAR" value="false"/>
<booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="true"/>
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.l2jmobius.loginserver.LoginServer"/>
<stringAttribute key="org.eclipse.jdt.launching.MODULE_NAME" value="L2J_Mobius_10.1_MasterClass"/>
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="L2J_Mobius_10.1_MasterClass"/>
<stringAttribute key="org.eclipse.jdt.launching.WORKING_DIRECTORY" value="${workspace_loc:L2J_Mobius_10.1_MasterClass}/dist/login/"/>
<stringAttribute key="org.eclipse.jdt.launching.MODULE_NAME" value="L2J_Mobius_10.2_MasterClass"/>
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="L2J_Mobius_10.2_MasterClass"/>
<stringAttribute key="org.eclipse.jdt.launching.WORKING_DIRECTORY" value="${workspace_loc:L2J_Mobius_10.2_MasterClass}/dist/login/"/>
</launchConfiguration>

View File

@ -1,6 +1,6 @@
L2J-Mobius Master Class
Client (password L2jMobius): https://drive.google.com/u/0/uc?id=1fuTmSa-W-OTFZV1ZnaCv8ql5O39Uw9oL&export=download
System: https://mega.nz/file/EwdSFZKD#1yIxgst5gzrpc7DQvSm1aokgfan7vfl3tRpMi6nZ51U
L2J-Mobius Master Class Chapter 2
Client (password L2jMobius): https://drive.google.com/u/0/uc?id=1I3nwvFOkuKrq9E_f-8iMiOHxlMvv2CtI&export=download
System: https://mega.nz/file/AlVFEIhL#dZwVnzxdP2-La3mMsUfnXHkxdl35Iu0ojkjbwriIHnE
JDK: https://www.mediafire.com/file/kb2nfx54wojys4f/bellsoft-jdk17.0.2%252B9-windows-amd64.msi
XAMPP: https://www.mediafire.com/file/hkehxpyjn81ybsw/xampp-windows-x64-8.0.11-2-VS16-installer.exe
@ -125,6 +125,9 @@ Return of the Queen Ant Chapter 2: https://eu.4game.com/patchnotes/lineage2/331/
Master Class: https://eu.4game.com/patchnotes/lineage2/362/
-Death Knight creation support
Master Class Chapter 2: https://eu.4game.com/patchnotes/lineage2/374/
-New enchant system
Events:
-Birth of Draco
-Character Birthday