How pikapikagfy/qsfilterplugin works
QS Filter is a Paper/QuickShop-Hikari plugin that periodically collects shop listings, compares selling prices with weighted historical transaction prices, and exposes filtered listings and price data through HTTP and in-game commands. Transaction events provide historical records; shop-change events can be forwarded to a configured webhook. The graph reflects the supplied source excerpts and tree; several API routes and plugin wiring are only partially sampled, so uncertain calls are omitted.
Main entry points: QSFilterPlugin.java Plugin Lifecycle · ApiHttpServer.java HTTP API · TransactionRepository.java Transaction Repository · PriceFilterEngine.java Price Filter
Components 17
Plugin Runtime
- Plugin Lifecycle
src/main/java/cn/hdbstudio/qsfilter/QSFilterPlugin.java - Plugin Config
src/main/java/cn/hdbstudio/qsfilter/config/PluginConfig.java - API Encryption
src/main/java/cn/hdbstudio/qsfilter/crypto/EncryptionUtil.java
Shop Processing
- QuickShop Bridge
src/main/java/cn/hdbstudio/qsfilter/quickshop/QuickShopBridge.java - Shop Collector
src/main/java/cn/hdbstudio/qsfilter/quickshop/ShopDataCollector.java - Price Filter
src/main/java/cn/hdbstudio/qsfilter/filter/PriceFilterEngine.java - Shop Records
src/main/java/cn/hdbstudio/qsfilter/filter/FilteredShop.java
Transaction History
- Transaction Listener
src/main/java/cn/hdbstudio/qsfilter/quickshop/TransactionListener.java - Transaction Repository
src/main/java/cn/hdbstudio/qsfilter/storage/TransactionRepository.java - SQLite History
src/main/java/cn/hdbstudio/qsfilter/storage/DatabaseManager.java
Interfaces
- HTTP API
src/main/java/cn/hdbstudio/qsfilter/api/ApiHttpServer.java - Plugin Commands
src/main/java/cn/hdbstudio/qsfilter/QSFilterPlugin.java - Shop Change Webhook
src/main/java/cn/hdbstudio/qsfilter/webhook/ShopChangeWebhook.java
Other components
- Players/Admins
- HTTP Clients
- QuickShop-Hikari
- Webhook Receiver
Connections 22
- Players/Admins → Plugin Commands: invoke commands
- HTTP Clients → HTTP API: request endpoints
- QuickShop-Hikari → QuickShop Bridge: provide shop data
- Plugin Lifecycle → Plugin Config: load settings
- Plugin Lifecycle → API Encryption: initialize
- Plugin Lifecycle → Transaction Repository: initialize
- Plugin Lifecycle → Shop Collector: start collection
- Plugin Lifecycle → HTTP API: start server
- Plugin Lifecycle → Transaction Listener: register listener
- Plugin Lifecycle → Shop Change Webhook: register listener
- Shop Collector → QuickShop Bridge: fetch shops
- Shop Collector → Price Filter: process listings
- QuickShop Bridge → Shop Records: convert listings
- Price Filter → Transaction Repository: read weighted prices
- Price Filter → Shop Records: annotate and cache
- Transaction Listener → Transaction Repository: record transactions
- Transaction Repository → SQLite History: query and write
- HTTP API → Price Filter: read shops and stats
- HTTP API → API Encryption: encrypt responses
- HTTP API → Transaction Repository: query price data
- Plugin Commands → HTTP API: request price endpoint
- Shop Change Webhook → Webhook Receiver: post shop changes