Skip to content
926 words 5 min read

Modules Overview ​

LOICollectionA uses a micro-kernel architecture: every feature is provided by a module, and each module can be enabled or disabled independently. This page lists every module with its purpose and where its configuration switch lives; for per-module commands see Commands, and for the configuration structure and data files see Data Files.

Modules come in layers ​

Modules fall into three groups, and their configuration paths differ:

GroupConfiguration pathBuild target
Built-in plugins (Plugins)ServerConfig.Plugins.*Server only
Portable tools (ProtableTool)ServerConfig.ProtableTool.*Server only
Client modulesClientConfig.*Client only

NOTE

All server modules are registered in the same ModulePriority sequence; priority only affects load and registration order, not the group a module belongs to. See Architecture Overview for details.

Server built-in plugins ​

ModulePurposeConfig keyDefault state
BlacklistBlock specified players from joining the server, with a reason and durationServerConfig.Plugins.Blacklist.ModuleEnabledDisabled
MuteMute players, with a reason and durationServerConfig.Plugins.MuteDisabled
CdkCreate, manage, and redeem CDK codesServerConfig.Plugins.CdkDisabled
MenuOpen custom in-game menus and run script-defined actionsServerConfig.Plugins.Menu.ModuleEnabledDisabled
TpaTeleport request system with invites, blacklist, timeouts, and feesServerConfig.Plugins.Tpa.ModuleEnabledDisabled
ShopServer shops with buying, selling, and paginated browsingServerConfig.Plugins.Shop.ModuleEnabledDisabled
MonitorMessage enhancement: player name display, join notices, score-change detection, disabled-command detection, dynamic MOTD, and sidebarsServerConfig.Plugins.Monitor.ModuleEnabledDisabled
PvpPer-player PvP toggle, optionally listening to damage, potions, and projectilesServerConfig.Plugins.Pvp.ModuleEnabledDisabled
WalletPlayer economy: transfers, red envelopes, bank savings, wealth ranking, and a funds ledgerServerConfig.Plugins.Wallet.ModuleEnabledDisabled
ChatChat titles and per-player chat blacklist, with a customisable chat formatServerConfig.Plugins.Chat.ModuleEnabledDisabled
LanguageRecords each player's language preference, with a language selection GUINoneAlways enabled
NoticeCreate announcements and notifications with prioritiesServerConfig.Plugins.NoticeDisabled
MarketA player-to-player marketplace: listings, player stores, reviews, market quotes, wanted orders, and auctionsServerConfig.Plugins.Market.ModuleEnabledDisabled
BehaviorEventRecords player and world behaviour events to a database, with backtracking and automatic cleanupServerConfig.Plugins.BehaviorEvent.ModuleEnabledDisabled
StatisticsTracks online time, kills, deaths, blocks placed/destroyed, respawns, and joinsServerConfig.Plugins.Statistics.ModuleEnabledDisabled

WARNING

The Mute, Cdk and Notice entries are booleans, not objects, so you write "Mute": false / "Cdk": false / "Notice": false directly — there is no nested ModuleEnabled field.

TIP

The Language module has no configuration switch and is always enabled. It backs API variables such as {player_language} / {player_language_name} and the built-in gui/language.lcui selection screen; disabling it would leave language-dependent variables without a value.

Monitor sub-switches ​

Once Monitor itself is enabled, it has five sub-features that can be toggled independently, all enabled by default:

Sub-featureConfig keyDescription
Player name displayMonitor.BelowNameShows API-variable content above players' heads
Join / leave noticesMonitor.ServerToastControlled separately by Messager.join / Messager.leave
Score change detectionMonitor.ChangeScoreAn empty ScoreboardLists means all scores are watched
Disabled command detectionMonitor.DisableCommandCommands matching CommandLists are blocked
Dynamic MOTDMonitor.DynamicMotdSupports API variables and multi-page rotation
SidebarMonitor.SidebarSupports titles and multi-page content

Market sub-switches ​

Market has the largest configuration surface, and its main sub-features can likewise be turned off individually:

Sub-featureConfig keyDefault
Player storesMarket.StoreEnabledEnabled
Store reviewsMarket.StoreReviewEnabledEnabled
Market quotesMarket.StoreQuoteEnabledEnabled
Wanted ordersMarket.StoreWantedEnabledEnabled
Partial fills for wanted ordersMarket.StorePartialBuyEnabledEnabled
AuctionsMarket.StoreAuctionEnabledEnabled

For every field and its meaning see Data Files.

BehaviorEvent event switches ​

Under ServerConfig.Plugins.BehaviorEvent.Events, BehaviorEvent gives every event three switches: ModuleEnabled (whether the event is recorded at all), RecordDatabase (whether it is written to the database), and OutputConsole (whether it is printed to the console). The recordable events are player connect, disconnect, chat, experience gain, attack, permission change, block destroy, block place, death, item pickup, respawn, item use, container interaction, and block explode — 14 in total, all enabled by default.

Server portable tools ​

Portable tools are lower-level hooks and behaviour changes, configured under ServerConfig.ProtableTool:

ModulePurposeConfig keyDefault state
BasicHookLow-level event hooks. Currently provides FakeSeed: spoofs the world seed in the StartGame packet sent to clientsProtableTool.BasicHook.ModuleEnabledDisabled
RedStoneRedstone high-frequency detection: once a single block exceeds the redstone-update threshold within one second, the block is destroyed and the event is loggedProtableTool.RedStoneDisabled (0)
OrderedUIQueues multiple UI forms so they open one by one instead of overwriting each otherProtableTool.OrderedUIDisabled

TIP

BasicHook.FakeSeed defaults to $random. The value may be a decimal integer (parsed as the seed) or a string that cannot be parsed as an integer — the latter is treated as random, so every server start reports a fresh random seed to clients.

NOTE

RedStone takes an integer threshold, not a boolean: 0 disables it, while 2 means a block is destroyed once it accumulates two or more redstone updates within one second. Be careful with small values.

Client modules ​

Only one module is built for the client target (--target_type=client): the now-playing notification.

ModulePurposeConfig keyDefault state
MusicDetects the system media session (matching NetEase Cloud Music by default) and shows a "now playing" card in game, optionally with an audio visualiserClientConfig.Music.ModuleEnabledEnabled

WARNING

Music is a client-only module. Its source lives in src/LOICollectionA/modules/client/Plugins/music/ and it is not compiled at all for the server target (the is_server branch in xmake.lua excludes modules/client/**.cpp). It depends on imgui and the Windows media session APIs, so it cannot be enabled on a server. Its appearance parameters (card size, font sizes, animation durations, and so on) are documented in Data Files.

LOICollectionA · A ready-to-use multifunctional plugin set for LeviLamina