Skip to content

Releases: FolksyPizza/SMP-Core

SMP-Core 1.0.0

Choose a tag to compare

@FolksyPizza FolksyPizza released this 11 Oct 19:00

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.use to pizzasmp.home.use, sethome.admin to
    pizzasmp.home.admin, sethome.maxhomes.5 to pizzasmp.homes.5, essentials.eco* to pizzasmp.admin.eco,
    essentials.fly to pizzasmp.flight, mycommand.punish / unpunish / forgive / bancheck to the
    pizzasmp. nodes of the same name, maintenance.bypass to pizzasmp.maintenance.stay, and
    pizzaruleguard.alerts to pizzasmp.ruleguard.alerts.
  • Optional: grant pizzasmp.priority.<1-9> to set rank priority without relying on group names, and
    pizzasmp.chatguard.owner for ChatGuard's owner exemption.
  • /sell uses configs/sell/prices.yml if you have one; otherwise the bundled defaults in
    plugins/PizzaNetworkCore/sell-prices.yml.
  • Networks: set sync.server-name on every backend so homes record where they were set.

Changes since 1.0.0-beta

Added

  • Rank priority can be set with pizzasmp.priority.1 to pizzasmp.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.owner marks 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 set runs 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 replaces setup/setup-server.sh, which did not work from the published layout.
  • A Gradle build that works from a clean clone: ./gradlew build compiles every plugin with dependencies from public
    repositories and collects the jars in build/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).
  • /sus opens 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); /admindelhome and /gtp work 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.sh merges the menu and limbo datapacks so every
    backend has identical registries, and network/scripts/check-backend-parity.sh checks 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 /chatguard panel (pizzasmp.chatguard.manage). mode: listed filters only the
    players in only-players. Matching folds lookalike letters, leetspeak, accents, invisible characters and
    stretched or spaced-out spellings; slurs of slur-substring-min-length letters 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.
  • /sus keeps anticheat suspect history until staff review it: flags stay listed after a player logs out,
    pizzasmp.sus.manage dismisses 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 /sus works
    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.
  • /atrack frames its target smoothly and returns the staff member to their exact starting point, also after a
    crash or disconnect during the session.
  • Configu...
Read more

SMP-Core 0.1.0 (beta)

SMP-Core 0.1.0 (beta) Pre-release
Pre-release

Choose a tag to compare

@FolksyPizza FolksyPizza released this 24 Jul 16:45

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