
Vanilla Core
A comprehensive all-in-one SMP plugin for PvP balance, custom mechanics, and server management. (Alternative to SMP Core)
403
5
Список изменений
Changed
- Migrated all player messaging from legacy §-code strings to Adventure API (
Component/MiniMessage) across all command and listener classes - Migrated
UpdateNotificationListenerfrom BungeeCord chat API to Adventure API (ClickEvent,HoverEvent,Componentbuilder) - Fixed
InfiniteRestockFeatureblacklist GUI:statusText/statusColornow use MiniMessage tags (<red>,<green>) instead of §-codes so they render correctly when passed toMessageManager.parse() - Item Limiter:
findMatchingItemKeyno longer scans all configured limits linearly. AMaterial → keyindex is built at load time so lookups are O(1) for the common case instead of O(n limits) - Item Limiter: inventory scan is now distributed across ticks (1 player per tick) instead of checking every online player in a single 20-tick burst
- Item Limiter:
getPlayerItemCountno longer re-runsfindMatchingItemKeyfor each inventory slot — the target limit is resolved once andItemLimit.matches()is used directly - Item Limiter: potion material detection replaced
toString().contains("POTION")with a properEnumSet<Material>coveringPOTION,SPLASH_POTION, andLINGERING_POTION - Completed Adventure API migration: replaced all remaining legacy § color codes in
ServerRestartFeature,ShieldMechanicsFeature,MinimapControlFeature,ItemLimiterListener,MaceLimiterListener,InvisibleKillsFeature, andMainMenuwith MiniMessage format; GUI title constants inMaceLimiterFeature,ShieldMechanicsFeature,MobManagerFeature, andServerRestartFeatureconverted from §-coded strings toComponentconstants; corresponding listeners updated to useInventoryView.title()(Component API) for title matching ServerRestartFeature: migrated from BungeeCord ActionBar API and Bukkit BossBar to Adventure API (player.sendActionBar,player.showTitle,net.kyori.adventure.bossbar.BossBar)MainMenu: replaced deprecatedgetLore()+ §-detection withlore()+PlainTextComponentSerializerfor lore inspectionconfig.yml: migrated all message values from § codes to MiniMessage format- Added JUnit 5 (
junit-jupiter:5.10.0) as a test dependency ServerRestartListener: replaced non-thread-safeHashMapwithConcurrentHashMapforawaitingInput; async chat handler now uses atomicremove-and-null-check pattern to eliminate TOCTOU raceUpdateNotificationListener: CDN-provided title and message text is now escaped withMiniMessage.escapeTags()before parsing to prevent tag injectionMinimapControlFeature: world name, environment, and minimap mode values are escaped withMiniMessage.escapeTags()before being embedded in MiniMessage stringsMessageManager.get(String, Object...): now throwsIllegalArgumentExceptionimmediately when an odd number of replacement arguments is supplied or a key isnull, instead of silently ignoring the trailing argumentShieldMechanicsFeature: extracted shared stun-lore assembly intobuildStunLore(boolean, int)helper to eliminate duplication betweenbuildMaceStunItemandbuildAxeStunItemServerRestartFeature.getRestartMessage: consolidated{time}and{player}substitution into a single overloaded method; callers no longer chain.replace("{player}", ...)at the call siteMobManagerFeature.onRightClick: disabled warning now uses the centralizedmob-manager.feature-disabledmessages.yml key instead of a hardcoded literalInfiniteRestockFeature,ItemLimiterFeature:fillBordernow usesmeta.displayName(Component.empty())instead of the deprecatedmeta.setDisplayName(" ")messages.yml: removed UTF-8 BOM from file header
Fixed
VanillaCommandreload: each feature'sreload()is now wrapped in its owntry/catch; a failure in one feature no longer aborts the reload loop for all subsequent featuresMainMenu: removed unreachable duplicate slot-50 handler that could never be reached after the earlier slot-50 Wiki handler returnedMainMenu: removed duplicateimport net.kyori.adventure.text.Componentimport
Added
- Fixed
DimensionLockConfigdefaultlockedMessagevalues to use MiniMessage (<red>The End/Nether is currently locked!) - Fixed
InvisibleKillsConfigdefaultdeathMessageto use MiniMessage ({victim} was killed by <obfuscated>?????????) - Documentation: updated all
§-coded examples indocs/docs/configuration.mdto MiniMessage format
Файлы
vanilla-core-1.3.3.jar(283.99 KiB)
ОсновнойМетаданные
Канал релиза
Release
Номер версии
1.3.3
Загрузчики
FoliaPaperPurpurSpigot
Версии игры
1.21.1–1.21.11
Загрузок
19
Дата публикации
1 мес. назад
