Repository navigation
Releases: FolksyPizza/SMP-Core
Release list
SMP-Core 1.0.0
SMP-Core 1.0.0 is the first stable release: the plugin suite that ran a production survival server, now
generalized for any Paper server and licensed under the Apache License 2.0.
It covers a player-driven economy (auction house, buy orders, shop, sell prices), homes, teleports, friends,
duels, per-player settings, staff tooling, moderation and chat filtering, for a single server or a Velocity
network. A single server needs no database; a network shares state through MySQL or MariaDB.
Getting started. From a clone, ./setup.sh creates a runnable server on macOS or Linux: Paper, the plugins,
checksum-verified dependencies, the menu datapack, a documented branding.yml and a start script. Or drop the jars below into
plugins/ with ProtocolLib and Vault.
Supported versions. One set of jars for Paper 1.21.7 to 1.21.11 with Java 21. Paper 1.21.11 passes every
automated test, single server and network; 1.21.7 to 1.21.10 boot clean and pass the release, menu lock and
command routing tests. Velocity 3.5.1 is tested for networks.
What 1.0.0 means. Every plugin is at 1.0.0 and built on the Paper API. Two optional features read server
internals and turn themselves off with a warning when those change: PizzaTune's chunk-rate tuning and the
locator-bar filter. Permissions are pizzasmp.* and declared. Branding, tier names and sell prices are
configuration, not one server's values.
Licensing. Apache 2.0 from this release on; earlier releases remain under MIT. Each jar carries LICENSE and
NOTICE, and PizzaProxyGuard also bundles the MariaDB driver under its LGPL-2.1 license.
Known limits. Folia and Paper 26.x are not supported yet. Network features are in beta: cross-server /home
is not supported, and a home on another backend is refused by name. PizzaSpawnRules is active only on ports 25566
and 25569. See UPCOMING.md.
Upgrading from 1.0.0-beta
- Paper 1.21.7 or newer is required (every plugin declares
api-version: '1.21.7'). - Replace every SMP-Core jar and restart. The database schema and new columns are applied on start; data is kept.
- Move LuckPerms grants to the renamed nodes:
sethome.usetopizzasmp.home.use,sethome.adminto
pizzasmp.home.admin,sethome.maxhomes.5topizzasmp.homes.5,essentials.eco*topizzasmp.admin.eco,
essentials.flytopizzasmp.flight,mycommand.punish/unpunish/forgive/bancheckto the
pizzasmp.nodes of the same name,maintenance.bypasstopizzasmp.maintenance.stay, and
pizzaruleguard.alertstopizzasmp.ruleguard.alerts. - Optional: grant
pizzasmp.priority.<1-9>to set rank priority without relying on group names, and
pizzasmp.chatguard.ownerfor ChatGuard's owner exemption. /sellusesconfigs/sell/prices.ymlif you have one; otherwise the bundled defaults in
plugins/PizzaNetworkCore/sell-prices.yml.- Networks: set
sync.server-nameon every backend so homes record where they were set.
Changes since 1.0.0-beta
Added
- Rank priority can be set with
pizzasmp.priority.1topizzasmp.priority.9(1 is highest) on any server; it
decides full-server joins, staff checks and per-player view distance. The original group names still work. pizzasmp.chatguard.ownermarks a player as the owner for ChatGuard, independent of group names.- Every permission the suite checks is declared in its
plugin.yml, so permission plugins list it with its
intended default. - A startup banner: the first SMP-Core plugin to enable prints the suite version, license and installed modules,
once per server start. - A documented
branding.yml(name, tagline, region, Discord link, tier names, color palette and message tokens)
is written on first start; before, a fresh install had no branding file to edit./branding setruns its
optional operator script only when the script exists. setup.sh: one command creates a runnable server on macOS or Linux (Java 21 check, Paper, the plugins built or
downloaded, checksum-verified ProtocolLib and Vault, optional LuckPerms, the menu datapack, a brand profile and
start.sh). It replacessetup/setup-server.sh, which did not work from the published layout.- A Gradle build that works from a clean clone:
./gradlew buildcompiles every plugin with dependencies from public
repositories and collects the jars inbuild/dist/. - Continuous integration: every push and pull request builds the suite and boots it on Paper, failing on any plugin
error (tools/ci/boot-check.sh). /susopens the inventory review panel by default; its Search button opens a player-name dialog on supported
Java clients, while/sus <player>provides direct lookup on Java and Bedrock. Suspect summaries group retained
flags by check name, so staff can see reasons such as FastBreak rather than a generic anticheat label.- PizzaChatGuard chat log: public chat and private messages with player, UUID and UTC time, one file per day,
blocked messages marked (chat-log.enabled,chat-log.retention-days, default 90). - Storage has two backends, Database and File.
storage.backend: auto(the default) uses the database when one is
configured and reachable, sharing PizzaNetworkCore's connection when a plugin has no database block of its own,
and files otherwise. Each plugin imports its files into the database once, never overwriting existing rows. - PizzaNetworkCore runs without a database server: with no database configured it stores everything in an embedded
database file. A configured database is always used, and never swapped for the file during an outage. - EnderchestExpander and PizzaRuleGuard support Database and File storage. In Database mode expanded ender chests
follow players between servers; the server holding a chest keeps a short hold until its final save, so a fast
server switch never loads a stale copy. RuleGuard's offense log goes to the shared event table. - Homes use that storage: the database when connected (shared by every backend), the SetHome files otherwise.
Existing SetHome files are imported on the first database start, and delete backups follow the same storage. - Home names can contain spaces (
/sethome my base,/home my base). - Staff home tools:
/homes <player>opens any player's homes, online or offline (left-click teleports,
right-click deletes with a confirmation and a backup);/admindelhomeand/gtpwork on the same data. - Staff auction tools (
/ah admin <player>): view, return or remove a player's listings. Returned items go
to an item mailbox, delivered on join or immediately when the player is online. - The database schema is applied on every start, so a fresh database needs no manual import.
- Mutes apply to Simple Voice Chat when it is installed: a muted player's microphone is silenced in proximity
and group chat, with a "You are muted" notice. - Proxy admission control: a login or a switch onto the gameplay backend waits (it looks like a slow login) while
the backend is down or booting, the database is unreachable, the player's data is still held elsewhere, or three
players are already joining; waiting players are admitted in arrival order. Too long a wait ends on a screen
naming the reason. - Canopy Session Gateway support:
network/scripts/build-network-dialogs.shmerges the menu and limbo datapacks so every
backend has identical registries, andnetwork/scripts/check-backend-parity.shchecks backends for the
differences a configuration-free switch cannot tolerate. - One disconnect screen layout for the proxy's own messages, with a brand line and a UTC reference, and restyled
Velocity error messages (network/configs/proxy/lang/messages-overrides.properties). - Full-stop maintenance (
/limbomaint start) checks first and refuses, changing nothing, unless the relaunch
script exists, the database answers and, with players online, the limbo has checked in within 20 seconds
(a heartbeat PizzaLimbo now writes). A second start while one is running is refused, and players still on the
server halfway through the transfer are asked to move again. - Login failsafes for synced player state. Logins are refused while the database is unreachable
(sync.failsafe.deny-login-when-database-down). A player whose state cannot be loaded yet, or whose previous
server has not finished saving them, is held (no item changes, damage or commands) and retried until it loads;
nothing is saved for a held player, so a stale local copy never replaces the stored one. - PizzaChatGuard filter levels (
level: off, light, normal, strong) with separate word lists, a phrase list and
exempt players, managed from a/chatguardpanel (pizzasmp.chatguard.manage).mode: listedfilters only the
players inonly-players. Matching folds lookalike letters, leetspeak, accents, invisible characters and
stretched or spaced-out spellings; slurs ofslur-substring-min-lengthletters or more also match inside words. - Player moderation profile (
/moderation <player>): status, active punishments, chat log and anticheat flags,
with unmute, unban, freeze and inventory actions; a Find Player button opens any profile by name. /suskeeps anticheat suspect history until staff review it: flags stay listed after a player logs out,
pizzasmp.sus.managedismisses or restores them (Grim's own history is never changed), and staff in spectator
can teleport to a suspect from the review./sus <player>opens retained details by name, and/susworks
without PizzaNetworkCore.- The mining audit records each distinct hidden ore discovery with its location for review (
cluster-radius-blocks
groups one vein,log-discoveries). It is low-confidence evidence, never an automatic punishment. /atrackframes its target smoothly and returns the staff member to their exact starting point, also after a
crash or disconnect during the session.- Configu...
SMP-Core 0.1.0 (beta)
First open-source release of the SMP-Core plugin suite for Paper 1.21.11 (Java 21).
Download the jars below, drop them into your server's plugins folder, and start Paper once to generate the config files. See the README for setup and the MySQL requirement for PizzaNetworkCore.
Jar versions in this release:
- PizzaNetworkCore v0.1.0 Beta
- PizzaAdminTools v0.1.0 Beta
- PizzaChatGuard v0.2.0 Beta
- PizzaPunishment v0.1.0 Beta
- PizzaRuleGuard v0.1.0 Beta
- PizzaLimbo v0.1.0 Beta