diff --git a/src/Features/Cleaner.h b/src/Features/Cleaner.h index 34155b9..f24067b 100644 --- a/src/Features/Cleaner.h +++ b/src/Features/Cleaner.h @@ -21,6 +21,8 @@ extern void reloadCleaner(); extern void loadCleaner(); extern void unloadCleaner(); +extern bool isMatch(std::string& A, std::string& B); + } // namespace Cleaner namespace VoteClean { diff --git a/src/Features/Events.cpp b/src/Features/Events.cpp index be92567..967f1a6 100644 --- a/src/Features/Events.cpp +++ b/src/Features/Events.cpp @@ -29,7 +29,17 @@ void ListenEvents() { return; } } - item.lifeTime() = ConfigFile::mItemDespawnTicks; + if (Config->getValue({"ItemDespawn", "Enabled"}, true)) { + item.lifeTime() = ConfigFile::mItemDespawnTicks; + auto list = Config->getValue>({"ItemDespawn", "WhiteList"}, {}); + auto type = item.item().getTypeName(); + for (auto& key : list) { + if (isMatch(type, key)) { + return; + } + } + item.lifeTime() = ConfigFile::mItemDespawnTicks; + } } ); // MobTakeItemEvent