Reduce item creation store queries.
This commit is contained in:
@@ -30,7 +30,6 @@ import java.util.stream.Collectors;
|
|||||||
|
|
||||||
import org.l2jmobius.Config;
|
import org.l2jmobius.Config;
|
||||||
import org.l2jmobius.commons.database.DatabaseFactory;
|
import org.l2jmobius.commons.database.DatabaseFactory;
|
||||||
import org.l2jmobius.gameserver.GameTimeController;
|
|
||||||
import org.l2jmobius.gameserver.datatables.ItemTable;
|
import org.l2jmobius.gameserver.datatables.ItemTable;
|
||||||
import org.l2jmobius.gameserver.enums.ItemLocation;
|
import org.l2jmobius.gameserver.enums.ItemLocation;
|
||||||
import org.l2jmobius.gameserver.model.World;
|
import org.l2jmobius.gameserver.model.World;
|
||||||
@@ -210,24 +209,8 @@ public abstract class ItemContainer
|
|||||||
ItemTable.getInstance().destroyItem(process, item, actor, reference);
|
ItemTable.getInstance().destroyItem(process, item, actor, reference);
|
||||||
item.updateDatabase();
|
item.updateDatabase();
|
||||||
item = olditem;
|
item = olditem;
|
||||||
|
|
||||||
// Updates database
|
|
||||||
final float adenaRate = Config.RATE_DROP_AMOUNT_BY_ID.getOrDefault(Inventory.ADENA_ID, 1f);
|
|
||||||
if ((item.getId() == Inventory.ADENA_ID) && (count < (10000 * adenaRate)))
|
|
||||||
{
|
|
||||||
// Small adena changes won't be saved to database all the time
|
|
||||||
if ((GameTimeController.getInstance().getGameTicks() % 5) == 0)
|
|
||||||
{
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
// If item hasn't be found in inventory, create new one
|
else // If item hasn't be found in inventory, create new one
|
||||||
else
|
|
||||||
{
|
{
|
||||||
item.setOwnerId(process, getOwnerId(), actor, reference);
|
item.setOwnerId(process, getOwnerId(), actor, reference);
|
||||||
item.setItemLocation(getBaseLocation());
|
item.setItemLocation(getBaseLocation());
|
||||||
@@ -235,9 +218,6 @@ public abstract class ItemContainer
|
|||||||
|
|
||||||
// Add item in inventory
|
// Add item in inventory
|
||||||
addItem(item);
|
addItem(item);
|
||||||
|
|
||||||
// Updates database
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
refreshWeight();
|
refreshWeight();
|
||||||
@@ -262,24 +242,8 @@ public abstract class ItemContainer
|
|||||||
{
|
{
|
||||||
item.changeCount(process, count, actor, reference);
|
item.changeCount(process, count, actor, reference);
|
||||||
item.setLastChange(ItemInstance.MODIFIED);
|
item.setLastChange(ItemInstance.MODIFIED);
|
||||||
// Updates database
|
|
||||||
// If Adena drop rate is not present it will be x1.
|
|
||||||
final float adenaRate = Config.RATE_DROP_AMOUNT_BY_ID.getOrDefault(Inventory.ADENA_ID, 1f);
|
|
||||||
if ((itemId == Inventory.ADENA_ID) && (count < (10000 * adenaRate)))
|
|
||||||
{
|
|
||||||
// Small adena changes won't be saved to database all the time
|
|
||||||
if ((GameTimeController.getInstance().getGameTicks() % 5) == 0)
|
|
||||||
{
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
// If item hasn't be found in inventory, create new one
|
else // If item hasn't be found in inventory, create new one
|
||||||
else
|
|
||||||
{
|
{
|
||||||
for (int i = 0; i < count; i++)
|
for (int i = 0; i < count; i++)
|
||||||
{
|
{
|
||||||
@@ -297,8 +261,6 @@ public abstract class ItemContainer
|
|||||||
|
|
||||||
// Add item in inventory
|
// Add item in inventory
|
||||||
addItem(item);
|
addItem(item);
|
||||||
// Updates database
|
|
||||||
item.updateDatabase();
|
|
||||||
|
|
||||||
// If stackable, end loop as entire count is included in 1 instance of item
|
// If stackable, end loop as entire count is included in 1 instance of item
|
||||||
if (template.isStackable() || !Config.MULTIPLE_ITEM_DROP)
|
if (template.isStackable() || !Config.MULTIPLE_ITEM_DROP)
|
||||||
@@ -334,8 +296,8 @@ public abstract class ItemContainer
|
|||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
ItemInstance targetitem = sourceitem.isStackable() ? target.getItemByItemId(sourceitem.getId()) : null;
|
|
||||||
|
|
||||||
|
ItemInstance targetitem = sourceitem.isStackable() ? target.getItemByItemId(sourceitem.getId()) : null;
|
||||||
synchronized (sourceitem)
|
synchronized (sourceitem)
|
||||||
{
|
{
|
||||||
// check if this item still present in this container
|
// check if this item still present in this container
|
||||||
@@ -363,8 +325,7 @@ public abstract class ItemContainer
|
|||||||
{
|
{
|
||||||
sourceitem.changeCount(process, -count, actor, reference);
|
sourceitem.changeCount(process, -count, actor, reference);
|
||||||
}
|
}
|
||||||
else
|
else // Otherwise destroy old item
|
||||||
// Otherwise destroy old item
|
|
||||||
{
|
{
|
||||||
removeItem(sourceitem);
|
removeItem(sourceitem);
|
||||||
ItemTable.getInstance().destroyItem(process, sourceitem, actor, reference);
|
ItemTable.getInstance().destroyItem(process, sourceitem, actor, reference);
|
||||||
@@ -374,8 +335,7 @@ public abstract class ItemContainer
|
|||||||
{
|
{
|
||||||
targetitem.changeCount(process, count, actor, reference);
|
targetitem.changeCount(process, count, actor, reference);
|
||||||
}
|
}
|
||||||
else
|
else // Otherwise add new item
|
||||||
// Otherwise add new item
|
|
||||||
{
|
{
|
||||||
targetitem = target.addItem(process, sourceitem.getId(), count, actor, reference);
|
targetitem = target.addItem(process, sourceitem.getId(), count, actor, reference);
|
||||||
}
|
}
|
||||||
@@ -437,6 +397,7 @@ public abstract class ItemContainer
|
|||||||
item = ItemTable.getInstance().createItem(process, item.getId(), count, actor, reference);
|
item = ItemTable.getInstance().createItem(process, item.getId(), count, actor, reference);
|
||||||
item.setOwnerId(getOwnerId());
|
item.setOwnerId(getOwnerId());
|
||||||
}
|
}
|
||||||
|
|
||||||
item.setItemLocation(newLocation);
|
item.setItemLocation(newLocation);
|
||||||
item.updateDatabase(true);
|
item.updateDatabase(true);
|
||||||
}
|
}
|
||||||
@@ -497,13 +458,6 @@ public abstract class ItemContainer
|
|||||||
{
|
{
|
||||||
item.changeCount(process, -count, actor, reference);
|
item.changeCount(process, -count, actor, reference);
|
||||||
item.setLastChange(ItemInstance.MODIFIED);
|
item.setLastChange(ItemInstance.MODIFIED);
|
||||||
|
|
||||||
// don't update often for untraced items
|
|
||||||
if ((process != null) || ((GameTimeController.getInstance().getGameTicks() % 10) == 0))
|
|
||||||
{
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
|
||||||
|
|
||||||
refreshWeight();
|
refreshWeight();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -969,6 +969,8 @@ public class ItemInstance extends WorldObject
|
|||||||
{
|
{
|
||||||
updateItemOptions();
|
updateItemOptions();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Notify to scripts.
|
||||||
EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getItem());
|
EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getItem());
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,7 +30,6 @@ import java.util.stream.Collectors;
|
|||||||
|
|
||||||
import org.l2jmobius.Config;
|
import org.l2jmobius.Config;
|
||||||
import org.l2jmobius.commons.database.DatabaseFactory;
|
import org.l2jmobius.commons.database.DatabaseFactory;
|
||||||
import org.l2jmobius.gameserver.GameTimeController;
|
|
||||||
import org.l2jmobius.gameserver.datatables.ItemTable;
|
import org.l2jmobius.gameserver.datatables.ItemTable;
|
||||||
import org.l2jmobius.gameserver.enums.ItemLocation;
|
import org.l2jmobius.gameserver.enums.ItemLocation;
|
||||||
import org.l2jmobius.gameserver.model.World;
|
import org.l2jmobius.gameserver.model.World;
|
||||||
@@ -210,24 +209,8 @@ public abstract class ItemContainer
|
|||||||
ItemTable.getInstance().destroyItem(process, item, actor, reference);
|
ItemTable.getInstance().destroyItem(process, item, actor, reference);
|
||||||
item.updateDatabase();
|
item.updateDatabase();
|
||||||
item = olditem;
|
item = olditem;
|
||||||
|
|
||||||
// Updates database
|
|
||||||
final float adenaRate = Config.RATE_DROP_AMOUNT_BY_ID.getOrDefault(Inventory.ADENA_ID, 1f);
|
|
||||||
if ((item.getId() == Inventory.ADENA_ID) && (count < (10000 * adenaRate)))
|
|
||||||
{
|
|
||||||
// Small adena changes won't be saved to database all the time
|
|
||||||
if ((GameTimeController.getInstance().getGameTicks() % 5) == 0)
|
|
||||||
{
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
// If item hasn't be found in inventory, create new one
|
else // If item hasn't be found in inventory, create new one
|
||||||
else
|
|
||||||
{
|
{
|
||||||
item.setOwnerId(process, getOwnerId(), actor, reference);
|
item.setOwnerId(process, getOwnerId(), actor, reference);
|
||||||
item.setItemLocation(getBaseLocation());
|
item.setItemLocation(getBaseLocation());
|
||||||
@@ -235,9 +218,6 @@ public abstract class ItemContainer
|
|||||||
|
|
||||||
// Add item in inventory
|
// Add item in inventory
|
||||||
addItem(item);
|
addItem(item);
|
||||||
|
|
||||||
// Updates database
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
refreshWeight();
|
refreshWeight();
|
||||||
@@ -262,24 +242,8 @@ public abstract class ItemContainer
|
|||||||
{
|
{
|
||||||
item.changeCount(process, count, actor, reference);
|
item.changeCount(process, count, actor, reference);
|
||||||
item.setLastChange(ItemInstance.MODIFIED);
|
item.setLastChange(ItemInstance.MODIFIED);
|
||||||
// Updates database
|
|
||||||
// If Adena drop rate is not present it will be x1.
|
|
||||||
final float adenaRate = Config.RATE_DROP_AMOUNT_BY_ID.getOrDefault(Inventory.ADENA_ID, 1f);
|
|
||||||
if ((itemId == Inventory.ADENA_ID) && (count < (10000 * adenaRate)))
|
|
||||||
{
|
|
||||||
// Small adena changes won't be saved to database all the time
|
|
||||||
if ((GameTimeController.getInstance().getGameTicks() % 5) == 0)
|
|
||||||
{
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
// If item hasn't be found in inventory, create new one
|
else // If item hasn't be found in inventory, create new one
|
||||||
else
|
|
||||||
{
|
{
|
||||||
for (int i = 0; i < count; i++)
|
for (int i = 0; i < count; i++)
|
||||||
{
|
{
|
||||||
@@ -297,8 +261,6 @@ public abstract class ItemContainer
|
|||||||
|
|
||||||
// Add item in inventory
|
// Add item in inventory
|
||||||
addItem(item);
|
addItem(item);
|
||||||
// Updates database
|
|
||||||
item.updateDatabase();
|
|
||||||
|
|
||||||
// If stackable, end loop as entire count is included in 1 instance of item
|
// If stackable, end loop as entire count is included in 1 instance of item
|
||||||
if (template.isStackable() || !Config.MULTIPLE_ITEM_DROP)
|
if (template.isStackable() || !Config.MULTIPLE_ITEM_DROP)
|
||||||
@@ -334,8 +296,8 @@ public abstract class ItemContainer
|
|||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
ItemInstance targetitem = sourceitem.isStackable() ? target.getItemByItemId(sourceitem.getId()) : null;
|
|
||||||
|
|
||||||
|
ItemInstance targetitem = sourceitem.isStackable() ? target.getItemByItemId(sourceitem.getId()) : null;
|
||||||
synchronized (sourceitem)
|
synchronized (sourceitem)
|
||||||
{
|
{
|
||||||
// check if this item still present in this container
|
// check if this item still present in this container
|
||||||
@@ -363,8 +325,7 @@ public abstract class ItemContainer
|
|||||||
{
|
{
|
||||||
sourceitem.changeCount(process, -count, actor, reference);
|
sourceitem.changeCount(process, -count, actor, reference);
|
||||||
}
|
}
|
||||||
else
|
else // Otherwise destroy old item
|
||||||
// Otherwise destroy old item
|
|
||||||
{
|
{
|
||||||
removeItem(sourceitem);
|
removeItem(sourceitem);
|
||||||
ItemTable.getInstance().destroyItem(process, sourceitem, actor, reference);
|
ItemTable.getInstance().destroyItem(process, sourceitem, actor, reference);
|
||||||
@@ -374,8 +335,7 @@ public abstract class ItemContainer
|
|||||||
{
|
{
|
||||||
targetitem.changeCount(process, count, actor, reference);
|
targetitem.changeCount(process, count, actor, reference);
|
||||||
}
|
}
|
||||||
else
|
else // Otherwise add new item
|
||||||
// Otherwise add new item
|
|
||||||
{
|
{
|
||||||
targetitem = target.addItem(process, sourceitem.getId(), count, actor, reference);
|
targetitem = target.addItem(process, sourceitem.getId(), count, actor, reference);
|
||||||
}
|
}
|
||||||
@@ -437,6 +397,7 @@ public abstract class ItemContainer
|
|||||||
item = ItemTable.getInstance().createItem(process, item.getId(), count, actor, reference);
|
item = ItemTable.getInstance().createItem(process, item.getId(), count, actor, reference);
|
||||||
item.setOwnerId(getOwnerId());
|
item.setOwnerId(getOwnerId());
|
||||||
}
|
}
|
||||||
|
|
||||||
item.setItemLocation(newLocation);
|
item.setItemLocation(newLocation);
|
||||||
item.updateDatabase(true);
|
item.updateDatabase(true);
|
||||||
}
|
}
|
||||||
@@ -497,13 +458,6 @@ public abstract class ItemContainer
|
|||||||
{
|
{
|
||||||
item.changeCount(process, -count, actor, reference);
|
item.changeCount(process, -count, actor, reference);
|
||||||
item.setLastChange(ItemInstance.MODIFIED);
|
item.setLastChange(ItemInstance.MODIFIED);
|
||||||
|
|
||||||
// don't update often for untraced items
|
|
||||||
if ((process != null) || ((GameTimeController.getInstance().getGameTicks() % 10) == 0))
|
|
||||||
{
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
|
||||||
|
|
||||||
refreshWeight();
|
refreshWeight();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -970,6 +970,8 @@ public class ItemInstance extends WorldObject
|
|||||||
{
|
{
|
||||||
updateItemOptions();
|
updateItemOptions();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Notify to scripts.
|
||||||
EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getItem());
|
EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getItem());
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,7 +30,6 @@ import java.util.stream.Collectors;
|
|||||||
|
|
||||||
import org.l2jmobius.Config;
|
import org.l2jmobius.Config;
|
||||||
import org.l2jmobius.commons.database.DatabaseFactory;
|
import org.l2jmobius.commons.database.DatabaseFactory;
|
||||||
import org.l2jmobius.gameserver.GameTimeController;
|
|
||||||
import org.l2jmobius.gameserver.datatables.ItemTable;
|
import org.l2jmobius.gameserver.datatables.ItemTable;
|
||||||
import org.l2jmobius.gameserver.enums.ItemLocation;
|
import org.l2jmobius.gameserver.enums.ItemLocation;
|
||||||
import org.l2jmobius.gameserver.model.World;
|
import org.l2jmobius.gameserver.model.World;
|
||||||
@@ -210,24 +209,8 @@ public abstract class ItemContainer
|
|||||||
ItemTable.getInstance().destroyItem(process, item, actor, reference);
|
ItemTable.getInstance().destroyItem(process, item, actor, reference);
|
||||||
item.updateDatabase();
|
item.updateDatabase();
|
||||||
item = olditem;
|
item = olditem;
|
||||||
|
|
||||||
// Updates database
|
|
||||||
final float adenaRate = Config.RATE_DROP_AMOUNT_BY_ID.getOrDefault(Inventory.ADENA_ID, 1f);
|
|
||||||
if ((item.getId() == Inventory.ADENA_ID) && (count < (10000 * adenaRate)))
|
|
||||||
{
|
|
||||||
// Small adena changes won't be saved to database all the time
|
|
||||||
if ((GameTimeController.getInstance().getGameTicks() % 5) == 0)
|
|
||||||
{
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
// If item hasn't be found in inventory, create new one
|
else // If item hasn't be found in inventory, create new one
|
||||||
else
|
|
||||||
{
|
{
|
||||||
item.setOwnerId(process, getOwnerId(), actor, reference);
|
item.setOwnerId(process, getOwnerId(), actor, reference);
|
||||||
item.setItemLocation(getBaseLocation());
|
item.setItemLocation(getBaseLocation());
|
||||||
@@ -235,9 +218,6 @@ public abstract class ItemContainer
|
|||||||
|
|
||||||
// Add item in inventory
|
// Add item in inventory
|
||||||
addItem(item);
|
addItem(item);
|
||||||
|
|
||||||
// Updates database
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
refreshWeight();
|
refreshWeight();
|
||||||
@@ -262,24 +242,8 @@ public abstract class ItemContainer
|
|||||||
{
|
{
|
||||||
item.changeCount(process, count, actor, reference);
|
item.changeCount(process, count, actor, reference);
|
||||||
item.setLastChange(ItemInstance.MODIFIED);
|
item.setLastChange(ItemInstance.MODIFIED);
|
||||||
// Updates database
|
|
||||||
// If Adena drop rate is not present it will be x1.
|
|
||||||
final float adenaRate = Config.RATE_DROP_AMOUNT_BY_ID.getOrDefault(Inventory.ADENA_ID, 1f);
|
|
||||||
if ((itemId == Inventory.ADENA_ID) && (count < (10000 * adenaRate)))
|
|
||||||
{
|
|
||||||
// Small adena changes won't be saved to database all the time
|
|
||||||
if ((GameTimeController.getInstance().getGameTicks() % 5) == 0)
|
|
||||||
{
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
// If item hasn't be found in inventory, create new one
|
else // If item hasn't be found in inventory, create new one
|
||||||
else
|
|
||||||
{
|
{
|
||||||
for (int i = 0; i < count; i++)
|
for (int i = 0; i < count; i++)
|
||||||
{
|
{
|
||||||
@@ -297,8 +261,6 @@ public abstract class ItemContainer
|
|||||||
|
|
||||||
// Add item in inventory
|
// Add item in inventory
|
||||||
addItem(item);
|
addItem(item);
|
||||||
// Updates database
|
|
||||||
item.updateDatabase();
|
|
||||||
|
|
||||||
// If stackable, end loop as entire count is included in 1 instance of item
|
// If stackable, end loop as entire count is included in 1 instance of item
|
||||||
if (template.isStackable() || !Config.MULTIPLE_ITEM_DROP)
|
if (template.isStackable() || !Config.MULTIPLE_ITEM_DROP)
|
||||||
@@ -334,8 +296,8 @@ public abstract class ItemContainer
|
|||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
ItemInstance targetitem = sourceitem.isStackable() ? target.getItemByItemId(sourceitem.getId()) : null;
|
|
||||||
|
|
||||||
|
ItemInstance targetitem = sourceitem.isStackable() ? target.getItemByItemId(sourceitem.getId()) : null;
|
||||||
synchronized (sourceitem)
|
synchronized (sourceitem)
|
||||||
{
|
{
|
||||||
// check if this item still present in this container
|
// check if this item still present in this container
|
||||||
@@ -363,8 +325,7 @@ public abstract class ItemContainer
|
|||||||
{
|
{
|
||||||
sourceitem.changeCount(process, -count, actor, reference);
|
sourceitem.changeCount(process, -count, actor, reference);
|
||||||
}
|
}
|
||||||
else
|
else // Otherwise destroy old item
|
||||||
// Otherwise destroy old item
|
|
||||||
{
|
{
|
||||||
removeItem(sourceitem);
|
removeItem(sourceitem);
|
||||||
ItemTable.getInstance().destroyItem(process, sourceitem, actor, reference);
|
ItemTable.getInstance().destroyItem(process, sourceitem, actor, reference);
|
||||||
@@ -374,8 +335,7 @@ public abstract class ItemContainer
|
|||||||
{
|
{
|
||||||
targetitem.changeCount(process, count, actor, reference);
|
targetitem.changeCount(process, count, actor, reference);
|
||||||
}
|
}
|
||||||
else
|
else // Otherwise add new item
|
||||||
// Otherwise add new item
|
|
||||||
{
|
{
|
||||||
targetitem = target.addItem(process, sourceitem.getId(), count, actor, reference);
|
targetitem = target.addItem(process, sourceitem.getId(), count, actor, reference);
|
||||||
}
|
}
|
||||||
@@ -437,6 +397,7 @@ public abstract class ItemContainer
|
|||||||
item = ItemTable.getInstance().createItem(process, item.getId(), count, actor, reference);
|
item = ItemTable.getInstance().createItem(process, item.getId(), count, actor, reference);
|
||||||
item.setOwnerId(getOwnerId());
|
item.setOwnerId(getOwnerId());
|
||||||
}
|
}
|
||||||
|
|
||||||
item.setItemLocation(newLocation);
|
item.setItemLocation(newLocation);
|
||||||
item.updateDatabase(true);
|
item.updateDatabase(true);
|
||||||
}
|
}
|
||||||
@@ -497,13 +458,6 @@ public abstract class ItemContainer
|
|||||||
{
|
{
|
||||||
item.changeCount(process, -count, actor, reference);
|
item.changeCount(process, -count, actor, reference);
|
||||||
item.setLastChange(ItemInstance.MODIFIED);
|
item.setLastChange(ItemInstance.MODIFIED);
|
||||||
|
|
||||||
// don't update often for untraced items
|
|
||||||
if ((process != null) || ((GameTimeController.getInstance().getGameTicks() % 10) == 0))
|
|
||||||
{
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
|
||||||
|
|
||||||
refreshWeight();
|
refreshWeight();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -970,6 +970,8 @@ public class ItemInstance extends WorldObject
|
|||||||
{
|
{
|
||||||
updateItemOptions();
|
updateItemOptions();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Notify to scripts.
|
||||||
EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getItem());
|
EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getItem());
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,7 +30,6 @@ import java.util.stream.Collectors;
|
|||||||
|
|
||||||
import org.l2jmobius.Config;
|
import org.l2jmobius.Config;
|
||||||
import org.l2jmobius.commons.database.DatabaseFactory;
|
import org.l2jmobius.commons.database.DatabaseFactory;
|
||||||
import org.l2jmobius.gameserver.GameTimeController;
|
|
||||||
import org.l2jmobius.gameserver.datatables.ItemTable;
|
import org.l2jmobius.gameserver.datatables.ItemTable;
|
||||||
import org.l2jmobius.gameserver.enums.ItemLocation;
|
import org.l2jmobius.gameserver.enums.ItemLocation;
|
||||||
import org.l2jmobius.gameserver.model.World;
|
import org.l2jmobius.gameserver.model.World;
|
||||||
@@ -210,24 +209,8 @@ public abstract class ItemContainer
|
|||||||
ItemTable.getInstance().destroyItem(process, item, actor, reference);
|
ItemTable.getInstance().destroyItem(process, item, actor, reference);
|
||||||
item.updateDatabase();
|
item.updateDatabase();
|
||||||
item = olditem;
|
item = olditem;
|
||||||
|
|
||||||
// Updates database
|
|
||||||
final float adenaRate = Config.RATE_DROP_AMOUNT_BY_ID.getOrDefault(Inventory.ADENA_ID, 1f);
|
|
||||||
if ((item.getId() == Inventory.ADENA_ID) && (count < (10000 * adenaRate)))
|
|
||||||
{
|
|
||||||
// Small adena changes won't be saved to database all the time
|
|
||||||
if ((GameTimeController.getInstance().getGameTicks() % 5) == 0)
|
|
||||||
{
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
// If item hasn't be found in inventory, create new one
|
else // If item hasn't be found in inventory, create new one
|
||||||
else
|
|
||||||
{
|
{
|
||||||
item.setOwnerId(process, getOwnerId(), actor, reference);
|
item.setOwnerId(process, getOwnerId(), actor, reference);
|
||||||
item.setItemLocation(getBaseLocation());
|
item.setItemLocation(getBaseLocation());
|
||||||
@@ -235,9 +218,6 @@ public abstract class ItemContainer
|
|||||||
|
|
||||||
// Add item in inventory
|
// Add item in inventory
|
||||||
addItem(item);
|
addItem(item);
|
||||||
|
|
||||||
// Updates database
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
refreshWeight();
|
refreshWeight();
|
||||||
@@ -262,24 +242,8 @@ public abstract class ItemContainer
|
|||||||
{
|
{
|
||||||
item.changeCount(process, count, actor, reference);
|
item.changeCount(process, count, actor, reference);
|
||||||
item.setLastChange(ItemInstance.MODIFIED);
|
item.setLastChange(ItemInstance.MODIFIED);
|
||||||
// Updates database
|
|
||||||
// If Adena drop rate is not present it will be x1.
|
|
||||||
final float adenaRate = Config.RATE_DROP_AMOUNT_BY_ID.getOrDefault(Inventory.ADENA_ID, 1f);
|
|
||||||
if ((itemId == Inventory.ADENA_ID) && (count < (10000 * adenaRate)))
|
|
||||||
{
|
|
||||||
// Small adena changes won't be saved to database all the time
|
|
||||||
if ((GameTimeController.getInstance().getGameTicks() % 5) == 0)
|
|
||||||
{
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
// If item hasn't be found in inventory, create new one
|
else // If item hasn't be found in inventory, create new one
|
||||||
else
|
|
||||||
{
|
{
|
||||||
for (int i = 0; i < count; i++)
|
for (int i = 0; i < count; i++)
|
||||||
{
|
{
|
||||||
@@ -297,8 +261,6 @@ public abstract class ItemContainer
|
|||||||
|
|
||||||
// Add item in inventory
|
// Add item in inventory
|
||||||
addItem(item);
|
addItem(item);
|
||||||
// Updates database
|
|
||||||
item.updateDatabase();
|
|
||||||
|
|
||||||
// If stackable, end loop as entire count is included in 1 instance of item
|
// If stackable, end loop as entire count is included in 1 instance of item
|
||||||
if (template.isStackable() || !Config.MULTIPLE_ITEM_DROP)
|
if (template.isStackable() || !Config.MULTIPLE_ITEM_DROP)
|
||||||
@@ -334,8 +296,8 @@ public abstract class ItemContainer
|
|||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
ItemInstance targetitem = sourceitem.isStackable() ? target.getItemByItemId(sourceitem.getId()) : null;
|
|
||||||
|
|
||||||
|
ItemInstance targetitem = sourceitem.isStackable() ? target.getItemByItemId(sourceitem.getId()) : null;
|
||||||
synchronized (sourceitem)
|
synchronized (sourceitem)
|
||||||
{
|
{
|
||||||
// check if this item still present in this container
|
// check if this item still present in this container
|
||||||
@@ -363,8 +325,7 @@ public abstract class ItemContainer
|
|||||||
{
|
{
|
||||||
sourceitem.changeCount(process, -count, actor, reference);
|
sourceitem.changeCount(process, -count, actor, reference);
|
||||||
}
|
}
|
||||||
else
|
else // Otherwise destroy old item
|
||||||
// Otherwise destroy old item
|
|
||||||
{
|
{
|
||||||
removeItem(sourceitem);
|
removeItem(sourceitem);
|
||||||
ItemTable.getInstance().destroyItem(process, sourceitem, actor, reference);
|
ItemTable.getInstance().destroyItem(process, sourceitem, actor, reference);
|
||||||
@@ -374,8 +335,7 @@ public abstract class ItemContainer
|
|||||||
{
|
{
|
||||||
targetitem.changeCount(process, count, actor, reference);
|
targetitem.changeCount(process, count, actor, reference);
|
||||||
}
|
}
|
||||||
else
|
else // Otherwise add new item
|
||||||
// Otherwise add new item
|
|
||||||
{
|
{
|
||||||
targetitem = target.addItem(process, sourceitem.getId(), count, actor, reference);
|
targetitem = target.addItem(process, sourceitem.getId(), count, actor, reference);
|
||||||
}
|
}
|
||||||
@@ -437,6 +397,7 @@ public abstract class ItemContainer
|
|||||||
item = ItemTable.getInstance().createItem(process, item.getId(), count, actor, reference);
|
item = ItemTable.getInstance().createItem(process, item.getId(), count, actor, reference);
|
||||||
item.setOwnerId(getOwnerId());
|
item.setOwnerId(getOwnerId());
|
||||||
}
|
}
|
||||||
|
|
||||||
item.setItemLocation(newLocation);
|
item.setItemLocation(newLocation);
|
||||||
item.updateDatabase(true);
|
item.updateDatabase(true);
|
||||||
}
|
}
|
||||||
@@ -497,13 +458,6 @@ public abstract class ItemContainer
|
|||||||
{
|
{
|
||||||
item.changeCount(process, -count, actor, reference);
|
item.changeCount(process, -count, actor, reference);
|
||||||
item.setLastChange(ItemInstance.MODIFIED);
|
item.setLastChange(ItemInstance.MODIFIED);
|
||||||
|
|
||||||
// don't update often for untraced items
|
|
||||||
if ((process != null) || ((GameTimeController.getInstance().getGameTicks() % 10) == 0))
|
|
||||||
{
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
|
||||||
|
|
||||||
refreshWeight();
|
refreshWeight();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -970,6 +970,8 @@ public class ItemInstance extends WorldObject
|
|||||||
{
|
{
|
||||||
updateItemOptions();
|
updateItemOptions();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Notify to scripts.
|
||||||
EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getItem());
|
EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getItem());
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,7 +30,6 @@ import java.util.stream.Collectors;
|
|||||||
|
|
||||||
import org.l2jmobius.Config;
|
import org.l2jmobius.Config;
|
||||||
import org.l2jmobius.commons.database.DatabaseFactory;
|
import org.l2jmobius.commons.database.DatabaseFactory;
|
||||||
import org.l2jmobius.gameserver.GameTimeController;
|
|
||||||
import org.l2jmobius.gameserver.datatables.ItemTable;
|
import org.l2jmobius.gameserver.datatables.ItemTable;
|
||||||
import org.l2jmobius.gameserver.enums.ItemLocation;
|
import org.l2jmobius.gameserver.enums.ItemLocation;
|
||||||
import org.l2jmobius.gameserver.model.World;
|
import org.l2jmobius.gameserver.model.World;
|
||||||
@@ -210,24 +209,8 @@ public abstract class ItemContainer
|
|||||||
ItemTable.getInstance().destroyItem(process, item, actor, reference);
|
ItemTable.getInstance().destroyItem(process, item, actor, reference);
|
||||||
item.updateDatabase();
|
item.updateDatabase();
|
||||||
item = olditem;
|
item = olditem;
|
||||||
|
|
||||||
// Updates database
|
|
||||||
final float adenaRate = Config.RATE_DROP_AMOUNT_BY_ID.getOrDefault(Inventory.ADENA_ID, 1f);
|
|
||||||
if ((item.getId() == Inventory.ADENA_ID) && (count < (10000 * adenaRate)))
|
|
||||||
{
|
|
||||||
// Small adena changes won't be saved to database all the time
|
|
||||||
if ((GameTimeController.getInstance().getGameTicks() % 5) == 0)
|
|
||||||
{
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
// If item hasn't be found in inventory, create new one
|
else // If item hasn't be found in inventory, create new one
|
||||||
else
|
|
||||||
{
|
{
|
||||||
item.setOwnerId(process, getOwnerId(), actor, reference);
|
item.setOwnerId(process, getOwnerId(), actor, reference);
|
||||||
item.setItemLocation(getBaseLocation());
|
item.setItemLocation(getBaseLocation());
|
||||||
@@ -235,9 +218,6 @@ public abstract class ItemContainer
|
|||||||
|
|
||||||
// Add item in inventory
|
// Add item in inventory
|
||||||
addItem(item);
|
addItem(item);
|
||||||
|
|
||||||
// Updates database
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
refreshWeight();
|
refreshWeight();
|
||||||
@@ -262,24 +242,8 @@ public abstract class ItemContainer
|
|||||||
{
|
{
|
||||||
item.changeCount(process, count, actor, reference);
|
item.changeCount(process, count, actor, reference);
|
||||||
item.setLastChange(ItemInstance.MODIFIED);
|
item.setLastChange(ItemInstance.MODIFIED);
|
||||||
// Updates database
|
|
||||||
// If Adena drop rate is not present it will be x1.
|
|
||||||
final float adenaRate = Config.RATE_DROP_AMOUNT_BY_ID.getOrDefault(Inventory.ADENA_ID, 1f);
|
|
||||||
if ((itemId == Inventory.ADENA_ID) && (count < (10000 * adenaRate)))
|
|
||||||
{
|
|
||||||
// Small adena changes won't be saved to database all the time
|
|
||||||
if ((GameTimeController.getInstance().getGameTicks() % 5) == 0)
|
|
||||||
{
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
// If item hasn't be found in inventory, create new one
|
else // If item hasn't be found in inventory, create new one
|
||||||
else
|
|
||||||
{
|
{
|
||||||
for (int i = 0; i < count; i++)
|
for (int i = 0; i < count; i++)
|
||||||
{
|
{
|
||||||
@@ -297,8 +261,6 @@ public abstract class ItemContainer
|
|||||||
|
|
||||||
// Add item in inventory
|
// Add item in inventory
|
||||||
addItem(item);
|
addItem(item);
|
||||||
// Updates database
|
|
||||||
item.updateDatabase();
|
|
||||||
|
|
||||||
// If stackable, end loop as entire count is included in 1 instance of item
|
// If stackable, end loop as entire count is included in 1 instance of item
|
||||||
if (template.isStackable() || !Config.MULTIPLE_ITEM_DROP)
|
if (template.isStackable() || !Config.MULTIPLE_ITEM_DROP)
|
||||||
@@ -334,8 +296,8 @@ public abstract class ItemContainer
|
|||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
ItemInstance targetitem = sourceitem.isStackable() ? target.getItemByItemId(sourceitem.getId()) : null;
|
|
||||||
|
|
||||||
|
ItemInstance targetitem = sourceitem.isStackable() ? target.getItemByItemId(sourceitem.getId()) : null;
|
||||||
synchronized (sourceitem)
|
synchronized (sourceitem)
|
||||||
{
|
{
|
||||||
// check if this item still present in this container
|
// check if this item still present in this container
|
||||||
@@ -363,8 +325,7 @@ public abstract class ItemContainer
|
|||||||
{
|
{
|
||||||
sourceitem.changeCount(process, -count, actor, reference);
|
sourceitem.changeCount(process, -count, actor, reference);
|
||||||
}
|
}
|
||||||
else
|
else // Otherwise destroy old item
|
||||||
// Otherwise destroy old item
|
|
||||||
{
|
{
|
||||||
removeItem(sourceitem);
|
removeItem(sourceitem);
|
||||||
ItemTable.getInstance().destroyItem(process, sourceitem, actor, reference);
|
ItemTable.getInstance().destroyItem(process, sourceitem, actor, reference);
|
||||||
@@ -374,8 +335,7 @@ public abstract class ItemContainer
|
|||||||
{
|
{
|
||||||
targetitem.changeCount(process, count, actor, reference);
|
targetitem.changeCount(process, count, actor, reference);
|
||||||
}
|
}
|
||||||
else
|
else // Otherwise add new item
|
||||||
// Otherwise add new item
|
|
||||||
{
|
{
|
||||||
targetitem = target.addItem(process, sourceitem.getId(), count, actor, reference);
|
targetitem = target.addItem(process, sourceitem.getId(), count, actor, reference);
|
||||||
}
|
}
|
||||||
@@ -437,6 +397,7 @@ public abstract class ItemContainer
|
|||||||
item = ItemTable.getInstance().createItem(process, item.getId(), count, actor, reference);
|
item = ItemTable.getInstance().createItem(process, item.getId(), count, actor, reference);
|
||||||
item.setOwnerId(getOwnerId());
|
item.setOwnerId(getOwnerId());
|
||||||
}
|
}
|
||||||
|
|
||||||
item.setItemLocation(newLocation);
|
item.setItemLocation(newLocation);
|
||||||
item.updateDatabase(true);
|
item.updateDatabase(true);
|
||||||
}
|
}
|
||||||
@@ -497,13 +458,6 @@ public abstract class ItemContainer
|
|||||||
{
|
{
|
||||||
item.changeCount(process, -count, actor, reference);
|
item.changeCount(process, -count, actor, reference);
|
||||||
item.setLastChange(ItemInstance.MODIFIED);
|
item.setLastChange(ItemInstance.MODIFIED);
|
||||||
|
|
||||||
// don't update often for untraced items
|
|
||||||
if ((process != null) || ((GameTimeController.getInstance().getGameTicks() % 10) == 0))
|
|
||||||
{
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
|
||||||
|
|
||||||
refreshWeight();
|
refreshWeight();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -976,6 +976,8 @@ public class ItemInstance extends WorldObject
|
|||||||
{
|
{
|
||||||
updateItemOptions();
|
updateItemOptions();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Notify to scripts.
|
||||||
EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getItem());
|
EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getItem());
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,7 +30,6 @@ import java.util.stream.Collectors;
|
|||||||
|
|
||||||
import org.l2jmobius.Config;
|
import org.l2jmobius.Config;
|
||||||
import org.l2jmobius.commons.database.DatabaseFactory;
|
import org.l2jmobius.commons.database.DatabaseFactory;
|
||||||
import org.l2jmobius.gameserver.GameTimeController;
|
|
||||||
import org.l2jmobius.gameserver.datatables.ItemTable;
|
import org.l2jmobius.gameserver.datatables.ItemTable;
|
||||||
import org.l2jmobius.gameserver.enums.ItemLocation;
|
import org.l2jmobius.gameserver.enums.ItemLocation;
|
||||||
import org.l2jmobius.gameserver.model.World;
|
import org.l2jmobius.gameserver.model.World;
|
||||||
@@ -210,24 +209,8 @@ public abstract class ItemContainer
|
|||||||
ItemTable.getInstance().destroyItem(process, item, actor, reference);
|
ItemTable.getInstance().destroyItem(process, item, actor, reference);
|
||||||
item.updateDatabase();
|
item.updateDatabase();
|
||||||
item = olditem;
|
item = olditem;
|
||||||
|
|
||||||
// Updates database
|
|
||||||
final float adenaRate = Config.RATE_DROP_AMOUNT_BY_ID.getOrDefault(Inventory.ADENA_ID, 1f);
|
|
||||||
if ((item.getId() == Inventory.ADENA_ID) && (count < (10000 * adenaRate)))
|
|
||||||
{
|
|
||||||
// Small adena changes won't be saved to database all the time
|
|
||||||
if ((GameTimeController.getInstance().getGameTicks() % 5) == 0)
|
|
||||||
{
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
// If item hasn't be found in inventory, create new one
|
else // If item hasn't be found in inventory, create new one
|
||||||
else
|
|
||||||
{
|
{
|
||||||
item.setOwnerId(process, getOwnerId(), actor, reference);
|
item.setOwnerId(process, getOwnerId(), actor, reference);
|
||||||
item.setItemLocation(getBaseLocation());
|
item.setItemLocation(getBaseLocation());
|
||||||
@@ -235,9 +218,6 @@ public abstract class ItemContainer
|
|||||||
|
|
||||||
// Add item in inventory
|
// Add item in inventory
|
||||||
addItem(item);
|
addItem(item);
|
||||||
|
|
||||||
// Updates database
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
refreshWeight();
|
refreshWeight();
|
||||||
@@ -262,24 +242,8 @@ public abstract class ItemContainer
|
|||||||
{
|
{
|
||||||
item.changeCount(process, count, actor, reference);
|
item.changeCount(process, count, actor, reference);
|
||||||
item.setLastChange(ItemInstance.MODIFIED);
|
item.setLastChange(ItemInstance.MODIFIED);
|
||||||
// Updates database
|
|
||||||
// If Adena drop rate is not present it will be x1.
|
|
||||||
final float adenaRate = Config.RATE_DROP_AMOUNT_BY_ID.getOrDefault(Inventory.ADENA_ID, 1f);
|
|
||||||
if ((itemId == Inventory.ADENA_ID) && (count < (10000 * adenaRate)))
|
|
||||||
{
|
|
||||||
// Small adena changes won't be saved to database all the time
|
|
||||||
if ((GameTimeController.getInstance().getGameTicks() % 5) == 0)
|
|
||||||
{
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
// If item hasn't be found in inventory, create new one
|
else // If item hasn't be found in inventory, create new one
|
||||||
else
|
|
||||||
{
|
{
|
||||||
for (int i = 0; i < count; i++)
|
for (int i = 0; i < count; i++)
|
||||||
{
|
{
|
||||||
@@ -297,8 +261,6 @@ public abstract class ItemContainer
|
|||||||
|
|
||||||
// Add item in inventory
|
// Add item in inventory
|
||||||
addItem(item);
|
addItem(item);
|
||||||
// Updates database
|
|
||||||
item.updateDatabase();
|
|
||||||
|
|
||||||
// If stackable, end loop as entire count is included in 1 instance of item
|
// If stackable, end loop as entire count is included in 1 instance of item
|
||||||
if (template.isStackable() || !Config.MULTIPLE_ITEM_DROP)
|
if (template.isStackable() || !Config.MULTIPLE_ITEM_DROP)
|
||||||
@@ -334,8 +296,8 @@ public abstract class ItemContainer
|
|||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
ItemInstance targetitem = sourceitem.isStackable() ? target.getItemByItemId(sourceitem.getId()) : null;
|
|
||||||
|
|
||||||
|
ItemInstance targetitem = sourceitem.isStackable() ? target.getItemByItemId(sourceitem.getId()) : null;
|
||||||
synchronized (sourceitem)
|
synchronized (sourceitem)
|
||||||
{
|
{
|
||||||
// check if this item still present in this container
|
// check if this item still present in this container
|
||||||
@@ -363,8 +325,7 @@ public abstract class ItemContainer
|
|||||||
{
|
{
|
||||||
sourceitem.changeCount(process, -count, actor, reference);
|
sourceitem.changeCount(process, -count, actor, reference);
|
||||||
}
|
}
|
||||||
else
|
else // Otherwise destroy old item
|
||||||
// Otherwise destroy old item
|
|
||||||
{
|
{
|
||||||
removeItem(sourceitem);
|
removeItem(sourceitem);
|
||||||
ItemTable.getInstance().destroyItem(process, sourceitem, actor, reference);
|
ItemTable.getInstance().destroyItem(process, sourceitem, actor, reference);
|
||||||
@@ -374,8 +335,7 @@ public abstract class ItemContainer
|
|||||||
{
|
{
|
||||||
targetitem.changeCount(process, count, actor, reference);
|
targetitem.changeCount(process, count, actor, reference);
|
||||||
}
|
}
|
||||||
else
|
else // Otherwise add new item
|
||||||
// Otherwise add new item
|
|
||||||
{
|
{
|
||||||
targetitem = target.addItem(process, sourceitem.getId(), count, actor, reference);
|
targetitem = target.addItem(process, sourceitem.getId(), count, actor, reference);
|
||||||
}
|
}
|
||||||
@@ -437,6 +397,7 @@ public abstract class ItemContainer
|
|||||||
item = ItemTable.getInstance().createItem(process, item.getId(), count, actor, reference);
|
item = ItemTable.getInstance().createItem(process, item.getId(), count, actor, reference);
|
||||||
item.setOwnerId(getOwnerId());
|
item.setOwnerId(getOwnerId());
|
||||||
}
|
}
|
||||||
|
|
||||||
item.setItemLocation(newLocation);
|
item.setItemLocation(newLocation);
|
||||||
item.updateDatabase(true);
|
item.updateDatabase(true);
|
||||||
}
|
}
|
||||||
@@ -497,13 +458,6 @@ public abstract class ItemContainer
|
|||||||
{
|
{
|
||||||
item.changeCount(process, -count, actor, reference);
|
item.changeCount(process, -count, actor, reference);
|
||||||
item.setLastChange(ItemInstance.MODIFIED);
|
item.setLastChange(ItemInstance.MODIFIED);
|
||||||
|
|
||||||
// don't update often for untraced items
|
|
||||||
if ((process != null) || ((GameTimeController.getInstance().getGameTicks() % 10) == 0))
|
|
||||||
{
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
|
||||||
|
|
||||||
refreshWeight();
|
refreshWeight();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -976,6 +976,8 @@ public class ItemInstance extends WorldObject
|
|||||||
{
|
{
|
||||||
updateItemOptions();
|
updateItemOptions();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Notify to scripts.
|
||||||
EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getItem());
|
EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getItem());
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,7 +30,6 @@ import java.util.stream.Collectors;
|
|||||||
|
|
||||||
import org.l2jmobius.Config;
|
import org.l2jmobius.Config;
|
||||||
import org.l2jmobius.commons.database.DatabaseFactory;
|
import org.l2jmobius.commons.database.DatabaseFactory;
|
||||||
import org.l2jmobius.gameserver.GameTimeController;
|
|
||||||
import org.l2jmobius.gameserver.datatables.ItemTable;
|
import org.l2jmobius.gameserver.datatables.ItemTable;
|
||||||
import org.l2jmobius.gameserver.enums.ItemLocation;
|
import org.l2jmobius.gameserver.enums.ItemLocation;
|
||||||
import org.l2jmobius.gameserver.model.World;
|
import org.l2jmobius.gameserver.model.World;
|
||||||
@@ -210,24 +209,8 @@ public abstract class ItemContainer
|
|||||||
ItemTable.getInstance().destroyItem(process, item, actor, reference);
|
ItemTable.getInstance().destroyItem(process, item, actor, reference);
|
||||||
item.updateDatabase();
|
item.updateDatabase();
|
||||||
item = olditem;
|
item = olditem;
|
||||||
|
|
||||||
// Updates database
|
|
||||||
final float adenaRate = Config.RATE_DROP_AMOUNT_BY_ID.getOrDefault(Inventory.ADENA_ID, 1f);
|
|
||||||
if ((item.getId() == Inventory.ADENA_ID) && (count < (10000 * adenaRate)))
|
|
||||||
{
|
|
||||||
// Small adena changes won't be saved to database all the time
|
|
||||||
if ((GameTimeController.getInstance().getGameTicks() % 5) == 0)
|
|
||||||
{
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
// If item hasn't be found in inventory, create new one
|
else // If item hasn't be found in inventory, create new one
|
||||||
else
|
|
||||||
{
|
{
|
||||||
item.setOwnerId(process, getOwnerId(), actor, reference);
|
item.setOwnerId(process, getOwnerId(), actor, reference);
|
||||||
item.setItemLocation(getBaseLocation());
|
item.setItemLocation(getBaseLocation());
|
||||||
@@ -235,9 +218,6 @@ public abstract class ItemContainer
|
|||||||
|
|
||||||
// Add item in inventory
|
// Add item in inventory
|
||||||
addItem(item);
|
addItem(item);
|
||||||
|
|
||||||
// Updates database
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
refreshWeight();
|
refreshWeight();
|
||||||
@@ -262,24 +242,8 @@ public abstract class ItemContainer
|
|||||||
{
|
{
|
||||||
item.changeCount(process, count, actor, reference);
|
item.changeCount(process, count, actor, reference);
|
||||||
item.setLastChange(ItemInstance.MODIFIED);
|
item.setLastChange(ItemInstance.MODIFIED);
|
||||||
// Updates database
|
|
||||||
// If Adena drop rate is not present it will be x1.
|
|
||||||
final float adenaRate = Config.RATE_DROP_AMOUNT_BY_ID.getOrDefault(Inventory.ADENA_ID, 1f);
|
|
||||||
if ((itemId == Inventory.ADENA_ID) && (count < (10000 * adenaRate)))
|
|
||||||
{
|
|
||||||
// Small adena changes won't be saved to database all the time
|
|
||||||
if ((GameTimeController.getInstance().getGameTicks() % 5) == 0)
|
|
||||||
{
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
// If item hasn't be found in inventory, create new one
|
else // If item hasn't be found in inventory, create new one
|
||||||
else
|
|
||||||
{
|
{
|
||||||
for (int i = 0; i < count; i++)
|
for (int i = 0; i < count; i++)
|
||||||
{
|
{
|
||||||
@@ -297,8 +261,6 @@ public abstract class ItemContainer
|
|||||||
|
|
||||||
// Add item in inventory
|
// Add item in inventory
|
||||||
addItem(item);
|
addItem(item);
|
||||||
// Updates database
|
|
||||||
item.updateDatabase();
|
|
||||||
|
|
||||||
// If stackable, end loop as entire count is included in 1 instance of item
|
// If stackable, end loop as entire count is included in 1 instance of item
|
||||||
if (template.isStackable() || !Config.MULTIPLE_ITEM_DROP)
|
if (template.isStackable() || !Config.MULTIPLE_ITEM_DROP)
|
||||||
@@ -334,8 +296,8 @@ public abstract class ItemContainer
|
|||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
ItemInstance targetitem = sourceitem.isStackable() ? target.getItemByItemId(sourceitem.getId()) : null;
|
|
||||||
|
|
||||||
|
ItemInstance targetitem = sourceitem.isStackable() ? target.getItemByItemId(sourceitem.getId()) : null;
|
||||||
synchronized (sourceitem)
|
synchronized (sourceitem)
|
||||||
{
|
{
|
||||||
// check if this item still present in this container
|
// check if this item still present in this container
|
||||||
@@ -363,8 +325,7 @@ public abstract class ItemContainer
|
|||||||
{
|
{
|
||||||
sourceitem.changeCount(process, -count, actor, reference);
|
sourceitem.changeCount(process, -count, actor, reference);
|
||||||
}
|
}
|
||||||
else
|
else // Otherwise destroy old item
|
||||||
// Otherwise destroy old item
|
|
||||||
{
|
{
|
||||||
removeItem(sourceitem);
|
removeItem(sourceitem);
|
||||||
ItemTable.getInstance().destroyItem(process, sourceitem, actor, reference);
|
ItemTable.getInstance().destroyItem(process, sourceitem, actor, reference);
|
||||||
@@ -374,8 +335,7 @@ public abstract class ItemContainer
|
|||||||
{
|
{
|
||||||
targetitem.changeCount(process, count, actor, reference);
|
targetitem.changeCount(process, count, actor, reference);
|
||||||
}
|
}
|
||||||
else
|
else // Otherwise add new item
|
||||||
// Otherwise add new item
|
|
||||||
{
|
{
|
||||||
targetitem = target.addItem(process, sourceitem.getId(), count, actor, reference);
|
targetitem = target.addItem(process, sourceitem.getId(), count, actor, reference);
|
||||||
}
|
}
|
||||||
@@ -437,6 +397,7 @@ public abstract class ItemContainer
|
|||||||
item = ItemTable.getInstance().createItem(process, item.getId(), count, actor, reference);
|
item = ItemTable.getInstance().createItem(process, item.getId(), count, actor, reference);
|
||||||
item.setOwnerId(getOwnerId());
|
item.setOwnerId(getOwnerId());
|
||||||
}
|
}
|
||||||
|
|
||||||
item.setItemLocation(newLocation);
|
item.setItemLocation(newLocation);
|
||||||
item.updateDatabase(true);
|
item.updateDatabase(true);
|
||||||
}
|
}
|
||||||
@@ -497,13 +458,6 @@ public abstract class ItemContainer
|
|||||||
{
|
{
|
||||||
item.changeCount(process, -count, actor, reference);
|
item.changeCount(process, -count, actor, reference);
|
||||||
item.setLastChange(ItemInstance.MODIFIED);
|
item.setLastChange(ItemInstance.MODIFIED);
|
||||||
|
|
||||||
// don't update often for untraced items
|
|
||||||
if ((process != null) || ((GameTimeController.getInstance().getGameTicks() % 10) == 0))
|
|
||||||
{
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
|
||||||
|
|
||||||
refreshWeight();
|
refreshWeight();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -976,6 +976,8 @@ public class ItemInstance extends WorldObject
|
|||||||
{
|
{
|
||||||
updateItemOptions();
|
updateItemOptions();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Notify to scripts.
|
||||||
EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getItem());
|
EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getItem());
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,7 +30,6 @@ import java.util.stream.Collectors;
|
|||||||
|
|
||||||
import org.l2jmobius.Config;
|
import org.l2jmobius.Config;
|
||||||
import org.l2jmobius.commons.database.DatabaseFactory;
|
import org.l2jmobius.commons.database.DatabaseFactory;
|
||||||
import org.l2jmobius.gameserver.GameTimeController;
|
|
||||||
import org.l2jmobius.gameserver.datatables.ItemTable;
|
import org.l2jmobius.gameserver.datatables.ItemTable;
|
||||||
import org.l2jmobius.gameserver.enums.ItemLocation;
|
import org.l2jmobius.gameserver.enums.ItemLocation;
|
||||||
import org.l2jmobius.gameserver.model.World;
|
import org.l2jmobius.gameserver.model.World;
|
||||||
@@ -210,24 +209,8 @@ public abstract class ItemContainer
|
|||||||
ItemTable.getInstance().destroyItem(process, item, actor, reference);
|
ItemTable.getInstance().destroyItem(process, item, actor, reference);
|
||||||
item.updateDatabase();
|
item.updateDatabase();
|
||||||
item = olditem;
|
item = olditem;
|
||||||
|
|
||||||
// Updates database
|
|
||||||
final float adenaRate = Config.RATE_DROP_AMOUNT_BY_ID.getOrDefault(Inventory.ADENA_ID, 1f);
|
|
||||||
if ((item.getId() == Inventory.ADENA_ID) && (count < (10000 * adenaRate)))
|
|
||||||
{
|
|
||||||
// Small adena changes won't be saved to database all the time
|
|
||||||
if ((GameTimeController.getInstance().getGameTicks() % 5) == 0)
|
|
||||||
{
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
// If item hasn't be found in inventory, create new one
|
else // If item hasn't be found in inventory, create new one
|
||||||
else
|
|
||||||
{
|
{
|
||||||
item.setOwnerId(process, getOwnerId(), actor, reference);
|
item.setOwnerId(process, getOwnerId(), actor, reference);
|
||||||
item.setItemLocation(getBaseLocation());
|
item.setItemLocation(getBaseLocation());
|
||||||
@@ -235,9 +218,6 @@ public abstract class ItemContainer
|
|||||||
|
|
||||||
// Add item in inventory
|
// Add item in inventory
|
||||||
addItem(item);
|
addItem(item);
|
||||||
|
|
||||||
// Updates database
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
refreshWeight();
|
refreshWeight();
|
||||||
@@ -262,24 +242,8 @@ public abstract class ItemContainer
|
|||||||
{
|
{
|
||||||
item.changeCount(process, count, actor, reference);
|
item.changeCount(process, count, actor, reference);
|
||||||
item.setLastChange(ItemInstance.MODIFIED);
|
item.setLastChange(ItemInstance.MODIFIED);
|
||||||
// Updates database
|
|
||||||
// If Adena drop rate is not present it will be x1.
|
|
||||||
final float adenaRate = Config.RATE_DROP_AMOUNT_BY_ID.getOrDefault(Inventory.ADENA_ID, 1f);
|
|
||||||
if ((itemId == Inventory.ADENA_ID) && (count < (10000 * adenaRate)))
|
|
||||||
{
|
|
||||||
// Small adena changes won't be saved to database all the time
|
|
||||||
if ((GameTimeController.getInstance().getGameTicks() % 5) == 0)
|
|
||||||
{
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
// If item hasn't be found in inventory, create new one
|
else // If item hasn't be found in inventory, create new one
|
||||||
else
|
|
||||||
{
|
{
|
||||||
for (int i = 0; i < count; i++)
|
for (int i = 0; i < count; i++)
|
||||||
{
|
{
|
||||||
@@ -297,8 +261,6 @@ public abstract class ItemContainer
|
|||||||
|
|
||||||
// Add item in inventory
|
// Add item in inventory
|
||||||
addItem(item);
|
addItem(item);
|
||||||
// Updates database
|
|
||||||
item.updateDatabase();
|
|
||||||
|
|
||||||
// If stackable, end loop as entire count is included in 1 instance of item
|
// If stackable, end loop as entire count is included in 1 instance of item
|
||||||
if (template.isStackable() || !Config.MULTIPLE_ITEM_DROP)
|
if (template.isStackable() || !Config.MULTIPLE_ITEM_DROP)
|
||||||
@@ -334,8 +296,8 @@ public abstract class ItemContainer
|
|||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
ItemInstance targetitem = sourceitem.isStackable() ? target.getItemByItemId(sourceitem.getId()) : null;
|
|
||||||
|
|
||||||
|
ItemInstance targetitem = sourceitem.isStackable() ? target.getItemByItemId(sourceitem.getId()) : null;
|
||||||
synchronized (sourceitem)
|
synchronized (sourceitem)
|
||||||
{
|
{
|
||||||
// check if this item still present in this container
|
// check if this item still present in this container
|
||||||
@@ -363,8 +325,7 @@ public abstract class ItemContainer
|
|||||||
{
|
{
|
||||||
sourceitem.changeCount(process, -count, actor, reference);
|
sourceitem.changeCount(process, -count, actor, reference);
|
||||||
}
|
}
|
||||||
else
|
else // Otherwise destroy old item
|
||||||
// Otherwise destroy old item
|
|
||||||
{
|
{
|
||||||
removeItem(sourceitem);
|
removeItem(sourceitem);
|
||||||
ItemTable.getInstance().destroyItem(process, sourceitem, actor, reference);
|
ItemTable.getInstance().destroyItem(process, sourceitem, actor, reference);
|
||||||
@@ -374,8 +335,7 @@ public abstract class ItemContainer
|
|||||||
{
|
{
|
||||||
targetitem.changeCount(process, count, actor, reference);
|
targetitem.changeCount(process, count, actor, reference);
|
||||||
}
|
}
|
||||||
else
|
else // Otherwise add new item
|
||||||
// Otherwise add new item
|
|
||||||
{
|
{
|
||||||
targetitem = target.addItem(process, sourceitem.getId(), count, actor, reference);
|
targetitem = target.addItem(process, sourceitem.getId(), count, actor, reference);
|
||||||
}
|
}
|
||||||
@@ -437,6 +397,7 @@ public abstract class ItemContainer
|
|||||||
item = ItemTable.getInstance().createItem(process, item.getId(), count, actor, reference);
|
item = ItemTable.getInstance().createItem(process, item.getId(), count, actor, reference);
|
||||||
item.setOwnerId(getOwnerId());
|
item.setOwnerId(getOwnerId());
|
||||||
}
|
}
|
||||||
|
|
||||||
item.setItemLocation(newLocation);
|
item.setItemLocation(newLocation);
|
||||||
item.updateDatabase(true);
|
item.updateDatabase(true);
|
||||||
}
|
}
|
||||||
@@ -497,13 +458,6 @@ public abstract class ItemContainer
|
|||||||
{
|
{
|
||||||
item.changeCount(process, -count, actor, reference);
|
item.changeCount(process, -count, actor, reference);
|
||||||
item.setLastChange(ItemInstance.MODIFIED);
|
item.setLastChange(ItemInstance.MODIFIED);
|
||||||
|
|
||||||
// don't update often for untraced items
|
|
||||||
if ((process != null) || ((GameTimeController.getInstance().getGameTicks() % 10) == 0))
|
|
||||||
{
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
|
||||||
|
|
||||||
refreshWeight();
|
refreshWeight();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -976,6 +976,8 @@ public class ItemInstance extends WorldObject
|
|||||||
{
|
{
|
||||||
updateItemOptions();
|
updateItemOptions();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Notify to scripts.
|
||||||
EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getItem());
|
EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getItem());
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,7 +29,6 @@ import java.util.logging.Logger;
|
|||||||
|
|
||||||
import org.l2jmobius.Config;
|
import org.l2jmobius.Config;
|
||||||
import org.l2jmobius.commons.database.DatabaseFactory;
|
import org.l2jmobius.commons.database.DatabaseFactory;
|
||||||
import org.l2jmobius.gameserver.GameTimeController;
|
|
||||||
import org.l2jmobius.gameserver.datatables.ItemTable;
|
import org.l2jmobius.gameserver.datatables.ItemTable;
|
||||||
import org.l2jmobius.gameserver.enums.ItemLocation;
|
import org.l2jmobius.gameserver.enums.ItemLocation;
|
||||||
import org.l2jmobius.gameserver.model.World;
|
import org.l2jmobius.gameserver.model.World;
|
||||||
@@ -251,23 +250,8 @@ public abstract class ItemContainer
|
|||||||
ItemTable.getInstance().destroyItem(process, item, actor, reference);
|
ItemTable.getInstance().destroyItem(process, item, actor, reference);
|
||||||
item.updateDatabase();
|
item.updateDatabase();
|
||||||
item = olditem;
|
item = olditem;
|
||||||
|
|
||||||
// Updates database
|
|
||||||
if ((item.getId() == Inventory.ADENA_ID) && (count < (10000 * Config.RATE_DROP_AMOUNT_BY_ID.getOrDefault(Inventory.ADENA_ID, 1f))))
|
|
||||||
{
|
|
||||||
// Small adena changes won't be saved to database all the time
|
|
||||||
if ((GameTimeController.getInstance().getGameTicks() % 5) == 0)
|
|
||||||
{
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
// If item hasn't be found in inventory, create new one
|
else // If item hasn't be found in inventory, create new one
|
||||||
else
|
|
||||||
{
|
{
|
||||||
item.setOwnerId(process, getOwnerId(), actor, reference);
|
item.setOwnerId(process, getOwnerId(), actor, reference);
|
||||||
item.setItemLocation(getBaseLocation());
|
item.setItemLocation(getBaseLocation());
|
||||||
@@ -275,9 +259,6 @@ public abstract class ItemContainer
|
|||||||
|
|
||||||
// Add item in inventory
|
// Add item in inventory
|
||||||
addItem(item);
|
addItem(item);
|
||||||
|
|
||||||
// Updates database
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
refreshWeight();
|
refreshWeight();
|
||||||
@@ -302,23 +283,8 @@ public abstract class ItemContainer
|
|||||||
{
|
{
|
||||||
item.changeCount(process, count, actor, reference);
|
item.changeCount(process, count, actor, reference);
|
||||||
item.setLastChange(ItemInstance.MODIFIED);
|
item.setLastChange(ItemInstance.MODIFIED);
|
||||||
// Updates database
|
|
||||||
// If Adena drop rate is not present it will be x1.
|
|
||||||
if ((itemId == Inventory.ADENA_ID) && (count < (10000 * Config.RATE_DROP_AMOUNT_BY_ID.getOrDefault(Inventory.ADENA_ID, 1f))))
|
|
||||||
{
|
|
||||||
// Small adena changes won't be saved to database all the time
|
|
||||||
if ((GameTimeController.getInstance().getGameTicks() % 5) == 0)
|
|
||||||
{
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
// If item hasn't be found in inventory, create new one
|
else // If item hasn't be found in inventory, create new one
|
||||||
else
|
|
||||||
{
|
{
|
||||||
for (int i = 0; i < count; i++)
|
for (int i = 0; i < count; i++)
|
||||||
{
|
{
|
||||||
@@ -337,8 +303,6 @@ public abstract class ItemContainer
|
|||||||
|
|
||||||
// Add item in inventory
|
// Add item in inventory
|
||||||
addItem(item);
|
addItem(item);
|
||||||
// Updates database
|
|
||||||
item.updateDatabase();
|
|
||||||
|
|
||||||
// If stackable, end loop as entire count is included in 1 instance of item
|
// If stackable, end loop as entire count is included in 1 instance of item
|
||||||
if (template.isStackable() || !Config.MULTIPLE_ITEM_DROP)
|
if (template.isStackable() || !Config.MULTIPLE_ITEM_DROP)
|
||||||
@@ -374,8 +338,8 @@ public abstract class ItemContainer
|
|||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
ItemInstance targetitem = sourceitem.isStackable() ? target.getItemByItemId(sourceitem.getId()) : null;
|
|
||||||
|
|
||||||
|
ItemInstance targetitem = sourceitem.isStackable() ? target.getItemByItemId(sourceitem.getId()) : null;
|
||||||
synchronized (sourceitem)
|
synchronized (sourceitem)
|
||||||
{
|
{
|
||||||
// check if this item still present in this container
|
// check if this item still present in this container
|
||||||
@@ -403,8 +367,7 @@ public abstract class ItemContainer
|
|||||||
{
|
{
|
||||||
sourceitem.changeCount(process, -count, actor, reference);
|
sourceitem.changeCount(process, -count, actor, reference);
|
||||||
}
|
}
|
||||||
else
|
else // Otherwise destroy old item
|
||||||
// Otherwise destroy old item
|
|
||||||
{
|
{
|
||||||
removeItem(sourceitem);
|
removeItem(sourceitem);
|
||||||
ItemTable.getInstance().destroyItem(process, sourceitem, actor, reference);
|
ItemTable.getInstance().destroyItem(process, sourceitem, actor, reference);
|
||||||
@@ -414,8 +377,7 @@ public abstract class ItemContainer
|
|||||||
{
|
{
|
||||||
targetitem.changeCount(process, count, actor, reference);
|
targetitem.changeCount(process, count, actor, reference);
|
||||||
}
|
}
|
||||||
else
|
else // Otherwise add new item
|
||||||
// Otherwise add new item
|
|
||||||
{
|
{
|
||||||
targetitem = target.addItem(process, sourceitem.getId(), count, actor, reference);
|
targetitem = target.addItem(process, sourceitem.getId(), count, actor, reference);
|
||||||
}
|
}
|
||||||
@@ -468,12 +430,6 @@ public abstract class ItemContainer
|
|||||||
{
|
{
|
||||||
item.changeCount(process, -count, actor, reference);
|
item.changeCount(process, -count, actor, reference);
|
||||||
item.setLastChange(ItemInstance.MODIFIED);
|
item.setLastChange(ItemInstance.MODIFIED);
|
||||||
|
|
||||||
// don't update often for untraced items
|
|
||||||
if ((process != null) || ((GameTimeController.getInstance().getGameTicks() % 10) == 0))
|
|
||||||
{
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -915,6 +915,8 @@ public class ItemInstance extends WorldObject
|
|||||||
{
|
{
|
||||||
LOGGER.log(Level.SEVERE, "Could not update atributes for item: " + this + " from DB:", e);
|
LOGGER.log(Level.SEVERE, "Could not update atributes for item: " + this + " from DB:", e);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Notify to scripts.
|
||||||
EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getItem());
|
EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getItem());
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,7 +29,6 @@ import java.util.logging.Logger;
|
|||||||
|
|
||||||
import org.l2jmobius.Config;
|
import org.l2jmobius.Config;
|
||||||
import org.l2jmobius.commons.database.DatabaseFactory;
|
import org.l2jmobius.commons.database.DatabaseFactory;
|
||||||
import org.l2jmobius.gameserver.GameTimeController;
|
|
||||||
import org.l2jmobius.gameserver.datatables.ItemTable;
|
import org.l2jmobius.gameserver.datatables.ItemTable;
|
||||||
import org.l2jmobius.gameserver.enums.ItemLocation;
|
import org.l2jmobius.gameserver.enums.ItemLocation;
|
||||||
import org.l2jmobius.gameserver.model.World;
|
import org.l2jmobius.gameserver.model.World;
|
||||||
@@ -251,23 +250,8 @@ public abstract class ItemContainer
|
|||||||
ItemTable.getInstance().destroyItem(process, item, actor, reference);
|
ItemTable.getInstance().destroyItem(process, item, actor, reference);
|
||||||
item.updateDatabase();
|
item.updateDatabase();
|
||||||
item = olditem;
|
item = olditem;
|
||||||
|
|
||||||
// Updates database
|
|
||||||
if ((item.getId() == Inventory.ADENA_ID) && (count < (10000 * Config.RATE_DROP_AMOUNT_BY_ID.getOrDefault(Inventory.ADENA_ID, 1f))))
|
|
||||||
{
|
|
||||||
// Small adena changes won't be saved to database all the time
|
|
||||||
if ((GameTimeController.getInstance().getGameTicks() % 5) == 0)
|
|
||||||
{
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
// If item hasn't be found in inventory, create new one
|
else // If item hasn't be found in inventory, create new one
|
||||||
else
|
|
||||||
{
|
{
|
||||||
item.setOwnerId(process, getOwnerId(), actor, reference);
|
item.setOwnerId(process, getOwnerId(), actor, reference);
|
||||||
item.setItemLocation(getBaseLocation());
|
item.setItemLocation(getBaseLocation());
|
||||||
@@ -275,9 +259,6 @@ public abstract class ItemContainer
|
|||||||
|
|
||||||
// Add item in inventory
|
// Add item in inventory
|
||||||
addItem(item);
|
addItem(item);
|
||||||
|
|
||||||
// Updates database
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
refreshWeight();
|
refreshWeight();
|
||||||
@@ -302,23 +283,8 @@ public abstract class ItemContainer
|
|||||||
{
|
{
|
||||||
item.changeCount(process, count, actor, reference);
|
item.changeCount(process, count, actor, reference);
|
||||||
item.setLastChange(ItemInstance.MODIFIED);
|
item.setLastChange(ItemInstance.MODIFIED);
|
||||||
// Updates database
|
|
||||||
// If Adena drop rate is not present it will be x1.
|
|
||||||
if ((itemId == Inventory.ADENA_ID) && (count < (10000 * Config.RATE_DROP_AMOUNT_BY_ID.getOrDefault(Inventory.ADENA_ID, 1f))))
|
|
||||||
{
|
|
||||||
// Small adena changes won't be saved to database all the time
|
|
||||||
if ((GameTimeController.getInstance().getGameTicks() % 5) == 0)
|
|
||||||
{
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
// If item hasn't be found in inventory, create new one
|
else // If item hasn't be found in inventory, create new one
|
||||||
else
|
|
||||||
{
|
{
|
||||||
for (int i = 0; i < count; i++)
|
for (int i = 0; i < count; i++)
|
||||||
{
|
{
|
||||||
@@ -337,8 +303,6 @@ public abstract class ItemContainer
|
|||||||
|
|
||||||
// Add item in inventory
|
// Add item in inventory
|
||||||
addItem(item);
|
addItem(item);
|
||||||
// Updates database
|
|
||||||
item.updateDatabase();
|
|
||||||
|
|
||||||
// If stackable, end loop as entire count is included in 1 instance of item
|
// If stackable, end loop as entire count is included in 1 instance of item
|
||||||
if (template.isStackable() || !Config.MULTIPLE_ITEM_DROP)
|
if (template.isStackable() || !Config.MULTIPLE_ITEM_DROP)
|
||||||
@@ -374,8 +338,8 @@ public abstract class ItemContainer
|
|||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
ItemInstance targetitem = sourceitem.isStackable() ? target.getItemByItemId(sourceitem.getId()) : null;
|
|
||||||
|
|
||||||
|
ItemInstance targetitem = sourceitem.isStackable() ? target.getItemByItemId(sourceitem.getId()) : null;
|
||||||
synchronized (sourceitem)
|
synchronized (sourceitem)
|
||||||
{
|
{
|
||||||
// check if this item still present in this container
|
// check if this item still present in this container
|
||||||
@@ -403,8 +367,7 @@ public abstract class ItemContainer
|
|||||||
{
|
{
|
||||||
sourceitem.changeCount(process, -count, actor, reference);
|
sourceitem.changeCount(process, -count, actor, reference);
|
||||||
}
|
}
|
||||||
else
|
else // Otherwise destroy old item
|
||||||
// Otherwise destroy old item
|
|
||||||
{
|
{
|
||||||
removeItem(sourceitem);
|
removeItem(sourceitem);
|
||||||
ItemTable.getInstance().destroyItem(process, sourceitem, actor, reference);
|
ItemTable.getInstance().destroyItem(process, sourceitem, actor, reference);
|
||||||
@@ -414,8 +377,7 @@ public abstract class ItemContainer
|
|||||||
{
|
{
|
||||||
targetitem.changeCount(process, count, actor, reference);
|
targetitem.changeCount(process, count, actor, reference);
|
||||||
}
|
}
|
||||||
else
|
else // Otherwise add new item
|
||||||
// Otherwise add new item
|
|
||||||
{
|
{
|
||||||
targetitem = target.addItem(process, sourceitem.getId(), count, actor, reference);
|
targetitem = target.addItem(process, sourceitem.getId(), count, actor, reference);
|
||||||
}
|
}
|
||||||
@@ -468,12 +430,6 @@ public abstract class ItemContainer
|
|||||||
{
|
{
|
||||||
item.changeCount(process, -count, actor, reference);
|
item.changeCount(process, -count, actor, reference);
|
||||||
item.setLastChange(ItemInstance.MODIFIED);
|
item.setLastChange(ItemInstance.MODIFIED);
|
||||||
|
|
||||||
// don't update often for untraced items
|
|
||||||
if ((process != null) || ((GameTimeController.getInstance().getGameTicks() % 10) == 0))
|
|
||||||
{
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -915,6 +915,8 @@ public class ItemInstance extends WorldObject
|
|||||||
{
|
{
|
||||||
LOGGER.log(Level.SEVERE, "Could not update atributes for item: " + this + " from DB:", e);
|
LOGGER.log(Level.SEVERE, "Could not update atributes for item: " + this + " from DB:", e);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Notify to scripts.
|
||||||
EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getItem());
|
EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getItem());
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,7 +30,6 @@ import java.util.stream.Collectors;
|
|||||||
|
|
||||||
import org.l2jmobius.Config;
|
import org.l2jmobius.Config;
|
||||||
import org.l2jmobius.commons.database.DatabaseFactory;
|
import org.l2jmobius.commons.database.DatabaseFactory;
|
||||||
import org.l2jmobius.gameserver.GameTimeController;
|
|
||||||
import org.l2jmobius.gameserver.datatables.ItemTable;
|
import org.l2jmobius.gameserver.datatables.ItemTable;
|
||||||
import org.l2jmobius.gameserver.enums.ItemLocation;
|
import org.l2jmobius.gameserver.enums.ItemLocation;
|
||||||
import org.l2jmobius.gameserver.model.World;
|
import org.l2jmobius.gameserver.model.World;
|
||||||
@@ -210,24 +209,8 @@ public abstract class ItemContainer
|
|||||||
ItemTable.getInstance().destroyItem(process, item, actor, reference);
|
ItemTable.getInstance().destroyItem(process, item, actor, reference);
|
||||||
item.updateDatabase();
|
item.updateDatabase();
|
||||||
item = olditem;
|
item = olditem;
|
||||||
|
|
||||||
// Updates database
|
|
||||||
final float adenaRate = Config.RATE_DROP_AMOUNT_BY_ID.getOrDefault(Inventory.ADENA_ID, 1f);
|
|
||||||
if ((item.getId() == Inventory.ADENA_ID) && (count < (10000 * adenaRate)))
|
|
||||||
{
|
|
||||||
// Small adena changes won't be saved to database all the time
|
|
||||||
if ((GameTimeController.getInstance().getGameTicks() % 5) == 0)
|
|
||||||
{
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
// If item hasn't be found in inventory, create new one
|
else // If item hasn't be found in inventory, create new one
|
||||||
else
|
|
||||||
{
|
{
|
||||||
item.setOwnerId(process, getOwnerId(), actor, reference);
|
item.setOwnerId(process, getOwnerId(), actor, reference);
|
||||||
item.setItemLocation(getBaseLocation());
|
item.setItemLocation(getBaseLocation());
|
||||||
@@ -235,9 +218,6 @@ public abstract class ItemContainer
|
|||||||
|
|
||||||
// Add item in inventory
|
// Add item in inventory
|
||||||
addItem(item);
|
addItem(item);
|
||||||
|
|
||||||
// Updates database
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
refreshWeight();
|
refreshWeight();
|
||||||
@@ -262,24 +242,8 @@ public abstract class ItemContainer
|
|||||||
{
|
{
|
||||||
item.changeCount(process, count, actor, reference);
|
item.changeCount(process, count, actor, reference);
|
||||||
item.setLastChange(ItemInstance.MODIFIED);
|
item.setLastChange(ItemInstance.MODIFIED);
|
||||||
// Updates database
|
|
||||||
// If Adena drop rate is not present it will be x1.
|
|
||||||
final float adenaRate = Config.RATE_DROP_AMOUNT_BY_ID.getOrDefault(Inventory.ADENA_ID, 1f);
|
|
||||||
if ((itemId == Inventory.ADENA_ID) && (count < (10000 * adenaRate)))
|
|
||||||
{
|
|
||||||
// Small adena changes won't be saved to database all the time
|
|
||||||
if ((GameTimeController.getInstance().getGameTicks() % 5) == 0)
|
|
||||||
{
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
// If item hasn't be found in inventory, create new one
|
else // If item hasn't be found in inventory, create new one
|
||||||
else
|
|
||||||
{
|
{
|
||||||
for (int i = 0; i < count; i++)
|
for (int i = 0; i < count; i++)
|
||||||
{
|
{
|
||||||
@@ -297,8 +261,6 @@ public abstract class ItemContainer
|
|||||||
|
|
||||||
// Add item in inventory
|
// Add item in inventory
|
||||||
addItem(item);
|
addItem(item);
|
||||||
// Updates database
|
|
||||||
item.updateDatabase();
|
|
||||||
|
|
||||||
// If stackable, end loop as entire count is included in 1 instance of item
|
// If stackable, end loop as entire count is included in 1 instance of item
|
||||||
if (template.isStackable() || !Config.MULTIPLE_ITEM_DROP)
|
if (template.isStackable() || !Config.MULTIPLE_ITEM_DROP)
|
||||||
@@ -334,8 +296,8 @@ public abstract class ItemContainer
|
|||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
ItemInstance targetitem = sourceitem.isStackable() ? target.getItemByItemId(sourceitem.getId()) : null;
|
|
||||||
|
|
||||||
|
ItemInstance targetitem = sourceitem.isStackable() ? target.getItemByItemId(sourceitem.getId()) : null;
|
||||||
synchronized (sourceitem)
|
synchronized (sourceitem)
|
||||||
{
|
{
|
||||||
// check if this item still present in this container
|
// check if this item still present in this container
|
||||||
@@ -363,8 +325,7 @@ public abstract class ItemContainer
|
|||||||
{
|
{
|
||||||
sourceitem.changeCount(process, -count, actor, reference);
|
sourceitem.changeCount(process, -count, actor, reference);
|
||||||
}
|
}
|
||||||
else
|
else // Otherwise destroy old item
|
||||||
// Otherwise destroy old item
|
|
||||||
{
|
{
|
||||||
removeItem(sourceitem);
|
removeItem(sourceitem);
|
||||||
ItemTable.getInstance().destroyItem(process, sourceitem, actor, reference);
|
ItemTable.getInstance().destroyItem(process, sourceitem, actor, reference);
|
||||||
@@ -374,8 +335,7 @@ public abstract class ItemContainer
|
|||||||
{
|
{
|
||||||
targetitem.changeCount(process, count, actor, reference);
|
targetitem.changeCount(process, count, actor, reference);
|
||||||
}
|
}
|
||||||
else
|
else // Otherwise add new item
|
||||||
// Otherwise add new item
|
|
||||||
{
|
{
|
||||||
targetitem = target.addItem(process, sourceitem.getId(), count, actor, reference);
|
targetitem = target.addItem(process, sourceitem.getId(), count, actor, reference);
|
||||||
}
|
}
|
||||||
@@ -437,6 +397,7 @@ public abstract class ItemContainer
|
|||||||
item = ItemTable.getInstance().createItem(process, item.getId(), count, actor, reference);
|
item = ItemTable.getInstance().createItem(process, item.getId(), count, actor, reference);
|
||||||
item.setOwnerId(getOwnerId());
|
item.setOwnerId(getOwnerId());
|
||||||
}
|
}
|
||||||
|
|
||||||
item.setItemLocation(newLocation);
|
item.setItemLocation(newLocation);
|
||||||
item.updateDatabase(true);
|
item.updateDatabase(true);
|
||||||
}
|
}
|
||||||
@@ -497,13 +458,6 @@ public abstract class ItemContainer
|
|||||||
{
|
{
|
||||||
item.changeCount(process, -count, actor, reference);
|
item.changeCount(process, -count, actor, reference);
|
||||||
item.setLastChange(ItemInstance.MODIFIED);
|
item.setLastChange(ItemInstance.MODIFIED);
|
||||||
|
|
||||||
// don't update often for untraced items
|
|
||||||
if ((process != null) || ((GameTimeController.getInstance().getGameTicks() % 10) == 0))
|
|
||||||
{
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
|
||||||
|
|
||||||
refreshWeight();
|
refreshWeight();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -970,6 +970,8 @@ public class ItemInstance extends WorldObject
|
|||||||
{
|
{
|
||||||
updateItemOptions();
|
updateItemOptions();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Notify to scripts.
|
||||||
EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getItem());
|
EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getItem());
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,7 +30,6 @@ import java.util.stream.Collectors;
|
|||||||
|
|
||||||
import org.l2jmobius.Config;
|
import org.l2jmobius.Config;
|
||||||
import org.l2jmobius.commons.database.DatabaseFactory;
|
import org.l2jmobius.commons.database.DatabaseFactory;
|
||||||
import org.l2jmobius.gameserver.GameTimeController;
|
|
||||||
import org.l2jmobius.gameserver.datatables.ItemTable;
|
import org.l2jmobius.gameserver.datatables.ItemTable;
|
||||||
import org.l2jmobius.gameserver.enums.ItemLocation;
|
import org.l2jmobius.gameserver.enums.ItemLocation;
|
||||||
import org.l2jmobius.gameserver.model.World;
|
import org.l2jmobius.gameserver.model.World;
|
||||||
@@ -210,24 +209,8 @@ public abstract class ItemContainer
|
|||||||
ItemTable.getInstance().destroyItem(process, item, actor, reference);
|
ItemTable.getInstance().destroyItem(process, item, actor, reference);
|
||||||
item.updateDatabase();
|
item.updateDatabase();
|
||||||
item = olditem;
|
item = olditem;
|
||||||
|
|
||||||
// Updates database
|
|
||||||
final float adenaRate = Config.RATE_DROP_AMOUNT_BY_ID.getOrDefault(Inventory.ADENA_ID, 1f);
|
|
||||||
if ((item.getId() == Inventory.ADENA_ID) && (count < (10000 * adenaRate)))
|
|
||||||
{
|
|
||||||
// Small adena changes won't be saved to database all the time
|
|
||||||
if ((GameTimeController.getInstance().getGameTicks() % 5) == 0)
|
|
||||||
{
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
// If item hasn't be found in inventory, create new one
|
else // If item hasn't be found in inventory, create new one
|
||||||
else
|
|
||||||
{
|
{
|
||||||
item.setOwnerId(process, getOwnerId(), actor, reference);
|
item.setOwnerId(process, getOwnerId(), actor, reference);
|
||||||
item.setItemLocation(getBaseLocation());
|
item.setItemLocation(getBaseLocation());
|
||||||
@@ -235,9 +218,6 @@ public abstract class ItemContainer
|
|||||||
|
|
||||||
// Add item in inventory
|
// Add item in inventory
|
||||||
addItem(item);
|
addItem(item);
|
||||||
|
|
||||||
// Updates database
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
refreshWeight();
|
refreshWeight();
|
||||||
@@ -262,24 +242,8 @@ public abstract class ItemContainer
|
|||||||
{
|
{
|
||||||
item.changeCount(process, count, actor, reference);
|
item.changeCount(process, count, actor, reference);
|
||||||
item.setLastChange(ItemInstance.MODIFIED);
|
item.setLastChange(ItemInstance.MODIFIED);
|
||||||
// Updates database
|
|
||||||
// If Adena drop rate is not present it will be x1.
|
|
||||||
final float adenaRate = Config.RATE_DROP_AMOUNT_BY_ID.getOrDefault(Inventory.ADENA_ID, 1f);
|
|
||||||
if ((itemId == Inventory.ADENA_ID) && (count < (10000 * adenaRate)))
|
|
||||||
{
|
|
||||||
// Small adena changes won't be saved to database all the time
|
|
||||||
if ((GameTimeController.getInstance().getGameTicks() % 5) == 0)
|
|
||||||
{
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
// If item hasn't be found in inventory, create new one
|
else // If item hasn't be found in inventory, create new one
|
||||||
else
|
|
||||||
{
|
{
|
||||||
for (int i = 0; i < count; i++)
|
for (int i = 0; i < count; i++)
|
||||||
{
|
{
|
||||||
@@ -297,8 +261,6 @@ public abstract class ItemContainer
|
|||||||
|
|
||||||
// Add item in inventory
|
// Add item in inventory
|
||||||
addItem(item);
|
addItem(item);
|
||||||
// Updates database
|
|
||||||
item.updateDatabase();
|
|
||||||
|
|
||||||
// If stackable, end loop as entire count is included in 1 instance of item
|
// If stackable, end loop as entire count is included in 1 instance of item
|
||||||
if (template.isStackable() || !Config.MULTIPLE_ITEM_DROP)
|
if (template.isStackable() || !Config.MULTIPLE_ITEM_DROP)
|
||||||
@@ -334,8 +296,8 @@ public abstract class ItemContainer
|
|||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
ItemInstance targetitem = sourceitem.isStackable() ? target.getItemByItemId(sourceitem.getId()) : null;
|
|
||||||
|
|
||||||
|
ItemInstance targetitem = sourceitem.isStackable() ? target.getItemByItemId(sourceitem.getId()) : null;
|
||||||
synchronized (sourceitem)
|
synchronized (sourceitem)
|
||||||
{
|
{
|
||||||
// check if this item still present in this container
|
// check if this item still present in this container
|
||||||
@@ -363,8 +325,7 @@ public abstract class ItemContainer
|
|||||||
{
|
{
|
||||||
sourceitem.changeCount(process, -count, actor, reference);
|
sourceitem.changeCount(process, -count, actor, reference);
|
||||||
}
|
}
|
||||||
else
|
else // Otherwise destroy old item
|
||||||
// Otherwise destroy old item
|
|
||||||
{
|
{
|
||||||
removeItem(sourceitem);
|
removeItem(sourceitem);
|
||||||
ItemTable.getInstance().destroyItem(process, sourceitem, actor, reference);
|
ItemTable.getInstance().destroyItem(process, sourceitem, actor, reference);
|
||||||
@@ -374,8 +335,7 @@ public abstract class ItemContainer
|
|||||||
{
|
{
|
||||||
targetitem.changeCount(process, count, actor, reference);
|
targetitem.changeCount(process, count, actor, reference);
|
||||||
}
|
}
|
||||||
else
|
else // Otherwise add new item
|
||||||
// Otherwise add new item
|
|
||||||
{
|
{
|
||||||
targetitem = target.addItem(process, sourceitem.getId(), count, actor, reference);
|
targetitem = target.addItem(process, sourceitem.getId(), count, actor, reference);
|
||||||
}
|
}
|
||||||
@@ -437,6 +397,7 @@ public abstract class ItemContainer
|
|||||||
item = ItemTable.getInstance().createItem(process, item.getId(), count, actor, reference);
|
item = ItemTable.getInstance().createItem(process, item.getId(), count, actor, reference);
|
||||||
item.setOwnerId(getOwnerId());
|
item.setOwnerId(getOwnerId());
|
||||||
}
|
}
|
||||||
|
|
||||||
item.setItemLocation(newLocation);
|
item.setItemLocation(newLocation);
|
||||||
item.updateDatabase(true);
|
item.updateDatabase(true);
|
||||||
}
|
}
|
||||||
@@ -497,13 +458,6 @@ public abstract class ItemContainer
|
|||||||
{
|
{
|
||||||
item.changeCount(process, -count, actor, reference);
|
item.changeCount(process, -count, actor, reference);
|
||||||
item.setLastChange(ItemInstance.MODIFIED);
|
item.setLastChange(ItemInstance.MODIFIED);
|
||||||
|
|
||||||
// don't update often for untraced items
|
|
||||||
if ((process != null) || ((GameTimeController.getInstance().getGameTicks() % 10) == 0))
|
|
||||||
{
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
|
||||||
|
|
||||||
refreshWeight();
|
refreshWeight();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -970,6 +970,8 @@ public class ItemInstance extends WorldObject
|
|||||||
{
|
{
|
||||||
updateItemOptions();
|
updateItemOptions();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Notify to scripts.
|
||||||
EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getItem());
|
EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getItem());
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,7 +30,6 @@ import java.util.stream.Collectors;
|
|||||||
|
|
||||||
import org.l2jmobius.Config;
|
import org.l2jmobius.Config;
|
||||||
import org.l2jmobius.commons.database.DatabaseFactory;
|
import org.l2jmobius.commons.database.DatabaseFactory;
|
||||||
import org.l2jmobius.gameserver.GameTimeController;
|
|
||||||
import org.l2jmobius.gameserver.datatables.ItemTable;
|
import org.l2jmobius.gameserver.datatables.ItemTable;
|
||||||
import org.l2jmobius.gameserver.enums.ItemLocation;
|
import org.l2jmobius.gameserver.enums.ItemLocation;
|
||||||
import org.l2jmobius.gameserver.model.World;
|
import org.l2jmobius.gameserver.model.World;
|
||||||
@@ -210,24 +209,8 @@ public abstract class ItemContainer
|
|||||||
ItemTable.getInstance().destroyItem(process, item, actor, reference);
|
ItemTable.getInstance().destroyItem(process, item, actor, reference);
|
||||||
item.updateDatabase();
|
item.updateDatabase();
|
||||||
item = olditem;
|
item = olditem;
|
||||||
|
|
||||||
// Updates database
|
|
||||||
final float adenaRate = Config.RATE_DROP_AMOUNT_BY_ID.getOrDefault(Inventory.ADENA_ID, 1f);
|
|
||||||
if ((item.getId() == Inventory.ADENA_ID) && (count < (10000 * adenaRate)))
|
|
||||||
{
|
|
||||||
// Small adena changes won't be saved to database all the time
|
|
||||||
if ((GameTimeController.getInstance().getGameTicks() % 5) == 0)
|
|
||||||
{
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
// If item hasn't be found in inventory, create new one
|
else // If item hasn't be found in inventory, create new one
|
||||||
else
|
|
||||||
{
|
{
|
||||||
item.setOwnerId(process, getOwnerId(), actor, reference);
|
item.setOwnerId(process, getOwnerId(), actor, reference);
|
||||||
item.setItemLocation(getBaseLocation());
|
item.setItemLocation(getBaseLocation());
|
||||||
@@ -235,9 +218,6 @@ public abstract class ItemContainer
|
|||||||
|
|
||||||
// Add item in inventory
|
// Add item in inventory
|
||||||
addItem(item);
|
addItem(item);
|
||||||
|
|
||||||
// Updates database
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
refreshWeight();
|
refreshWeight();
|
||||||
@@ -262,24 +242,8 @@ public abstract class ItemContainer
|
|||||||
{
|
{
|
||||||
item.changeCount(process, count, actor, reference);
|
item.changeCount(process, count, actor, reference);
|
||||||
item.setLastChange(ItemInstance.MODIFIED);
|
item.setLastChange(ItemInstance.MODIFIED);
|
||||||
// Updates database
|
|
||||||
// If Adena drop rate is not present it will be x1.
|
|
||||||
final float adenaRate = Config.RATE_DROP_AMOUNT_BY_ID.getOrDefault(Inventory.ADENA_ID, 1f);
|
|
||||||
if ((itemId == Inventory.ADENA_ID) && (count < (10000 * adenaRate)))
|
|
||||||
{
|
|
||||||
// Small adena changes won't be saved to database all the time
|
|
||||||
if ((GameTimeController.getInstance().getGameTicks() % 5) == 0)
|
|
||||||
{
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
// If item hasn't be found in inventory, create new one
|
else // If item hasn't be found in inventory, create new one
|
||||||
else
|
|
||||||
{
|
{
|
||||||
for (int i = 0; i < count; i++)
|
for (int i = 0; i < count; i++)
|
||||||
{
|
{
|
||||||
@@ -297,8 +261,6 @@ public abstract class ItemContainer
|
|||||||
|
|
||||||
// Add item in inventory
|
// Add item in inventory
|
||||||
addItem(item);
|
addItem(item);
|
||||||
// Updates database
|
|
||||||
item.updateDatabase();
|
|
||||||
|
|
||||||
// If stackable, end loop as entire count is included in 1 instance of item
|
// If stackable, end loop as entire count is included in 1 instance of item
|
||||||
if (template.isStackable() || !Config.MULTIPLE_ITEM_DROP)
|
if (template.isStackable() || !Config.MULTIPLE_ITEM_DROP)
|
||||||
@@ -334,8 +296,8 @@ public abstract class ItemContainer
|
|||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
ItemInstance targetitem = sourceitem.isStackable() ? target.getItemByItemId(sourceitem.getId()) : null;
|
|
||||||
|
|
||||||
|
ItemInstance targetitem = sourceitem.isStackable() ? target.getItemByItemId(sourceitem.getId()) : null;
|
||||||
synchronized (sourceitem)
|
synchronized (sourceitem)
|
||||||
{
|
{
|
||||||
// check if this item still present in this container
|
// check if this item still present in this container
|
||||||
@@ -363,8 +325,7 @@ public abstract class ItemContainer
|
|||||||
{
|
{
|
||||||
sourceitem.changeCount(process, -count, actor, reference);
|
sourceitem.changeCount(process, -count, actor, reference);
|
||||||
}
|
}
|
||||||
else
|
else // Otherwise destroy old item
|
||||||
// Otherwise destroy old item
|
|
||||||
{
|
{
|
||||||
removeItem(sourceitem);
|
removeItem(sourceitem);
|
||||||
ItemTable.getInstance().destroyItem(process, sourceitem, actor, reference);
|
ItemTable.getInstance().destroyItem(process, sourceitem, actor, reference);
|
||||||
@@ -374,8 +335,7 @@ public abstract class ItemContainer
|
|||||||
{
|
{
|
||||||
targetitem.changeCount(process, count, actor, reference);
|
targetitem.changeCount(process, count, actor, reference);
|
||||||
}
|
}
|
||||||
else
|
else // Otherwise add new item
|
||||||
// Otherwise add new item
|
|
||||||
{
|
{
|
||||||
targetitem = target.addItem(process, sourceitem.getId(), count, actor, reference);
|
targetitem = target.addItem(process, sourceitem.getId(), count, actor, reference);
|
||||||
}
|
}
|
||||||
@@ -437,6 +397,7 @@ public abstract class ItemContainer
|
|||||||
item = ItemTable.getInstance().createItem(process, item.getId(), count, actor, reference);
|
item = ItemTable.getInstance().createItem(process, item.getId(), count, actor, reference);
|
||||||
item.setOwnerId(getOwnerId());
|
item.setOwnerId(getOwnerId());
|
||||||
}
|
}
|
||||||
|
|
||||||
item.setItemLocation(newLocation);
|
item.setItemLocation(newLocation);
|
||||||
item.updateDatabase(true);
|
item.updateDatabase(true);
|
||||||
}
|
}
|
||||||
@@ -497,13 +458,6 @@ public abstract class ItemContainer
|
|||||||
{
|
{
|
||||||
item.changeCount(process, -count, actor, reference);
|
item.changeCount(process, -count, actor, reference);
|
||||||
item.setLastChange(ItemInstance.MODIFIED);
|
item.setLastChange(ItemInstance.MODIFIED);
|
||||||
|
|
||||||
// don't update often for untraced items
|
|
||||||
if ((process != null) || ((GameTimeController.getInstance().getGameTicks() % 10) == 0))
|
|
||||||
{
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
|
||||||
|
|
||||||
refreshWeight();
|
refreshWeight();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -970,6 +970,8 @@ public class ItemInstance extends WorldObject
|
|||||||
{
|
{
|
||||||
updateItemOptions();
|
updateItemOptions();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Notify to scripts.
|
||||||
EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getItem());
|
EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getItem());
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,7 +30,6 @@ import java.util.stream.Collectors;
|
|||||||
|
|
||||||
import org.l2jmobius.Config;
|
import org.l2jmobius.Config;
|
||||||
import org.l2jmobius.commons.database.DatabaseFactory;
|
import org.l2jmobius.commons.database.DatabaseFactory;
|
||||||
import org.l2jmobius.gameserver.GameTimeController;
|
|
||||||
import org.l2jmobius.gameserver.datatables.ItemTable;
|
import org.l2jmobius.gameserver.datatables.ItemTable;
|
||||||
import org.l2jmobius.gameserver.enums.ItemLocation;
|
import org.l2jmobius.gameserver.enums.ItemLocation;
|
||||||
import org.l2jmobius.gameserver.model.World;
|
import org.l2jmobius.gameserver.model.World;
|
||||||
@@ -210,24 +209,8 @@ public abstract class ItemContainer
|
|||||||
ItemTable.getInstance().destroyItem(process, item, actor, reference);
|
ItemTable.getInstance().destroyItem(process, item, actor, reference);
|
||||||
item.updateDatabase();
|
item.updateDatabase();
|
||||||
item = olditem;
|
item = olditem;
|
||||||
|
|
||||||
// Updates database
|
|
||||||
final float adenaRate = Config.RATE_DROP_AMOUNT_BY_ID.getOrDefault(Inventory.ADENA_ID, 1f);
|
|
||||||
if ((item.getId() == Inventory.ADENA_ID) && (count < (10000 * adenaRate)))
|
|
||||||
{
|
|
||||||
// Small adena changes won't be saved to database all the time
|
|
||||||
if ((GameTimeController.getInstance().getGameTicks() % 5) == 0)
|
|
||||||
{
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
// If item hasn't be found in inventory, create new one
|
else // If item hasn't be found in inventory, create new one
|
||||||
else
|
|
||||||
{
|
{
|
||||||
item.setOwnerId(process, getOwnerId(), actor, reference);
|
item.setOwnerId(process, getOwnerId(), actor, reference);
|
||||||
item.setItemLocation(getBaseLocation());
|
item.setItemLocation(getBaseLocation());
|
||||||
@@ -235,9 +218,6 @@ public abstract class ItemContainer
|
|||||||
|
|
||||||
// Add item in inventory
|
// Add item in inventory
|
||||||
addItem(item);
|
addItem(item);
|
||||||
|
|
||||||
// Updates database
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
refreshWeight();
|
refreshWeight();
|
||||||
@@ -262,24 +242,8 @@ public abstract class ItemContainer
|
|||||||
{
|
{
|
||||||
item.changeCount(process, count, actor, reference);
|
item.changeCount(process, count, actor, reference);
|
||||||
item.setLastChange(ItemInstance.MODIFIED);
|
item.setLastChange(ItemInstance.MODIFIED);
|
||||||
// Updates database
|
|
||||||
// If Adena drop rate is not present it will be x1.
|
|
||||||
final float adenaRate = Config.RATE_DROP_AMOUNT_BY_ID.getOrDefault(Inventory.ADENA_ID, 1f);
|
|
||||||
if ((itemId == Inventory.ADENA_ID) && (count < (10000 * adenaRate)))
|
|
||||||
{
|
|
||||||
// Small adena changes won't be saved to database all the time
|
|
||||||
if ((GameTimeController.getInstance().getGameTicks() % 5) == 0)
|
|
||||||
{
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
// If item hasn't be found in inventory, create new one
|
else // If item hasn't be found in inventory, create new one
|
||||||
else
|
|
||||||
{
|
{
|
||||||
for (int i = 0; i < count; i++)
|
for (int i = 0; i < count; i++)
|
||||||
{
|
{
|
||||||
@@ -297,8 +261,6 @@ public abstract class ItemContainer
|
|||||||
|
|
||||||
// Add item in inventory
|
// Add item in inventory
|
||||||
addItem(item);
|
addItem(item);
|
||||||
// Updates database
|
|
||||||
item.updateDatabase();
|
|
||||||
|
|
||||||
// If stackable, end loop as entire count is included in 1 instance of item
|
// If stackable, end loop as entire count is included in 1 instance of item
|
||||||
if (template.isStackable() || !Config.MULTIPLE_ITEM_DROP)
|
if (template.isStackable() || !Config.MULTIPLE_ITEM_DROP)
|
||||||
@@ -334,8 +296,8 @@ public abstract class ItemContainer
|
|||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
ItemInstance targetitem = sourceitem.isStackable() ? target.getItemByItemId(sourceitem.getId()) : null;
|
|
||||||
|
|
||||||
|
ItemInstance targetitem = sourceitem.isStackable() ? target.getItemByItemId(sourceitem.getId()) : null;
|
||||||
synchronized (sourceitem)
|
synchronized (sourceitem)
|
||||||
{
|
{
|
||||||
// check if this item still present in this container
|
// check if this item still present in this container
|
||||||
@@ -363,8 +325,7 @@ public abstract class ItemContainer
|
|||||||
{
|
{
|
||||||
sourceitem.changeCount(process, -count, actor, reference);
|
sourceitem.changeCount(process, -count, actor, reference);
|
||||||
}
|
}
|
||||||
else
|
else // Otherwise destroy old item
|
||||||
// Otherwise destroy old item
|
|
||||||
{
|
{
|
||||||
removeItem(sourceitem);
|
removeItem(sourceitem);
|
||||||
ItemTable.getInstance().destroyItem(process, sourceitem, actor, reference);
|
ItemTable.getInstance().destroyItem(process, sourceitem, actor, reference);
|
||||||
@@ -374,8 +335,7 @@ public abstract class ItemContainer
|
|||||||
{
|
{
|
||||||
targetitem.changeCount(process, count, actor, reference);
|
targetitem.changeCount(process, count, actor, reference);
|
||||||
}
|
}
|
||||||
else
|
else // Otherwise add new item
|
||||||
// Otherwise add new item
|
|
||||||
{
|
{
|
||||||
targetitem = target.addItem(process, sourceitem.getId(), count, actor, reference);
|
targetitem = target.addItem(process, sourceitem.getId(), count, actor, reference);
|
||||||
}
|
}
|
||||||
@@ -437,6 +397,7 @@ public abstract class ItemContainer
|
|||||||
item = ItemTable.getInstance().createItem(process, item.getId(), count, actor, reference);
|
item = ItemTable.getInstance().createItem(process, item.getId(), count, actor, reference);
|
||||||
item.setOwnerId(getOwnerId());
|
item.setOwnerId(getOwnerId());
|
||||||
}
|
}
|
||||||
|
|
||||||
item.setItemLocation(newLocation);
|
item.setItemLocation(newLocation);
|
||||||
item.updateDatabase(true);
|
item.updateDatabase(true);
|
||||||
}
|
}
|
||||||
@@ -497,13 +458,6 @@ public abstract class ItemContainer
|
|||||||
{
|
{
|
||||||
item.changeCount(process, -count, actor, reference);
|
item.changeCount(process, -count, actor, reference);
|
||||||
item.setLastChange(ItemInstance.MODIFIED);
|
item.setLastChange(ItemInstance.MODIFIED);
|
||||||
|
|
||||||
// don't update often for untraced items
|
|
||||||
if ((process != null) || ((GameTimeController.getInstance().getGameTicks() % 10) == 0))
|
|
||||||
{
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
|
||||||
|
|
||||||
refreshWeight();
|
refreshWeight();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -970,6 +970,8 @@ public class ItemInstance extends WorldObject
|
|||||||
{
|
{
|
||||||
updateItemOptions();
|
updateItemOptions();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Notify to scripts.
|
||||||
EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getItem());
|
EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getItem());
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,7 +30,6 @@ import java.util.stream.Collectors;
|
|||||||
|
|
||||||
import org.l2jmobius.Config;
|
import org.l2jmobius.Config;
|
||||||
import org.l2jmobius.commons.database.DatabaseFactory;
|
import org.l2jmobius.commons.database.DatabaseFactory;
|
||||||
import org.l2jmobius.gameserver.GameTimeController;
|
|
||||||
import org.l2jmobius.gameserver.datatables.ItemTable;
|
import org.l2jmobius.gameserver.datatables.ItemTable;
|
||||||
import org.l2jmobius.gameserver.enums.ItemLocation;
|
import org.l2jmobius.gameserver.enums.ItemLocation;
|
||||||
import org.l2jmobius.gameserver.model.World;
|
import org.l2jmobius.gameserver.model.World;
|
||||||
@@ -210,24 +209,8 @@ public abstract class ItemContainer
|
|||||||
ItemTable.getInstance().destroyItem(process, item, actor, reference);
|
ItemTable.getInstance().destroyItem(process, item, actor, reference);
|
||||||
item.updateDatabase();
|
item.updateDatabase();
|
||||||
item = olditem;
|
item = olditem;
|
||||||
|
|
||||||
// Updates database
|
|
||||||
final float adenaRate = Config.RATE_DROP_AMOUNT_BY_ID.getOrDefault(Inventory.ADENA_ID, 1f);
|
|
||||||
if ((item.getId() == Inventory.ADENA_ID) && (count < (10000 * adenaRate)))
|
|
||||||
{
|
|
||||||
// Small adena changes won't be saved to database all the time
|
|
||||||
if ((GameTimeController.getInstance().getGameTicks() % 5) == 0)
|
|
||||||
{
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
// If item hasn't be found in inventory, create new one
|
else // If item hasn't be found in inventory, create new one
|
||||||
else
|
|
||||||
{
|
{
|
||||||
item.setOwnerId(process, getOwnerId(), actor, reference);
|
item.setOwnerId(process, getOwnerId(), actor, reference);
|
||||||
item.setItemLocation(getBaseLocation());
|
item.setItemLocation(getBaseLocation());
|
||||||
@@ -235,9 +218,6 @@ public abstract class ItemContainer
|
|||||||
|
|
||||||
// Add item in inventory
|
// Add item in inventory
|
||||||
addItem(item);
|
addItem(item);
|
||||||
|
|
||||||
// Updates database
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
refreshWeight();
|
refreshWeight();
|
||||||
@@ -262,24 +242,8 @@ public abstract class ItemContainer
|
|||||||
{
|
{
|
||||||
item.changeCount(process, count, actor, reference);
|
item.changeCount(process, count, actor, reference);
|
||||||
item.setLastChange(ItemInstance.MODIFIED);
|
item.setLastChange(ItemInstance.MODIFIED);
|
||||||
// Updates database
|
|
||||||
// If Adena drop rate is not present it will be x1.
|
|
||||||
final float adenaRate = Config.RATE_DROP_AMOUNT_BY_ID.getOrDefault(Inventory.ADENA_ID, 1f);
|
|
||||||
if ((itemId == Inventory.ADENA_ID) && (count < (10000 * adenaRate)))
|
|
||||||
{
|
|
||||||
// Small adena changes won't be saved to database all the time
|
|
||||||
if ((GameTimeController.getInstance().getGameTicks() % 5) == 0)
|
|
||||||
{
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
// If item hasn't be found in inventory, create new one
|
else // If item hasn't be found in inventory, create new one
|
||||||
else
|
|
||||||
{
|
{
|
||||||
for (int i = 0; i < count; i++)
|
for (int i = 0; i < count; i++)
|
||||||
{
|
{
|
||||||
@@ -297,8 +261,6 @@ public abstract class ItemContainer
|
|||||||
|
|
||||||
// Add item in inventory
|
// Add item in inventory
|
||||||
addItem(item);
|
addItem(item);
|
||||||
// Updates database
|
|
||||||
item.updateDatabase();
|
|
||||||
|
|
||||||
// If stackable, end loop as entire count is included in 1 instance of item
|
// If stackable, end loop as entire count is included in 1 instance of item
|
||||||
if (template.isStackable() || !Config.MULTIPLE_ITEM_DROP)
|
if (template.isStackable() || !Config.MULTIPLE_ITEM_DROP)
|
||||||
@@ -334,8 +296,8 @@ public abstract class ItemContainer
|
|||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
ItemInstance targetitem = sourceitem.isStackable() ? target.getItemByItemId(sourceitem.getId()) : null;
|
|
||||||
|
|
||||||
|
ItemInstance targetitem = sourceitem.isStackable() ? target.getItemByItemId(sourceitem.getId()) : null;
|
||||||
synchronized (sourceitem)
|
synchronized (sourceitem)
|
||||||
{
|
{
|
||||||
// check if this item still present in this container
|
// check if this item still present in this container
|
||||||
@@ -363,8 +325,7 @@ public abstract class ItemContainer
|
|||||||
{
|
{
|
||||||
sourceitem.changeCount(process, -count, actor, reference);
|
sourceitem.changeCount(process, -count, actor, reference);
|
||||||
}
|
}
|
||||||
else
|
else // Otherwise destroy old item
|
||||||
// Otherwise destroy old item
|
|
||||||
{
|
{
|
||||||
removeItem(sourceitem);
|
removeItem(sourceitem);
|
||||||
ItemTable.getInstance().destroyItem(process, sourceitem, actor, reference);
|
ItemTable.getInstance().destroyItem(process, sourceitem, actor, reference);
|
||||||
@@ -374,8 +335,7 @@ public abstract class ItemContainer
|
|||||||
{
|
{
|
||||||
targetitem.changeCount(process, count, actor, reference);
|
targetitem.changeCount(process, count, actor, reference);
|
||||||
}
|
}
|
||||||
else
|
else // Otherwise add new item
|
||||||
// Otherwise add new item
|
|
||||||
{
|
{
|
||||||
targetitem = target.addItem(process, sourceitem.getId(), count, actor, reference);
|
targetitem = target.addItem(process, sourceitem.getId(), count, actor, reference);
|
||||||
}
|
}
|
||||||
@@ -437,6 +397,7 @@ public abstract class ItemContainer
|
|||||||
item = ItemTable.getInstance().createItem(process, item.getId(), count, actor, reference);
|
item = ItemTable.getInstance().createItem(process, item.getId(), count, actor, reference);
|
||||||
item.setOwnerId(getOwnerId());
|
item.setOwnerId(getOwnerId());
|
||||||
}
|
}
|
||||||
|
|
||||||
item.setItemLocation(newLocation);
|
item.setItemLocation(newLocation);
|
||||||
item.updateDatabase(true);
|
item.updateDatabase(true);
|
||||||
}
|
}
|
||||||
@@ -497,13 +458,6 @@ public abstract class ItemContainer
|
|||||||
{
|
{
|
||||||
item.changeCount(process, -count, actor, reference);
|
item.changeCount(process, -count, actor, reference);
|
||||||
item.setLastChange(ItemInstance.MODIFIED);
|
item.setLastChange(ItemInstance.MODIFIED);
|
||||||
|
|
||||||
// don't update often for untraced items
|
|
||||||
if ((process != null) || ((GameTimeController.getInstance().getGameTicks() % 10) == 0))
|
|
||||||
{
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
|
||||||
|
|
||||||
refreshWeight();
|
refreshWeight();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -970,6 +970,8 @@ public class ItemInstance extends WorldObject
|
|||||||
{
|
{
|
||||||
updateItemOptions();
|
updateItemOptions();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Notify to scripts.
|
||||||
EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getItem());
|
EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getItem());
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,7 +30,6 @@ import java.util.stream.Collectors;
|
|||||||
|
|
||||||
import org.l2jmobius.Config;
|
import org.l2jmobius.Config;
|
||||||
import org.l2jmobius.commons.database.DatabaseFactory;
|
import org.l2jmobius.commons.database.DatabaseFactory;
|
||||||
import org.l2jmobius.gameserver.GameTimeController;
|
|
||||||
import org.l2jmobius.gameserver.datatables.ItemTable;
|
import org.l2jmobius.gameserver.datatables.ItemTable;
|
||||||
import org.l2jmobius.gameserver.enums.ItemLocation;
|
import org.l2jmobius.gameserver.enums.ItemLocation;
|
||||||
import org.l2jmobius.gameserver.model.World;
|
import org.l2jmobius.gameserver.model.World;
|
||||||
@@ -210,24 +209,8 @@ public abstract class ItemContainer
|
|||||||
ItemTable.getInstance().destroyItem(process, item, actor, reference);
|
ItemTable.getInstance().destroyItem(process, item, actor, reference);
|
||||||
item.updateDatabase();
|
item.updateDatabase();
|
||||||
item = olditem;
|
item = olditem;
|
||||||
|
|
||||||
// Updates database
|
|
||||||
final float adenaRate = Config.RATE_DROP_AMOUNT_BY_ID.getOrDefault(Inventory.ADENA_ID, 1f);
|
|
||||||
if ((item.getId() == Inventory.ADENA_ID) && (count < (10000 * adenaRate)))
|
|
||||||
{
|
|
||||||
// Small adena changes won't be saved to database all the time
|
|
||||||
if ((GameTimeController.getInstance().getGameTicks() % 5) == 0)
|
|
||||||
{
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
// If item hasn't be found in inventory, create new one
|
else // If item hasn't be found in inventory, create new one
|
||||||
else
|
|
||||||
{
|
{
|
||||||
item.setOwnerId(process, getOwnerId(), actor, reference);
|
item.setOwnerId(process, getOwnerId(), actor, reference);
|
||||||
item.setItemLocation(getBaseLocation());
|
item.setItemLocation(getBaseLocation());
|
||||||
@@ -235,9 +218,6 @@ public abstract class ItemContainer
|
|||||||
|
|
||||||
// Add item in inventory
|
// Add item in inventory
|
||||||
addItem(item);
|
addItem(item);
|
||||||
|
|
||||||
// Updates database
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
refreshWeight();
|
refreshWeight();
|
||||||
@@ -262,24 +242,8 @@ public abstract class ItemContainer
|
|||||||
{
|
{
|
||||||
item.changeCount(process, count, actor, reference);
|
item.changeCount(process, count, actor, reference);
|
||||||
item.setLastChange(ItemInstance.MODIFIED);
|
item.setLastChange(ItemInstance.MODIFIED);
|
||||||
// Updates database
|
|
||||||
// If Adena drop rate is not present it will be x1.
|
|
||||||
final float adenaRate = Config.RATE_DROP_AMOUNT_BY_ID.getOrDefault(Inventory.ADENA_ID, 1f);
|
|
||||||
if ((itemId == Inventory.ADENA_ID) && (count < (10000 * adenaRate)))
|
|
||||||
{
|
|
||||||
// Small adena changes won't be saved to database all the time
|
|
||||||
if ((GameTimeController.getInstance().getGameTicks() % 5) == 0)
|
|
||||||
{
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
// If item hasn't be found in inventory, create new one
|
else // If item hasn't be found in inventory, create new one
|
||||||
else
|
|
||||||
{
|
{
|
||||||
for (int i = 0; i < count; i++)
|
for (int i = 0; i < count; i++)
|
||||||
{
|
{
|
||||||
@@ -297,8 +261,6 @@ public abstract class ItemContainer
|
|||||||
|
|
||||||
// Add item in inventory
|
// Add item in inventory
|
||||||
addItem(item);
|
addItem(item);
|
||||||
// Updates database
|
|
||||||
item.updateDatabase();
|
|
||||||
|
|
||||||
// If stackable, end loop as entire count is included in 1 instance of item
|
// If stackable, end loop as entire count is included in 1 instance of item
|
||||||
if (template.isStackable() || !Config.MULTIPLE_ITEM_DROP)
|
if (template.isStackable() || !Config.MULTIPLE_ITEM_DROP)
|
||||||
@@ -334,8 +296,8 @@ public abstract class ItemContainer
|
|||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
ItemInstance targetitem = sourceitem.isStackable() ? target.getItemByItemId(sourceitem.getId()) : null;
|
|
||||||
|
|
||||||
|
ItemInstance targetitem = sourceitem.isStackable() ? target.getItemByItemId(sourceitem.getId()) : null;
|
||||||
synchronized (sourceitem)
|
synchronized (sourceitem)
|
||||||
{
|
{
|
||||||
// check if this item still present in this container
|
// check if this item still present in this container
|
||||||
@@ -363,8 +325,7 @@ public abstract class ItemContainer
|
|||||||
{
|
{
|
||||||
sourceitem.changeCount(process, -count, actor, reference);
|
sourceitem.changeCount(process, -count, actor, reference);
|
||||||
}
|
}
|
||||||
else
|
else // Otherwise destroy old item
|
||||||
// Otherwise destroy old item
|
|
||||||
{
|
{
|
||||||
removeItem(sourceitem);
|
removeItem(sourceitem);
|
||||||
ItemTable.getInstance().destroyItem(process, sourceitem, actor, reference);
|
ItemTable.getInstance().destroyItem(process, sourceitem, actor, reference);
|
||||||
@@ -374,8 +335,7 @@ public abstract class ItemContainer
|
|||||||
{
|
{
|
||||||
targetitem.changeCount(process, count, actor, reference);
|
targetitem.changeCount(process, count, actor, reference);
|
||||||
}
|
}
|
||||||
else
|
else // Otherwise add new item
|
||||||
// Otherwise add new item
|
|
||||||
{
|
{
|
||||||
targetitem = target.addItem(process, sourceitem.getId(), count, actor, reference);
|
targetitem = target.addItem(process, sourceitem.getId(), count, actor, reference);
|
||||||
}
|
}
|
||||||
@@ -437,6 +397,7 @@ public abstract class ItemContainer
|
|||||||
item = ItemTable.getInstance().createItem(process, item.getId(), count, actor, reference);
|
item = ItemTable.getInstance().createItem(process, item.getId(), count, actor, reference);
|
||||||
item.setOwnerId(getOwnerId());
|
item.setOwnerId(getOwnerId());
|
||||||
}
|
}
|
||||||
|
|
||||||
item.setItemLocation(newLocation);
|
item.setItemLocation(newLocation);
|
||||||
item.updateDatabase(true);
|
item.updateDatabase(true);
|
||||||
}
|
}
|
||||||
@@ -497,13 +458,6 @@ public abstract class ItemContainer
|
|||||||
{
|
{
|
||||||
item.changeCount(process, -count, actor, reference);
|
item.changeCount(process, -count, actor, reference);
|
||||||
item.setLastChange(ItemInstance.MODIFIED);
|
item.setLastChange(ItemInstance.MODIFIED);
|
||||||
|
|
||||||
// don't update often for untraced items
|
|
||||||
if ((process != null) || ((GameTimeController.getInstance().getGameTicks() % 10) == 0))
|
|
||||||
{
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
|
||||||
|
|
||||||
refreshWeight();
|
refreshWeight();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -970,6 +970,8 @@ public class ItemInstance extends WorldObject
|
|||||||
{
|
{
|
||||||
updateItemOptions();
|
updateItemOptions();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Notify to scripts.
|
||||||
EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getItem());
|
EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getItem());
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,7 +30,6 @@ import java.util.stream.Collectors;
|
|||||||
|
|
||||||
import org.l2jmobius.Config;
|
import org.l2jmobius.Config;
|
||||||
import org.l2jmobius.commons.database.DatabaseFactory;
|
import org.l2jmobius.commons.database.DatabaseFactory;
|
||||||
import org.l2jmobius.gameserver.GameTimeController;
|
|
||||||
import org.l2jmobius.gameserver.datatables.ItemTable;
|
import org.l2jmobius.gameserver.datatables.ItemTable;
|
||||||
import org.l2jmobius.gameserver.enums.ItemLocation;
|
import org.l2jmobius.gameserver.enums.ItemLocation;
|
||||||
import org.l2jmobius.gameserver.model.World;
|
import org.l2jmobius.gameserver.model.World;
|
||||||
@@ -210,24 +209,8 @@ public abstract class ItemContainer
|
|||||||
ItemTable.getInstance().destroyItem(process, item, actor, reference);
|
ItemTable.getInstance().destroyItem(process, item, actor, reference);
|
||||||
item.updateDatabase();
|
item.updateDatabase();
|
||||||
item = olditem;
|
item = olditem;
|
||||||
|
|
||||||
// Updates database
|
|
||||||
final float adenaRate = Config.RATE_DROP_AMOUNT_BY_ID.getOrDefault(Inventory.ADENA_ID, 1f);
|
|
||||||
if ((item.getId() == Inventory.ADENA_ID) && (count < (10000 * adenaRate)))
|
|
||||||
{
|
|
||||||
// Small adena changes won't be saved to database all the time
|
|
||||||
if ((GameTimeController.getInstance().getGameTicks() % 5) == 0)
|
|
||||||
{
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
// If item hasn't be found in inventory, create new one
|
else // If item hasn't be found in inventory, create new one
|
||||||
else
|
|
||||||
{
|
{
|
||||||
item.setOwnerId(process, getOwnerId(), actor, reference);
|
item.setOwnerId(process, getOwnerId(), actor, reference);
|
||||||
item.setItemLocation(getBaseLocation());
|
item.setItemLocation(getBaseLocation());
|
||||||
@@ -235,9 +218,6 @@ public abstract class ItemContainer
|
|||||||
|
|
||||||
// Add item in inventory
|
// Add item in inventory
|
||||||
addItem(item);
|
addItem(item);
|
||||||
|
|
||||||
// Updates database
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
refreshWeight();
|
refreshWeight();
|
||||||
@@ -262,24 +242,8 @@ public abstract class ItemContainer
|
|||||||
{
|
{
|
||||||
item.changeCount(process, count, actor, reference);
|
item.changeCount(process, count, actor, reference);
|
||||||
item.setLastChange(ItemInstance.MODIFIED);
|
item.setLastChange(ItemInstance.MODIFIED);
|
||||||
// Updates database
|
|
||||||
// If Adena drop rate is not present it will be x1.
|
|
||||||
final float adenaRate = Config.RATE_DROP_AMOUNT_BY_ID.getOrDefault(Inventory.ADENA_ID, 1f);
|
|
||||||
if ((itemId == Inventory.ADENA_ID) && (count < (10000 * adenaRate)))
|
|
||||||
{
|
|
||||||
// Small adena changes won't be saved to database all the time
|
|
||||||
if ((GameTimeController.getInstance().getGameTicks() % 5) == 0)
|
|
||||||
{
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
// If item hasn't be found in inventory, create new one
|
else // If item hasn't be found in inventory, create new one
|
||||||
else
|
|
||||||
{
|
{
|
||||||
for (int i = 0; i < count; i++)
|
for (int i = 0; i < count; i++)
|
||||||
{
|
{
|
||||||
@@ -297,8 +261,6 @@ public abstract class ItemContainer
|
|||||||
|
|
||||||
// Add item in inventory
|
// Add item in inventory
|
||||||
addItem(item);
|
addItem(item);
|
||||||
// Updates database
|
|
||||||
item.updateDatabase();
|
|
||||||
|
|
||||||
// If stackable, end loop as entire count is included in 1 instance of item
|
// If stackable, end loop as entire count is included in 1 instance of item
|
||||||
if (template.isStackable() || !Config.MULTIPLE_ITEM_DROP)
|
if (template.isStackable() || !Config.MULTIPLE_ITEM_DROP)
|
||||||
@@ -334,8 +296,8 @@ public abstract class ItemContainer
|
|||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
ItemInstance targetitem = sourceitem.isStackable() ? target.getItemByItemId(sourceitem.getId()) : null;
|
|
||||||
|
|
||||||
|
ItemInstance targetitem = sourceitem.isStackable() ? target.getItemByItemId(sourceitem.getId()) : null;
|
||||||
synchronized (sourceitem)
|
synchronized (sourceitem)
|
||||||
{
|
{
|
||||||
// check if this item still present in this container
|
// check if this item still present in this container
|
||||||
@@ -363,8 +325,7 @@ public abstract class ItemContainer
|
|||||||
{
|
{
|
||||||
sourceitem.changeCount(process, -count, actor, reference);
|
sourceitem.changeCount(process, -count, actor, reference);
|
||||||
}
|
}
|
||||||
else
|
else // Otherwise destroy old item
|
||||||
// Otherwise destroy old item
|
|
||||||
{
|
{
|
||||||
removeItem(sourceitem);
|
removeItem(sourceitem);
|
||||||
ItemTable.getInstance().destroyItem(process, sourceitem, actor, reference);
|
ItemTable.getInstance().destroyItem(process, sourceitem, actor, reference);
|
||||||
@@ -374,8 +335,7 @@ public abstract class ItemContainer
|
|||||||
{
|
{
|
||||||
targetitem.changeCount(process, count, actor, reference);
|
targetitem.changeCount(process, count, actor, reference);
|
||||||
}
|
}
|
||||||
else
|
else // Otherwise add new item
|
||||||
// Otherwise add new item
|
|
||||||
{
|
{
|
||||||
targetitem = target.addItem(process, sourceitem.getId(), count, actor, reference);
|
targetitem = target.addItem(process, sourceitem.getId(), count, actor, reference);
|
||||||
}
|
}
|
||||||
@@ -437,6 +397,7 @@ public abstract class ItemContainer
|
|||||||
item = ItemTable.getInstance().createItem(process, item.getId(), count, actor, reference);
|
item = ItemTable.getInstance().createItem(process, item.getId(), count, actor, reference);
|
||||||
item.setOwnerId(getOwnerId());
|
item.setOwnerId(getOwnerId());
|
||||||
}
|
}
|
||||||
|
|
||||||
item.setItemLocation(newLocation);
|
item.setItemLocation(newLocation);
|
||||||
item.updateDatabase(true);
|
item.updateDatabase(true);
|
||||||
}
|
}
|
||||||
@@ -497,13 +458,6 @@ public abstract class ItemContainer
|
|||||||
{
|
{
|
||||||
item.changeCount(process, -count, actor, reference);
|
item.changeCount(process, -count, actor, reference);
|
||||||
item.setLastChange(ItemInstance.MODIFIED);
|
item.setLastChange(ItemInstance.MODIFIED);
|
||||||
|
|
||||||
// don't update often for untraced items
|
|
||||||
if ((process != null) || ((GameTimeController.getInstance().getGameTicks() % 10) == 0))
|
|
||||||
{
|
|
||||||
item.updateDatabase();
|
|
||||||
}
|
|
||||||
|
|
||||||
refreshWeight();
|
refreshWeight();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -970,6 +970,8 @@ public class ItemInstance extends WorldObject
|
|||||||
{
|
{
|
||||||
updateItemOptions();
|
updateItemOptions();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Notify to scripts.
|
||||||
EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getItem());
|
EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getItem());
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user