From 5fe7e70c0876548751ad82accdc601caf1c36be9 Mon Sep 17 00:00:00 2001 From: MobiusDevelopment <8391001+MobiusDevelopment@users.noreply.github.com> Date: Tue, 31 Mar 2020 09:27:44 +0000 Subject: [PATCH] Reduce item creation store queries. --- .../model/itemcontainer/ItemContainer.java | 58 ++----------------- .../model/items/instance/ItemInstance.java | 2 + .../model/itemcontainer/ItemContainer.java | 58 ++----------------- .../model/items/instance/ItemInstance.java | 2 + .../model/itemcontainer/ItemContainer.java | 58 ++----------------- .../model/items/instance/ItemInstance.java | 2 + .../model/itemcontainer/ItemContainer.java | 58 ++----------------- .../model/items/instance/ItemInstance.java | 2 + .../model/itemcontainer/ItemContainer.java | 58 ++----------------- .../model/items/instance/ItemInstance.java | 2 + .../model/itemcontainer/ItemContainer.java | 58 ++----------------- .../model/items/instance/ItemInstance.java | 2 + .../model/itemcontainer/ItemContainer.java | 58 ++----------------- .../model/items/instance/ItemInstance.java | 2 + .../model/itemcontainer/ItemContainer.java | 58 ++----------------- .../model/items/instance/ItemInstance.java | 2 + .../model/itemcontainer/ItemContainer.java | 54 ++--------------- .../model/items/instance/ItemInstance.java | 2 + .../model/itemcontainer/ItemContainer.java | 54 ++--------------- .../model/items/instance/ItemInstance.java | 2 + .../model/itemcontainer/ItemContainer.java | 58 ++----------------- .../model/items/instance/ItemInstance.java | 2 + .../model/itemcontainer/ItemContainer.java | 58 ++----------------- .../model/items/instance/ItemInstance.java | 2 + .../model/itemcontainer/ItemContainer.java | 58 ++----------------- .../model/items/instance/ItemInstance.java | 2 + .../model/itemcontainer/ItemContainer.java | 58 ++----------------- .../model/items/instance/ItemInstance.java | 2 + .../model/itemcontainer/ItemContainer.java | 58 ++----------------- .../model/items/instance/ItemInstance.java | 2 + .../model/itemcontainer/ItemContainer.java | 58 ++----------------- .../model/items/instance/ItemInstance.java | 2 + .../model/itemcontainer/ItemContainer.java | 58 ++----------------- .../model/items/instance/ItemInstance.java | 2 + 34 files changed, 134 insertions(+), 878 deletions(-) diff --git a/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/model/itemcontainer/ItemContainer.java b/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/model/itemcontainer/ItemContainer.java index 2e5f90dcee..e3a3c3ec44 100644 --- a/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/model/itemcontainer/ItemContainer.java +++ b/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/model/itemcontainer/ItemContainer.java @@ -30,7 +30,6 @@ import java.util.stream.Collectors; import org.l2jmobius.Config; import org.l2jmobius.commons.database.DatabaseFactory; -import org.l2jmobius.gameserver.GameTimeController; import org.l2jmobius.gameserver.datatables.ItemTable; import org.l2jmobius.gameserver.enums.ItemLocation; import org.l2jmobius.gameserver.model.World; @@ -210,24 +209,8 @@ public abstract class ItemContainer ItemTable.getInstance().destroyItem(process, item, actor, reference); item.updateDatabase(); 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 + else // If item hasn't be found in inventory, create new one { item.setOwnerId(process, getOwnerId(), actor, reference); item.setItemLocation(getBaseLocation()); @@ -235,9 +218,6 @@ public abstract class ItemContainer // Add item in inventory addItem(item); - - // Updates database - item.updateDatabase(); } refreshWeight(); @@ -262,24 +242,8 @@ public abstract class ItemContainer { item.changeCount(process, count, actor, reference); 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 + else // If item hasn't be found in inventory, create new one { for (int i = 0; i < count; i++) { @@ -297,8 +261,6 @@ public abstract class ItemContainer // Add item in inventory addItem(item); - // Updates database - item.updateDatabase(); // If stackable, end loop as entire count is included in 1 instance of item if (template.isStackable() || !Config.MULTIPLE_ITEM_DROP) @@ -334,8 +296,8 @@ public abstract class ItemContainer { return null; } - ItemInstance targetitem = sourceitem.isStackable() ? target.getItemByItemId(sourceitem.getId()) : null; + ItemInstance targetitem = sourceitem.isStackable() ? target.getItemByItemId(sourceitem.getId()) : null; synchronized (sourceitem) { // check if this item still present in this container @@ -363,8 +325,7 @@ public abstract class ItemContainer { sourceitem.changeCount(process, -count, actor, reference); } - else - // Otherwise destroy old item + else // Otherwise destroy old item { removeItem(sourceitem); ItemTable.getInstance().destroyItem(process, sourceitem, actor, reference); @@ -374,8 +335,7 @@ public abstract class ItemContainer { targetitem.changeCount(process, count, actor, reference); } - else - // Otherwise add new item + else // Otherwise add new item { 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.setOwnerId(getOwnerId()); } + item.setItemLocation(newLocation); item.updateDatabase(true); } @@ -497,13 +458,6 @@ public abstract class ItemContainer { item.changeCount(process, -count, actor, reference); item.setLastChange(ItemInstance.MODIFIED); - - // don't update often for untraced items - if ((process != null) || ((GameTimeController.getInstance().getGameTicks() % 10) == 0)) - { - item.updateDatabase(); - } - refreshWeight(); } else diff --git a/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/model/items/instance/ItemInstance.java b/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/model/items/instance/ItemInstance.java index bca24faebd..b0bb3ea0a8 100644 --- a/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/model/items/instance/ItemInstance.java +++ b/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/model/items/instance/ItemInstance.java @@ -969,6 +969,8 @@ public class ItemInstance extends WorldObject { updateItemOptions(); } + + // Notify to scripts. EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getItem()); return true; } diff --git a/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/model/itemcontainer/ItemContainer.java b/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/model/itemcontainer/ItemContainer.java index 2e5f90dcee..e3a3c3ec44 100644 --- a/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/model/itemcontainer/ItemContainer.java +++ b/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/model/itemcontainer/ItemContainer.java @@ -30,7 +30,6 @@ import java.util.stream.Collectors; import org.l2jmobius.Config; import org.l2jmobius.commons.database.DatabaseFactory; -import org.l2jmobius.gameserver.GameTimeController; import org.l2jmobius.gameserver.datatables.ItemTable; import org.l2jmobius.gameserver.enums.ItemLocation; import org.l2jmobius.gameserver.model.World; @@ -210,24 +209,8 @@ public abstract class ItemContainer ItemTable.getInstance().destroyItem(process, item, actor, reference); item.updateDatabase(); 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 + else // If item hasn't be found in inventory, create new one { item.setOwnerId(process, getOwnerId(), actor, reference); item.setItemLocation(getBaseLocation()); @@ -235,9 +218,6 @@ public abstract class ItemContainer // Add item in inventory addItem(item); - - // Updates database - item.updateDatabase(); } refreshWeight(); @@ -262,24 +242,8 @@ public abstract class ItemContainer { item.changeCount(process, count, actor, reference); 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 + else // If item hasn't be found in inventory, create new one { for (int i = 0; i < count; i++) { @@ -297,8 +261,6 @@ public abstract class ItemContainer // Add item in inventory addItem(item); - // Updates database - item.updateDatabase(); // If stackable, end loop as entire count is included in 1 instance of item if (template.isStackable() || !Config.MULTIPLE_ITEM_DROP) @@ -334,8 +296,8 @@ public abstract class ItemContainer { return null; } - ItemInstance targetitem = sourceitem.isStackable() ? target.getItemByItemId(sourceitem.getId()) : null; + ItemInstance targetitem = sourceitem.isStackable() ? target.getItemByItemId(sourceitem.getId()) : null; synchronized (sourceitem) { // check if this item still present in this container @@ -363,8 +325,7 @@ public abstract class ItemContainer { sourceitem.changeCount(process, -count, actor, reference); } - else - // Otherwise destroy old item + else // Otherwise destroy old item { removeItem(sourceitem); ItemTable.getInstance().destroyItem(process, sourceitem, actor, reference); @@ -374,8 +335,7 @@ public abstract class ItemContainer { targetitem.changeCount(process, count, actor, reference); } - else - // Otherwise add new item + else // Otherwise add new item { 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.setOwnerId(getOwnerId()); } + item.setItemLocation(newLocation); item.updateDatabase(true); } @@ -497,13 +458,6 @@ public abstract class ItemContainer { item.changeCount(process, -count, actor, reference); item.setLastChange(ItemInstance.MODIFIED); - - // don't update often for untraced items - if ((process != null) || ((GameTimeController.getInstance().getGameTicks() % 10) == 0)) - { - item.updateDatabase(); - } - refreshWeight(); } else diff --git a/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/model/items/instance/ItemInstance.java b/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/model/items/instance/ItemInstance.java index 75c4055f84..0df266fc91 100644 --- a/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/model/items/instance/ItemInstance.java +++ b/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/model/items/instance/ItemInstance.java @@ -970,6 +970,8 @@ public class ItemInstance extends WorldObject { updateItemOptions(); } + + // Notify to scripts. EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getItem()); return true; } diff --git a/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/model/itemcontainer/ItemContainer.java b/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/model/itemcontainer/ItemContainer.java index 2e5f90dcee..e3a3c3ec44 100644 --- a/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/model/itemcontainer/ItemContainer.java +++ b/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/model/itemcontainer/ItemContainer.java @@ -30,7 +30,6 @@ import java.util.stream.Collectors; import org.l2jmobius.Config; import org.l2jmobius.commons.database.DatabaseFactory; -import org.l2jmobius.gameserver.GameTimeController; import org.l2jmobius.gameserver.datatables.ItemTable; import org.l2jmobius.gameserver.enums.ItemLocation; import org.l2jmobius.gameserver.model.World; @@ -210,24 +209,8 @@ public abstract class ItemContainer ItemTable.getInstance().destroyItem(process, item, actor, reference); item.updateDatabase(); 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 + else // If item hasn't be found in inventory, create new one { item.setOwnerId(process, getOwnerId(), actor, reference); item.setItemLocation(getBaseLocation()); @@ -235,9 +218,6 @@ public abstract class ItemContainer // Add item in inventory addItem(item); - - // Updates database - item.updateDatabase(); } refreshWeight(); @@ -262,24 +242,8 @@ public abstract class ItemContainer { item.changeCount(process, count, actor, reference); 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 + else // If item hasn't be found in inventory, create new one { for (int i = 0; i < count; i++) { @@ -297,8 +261,6 @@ public abstract class ItemContainer // Add item in inventory addItem(item); - // Updates database - item.updateDatabase(); // If stackable, end loop as entire count is included in 1 instance of item if (template.isStackable() || !Config.MULTIPLE_ITEM_DROP) @@ -334,8 +296,8 @@ public abstract class ItemContainer { return null; } - ItemInstance targetitem = sourceitem.isStackable() ? target.getItemByItemId(sourceitem.getId()) : null; + ItemInstance targetitem = sourceitem.isStackable() ? target.getItemByItemId(sourceitem.getId()) : null; synchronized (sourceitem) { // check if this item still present in this container @@ -363,8 +325,7 @@ public abstract class ItemContainer { sourceitem.changeCount(process, -count, actor, reference); } - else - // Otherwise destroy old item + else // Otherwise destroy old item { removeItem(sourceitem); ItemTable.getInstance().destroyItem(process, sourceitem, actor, reference); @@ -374,8 +335,7 @@ public abstract class ItemContainer { targetitem.changeCount(process, count, actor, reference); } - else - // Otherwise add new item + else // Otherwise add new item { 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.setOwnerId(getOwnerId()); } + item.setItemLocation(newLocation); item.updateDatabase(true); } @@ -497,13 +458,6 @@ public abstract class ItemContainer { item.changeCount(process, -count, actor, reference); item.setLastChange(ItemInstance.MODIFIED); - - // don't update often for untraced items - if ((process != null) || ((GameTimeController.getInstance().getGameTicks() % 10) == 0)) - { - item.updateDatabase(); - } - refreshWeight(); } else diff --git a/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/model/items/instance/ItemInstance.java b/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/model/items/instance/ItemInstance.java index 75c4055f84..0df266fc91 100644 --- a/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/model/items/instance/ItemInstance.java +++ b/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/model/items/instance/ItemInstance.java @@ -970,6 +970,8 @@ public class ItemInstance extends WorldObject { updateItemOptions(); } + + // Notify to scripts. EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getItem()); return true; } diff --git a/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/model/itemcontainer/ItemContainer.java b/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/model/itemcontainer/ItemContainer.java index 2e5f90dcee..e3a3c3ec44 100644 --- a/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/model/itemcontainer/ItemContainer.java +++ b/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/model/itemcontainer/ItemContainer.java @@ -30,7 +30,6 @@ import java.util.stream.Collectors; import org.l2jmobius.Config; import org.l2jmobius.commons.database.DatabaseFactory; -import org.l2jmobius.gameserver.GameTimeController; import org.l2jmobius.gameserver.datatables.ItemTable; import org.l2jmobius.gameserver.enums.ItemLocation; import org.l2jmobius.gameserver.model.World; @@ -210,24 +209,8 @@ public abstract class ItemContainer ItemTable.getInstance().destroyItem(process, item, actor, reference); item.updateDatabase(); 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 + else // If item hasn't be found in inventory, create new one { item.setOwnerId(process, getOwnerId(), actor, reference); item.setItemLocation(getBaseLocation()); @@ -235,9 +218,6 @@ public abstract class ItemContainer // Add item in inventory addItem(item); - - // Updates database - item.updateDatabase(); } refreshWeight(); @@ -262,24 +242,8 @@ public abstract class ItemContainer { item.changeCount(process, count, actor, reference); 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 + else // If item hasn't be found in inventory, create new one { for (int i = 0; i < count; i++) { @@ -297,8 +261,6 @@ public abstract class ItemContainer // Add item in inventory addItem(item); - // Updates database - item.updateDatabase(); // If stackable, end loop as entire count is included in 1 instance of item if (template.isStackable() || !Config.MULTIPLE_ITEM_DROP) @@ -334,8 +296,8 @@ public abstract class ItemContainer { return null; } - ItemInstance targetitem = sourceitem.isStackable() ? target.getItemByItemId(sourceitem.getId()) : null; + ItemInstance targetitem = sourceitem.isStackable() ? target.getItemByItemId(sourceitem.getId()) : null; synchronized (sourceitem) { // check if this item still present in this container @@ -363,8 +325,7 @@ public abstract class ItemContainer { sourceitem.changeCount(process, -count, actor, reference); } - else - // Otherwise destroy old item + else // Otherwise destroy old item { removeItem(sourceitem); ItemTable.getInstance().destroyItem(process, sourceitem, actor, reference); @@ -374,8 +335,7 @@ public abstract class ItemContainer { targetitem.changeCount(process, count, actor, reference); } - else - // Otherwise add new item + else // Otherwise add new item { 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.setOwnerId(getOwnerId()); } + item.setItemLocation(newLocation); item.updateDatabase(true); } @@ -497,13 +458,6 @@ public abstract class ItemContainer { item.changeCount(process, -count, actor, reference); item.setLastChange(ItemInstance.MODIFIED); - - // don't update often for untraced items - if ((process != null) || ((GameTimeController.getInstance().getGameTicks() % 10) == 0)) - { - item.updateDatabase(); - } - refreshWeight(); } else diff --git a/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/model/items/instance/ItemInstance.java b/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/model/items/instance/ItemInstance.java index 61975f55ff..e4d1058af6 100644 --- a/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/model/items/instance/ItemInstance.java +++ b/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/model/items/instance/ItemInstance.java @@ -970,6 +970,8 @@ public class ItemInstance extends WorldObject { updateItemOptions(); } + + // Notify to scripts. EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getItem()); return true; } diff --git a/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/model/itemcontainer/ItemContainer.java b/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/model/itemcontainer/ItemContainer.java index 2e5f90dcee..e3a3c3ec44 100644 --- a/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/model/itemcontainer/ItemContainer.java +++ b/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/model/itemcontainer/ItemContainer.java @@ -30,7 +30,6 @@ import java.util.stream.Collectors; import org.l2jmobius.Config; import org.l2jmobius.commons.database.DatabaseFactory; -import org.l2jmobius.gameserver.GameTimeController; import org.l2jmobius.gameserver.datatables.ItemTable; import org.l2jmobius.gameserver.enums.ItemLocation; import org.l2jmobius.gameserver.model.World; @@ -210,24 +209,8 @@ public abstract class ItemContainer ItemTable.getInstance().destroyItem(process, item, actor, reference); item.updateDatabase(); 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 + else // If item hasn't be found in inventory, create new one { item.setOwnerId(process, getOwnerId(), actor, reference); item.setItemLocation(getBaseLocation()); @@ -235,9 +218,6 @@ public abstract class ItemContainer // Add item in inventory addItem(item); - - // Updates database - item.updateDatabase(); } refreshWeight(); @@ -262,24 +242,8 @@ public abstract class ItemContainer { item.changeCount(process, count, actor, reference); 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 + else // If item hasn't be found in inventory, create new one { for (int i = 0; i < count; i++) { @@ -297,8 +261,6 @@ public abstract class ItemContainer // Add item in inventory addItem(item); - // Updates database - item.updateDatabase(); // If stackable, end loop as entire count is included in 1 instance of item if (template.isStackable() || !Config.MULTIPLE_ITEM_DROP) @@ -334,8 +296,8 @@ public abstract class ItemContainer { return null; } - ItemInstance targetitem = sourceitem.isStackable() ? target.getItemByItemId(sourceitem.getId()) : null; + ItemInstance targetitem = sourceitem.isStackable() ? target.getItemByItemId(sourceitem.getId()) : null; synchronized (sourceitem) { // check if this item still present in this container @@ -363,8 +325,7 @@ public abstract class ItemContainer { sourceitem.changeCount(process, -count, actor, reference); } - else - // Otherwise destroy old item + else // Otherwise destroy old item { removeItem(sourceitem); ItemTable.getInstance().destroyItem(process, sourceitem, actor, reference); @@ -374,8 +335,7 @@ public abstract class ItemContainer { targetitem.changeCount(process, count, actor, reference); } - else - // Otherwise add new item + else // Otherwise add new item { 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.setOwnerId(getOwnerId()); } + item.setItemLocation(newLocation); item.updateDatabase(true); } @@ -497,13 +458,6 @@ public abstract class ItemContainer { item.changeCount(process, -count, actor, reference); item.setLastChange(ItemInstance.MODIFIED); - - // don't update often for untraced items - if ((process != null) || ((GameTimeController.getInstance().getGameTicks() % 10) == 0)) - { - item.updateDatabase(); - } - refreshWeight(); } else diff --git a/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/model/items/instance/ItemInstance.java b/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/model/items/instance/ItemInstance.java index 22d4363975..78fe530040 100644 --- a/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/model/items/instance/ItemInstance.java +++ b/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/model/items/instance/ItemInstance.java @@ -976,6 +976,8 @@ public class ItemInstance extends WorldObject { updateItemOptions(); } + + // Notify to scripts. EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getItem()); return true; } diff --git a/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/model/itemcontainer/ItemContainer.java b/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/model/itemcontainer/ItemContainer.java index 2e5f90dcee..e3a3c3ec44 100644 --- a/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/model/itemcontainer/ItemContainer.java +++ b/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/model/itemcontainer/ItemContainer.java @@ -30,7 +30,6 @@ import java.util.stream.Collectors; import org.l2jmobius.Config; import org.l2jmobius.commons.database.DatabaseFactory; -import org.l2jmobius.gameserver.GameTimeController; import org.l2jmobius.gameserver.datatables.ItemTable; import org.l2jmobius.gameserver.enums.ItemLocation; import org.l2jmobius.gameserver.model.World; @@ -210,24 +209,8 @@ public abstract class ItemContainer ItemTable.getInstance().destroyItem(process, item, actor, reference); item.updateDatabase(); 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 + else // If item hasn't be found in inventory, create new one { item.setOwnerId(process, getOwnerId(), actor, reference); item.setItemLocation(getBaseLocation()); @@ -235,9 +218,6 @@ public abstract class ItemContainer // Add item in inventory addItem(item); - - // Updates database - item.updateDatabase(); } refreshWeight(); @@ -262,24 +242,8 @@ public abstract class ItemContainer { item.changeCount(process, count, actor, reference); 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 + else // If item hasn't be found in inventory, create new one { for (int i = 0; i < count; i++) { @@ -297,8 +261,6 @@ public abstract class ItemContainer // Add item in inventory addItem(item); - // Updates database - item.updateDatabase(); // If stackable, end loop as entire count is included in 1 instance of item if (template.isStackable() || !Config.MULTIPLE_ITEM_DROP) @@ -334,8 +296,8 @@ public abstract class ItemContainer { return null; } - ItemInstance targetitem = sourceitem.isStackable() ? target.getItemByItemId(sourceitem.getId()) : null; + ItemInstance targetitem = sourceitem.isStackable() ? target.getItemByItemId(sourceitem.getId()) : null; synchronized (sourceitem) { // check if this item still present in this container @@ -363,8 +325,7 @@ public abstract class ItemContainer { sourceitem.changeCount(process, -count, actor, reference); } - else - // Otherwise destroy old item + else // Otherwise destroy old item { removeItem(sourceitem); ItemTable.getInstance().destroyItem(process, sourceitem, actor, reference); @@ -374,8 +335,7 @@ public abstract class ItemContainer { targetitem.changeCount(process, count, actor, reference); } - else - // Otherwise add new item + else // Otherwise add new item { 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.setOwnerId(getOwnerId()); } + item.setItemLocation(newLocation); item.updateDatabase(true); } @@ -497,13 +458,6 @@ public abstract class ItemContainer { item.changeCount(process, -count, actor, reference); item.setLastChange(ItemInstance.MODIFIED); - - // don't update often for untraced items - if ((process != null) || ((GameTimeController.getInstance().getGameTicks() % 10) == 0)) - { - item.updateDatabase(); - } - refreshWeight(); } else diff --git a/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/model/items/instance/ItemInstance.java b/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/model/items/instance/ItemInstance.java index 22d4363975..78fe530040 100644 --- a/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/model/items/instance/ItemInstance.java +++ b/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/model/items/instance/ItemInstance.java @@ -976,6 +976,8 @@ public class ItemInstance extends WorldObject { updateItemOptions(); } + + // Notify to scripts. EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getItem()); return true; } diff --git a/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/model/itemcontainer/ItemContainer.java b/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/model/itemcontainer/ItemContainer.java index 2e5f90dcee..e3a3c3ec44 100644 --- a/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/model/itemcontainer/ItemContainer.java +++ b/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/model/itemcontainer/ItemContainer.java @@ -30,7 +30,6 @@ import java.util.stream.Collectors; import org.l2jmobius.Config; import org.l2jmobius.commons.database.DatabaseFactory; -import org.l2jmobius.gameserver.GameTimeController; import org.l2jmobius.gameserver.datatables.ItemTable; import org.l2jmobius.gameserver.enums.ItemLocation; import org.l2jmobius.gameserver.model.World; @@ -210,24 +209,8 @@ public abstract class ItemContainer ItemTable.getInstance().destroyItem(process, item, actor, reference); item.updateDatabase(); 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 + else // If item hasn't be found in inventory, create new one { item.setOwnerId(process, getOwnerId(), actor, reference); item.setItemLocation(getBaseLocation()); @@ -235,9 +218,6 @@ public abstract class ItemContainer // Add item in inventory addItem(item); - - // Updates database - item.updateDatabase(); } refreshWeight(); @@ -262,24 +242,8 @@ public abstract class ItemContainer { item.changeCount(process, count, actor, reference); 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 + else // If item hasn't be found in inventory, create new one { for (int i = 0; i < count; i++) { @@ -297,8 +261,6 @@ public abstract class ItemContainer // Add item in inventory addItem(item); - // Updates database - item.updateDatabase(); // If stackable, end loop as entire count is included in 1 instance of item if (template.isStackable() || !Config.MULTIPLE_ITEM_DROP) @@ -334,8 +296,8 @@ public abstract class ItemContainer { return null; } - ItemInstance targetitem = sourceitem.isStackable() ? target.getItemByItemId(sourceitem.getId()) : null; + ItemInstance targetitem = sourceitem.isStackable() ? target.getItemByItemId(sourceitem.getId()) : null; synchronized (sourceitem) { // check if this item still present in this container @@ -363,8 +325,7 @@ public abstract class ItemContainer { sourceitem.changeCount(process, -count, actor, reference); } - else - // Otherwise destroy old item + else // Otherwise destroy old item { removeItem(sourceitem); ItemTable.getInstance().destroyItem(process, sourceitem, actor, reference); @@ -374,8 +335,7 @@ public abstract class ItemContainer { targetitem.changeCount(process, count, actor, reference); } - else - // Otherwise add new item + else // Otherwise add new item { 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.setOwnerId(getOwnerId()); } + item.setItemLocation(newLocation); item.updateDatabase(true); } @@ -497,13 +458,6 @@ public abstract class ItemContainer { item.changeCount(process, -count, actor, reference); item.setLastChange(ItemInstance.MODIFIED); - - // don't update often for untraced items - if ((process != null) || ((GameTimeController.getInstance().getGameTicks() % 10) == 0)) - { - item.updateDatabase(); - } - refreshWeight(); } else diff --git a/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/model/items/instance/ItemInstance.java b/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/model/items/instance/ItemInstance.java index 22d4363975..78fe530040 100644 --- a/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/model/items/instance/ItemInstance.java +++ b/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/model/items/instance/ItemInstance.java @@ -976,6 +976,8 @@ public class ItemInstance extends WorldObject { updateItemOptions(); } + + // Notify to scripts. EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getItem()); return true; } diff --git a/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/itemcontainer/ItemContainer.java b/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/itemcontainer/ItemContainer.java index 2e5f90dcee..e3a3c3ec44 100644 --- a/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/itemcontainer/ItemContainer.java +++ b/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/itemcontainer/ItemContainer.java @@ -30,7 +30,6 @@ import java.util.stream.Collectors; import org.l2jmobius.Config; import org.l2jmobius.commons.database.DatabaseFactory; -import org.l2jmobius.gameserver.GameTimeController; import org.l2jmobius.gameserver.datatables.ItemTable; import org.l2jmobius.gameserver.enums.ItemLocation; import org.l2jmobius.gameserver.model.World; @@ -210,24 +209,8 @@ public abstract class ItemContainer ItemTable.getInstance().destroyItem(process, item, actor, reference); item.updateDatabase(); 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 + else // If item hasn't be found in inventory, create new one { item.setOwnerId(process, getOwnerId(), actor, reference); item.setItemLocation(getBaseLocation()); @@ -235,9 +218,6 @@ public abstract class ItemContainer // Add item in inventory addItem(item); - - // Updates database - item.updateDatabase(); } refreshWeight(); @@ -262,24 +242,8 @@ public abstract class ItemContainer { item.changeCount(process, count, actor, reference); 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 + else // If item hasn't be found in inventory, create new one { for (int i = 0; i < count; i++) { @@ -297,8 +261,6 @@ public abstract class ItemContainer // Add item in inventory addItem(item); - // Updates database - item.updateDatabase(); // If stackable, end loop as entire count is included in 1 instance of item if (template.isStackable() || !Config.MULTIPLE_ITEM_DROP) @@ -334,8 +296,8 @@ public abstract class ItemContainer { return null; } - ItemInstance targetitem = sourceitem.isStackable() ? target.getItemByItemId(sourceitem.getId()) : null; + ItemInstance targetitem = sourceitem.isStackable() ? target.getItemByItemId(sourceitem.getId()) : null; synchronized (sourceitem) { // check if this item still present in this container @@ -363,8 +325,7 @@ public abstract class ItemContainer { sourceitem.changeCount(process, -count, actor, reference); } - else - // Otherwise destroy old item + else // Otherwise destroy old item { removeItem(sourceitem); ItemTable.getInstance().destroyItem(process, sourceitem, actor, reference); @@ -374,8 +335,7 @@ public abstract class ItemContainer { targetitem.changeCount(process, count, actor, reference); } - else - // Otherwise add new item + else // Otherwise add new item { 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.setOwnerId(getOwnerId()); } + item.setItemLocation(newLocation); item.updateDatabase(true); } @@ -497,13 +458,6 @@ public abstract class ItemContainer { item.changeCount(process, -count, actor, reference); item.setLastChange(ItemInstance.MODIFIED); - - // don't update often for untraced items - if ((process != null) || ((GameTimeController.getInstance().getGameTicks() % 10) == 0)) - { - item.updateDatabase(); - } - refreshWeight(); } else diff --git a/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/items/instance/ItemInstance.java b/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/items/instance/ItemInstance.java index 22d4363975..78fe530040 100644 --- a/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/items/instance/ItemInstance.java +++ b/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/items/instance/ItemInstance.java @@ -976,6 +976,8 @@ public class ItemInstance extends WorldObject { updateItemOptions(); } + + // Notify to scripts. EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getItem()); return true; } diff --git a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/itemcontainer/ItemContainer.java b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/itemcontainer/ItemContainer.java index c1f10242b0..9f852c0b61 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/itemcontainer/ItemContainer.java +++ b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/itemcontainer/ItemContainer.java @@ -29,7 +29,6 @@ import java.util.logging.Logger; import org.l2jmobius.Config; import org.l2jmobius.commons.database.DatabaseFactory; -import org.l2jmobius.gameserver.GameTimeController; import org.l2jmobius.gameserver.datatables.ItemTable; import org.l2jmobius.gameserver.enums.ItemLocation; import org.l2jmobius.gameserver.model.World; @@ -251,23 +250,8 @@ public abstract class ItemContainer ItemTable.getInstance().destroyItem(process, item, actor, reference); item.updateDatabase(); 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 + else // If item hasn't be found in inventory, create new one { item.setOwnerId(process, getOwnerId(), actor, reference); item.setItemLocation(getBaseLocation()); @@ -275,9 +259,6 @@ public abstract class ItemContainer // Add item in inventory addItem(item); - - // Updates database - item.updateDatabase(); } refreshWeight(); @@ -302,23 +283,8 @@ public abstract class ItemContainer { item.changeCount(process, count, actor, reference); 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 + else // If item hasn't be found in inventory, create new one { for (int i = 0; i < count; i++) { @@ -337,8 +303,6 @@ public abstract class ItemContainer // Add item in inventory addItem(item); - // Updates database - item.updateDatabase(); // If stackable, end loop as entire count is included in 1 instance of item if (template.isStackable() || !Config.MULTIPLE_ITEM_DROP) @@ -374,8 +338,8 @@ public abstract class ItemContainer { return null; } - ItemInstance targetitem = sourceitem.isStackable() ? target.getItemByItemId(sourceitem.getId()) : null; + ItemInstance targetitem = sourceitem.isStackable() ? target.getItemByItemId(sourceitem.getId()) : null; synchronized (sourceitem) { // check if this item still present in this container @@ -403,8 +367,7 @@ public abstract class ItemContainer { sourceitem.changeCount(process, -count, actor, reference); } - else - // Otherwise destroy old item + else // Otherwise destroy old item { removeItem(sourceitem); ItemTable.getInstance().destroyItem(process, sourceitem, actor, reference); @@ -414,8 +377,7 @@ public abstract class ItemContainer { targetitem.changeCount(process, count, actor, reference); } - else - // Otherwise add new item + else // Otherwise add new item { targetitem = target.addItem(process, sourceitem.getId(), count, actor, reference); } @@ -468,12 +430,6 @@ public abstract class ItemContainer { item.changeCount(process, -count, actor, reference); item.setLastChange(ItemInstance.MODIFIED); - - // don't update often for untraced items - if ((process != null) || ((GameTimeController.getInstance().getGameTicks() % 10) == 0)) - { - item.updateDatabase(); - } } else { diff --git a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/items/instance/ItemInstance.java b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/items/instance/ItemInstance.java index 67e1a79dc8..4f79d74b00 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/items/instance/ItemInstance.java +++ b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/items/instance/ItemInstance.java @@ -915,6 +915,8 @@ public class ItemInstance extends WorldObject { 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()); return true; } diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/itemcontainer/ItemContainer.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/itemcontainer/ItemContainer.java index c1f10242b0..9f852c0b61 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/itemcontainer/ItemContainer.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/itemcontainer/ItemContainer.java @@ -29,7 +29,6 @@ import java.util.logging.Logger; import org.l2jmobius.Config; import org.l2jmobius.commons.database.DatabaseFactory; -import org.l2jmobius.gameserver.GameTimeController; import org.l2jmobius.gameserver.datatables.ItemTable; import org.l2jmobius.gameserver.enums.ItemLocation; import org.l2jmobius.gameserver.model.World; @@ -251,23 +250,8 @@ public abstract class ItemContainer ItemTable.getInstance().destroyItem(process, item, actor, reference); item.updateDatabase(); 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 + else // If item hasn't be found in inventory, create new one { item.setOwnerId(process, getOwnerId(), actor, reference); item.setItemLocation(getBaseLocation()); @@ -275,9 +259,6 @@ public abstract class ItemContainer // Add item in inventory addItem(item); - - // Updates database - item.updateDatabase(); } refreshWeight(); @@ -302,23 +283,8 @@ public abstract class ItemContainer { item.changeCount(process, count, actor, reference); 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 + else // If item hasn't be found in inventory, create new one { for (int i = 0; i < count; i++) { @@ -337,8 +303,6 @@ public abstract class ItemContainer // Add item in inventory addItem(item); - // Updates database - item.updateDatabase(); // If stackable, end loop as entire count is included in 1 instance of item if (template.isStackable() || !Config.MULTIPLE_ITEM_DROP) @@ -374,8 +338,8 @@ public abstract class ItemContainer { return null; } - ItemInstance targetitem = sourceitem.isStackable() ? target.getItemByItemId(sourceitem.getId()) : null; + ItemInstance targetitem = sourceitem.isStackable() ? target.getItemByItemId(sourceitem.getId()) : null; synchronized (sourceitem) { // check if this item still present in this container @@ -403,8 +367,7 @@ public abstract class ItemContainer { sourceitem.changeCount(process, -count, actor, reference); } - else - // Otherwise destroy old item + else // Otherwise destroy old item { removeItem(sourceitem); ItemTable.getInstance().destroyItem(process, sourceitem, actor, reference); @@ -414,8 +377,7 @@ public abstract class ItemContainer { targetitem.changeCount(process, count, actor, reference); } - else - // Otherwise add new item + else // Otherwise add new item { targetitem = target.addItem(process, sourceitem.getId(), count, actor, reference); } @@ -468,12 +430,6 @@ public abstract class ItemContainer { item.changeCount(process, -count, actor, reference); item.setLastChange(ItemInstance.MODIFIED); - - // don't update often for untraced items - if ((process != null) || ((GameTimeController.getInstance().getGameTicks() % 10) == 0)) - { - item.updateDatabase(); - } } else { diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/items/instance/ItemInstance.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/items/instance/ItemInstance.java index 67e1a79dc8..4f79d74b00 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/items/instance/ItemInstance.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/items/instance/ItemInstance.java @@ -915,6 +915,8 @@ public class ItemInstance extends WorldObject { 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()); return true; } diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/itemcontainer/ItemContainer.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/itemcontainer/ItemContainer.java index 2e5f90dcee..e3a3c3ec44 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/itemcontainer/ItemContainer.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/itemcontainer/ItemContainer.java @@ -30,7 +30,6 @@ import java.util.stream.Collectors; import org.l2jmobius.Config; import org.l2jmobius.commons.database.DatabaseFactory; -import org.l2jmobius.gameserver.GameTimeController; import org.l2jmobius.gameserver.datatables.ItemTable; import org.l2jmobius.gameserver.enums.ItemLocation; import org.l2jmobius.gameserver.model.World; @@ -210,24 +209,8 @@ public abstract class ItemContainer ItemTable.getInstance().destroyItem(process, item, actor, reference); item.updateDatabase(); 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 + else // If item hasn't be found in inventory, create new one { item.setOwnerId(process, getOwnerId(), actor, reference); item.setItemLocation(getBaseLocation()); @@ -235,9 +218,6 @@ public abstract class ItemContainer // Add item in inventory addItem(item); - - // Updates database - item.updateDatabase(); } refreshWeight(); @@ -262,24 +242,8 @@ public abstract class ItemContainer { item.changeCount(process, count, actor, reference); 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 + else // If item hasn't be found in inventory, create new one { for (int i = 0; i < count; i++) { @@ -297,8 +261,6 @@ public abstract class ItemContainer // Add item in inventory addItem(item); - // Updates database - item.updateDatabase(); // If stackable, end loop as entire count is included in 1 instance of item if (template.isStackable() || !Config.MULTIPLE_ITEM_DROP) @@ -334,8 +296,8 @@ public abstract class ItemContainer { return null; } - ItemInstance targetitem = sourceitem.isStackable() ? target.getItemByItemId(sourceitem.getId()) : null; + ItemInstance targetitem = sourceitem.isStackable() ? target.getItemByItemId(sourceitem.getId()) : null; synchronized (sourceitem) { // check if this item still present in this container @@ -363,8 +325,7 @@ public abstract class ItemContainer { sourceitem.changeCount(process, -count, actor, reference); } - else - // Otherwise destroy old item + else // Otherwise destroy old item { removeItem(sourceitem); ItemTable.getInstance().destroyItem(process, sourceitem, actor, reference); @@ -374,8 +335,7 @@ public abstract class ItemContainer { targetitem.changeCount(process, count, actor, reference); } - else - // Otherwise add new item + else // Otherwise add new item { 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.setOwnerId(getOwnerId()); } + item.setItemLocation(newLocation); item.updateDatabase(true); } @@ -497,13 +458,6 @@ public abstract class ItemContainer { item.changeCount(process, -count, actor, reference); item.setLastChange(ItemInstance.MODIFIED); - - // don't update often for untraced items - if ((process != null) || ((GameTimeController.getInstance().getGameTicks() % 10) == 0)) - { - item.updateDatabase(); - } - refreshWeight(); } else diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/items/instance/ItemInstance.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/items/instance/ItemInstance.java index ef87af1654..ca47c97c8d 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/items/instance/ItemInstance.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/items/instance/ItemInstance.java @@ -970,6 +970,8 @@ public class ItemInstance extends WorldObject { updateItemOptions(); } + + // Notify to scripts. EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getItem()); return true; } diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/itemcontainer/ItemContainer.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/itemcontainer/ItemContainer.java index 2e5f90dcee..e3a3c3ec44 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/itemcontainer/ItemContainer.java +++ b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/itemcontainer/ItemContainer.java @@ -30,7 +30,6 @@ import java.util.stream.Collectors; import org.l2jmobius.Config; import org.l2jmobius.commons.database.DatabaseFactory; -import org.l2jmobius.gameserver.GameTimeController; import org.l2jmobius.gameserver.datatables.ItemTable; import org.l2jmobius.gameserver.enums.ItemLocation; import org.l2jmobius.gameserver.model.World; @@ -210,24 +209,8 @@ public abstract class ItemContainer ItemTable.getInstance().destroyItem(process, item, actor, reference); item.updateDatabase(); 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 + else // If item hasn't be found in inventory, create new one { item.setOwnerId(process, getOwnerId(), actor, reference); item.setItemLocation(getBaseLocation()); @@ -235,9 +218,6 @@ public abstract class ItemContainer // Add item in inventory addItem(item); - - // Updates database - item.updateDatabase(); } refreshWeight(); @@ -262,24 +242,8 @@ public abstract class ItemContainer { item.changeCount(process, count, actor, reference); 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 + else // If item hasn't be found in inventory, create new one { for (int i = 0; i < count; i++) { @@ -297,8 +261,6 @@ public abstract class ItemContainer // Add item in inventory addItem(item); - // Updates database - item.updateDatabase(); // If stackable, end loop as entire count is included in 1 instance of item if (template.isStackable() || !Config.MULTIPLE_ITEM_DROP) @@ -334,8 +296,8 @@ public abstract class ItemContainer { return null; } - ItemInstance targetitem = sourceitem.isStackable() ? target.getItemByItemId(sourceitem.getId()) : null; + ItemInstance targetitem = sourceitem.isStackable() ? target.getItemByItemId(sourceitem.getId()) : null; synchronized (sourceitem) { // check if this item still present in this container @@ -363,8 +325,7 @@ public abstract class ItemContainer { sourceitem.changeCount(process, -count, actor, reference); } - else - // Otherwise destroy old item + else // Otherwise destroy old item { removeItem(sourceitem); ItemTable.getInstance().destroyItem(process, sourceitem, actor, reference); @@ -374,8 +335,7 @@ public abstract class ItemContainer { targetitem.changeCount(process, count, actor, reference); } - else - // Otherwise add new item + else // Otherwise add new item { 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.setOwnerId(getOwnerId()); } + item.setItemLocation(newLocation); item.updateDatabase(true); } @@ -497,13 +458,6 @@ public abstract class ItemContainer { item.changeCount(process, -count, actor, reference); item.setLastChange(ItemInstance.MODIFIED); - - // don't update often for untraced items - if ((process != null) || ((GameTimeController.getInstance().getGameTicks() % 10) == 0)) - { - item.updateDatabase(); - } - refreshWeight(); } else diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/items/instance/ItemInstance.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/items/instance/ItemInstance.java index ef87af1654..ca47c97c8d 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/items/instance/ItemInstance.java +++ b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/items/instance/ItemInstance.java @@ -970,6 +970,8 @@ public class ItemInstance extends WorldObject { updateItemOptions(); } + + // Notify to scripts. EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getItem()); return true; } diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/itemcontainer/ItemContainer.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/itemcontainer/ItemContainer.java index 2e5f90dcee..e3a3c3ec44 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/itemcontainer/ItemContainer.java +++ b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/itemcontainer/ItemContainer.java @@ -30,7 +30,6 @@ import java.util.stream.Collectors; import org.l2jmobius.Config; import org.l2jmobius.commons.database.DatabaseFactory; -import org.l2jmobius.gameserver.GameTimeController; import org.l2jmobius.gameserver.datatables.ItemTable; import org.l2jmobius.gameserver.enums.ItemLocation; import org.l2jmobius.gameserver.model.World; @@ -210,24 +209,8 @@ public abstract class ItemContainer ItemTable.getInstance().destroyItem(process, item, actor, reference); item.updateDatabase(); 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 + else // If item hasn't be found in inventory, create new one { item.setOwnerId(process, getOwnerId(), actor, reference); item.setItemLocation(getBaseLocation()); @@ -235,9 +218,6 @@ public abstract class ItemContainer // Add item in inventory addItem(item); - - // Updates database - item.updateDatabase(); } refreshWeight(); @@ -262,24 +242,8 @@ public abstract class ItemContainer { item.changeCount(process, count, actor, reference); 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 + else // If item hasn't be found in inventory, create new one { for (int i = 0; i < count; i++) { @@ -297,8 +261,6 @@ public abstract class ItemContainer // Add item in inventory addItem(item); - // Updates database - item.updateDatabase(); // If stackable, end loop as entire count is included in 1 instance of item if (template.isStackable() || !Config.MULTIPLE_ITEM_DROP) @@ -334,8 +296,8 @@ public abstract class ItemContainer { return null; } - ItemInstance targetitem = sourceitem.isStackable() ? target.getItemByItemId(sourceitem.getId()) : null; + ItemInstance targetitem = sourceitem.isStackable() ? target.getItemByItemId(sourceitem.getId()) : null; synchronized (sourceitem) { // check if this item still present in this container @@ -363,8 +325,7 @@ public abstract class ItemContainer { sourceitem.changeCount(process, -count, actor, reference); } - else - // Otherwise destroy old item + else // Otherwise destroy old item { removeItem(sourceitem); ItemTable.getInstance().destroyItem(process, sourceitem, actor, reference); @@ -374,8 +335,7 @@ public abstract class ItemContainer { targetitem.changeCount(process, count, actor, reference); } - else - // Otherwise add new item + else // Otherwise add new item { 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.setOwnerId(getOwnerId()); } + item.setItemLocation(newLocation); item.updateDatabase(true); } @@ -497,13 +458,6 @@ public abstract class ItemContainer { item.changeCount(process, -count, actor, reference); item.setLastChange(ItemInstance.MODIFIED); - - // don't update often for untraced items - if ((process != null) || ((GameTimeController.getInstance().getGameTicks() % 10) == 0)) - { - item.updateDatabase(); - } - refreshWeight(); } else diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/items/instance/ItemInstance.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/items/instance/ItemInstance.java index ef87af1654..ca47c97c8d 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/items/instance/ItemInstance.java +++ b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/items/instance/ItemInstance.java @@ -970,6 +970,8 @@ public class ItemInstance extends WorldObject { updateItemOptions(); } + + // Notify to scripts. EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getItem()); return true; } diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/itemcontainer/ItemContainer.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/itemcontainer/ItemContainer.java index 2e5f90dcee..e3a3c3ec44 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/itemcontainer/ItemContainer.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/itemcontainer/ItemContainer.java @@ -30,7 +30,6 @@ import java.util.stream.Collectors; import org.l2jmobius.Config; import org.l2jmobius.commons.database.DatabaseFactory; -import org.l2jmobius.gameserver.GameTimeController; import org.l2jmobius.gameserver.datatables.ItemTable; import org.l2jmobius.gameserver.enums.ItemLocation; import org.l2jmobius.gameserver.model.World; @@ -210,24 +209,8 @@ public abstract class ItemContainer ItemTable.getInstance().destroyItem(process, item, actor, reference); item.updateDatabase(); 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 + else // If item hasn't be found in inventory, create new one { item.setOwnerId(process, getOwnerId(), actor, reference); item.setItemLocation(getBaseLocation()); @@ -235,9 +218,6 @@ public abstract class ItemContainer // Add item in inventory addItem(item); - - // Updates database - item.updateDatabase(); } refreshWeight(); @@ -262,24 +242,8 @@ public abstract class ItemContainer { item.changeCount(process, count, actor, reference); 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 + else // If item hasn't be found in inventory, create new one { for (int i = 0; i < count; i++) { @@ -297,8 +261,6 @@ public abstract class ItemContainer // Add item in inventory addItem(item); - // Updates database - item.updateDatabase(); // If stackable, end loop as entire count is included in 1 instance of item if (template.isStackable() || !Config.MULTIPLE_ITEM_DROP) @@ -334,8 +296,8 @@ public abstract class ItemContainer { return null; } - ItemInstance targetitem = sourceitem.isStackable() ? target.getItemByItemId(sourceitem.getId()) : null; + ItemInstance targetitem = sourceitem.isStackable() ? target.getItemByItemId(sourceitem.getId()) : null; synchronized (sourceitem) { // check if this item still present in this container @@ -363,8 +325,7 @@ public abstract class ItemContainer { sourceitem.changeCount(process, -count, actor, reference); } - else - // Otherwise destroy old item + else // Otherwise destroy old item { removeItem(sourceitem); ItemTable.getInstance().destroyItem(process, sourceitem, actor, reference); @@ -374,8 +335,7 @@ public abstract class ItemContainer { targetitem.changeCount(process, count, actor, reference); } - else - // Otherwise add new item + else // Otherwise add new item { 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.setOwnerId(getOwnerId()); } + item.setItemLocation(newLocation); item.updateDatabase(true); } @@ -497,13 +458,6 @@ public abstract class ItemContainer { item.changeCount(process, -count, actor, reference); item.setLastChange(ItemInstance.MODIFIED); - - // don't update often for untraced items - if ((process != null) || ((GameTimeController.getInstance().getGameTicks() % 10) == 0)) - { - item.updateDatabase(); - } - refreshWeight(); } else diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/items/instance/ItemInstance.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/items/instance/ItemInstance.java index ef87af1654..ca47c97c8d 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/items/instance/ItemInstance.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/items/instance/ItemInstance.java @@ -970,6 +970,8 @@ public class ItemInstance extends WorldObject { updateItemOptions(); } + + // Notify to scripts. EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getItem()); return true; } diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/itemcontainer/ItemContainer.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/itemcontainer/ItemContainer.java index 2e5f90dcee..e3a3c3ec44 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/itemcontainer/ItemContainer.java +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/itemcontainer/ItemContainer.java @@ -30,7 +30,6 @@ import java.util.stream.Collectors; import org.l2jmobius.Config; import org.l2jmobius.commons.database.DatabaseFactory; -import org.l2jmobius.gameserver.GameTimeController; import org.l2jmobius.gameserver.datatables.ItemTable; import org.l2jmobius.gameserver.enums.ItemLocation; import org.l2jmobius.gameserver.model.World; @@ -210,24 +209,8 @@ public abstract class ItemContainer ItemTable.getInstance().destroyItem(process, item, actor, reference); item.updateDatabase(); 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 + else // If item hasn't be found in inventory, create new one { item.setOwnerId(process, getOwnerId(), actor, reference); item.setItemLocation(getBaseLocation()); @@ -235,9 +218,6 @@ public abstract class ItemContainer // Add item in inventory addItem(item); - - // Updates database - item.updateDatabase(); } refreshWeight(); @@ -262,24 +242,8 @@ public abstract class ItemContainer { item.changeCount(process, count, actor, reference); 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 + else // If item hasn't be found in inventory, create new one { for (int i = 0; i < count; i++) { @@ -297,8 +261,6 @@ public abstract class ItemContainer // Add item in inventory addItem(item); - // Updates database - item.updateDatabase(); // If stackable, end loop as entire count is included in 1 instance of item if (template.isStackable() || !Config.MULTIPLE_ITEM_DROP) @@ -334,8 +296,8 @@ public abstract class ItemContainer { return null; } - ItemInstance targetitem = sourceitem.isStackable() ? target.getItemByItemId(sourceitem.getId()) : null; + ItemInstance targetitem = sourceitem.isStackable() ? target.getItemByItemId(sourceitem.getId()) : null; synchronized (sourceitem) { // check if this item still present in this container @@ -363,8 +325,7 @@ public abstract class ItemContainer { sourceitem.changeCount(process, -count, actor, reference); } - else - // Otherwise destroy old item + else // Otherwise destroy old item { removeItem(sourceitem); ItemTable.getInstance().destroyItem(process, sourceitem, actor, reference); @@ -374,8 +335,7 @@ public abstract class ItemContainer { targetitem.changeCount(process, count, actor, reference); } - else - // Otherwise add new item + else // Otherwise add new item { 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.setOwnerId(getOwnerId()); } + item.setItemLocation(newLocation); item.updateDatabase(true); } @@ -497,13 +458,6 @@ public abstract class ItemContainer { item.changeCount(process, -count, actor, reference); item.setLastChange(ItemInstance.MODIFIED); - - // don't update often for untraced items - if ((process != null) || ((GameTimeController.getInstance().getGameTicks() % 10) == 0)) - { - item.updateDatabase(); - } - refreshWeight(); } else diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/items/instance/ItemInstance.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/items/instance/ItemInstance.java index ef87af1654..ca47c97c8d 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/items/instance/ItemInstance.java +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/items/instance/ItemInstance.java @@ -970,6 +970,8 @@ public class ItemInstance extends WorldObject { updateItemOptions(); } + + // Notify to scripts. EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getItem()); return true; } diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/itemcontainer/ItemContainer.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/itemcontainer/ItemContainer.java index 2e5f90dcee..e3a3c3ec44 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/itemcontainer/ItemContainer.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/itemcontainer/ItemContainer.java @@ -30,7 +30,6 @@ import java.util.stream.Collectors; import org.l2jmobius.Config; import org.l2jmobius.commons.database.DatabaseFactory; -import org.l2jmobius.gameserver.GameTimeController; import org.l2jmobius.gameserver.datatables.ItemTable; import org.l2jmobius.gameserver.enums.ItemLocation; import org.l2jmobius.gameserver.model.World; @@ -210,24 +209,8 @@ public abstract class ItemContainer ItemTable.getInstance().destroyItem(process, item, actor, reference); item.updateDatabase(); 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 + else // If item hasn't be found in inventory, create new one { item.setOwnerId(process, getOwnerId(), actor, reference); item.setItemLocation(getBaseLocation()); @@ -235,9 +218,6 @@ public abstract class ItemContainer // Add item in inventory addItem(item); - - // Updates database - item.updateDatabase(); } refreshWeight(); @@ -262,24 +242,8 @@ public abstract class ItemContainer { item.changeCount(process, count, actor, reference); 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 + else // If item hasn't be found in inventory, create new one { for (int i = 0; i < count; i++) { @@ -297,8 +261,6 @@ public abstract class ItemContainer // Add item in inventory addItem(item); - // Updates database - item.updateDatabase(); // If stackable, end loop as entire count is included in 1 instance of item if (template.isStackable() || !Config.MULTIPLE_ITEM_DROP) @@ -334,8 +296,8 @@ public abstract class ItemContainer { return null; } - ItemInstance targetitem = sourceitem.isStackable() ? target.getItemByItemId(sourceitem.getId()) : null; + ItemInstance targetitem = sourceitem.isStackable() ? target.getItemByItemId(sourceitem.getId()) : null; synchronized (sourceitem) { // check if this item still present in this container @@ -363,8 +325,7 @@ public abstract class ItemContainer { sourceitem.changeCount(process, -count, actor, reference); } - else - // Otherwise destroy old item + else // Otherwise destroy old item { removeItem(sourceitem); ItemTable.getInstance().destroyItem(process, sourceitem, actor, reference); @@ -374,8 +335,7 @@ public abstract class ItemContainer { targetitem.changeCount(process, count, actor, reference); } - else - // Otherwise add new item + else // Otherwise add new item { 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.setOwnerId(getOwnerId()); } + item.setItemLocation(newLocation); item.updateDatabase(true); } @@ -497,13 +458,6 @@ public abstract class ItemContainer { item.changeCount(process, -count, actor, reference); item.setLastChange(ItemInstance.MODIFIED); - - // don't update often for untraced items - if ((process != null) || ((GameTimeController.getInstance().getGameTicks() % 10) == 0)) - { - item.updateDatabase(); - } - refreshWeight(); } else diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/items/instance/ItemInstance.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/items/instance/ItemInstance.java index ef87af1654..ca47c97c8d 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/items/instance/ItemInstance.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/items/instance/ItemInstance.java @@ -970,6 +970,8 @@ public class ItemInstance extends WorldObject { updateItemOptions(); } + + // Notify to scripts. EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getItem()); return true; } diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/itemcontainer/ItemContainer.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/itemcontainer/ItemContainer.java index 2e5f90dcee..e3a3c3ec44 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/itemcontainer/ItemContainer.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/itemcontainer/ItemContainer.java @@ -30,7 +30,6 @@ import java.util.stream.Collectors; import org.l2jmobius.Config; import org.l2jmobius.commons.database.DatabaseFactory; -import org.l2jmobius.gameserver.GameTimeController; import org.l2jmobius.gameserver.datatables.ItemTable; import org.l2jmobius.gameserver.enums.ItemLocation; import org.l2jmobius.gameserver.model.World; @@ -210,24 +209,8 @@ public abstract class ItemContainer ItemTable.getInstance().destroyItem(process, item, actor, reference); item.updateDatabase(); 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 + else // If item hasn't be found in inventory, create new one { item.setOwnerId(process, getOwnerId(), actor, reference); item.setItemLocation(getBaseLocation()); @@ -235,9 +218,6 @@ public abstract class ItemContainer // Add item in inventory addItem(item); - - // Updates database - item.updateDatabase(); } refreshWeight(); @@ -262,24 +242,8 @@ public abstract class ItemContainer { item.changeCount(process, count, actor, reference); 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 + else // If item hasn't be found in inventory, create new one { for (int i = 0; i < count; i++) { @@ -297,8 +261,6 @@ public abstract class ItemContainer // Add item in inventory addItem(item); - // Updates database - item.updateDatabase(); // If stackable, end loop as entire count is included in 1 instance of item if (template.isStackable() || !Config.MULTIPLE_ITEM_DROP) @@ -334,8 +296,8 @@ public abstract class ItemContainer { return null; } - ItemInstance targetitem = sourceitem.isStackable() ? target.getItemByItemId(sourceitem.getId()) : null; + ItemInstance targetitem = sourceitem.isStackable() ? target.getItemByItemId(sourceitem.getId()) : null; synchronized (sourceitem) { // check if this item still present in this container @@ -363,8 +325,7 @@ public abstract class ItemContainer { sourceitem.changeCount(process, -count, actor, reference); } - else - // Otherwise destroy old item + else // Otherwise destroy old item { removeItem(sourceitem); ItemTable.getInstance().destroyItem(process, sourceitem, actor, reference); @@ -374,8 +335,7 @@ public abstract class ItemContainer { targetitem.changeCount(process, count, actor, reference); } - else - // Otherwise add new item + else // Otherwise add new item { 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.setOwnerId(getOwnerId()); } + item.setItemLocation(newLocation); item.updateDatabase(true); } @@ -497,13 +458,6 @@ public abstract class ItemContainer { item.changeCount(process, -count, actor, reference); item.setLastChange(ItemInstance.MODIFIED); - - // don't update often for untraced items - if ((process != null) || ((GameTimeController.getInstance().getGameTicks() % 10) == 0)) - { - item.updateDatabase(); - } - refreshWeight(); } else diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/items/instance/ItemInstance.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/items/instance/ItemInstance.java index ef87af1654..ca47c97c8d 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/items/instance/ItemInstance.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/items/instance/ItemInstance.java @@ -970,6 +970,8 @@ public class ItemInstance extends WorldObject { updateItemOptions(); } + + // Notify to scripts. EventDispatcher.getInstance().notifyEventAsync(new OnPlayerAugment(getActingPlayer(), this, augmentation, true), getItem()); return true; }