Enchant support for CustomMailManager.
This commit is contained in:
@@ -33,7 +33,8 @@ import org.l2jmobius.gameserver.enums.MailType;
|
||||
import org.l2jmobius.gameserver.model.Message;
|
||||
import org.l2jmobius.gameserver.model.World;
|
||||
import org.l2jmobius.gameserver.model.actor.Player;
|
||||
import org.l2jmobius.gameserver.model.holders.ItemHolder;
|
||||
import org.l2jmobius.gameserver.model.holders.ItemEnchantHolder;
|
||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
||||
import org.l2jmobius.gameserver.model.itemcontainer.Mail;
|
||||
import org.l2jmobius.gameserver.util.Util;
|
||||
|
||||
@@ -65,29 +66,35 @@ public class CustomMailManager
|
||||
// Create message.
|
||||
final String items = rs.getString("items");
|
||||
final Message msg = new Message(playerId, rs.getString("subject"), rs.getString("message"), items.length() > 0 ? MailType.PRIME_SHOP_GIFT : MailType.REGULAR);
|
||||
final List<ItemHolder> itemHolders = new ArrayList<>();
|
||||
final List<ItemEnchantHolder> itemHolders = new ArrayList<>();
|
||||
for (String str : items.split(";"))
|
||||
{
|
||||
if (str.contains(" "))
|
||||
{
|
||||
final String itemId = str.split(" ")[0];
|
||||
final String itemCount = str.split(" ")[1];
|
||||
final String[] split = str.split(" ");
|
||||
final String itemId = split[0];
|
||||
final String itemCount = split[1];
|
||||
final String enchant = split.length > 2 ? split[2] : "0";
|
||||
if (Util.isDigit(itemId) && Util.isDigit(itemCount))
|
||||
{
|
||||
itemHolders.add(new ItemHolder(Integer.parseInt(itemId), Long.parseLong(itemCount)));
|
||||
itemHolders.add(new ItemEnchantHolder(Integer.parseInt(itemId), Long.parseLong(itemCount), Integer.parseInt(enchant)));
|
||||
}
|
||||
}
|
||||
else if (Util.isDigit(str))
|
||||
{
|
||||
itemHolders.add(new ItemHolder(Integer.parseInt(str), 1));
|
||||
itemHolders.add(new ItemEnchantHolder(Integer.parseInt(str), 1));
|
||||
}
|
||||
}
|
||||
if (!itemHolders.isEmpty())
|
||||
{
|
||||
final Mail attachments = msg.createAttachments();
|
||||
for (ItemHolder itemHolder : itemHolders)
|
||||
for (ItemEnchantHolder itemHolder : itemHolders)
|
||||
{
|
||||
attachments.addItem("Custom-Mail", itemHolder.getId(), itemHolder.getCount(), null, null);
|
||||
final Item item = attachments.addItem("Custom-Mail", itemHolder.getId(), itemHolder.getCount(), null, null);
|
||||
if (itemHolder.getEnchantLevel() > 0)
|
||||
{
|
||||
item.setEnchantLevel(itemHolder.getEnchantLevel());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -3410,6 +3410,21 @@ public class Player extends Playable
|
||||
* @return
|
||||
*/
|
||||
public Item addItem(String process, int itemId, long count, WorldObject reference, boolean sendMessage)
|
||||
{
|
||||
return addItem(process, itemId, count, -1, reference, sendMessage);
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds item to Inventory and send a Server->Client InventoryUpdate packet to the Player.
|
||||
* @param process : String Identifier of process triggering this action
|
||||
* @param itemId : int Item Identifier of the item to be added
|
||||
* @param count : long Quantity of items to be added
|
||||
* @param enchantLevel : int EnchantLevel of the item to be added
|
||||
* @param reference : WorldObject Object referencing current action like NPC selling item or previous item in transformation
|
||||
* @param sendMessage : boolean Specifies whether to send message to Client about this action
|
||||
* @return
|
||||
*/
|
||||
public Item addItem(String process, int itemId, long count, int enchantLevel, WorldObject reference, boolean sendMessage)
|
||||
{
|
||||
if (count > 0)
|
||||
{
|
||||
@@ -3466,6 +3481,10 @@ public class Player extends Playable
|
||||
{
|
||||
// Add the item to inventory
|
||||
final Item createdItem = _inventory.addItem(process, itemId, count, this, reference);
|
||||
if (enchantLevel > -1)
|
||||
{
|
||||
createdItem.setEnchantLevel(enchantLevel);
|
||||
}
|
||||
|
||||
// If over capacity, drop the item
|
||||
if (!canOverrideCond(PlayerCondOverride.ITEM_CONDITIONS) && !_inventory.validateCapacity(0, item.isQuestItem()) && createdItem.isDropable() && (!createdItem.isStackable() || (createdItem.getLastChange() != Item.MODIFIED)))
|
||||
|
Reference in New Issue
Block a user