Item container related cleanup.

This commit is contained in:
MobiusDevelopment
2020-04-25 13:41:25 +00:00
parent 0c8702a200
commit 8e20923030
143 changed files with 618 additions and 479 deletions

View File

@ -922,12 +922,13 @@ public abstract class Inventory extends ItemContainer
item.setLastChange(ItemInstance.MODIFIED);
item.updateDatabase();
item = ItemTable.getInstance().createItem(process, item.getId(), count, actor, reference);
item.updateDatabase();
final ItemInstance newItem = ItemTable.getInstance().createItem(process, item.getId(), count, actor, reference);
newItem.updateDatabase();
refreshWeight();
return item;
return newItem;
}
}
return dropItem(process, item, actor, reference);
}

View File

@ -389,22 +389,25 @@ public abstract class ItemContainer
if (count == item.getCount())
{
removeItem(item);
}
else
{
item.changeCount(process, -count, actor, reference);
item.setItemLocation(newLocation);
item.updateDatabase(true);
item = ItemTable.getInstance().createItem(process, item.getId(), count, actor, reference);
item.setOwnerId(getOwnerId());
refreshWeight();
return item;
}
item.setItemLocation(newLocation);
item.changeCount(process, -count, actor, reference);
item.updateDatabase(true);
final ItemInstance newItem = ItemTable.getInstance().createItem(process, item.getId(), count, actor, reference);
newItem.setOwnerId(getOwnerId());
newItem.setItemLocation(newLocation);
newItem.updateDatabase(true);
refreshWeight();
return newItem;
}
refreshWeight();
return item;
}
/**

View File

@ -658,6 +658,7 @@ public class PlayerInventory extends Inventory
{
EventDispatcher.getInstance().notifyEventAsync(new OnPlayerItemDrop(actor, item, item.getLocation()), item.getItem());
}
return item;
}

View File

@ -63,6 +63,7 @@ public class RequestDropItem implements IClientIncomingPacket
{
return;
}
// Flood protect drop to avoid packet lag
if (!client.getFloodProtectors().getDropItem().tryPerformAction("drop item"))
{
@ -75,6 +76,7 @@ public class RequestDropItem implements IClientIncomingPacket
player.sendPacket(SystemMessageId.THIS_ITEM_CANNOT_BE_DESTROYED);
return;
}
if (item.isQuestItem() && !(player.canOverrideCond(PlayerCondOverride.DROP_ALL_ITEMS) && Config.GM_TRADE_RESTRICTED_ITEMS))
{
return;
@ -122,12 +124,14 @@ public class RequestDropItem implements IClientIncomingPacket
player.sendPacket(SystemMessageId.WHILE_OPERATING_A_PRIVATE_STORE_OR_WORKSHOP_YOU_CANNOT_DISCARD_DESTROY_OR_TRADE_AN_ITEM);
return;
}
if (player.isFishing())
{
// You can't mount, dismount, break and drop items while fishing
player.sendPacket(SystemMessageId.YOU_CANNOT_DO_THAT_WHILE_FISHING_2);
return;
}
if (player.isFlying())
{
return;

View File

@ -92,13 +92,14 @@ public class SendWareHouseDepositList implements IClientIncomingPacket
{
return;
}
final boolean isPrivate = warehouse instanceof PlayerWarehouse;
final Npc manager = player.getLastFolkNPC();
if (((manager == null) || !manager.isWarehouse() || !manager.canInteract(player)) && !player.isGM())
{
return;
}
final boolean isPrivate = warehouse instanceof PlayerWarehouse;
if (!isPrivate && !player.getAccessLevel().allowTransaction())
{
player.sendMessage("Transactions are disabled for your Access Level.");
@ -121,9 +122,9 @@ public class SendWareHouseDepositList implements IClientIncomingPacket
final long fee = _items.size() * 30;
long currentAdena = player.getAdena();
int slots = 0;
for (ItemHolder i : _items)
for (ItemHolder itemHolder : _items)
{
final ItemInstance item = player.checkItemManipulation(i.getId(), i.getCount(), "deposit");
final ItemInstance item = player.checkItemManipulation(itemHolder.getId(), itemHolder.getCount(), "deposit");
if (item == null)
{
LOGGER.warning("Error depositing a warehouse object for char " + player.getName() + " (validity check)");
@ -133,11 +134,11 @@ public class SendWareHouseDepositList implements IClientIncomingPacket
// Calculate needed adena and slots
if (item.getId() == ADENA_ID)
{
currentAdena -= i.getCount();
currentAdena -= itemHolder.getCount();
}
if (!item.isStackable())
{
slots += i.getCount();
slots += itemHolder.getCount();
}
else if (warehouse.getItemByItemId(item.getId()) == null)
{
@ -167,10 +168,10 @@ public class SendWareHouseDepositList implements IClientIncomingPacket
// Proceed to the transfer
final InventoryUpdate playerIU = Config.FORCE_INVENTORY_UPDATE ? null : new InventoryUpdate();
for (ItemHolder i : _items)
for (ItemHolder itemHolder : _items)
{
// Check validity of requested item
final ItemInstance oldItem = player.checkItemManipulation(i.getId(), i.getCount(), "deposit");
final ItemInstance oldItem = player.checkItemManipulation(itemHolder.getId(), itemHolder.getCount(), "deposit");
if (oldItem == null)
{
LOGGER.warning("Error depositing a warehouse object for char " + player.getName() + " (olditem == null)");
@ -182,7 +183,7 @@ public class SendWareHouseDepositList implements IClientIncomingPacket
continue;
}
final ItemInstance newItem = player.getInventory().transferItem(warehouse.getName(), i.getId(), i.getCount(), warehouse, player, manager);
final ItemInstance newItem = player.getInventory().transferItem(warehouse.getName(), itemHolder.getId(), itemHolder.getCount(), warehouse, player, manager);
if (newItem == null)
{
LOGGER.warning("Error depositing a warehouse object for char " + player.getName() + " (newitem == null)");