From c5cd5537961a47df495c53b6018467998098ebb7 Mon Sep 17 00:00:00 2001 From: Ryan Barlow <7389646+ryanbarlow97@users.noreply.github.com> Date: Tue, 22 Sep 2026 20:05:15 +0000 Subject: [PATCH 1/2] docs: align Java package references --- PLATFORM.md | 22 +++++++++++++++++++ projects/AACommandsFiller/overview.md | 2 +- projects/AdvancedCrafting/architecture.md | 4 ++-- projects/AdvancedCrafting/configuration.md | 2 +- projects/CoreProtect/docs/api/version/v10.md | 6 ++--- projects/CoreProtect/docs/api/version/v11.md | 6 ++--- projects/CoreProtect/docs/api/version/v12.md | 6 ++--- projects/CoreProtect/docs/api/version/v7.md | 6 ++--- projects/CoreProtect/docs/api/version/v8.md | 6 ++--- projects/CoreProtect/docs/api/version/v9.md | 6 ++--- projects/CoreProtect/overview.md | 2 +- projects/GeigerCounters/overview.md | 2 +- projects/MusicalInstruments/README.md | 4 ++-- projects/MusicalInstruments/overview.md | 2 +- .../ProvinceSystem/docs/identity/tfmcweb.md | 2 +- .../docs/wiki-research/a-magic-knowledge.md | 2 +- .../wiki-research/a2-gems-dowsing-archaeo.md | 8 +++---- .../docs/wiki-research/b-crafting-economy.md | 2 +- .../docs/wiki-research/c-food-farming.md | 2 +- .../docs/wiki-research/d-identity-social.md | 8 +++---- .../docs/injuries-system/phase0-design.md | 2 +- .../docs/persona-system/phase0-design.md | 6 ++--- .../docs/professions-system/phase0-design.md | 2 +- projects/SimpleFactions/overview.md | 18 +++++++-------- projects/Surgery/overview.md | 2 +- projects/TFMCWeb/README.md | 2 +- projects/TLibs/README.md | 2 +- projects/VFBuilders/README.md | 2 +- projects/VehicleFramework/docs/trains.md | 12 +++++----- projects/VehicleFramework/overview.md | 16 +++++++------- 30 files changed, 93 insertions(+), 71 deletions(-) diff --git a/PLATFORM.md b/PLATFORM.md index 152a544..3411be4 100644 --- a/PLATFORM.md +++ b/PLATFORM.md @@ -26,6 +26,28 @@ restored-vehicle failure remains unresolved by this build migration. ## Build conventions +### Java package layout + +Plugin-owned Java sources use `src/main/java/net/tfminecraft//`, +with lowercase package segments throughout. Derive `` from the repository +name by lowercasing it and removing hyphens: for example, `VFBuilders` becomes +`vfbuilders`, `activity-tf` becomes `activitytf`, and `geiger-counters` becomes +`geigercounters`. CoreProtect uses `net.tfminecraft.coreprotect` in this fork. +Use `enums` and `interfaces` as package names; their singular forms are Java +keywords. Java class names retain normal Java capitalization. + +Mirror packages under `src/test/java`, except deliberate external API fixtures. +Keep package declarations, imports, reflection strings, `plugin.yml` entry points, +and shaded-library destinations aligned with the source folders. Maven artifact +coordinates, plugin names, and data-directory names are separate identifiers +from Java packages. + +Build consumers against matching provider jars and release the dependent plugin +set together. CoreProtect integrations use this fork's +`net.tfminecraft.coreprotect` API. + +### Build inputs + Follow the shared [XML and Maven POM conventions](POM-CONVENTIONS.md) when maintaining build files. diff --git a/projects/AACommandsFiller/overview.md b/projects/AACommandsFiller/overview.md index 354abe4..5f3400d 100644 --- a/projects/AACommandsFiller/overview.md +++ b/projects/AACommandsFiller/overview.md @@ -41,7 +41,7 @@ No listeners, no scheduled tasks — everything happens inside the command and t Small, deliberate footprint — each class has one job: ``` -src/main/java/tfmc/justin/ +src/main/java/net/tfminecraft/aacommandsfiller/ ├── AACommandsFiller.java # Entry point: wiring, lifecycle ├── config/ │ └── ConfigHelper.java # config.yml parsing: command tree, permissions, base command diff --git a/projects/AdvancedCrafting/architecture.md b/projects/AdvancedCrafting/architecture.md index f55bdfb..a87de76 100644 --- a/projects/AdvancedCrafting/architecture.md +++ b/projects/AdvancedCrafting/architecture.md @@ -4,7 +4,7 @@ ## Source ownership -The root package is `net.tfminecraft.AdvancedCrafting` (case-sensitive). +The root package is `net.tfminecraft.advancedcrafting` (case-sensitive). `AdvancedCrafting` owns enable/disable, default files, loaders, listeners and manager startup. `Loaders` interpret YAML registries. `Managers` own station, alloy, ingredient and command interactions. `Objects` contains recipes, craft @@ -33,7 +33,7 @@ and dependency migration do not change persistence formats or player data. ## Public API -Events live in `net.tfminecraft.AdvancedCrafting.lifecycle`: +Events live in `net.tfminecraft.advancedcrafting.lifecycle`: | Event | Payload | | --- | --- | diff --git a/projects/AdvancedCrafting/configuration.md b/projects/AdvancedCrafting/configuration.md index 10c7995..ff22379 100644 --- a/projects/AdvancedCrafting/configuration.md +++ b/projects/AdvancedCrafting/configuration.md @@ -39,6 +39,6 @@ Recipe/profession permissions use the configured `permission-prefix` and namespa All `/ac` actions above require the admin permission. `/alloy name` follows its own alloy manager checks. Consult -[CommandManager](https://github.com/TF-Minecraft/AdvancedCrafting/blob/main/src/main/java/net/tfminecraft/AdvancedCrafting/Managers/CommandManager.java) +[CommandManager](https://github.com/TF-Minecraft/AdvancedCrafting/blob/main/src/main/java/net/tfminecraft/advancedcrafting/managers/CommandManager.java) for parsing and player/console restrictions. Use a restart when changing plugin JARs; configuration reload does not replace loaded classes. diff --git a/projects/CoreProtect/docs/api/version/v10.md b/projects/CoreProtect/docs/api/version/v10.md index 58b2cf4..59cc532 100644 --- a/projects/CoreProtect/docs/api/version/v10.md +++ b/projects/CoreProtect/docs/api/version/v10.md @@ -26,13 +26,13 @@ logRemoval(String user, BlockState blockState) ## Getting Started Ensure you're using CoreProtect 22.4 or higher. Add it as an external jar to your plugin in your IDE. -Alternatively, if using Maven, you can add it via the repository [https://maven.playpro.com](https://maven.playpro.com) (net.coreprotect, 22.4). +Build and install the TFMC CoreProtect source. Its Maven coordinates are `net.coreprotect:CoreProtect`; the Java API package is `net.tfminecraft.coreprotect`. The first thing you need to do is get access to CoreProtect. You can do this by using code similar to the following: ```java -import net.coreprotect.CoreProtect; -import net.coreprotect.CoreProtectAPI; +import net.tfminecraft.coreprotect.CoreProtect; +import net.tfminecraft.coreprotect.CoreProtectAPI; private CoreProtectAPI getCoreProtect() { Plugin plugin = getServer().getPluginManager().getPlugin("CoreProtect"); diff --git a/projects/CoreProtect/docs/api/version/v11.md b/projects/CoreProtect/docs/api/version/v11.md index 4453dad..03b080d 100644 --- a/projects/CoreProtect/docs/api/version/v11.md +++ b/projects/CoreProtect/docs/api/version/v11.md @@ -29,13 +29,13 @@ CoreProtectPreLogEvent(String user) ## Getting Started Ensure you're using CoreProtect 23.1 or higher. Add it as an external jar to your plugin in your IDE. -Alternatively, if using Maven, you can add it via the repository https://maven.playpro.com (net.coreprotect, 23.1). +Build and install the TFMC CoreProtect source. Its Maven coordinates are `net.coreprotect:CoreProtect`; the Java API package is `net.tfminecraft.coreprotect`. The first thing you need to do is get access to CoreProtect. You can do this by using code similar to the following: ```java -import net.coreprotect.CoreProtect; -import net.coreprotect.CoreProtectAPI; +import net.tfminecraft.coreprotect.CoreProtect; +import net.tfminecraft.coreprotect.CoreProtectAPI; private CoreProtectAPI getCoreProtect() { Plugin plugin = getServer().getPluginManager().getPlugin("CoreProtect"); diff --git a/projects/CoreProtect/docs/api/version/v12.md b/projects/CoreProtect/docs/api/version/v12.md index 39869b4..587d025 100644 --- a/projects/CoreProtect/docs/api/version/v12.md +++ b/projects/CoreProtect/docs/api/version/v12.md @@ -81,13 +81,13 @@ CoreProtectAction ## Getting Started Ensure you're using CoreProtect 24.0 or higher. Add it as an external jar to your plugin in your IDE. -Alternatively, if using Maven, you can add it via the repository https://maven.playpro.com (net.coreprotect, 24.0). +Build and install the TFMC CoreProtect source. Its Maven coordinates are `net.coreprotect:CoreProtect`; the Java API package is `net.tfminecraft.coreprotect`. The first thing you need to do is get access to CoreProtect. You can do this by using code similar to the following: ```java -import net.coreprotect.CoreProtect; -import net.coreprotect.CoreProtectAPI; +import net.tfminecraft.coreprotect.CoreProtect; +import net.tfminecraft.coreprotect.CoreProtectAPI; private CoreProtectAPI getCoreProtect() { Plugin plugin = getServer().getPluginManager().getPlugin("CoreProtect"); diff --git a/projects/CoreProtect/docs/api/version/v7.md b/projects/CoreProtect/docs/api/version/v7.md index feb743a..81d7525 100644 --- a/projects/CoreProtect/docs/api/version/v7.md +++ b/projects/CoreProtect/docs/api/version/v7.md @@ -40,13 +40,13 @@ parseResult(String[] result).getTypeId() ## Getting Started Ensure you're using CoreProtect 20.0 or higher. Add it as an external jar to your plugin in your IDE. -Alternatively, if using Maven, you can add it via the repository [https://maven.playpro.com](https://maven.playpro.com) (net.coreprotect, 20.0). +Build and install the TFMC CoreProtect source. Its Maven coordinates are `net.coreprotect:CoreProtect`; the Java API package is `net.tfminecraft.coreprotect`. The first thing you need to do is get access to CoreProtect. You can do this by using code similar to the following: ```java -import net.coreprotect.CoreProtect; -import net.coreprotect.CoreProtectAPI; +import net.tfminecraft.coreprotect.CoreProtect; +import net.tfminecraft.coreprotect.CoreProtectAPI; private CoreProtectAPI getCoreProtect() { Plugin plugin = getServer().getPluginManager().getPlugin("CoreProtect"); diff --git a/projects/CoreProtect/docs/api/version/v8.md b/projects/CoreProtect/docs/api/version/v8.md index ff4f813..0632a06 100644 --- a/projects/CoreProtect/docs/api/version/v8.md +++ b/projects/CoreProtect/docs/api/version/v8.md @@ -26,13 +26,13 @@ CoreProtectPreLogEvent ## Getting Started Ensure you're using CoreProtect 20.2 or higher. Add it as an external jar to your plugin in your IDE. -Alternatively, if using Maven, you can add it via the repository [https://maven.playpro.com](https://maven.playpro.com) (net.coreprotect, 20.2). +Build and install the TFMC CoreProtect source. Its Maven coordinates are `net.coreprotect:CoreProtect`; the Java API package is `net.tfminecraft.coreprotect`. The first thing you need to do is get access to CoreProtect. You can do this by using code similar to the following: ```java -import net.coreprotect.CoreProtect; -import net.coreprotect.CoreProtectAPI; +import net.tfminecraft.coreprotect.CoreProtect; +import net.tfminecraft.coreprotect.CoreProtectAPI; private CoreProtectAPI getCoreProtect() { Plugin plugin = getServer().getPluginManager().getPlugin("CoreProtect"); diff --git a/projects/CoreProtect/docs/api/version/v9.md b/projects/CoreProtect/docs/api/version/v9.md index a998d9f..6e6c949 100644 --- a/projects/CoreProtect/docs/api/version/v9.md +++ b/projects/CoreProtect/docs/api/version/v9.md @@ -26,13 +26,13 @@ queueLookup(Block block) ## Getting Started Ensure you're using CoreProtect 21.0 or higher. Add it as an external jar to your plugin in your IDE. -Alternatively, if using Maven, you can add it via the repository [https://maven.playpro.com](https://maven.playpro.com) (net.coreprotect, 21.0). +Build and install the TFMC CoreProtect source. Its Maven coordinates are `net.coreprotect:CoreProtect`; the Java API package is `net.tfminecraft.coreprotect`. The first thing you need to do is get access to CoreProtect. You can do this by using code similar to the following: ```java -import net.coreprotect.CoreProtect; -import net.coreprotect.CoreProtectAPI; +import net.tfminecraft.coreprotect.CoreProtect; +import net.tfminecraft.coreprotect.CoreProtectAPI; private CoreProtectAPI getCoreProtect() { Plugin plugin = getServer().getPluginManager().getPlugin("CoreProtect"); diff --git a/projects/CoreProtect/overview.md b/projects/CoreProtect/overview.md index 2a4142d..49c20f2 100644 --- a/projects/CoreProtect/overview.md +++ b/projects/CoreProtect/overview.md @@ -41,7 +41,7 @@ Maven: ```xml - net.coreprotect + net.tfminecraft.coreprotect coreprotect 24.0 provided diff --git a/projects/GeigerCounters/overview.md b/projects/GeigerCounters/overview.md index 51fe52a..50f76d8 100644 --- a/projects/GeigerCounters/overview.md +++ b/projects/GeigerCounters/overview.md @@ -69,7 +69,7 @@ Players with `geiger.limit.bypass` are never limited. Small, deliberate footprint — each class has one job: ``` -src/main/java/tfmc/justin/ +src/main/java/net/tfminecraft/geigercounters/ ├── geiger_counter.java # Entry point: wiring, lifecycle ├── config/ │ ├── ConfigMigrator.java # Adds new keys to existing configs, splits out messages.yml diff --git a/projects/MusicalInstruments/README.md b/projects/MusicalInstruments/README.md index 76b8ad9..76b77a3 100644 --- a/projects/MusicalInstruments/README.md +++ b/projects/MusicalInstruments/README.md @@ -15,12 +15,12 @@ See the [shared pipeline guide](../../PIPELINES.md) for development artifacts, r ## Playback events in 2.5 Version [2.5](https://github.com/TF-Minecraft/MusicalInstruments/releases/tag/v2.5) -emits `tfmc.justin.events.InstrumentPlayEvent` after playing a configured note. +emits `net.tfminecraft.musicalinstruments.events.InstrumentPlayEvent` after playing a configured note. Listeners can read `getPlayer()`, `getInstrument()` and `getSoundKey()`. The event is informational and is not cancellable. It is emitted before the note particle and hotbar reset, only when an instrument and sound mapping have been found. ActivityTF consumes this API through the public release. Maven consumers declare -`tfmc.justin:musicalinstruments` with `provided` scope and use the shared installer. +`net.tfminecraft.musicalinstruments:musicalinstruments` with `provided` scope and use the shared installer. The plugin remains a separate server JAR. Java 21 is required; the release filename and embedded plugin version both use 2.5. Existing configuration remains compatible. diff --git a/projects/MusicalInstruments/overview.md b/projects/MusicalInstruments/overview.md index af33f33..15ce6fc 100644 --- a/projects/MusicalInstruments/overview.md +++ b/projects/MusicalInstruments/overview.md @@ -39,7 +39,7 @@ A lightweight repeating task tracks each performing player and cleans itself up Small, deliberate footprint — each class has one job: ``` -src/main/java/tfmc/justin/ +src/main/java/net/tfminecraft/musicalinstruments/ ├── InstrumentPlugin.java # Entry point: wiring, lifecycle, config loading ├── commands/ │ └── InstrumentCommand.java # /instruments command + tab completion diff --git a/projects/ProvinceSystem/docs/identity/tfmcweb.md b/projects/ProvinceSystem/docs/identity/tfmcweb.md index 9949d02..7162336 100644 --- a/projects/ProvinceSystem/docs/identity/tfmcweb.md +++ b/projects/ProvinceSystem/docs/identity/tfmcweb.md @@ -14,7 +14,7 @@ Companion: [integrations/discord-bot.md](../integrations/discord-bot.md) · [cos | Decision | Choice | |----------|--------| -| Plugin name | **TFMCWeb** (`net.tfminecraft.TFMCWeb`) | +| Plugin name | **TFMCWeb** (`net.tfminecraft.tfmcweb`) | | Owns | HTTP client, plugin key, Discord **link**, scoped **tokens**, link **cache**, Discord **gate** (via RPCharacters freeze), ban/warn **mirrors**, admin `/web` | | Does **not** own | Pack writing (ArmourShop/DrinkBuilder), map regen (SimpleFactions), character data (RPCharacters), Essentials ban execution | | Discord required | Every player must link Discord **and** be in the TFMC guild to play Survival | diff --git a/projects/ProvinceSystem/docs/wiki-research/a-magic-knowledge.md b/projects/ProvinceSystem/docs/wiki-research/a-magic-knowledge.md index 4c20101..52b2ac9 100644 --- a/projects/ProvinceSystem/docs/wiki-research/a-magic-knowledge.md +++ b/projects/ProvinceSystem/docs/wiki-research/a-magic-knowledge.md @@ -9,7 +9,7 @@ Nothing in this file is guide prose. Every non-obvious claim cites a file path. Status of source code: **no source repository was found for Magic or Research.** `github.com/drefvelin/magic` and `github.com/drefvelin/research` both return "Repository not found". `C:\Users\MSI\Desktop\plugin-src\advancedresearch` is a -*different, unrelated* plugin (`me.Plugins.AdvancedResearch`), **not** the deployed +*different, unrelated* plugin (`net.tfminecraft.advancedresearch`), **not** the deployed `Research` plugin (`net.tfminecraft.research.Research`). All Magic and Research facts below are therefore derived from live config + data files and the jar `plugin.yml`. diff --git a/projects/ProvinceSystem/docs/wiki-research/a2-gems-dowsing-archaeo.md b/projects/ProvinceSystem/docs/wiki-research/a2-gems-dowsing-archaeo.md index 2aede71..8d9ce38 100644 --- a/projects/ProvinceSystem/docs/wiki-research/a2-gems-dowsing-archaeo.md +++ b/projects/ProvinceSystem/docs/wiki-research/a2-gems-dowsing-archaeo.md @@ -9,7 +9,7 @@ syntax: `STONE_HOE` / `mmoitems:TYPE:ID` / `itemsadder:namespace:id`. Sources read: - `C:\Users\MSI\Desktop\plugins\GemInfusion\` (config.yml, goldsmithing.yml, goldsmithing/*.yml) -- `C:\Users\MSI\Desktop\plugin-src\geminfusion\` (full source, `src/main/java/me/Plugins/GemInfusion/`) +- `C:\Users\MSI\Desktop\plugin-src\geminfusion\` (full source, `src/main/java/net/tfminecraft/geminfusion/`) - `C:\Users\MSI\Desktop\plugins\Dowsing\` (config.yml, blocks.yml, types.yml, slots.yml, production_methods.yml, guild_capacity.json) - `C:\Users\MSI\Desktop\plugins\Archaeo\` (all 7 yml) - `C:\Users\MSI\Desktop\plugin-src\archeology-plugin\` (docs/gameplay.md, docs/concepto.md, src/, pack/) @@ -20,7 +20,7 @@ Sources read: Jar: `C:\Users\MSI\Desktop\plugins\geminfusion-2.2.jar` Source: `C:\Users\MSI\Desktop\plugin-src\geminfusion` (HEAD `b5a5d76 merged goldsmithing`) -Main class `me.Plugins.GemInfusion.InfusionMain`, author Drefvelin. +Main class `net.tfminecraft.geminfusion.InfusionMain`, author Drefvelin. Hard depends on TLibs, MMOItems, MythicLib; soft-depends MMOCore. (`plugin-src/geminfusion/src/main/resources/plugin.yml`) @@ -378,7 +378,7 @@ the dowsing stick as a proximity detector.** | Wiki page | Actual plugin | Evidence | |---|---|---| -| **Arcane Trace Detector** (`GEIGER_COUNTER`) | `geiger_counter-1.1.2.jar` | Its `plugin.yml` declares `name: geiger_counter`, `main: tfmc.justin.geiger_counter`, author Justin, command `/geiger ` under `geiger.admin`, plus a `geiger.limit.bypass` per-player drop limit — exactly the single-hidden-source loot race the existing page describes. | +| **Arcane Trace Detector** (`GEIGER_COUNTER`) | `geiger_counter-1.1.2.jar` | Its `plugin.yml` declares `name: geiger_counter`, `main: net.tfminecraft.geigercounters.geiger_counter`, author Justin, command `/geiger ` under `geiger.admin`, plus a `geiger.limit.bypass` per-player drop limit — exactly the single-hidden-source loot race the existing page describes. | | **Mount Whistle** (`ANIMAL_WHISTLE`) | Not Dowsing. **GUESS:** TFMCCore or MCPets. Not investigated (out of scope), but Dowsing's bytecode contains no whistle, no glow effect, no entity scan and no 64-block radius anywhere. | | **Dowsing** | `dowsing-3.1.2.jar` | Guild-owned **resource-node industry**: place a node block in a chunk, pick a node type, slot production methods, run timed production cycles that consume inputs and drop outputs. It hard-depends on **SimpleFactions**, which neither of the other two does. | @@ -739,7 +739,7 @@ is not. ## Cross-links -- **SimpleFactions** (`me.Plugins.SimpleFactions.Guild.Guild`) — **hard dependency**. Node +- **SimpleFactions** (`net.tfminecraft.simplefactions.guild.Guild`) — **hard dependency**. Node ownership, the guild bank (upgrade costs, capacity purchases), guild-leader-only claiming, member-count-driven efficiency and the node capacity limit all live there. Dowsing is a guild feature, not a solo one. diff --git a/projects/ProvinceSystem/docs/wiki-research/b-crafting-economy.md b/projects/ProvinceSystem/docs/wiki-research/b-crafting-economy.md index 53bfe2e..80730a1 100644 --- a/projects/ProvinceSystem/docs/wiki-research/b-crafting-economy.md +++ b/projects/ProvinceSystem/docs/wiki-research/b-crafting-economy.md @@ -11,7 +11,7 @@ | AdvancedCrafting | none found | drefvelin/advancedcrafting and JustinasLa/AdvancedCrafting do not exist. Jar-only. | | Gathering | none found | Jar-only. | | Recycler | none found | Jar-only. | -| MarketBlock | none found | Jar-only. **Not** the same plugin as `bartershops` — BarterShops is a separate installed jar (`net.tfminecraft.BarterShops.ShopMain`) with no data folder. | +| MarketBlock | none found | Jar-only. **Not** the same plugin as `bartershops` — BarterShops is a separate installed jar (`net.tfminecraft.bartershops.ShopMain`) with no data folder. | | DenarEconomy | `drefvelin/denareconomy` (cloned) | Source is from 2025-05-11 and is **behind** the live 0.1.8 jar (no `/pouch`, no `baltop`, no `toitem`). Facts below come from the jar. | | ArmourShop | `drefvelin/armourshop` (cloned) | Source commit `b1462f1`, 2026-07-13. Matches the live jar for GUI/skin logic; the jar has extra admin subcommands the source lacks. | | ExcellentCrates | third-party (NightExpress) | Jar + configs only. | diff --git a/projects/ProvinceSystem/docs/wiki-research/c-food-farming.md b/projects/ProvinceSystem/docs/wiki-research/c-food-farming.md index ff1dc88..6c47ff5 100644 --- a/projects/ProvinceSystem/docs/wiki-research/c-food-farming.md +++ b/projects/ProvinceSystem/docs/wiki-research/c-food-farming.md @@ -160,7 +160,7 @@ Other multipliers (`tags.yml`): Raw ×0.5 nutrition; **Cooked** ×1.5 nutrition, A donator perk: you design your own alcoholic drink on the TFMC website, staff approve it, and the plugin automatically creates it as a real brewable BreweryX recipe plus a custom-textured bottle on the server. ### How a player actually uses it -DrinkBuilder has **no in-game player commands**. The flow (from `plugin-src/DrinkBuilder/src/main/java/net/tfminecraft/DrinkBuilder/`): +DrinkBuilder has **no in-game player commands**. The flow (from `plugin-src/DrinkBuilder/src/main/java/net/tfminecraft/drinkbuilder/`): 1. Player with a donator rank opens the **ProvinceSystem website** drinks page (`/drinks`) and builds a drink: name (with colour stops), ingredients from the allowlist, cooking time, distill runs & time, barrel wood, age, difficulty, alcohol, lore, drink message, drink title, glint, potion effects, colour, and (higher ranks only) a custom bottle texture. 2. The submission is reviewed. `AssetSyncService` uploads `potion_overlay.png` and `glass_bottle.png` to the API so the website and Discord review sheets can render a preview (`plugins/DrinkBuilder/assets/README.txt`). 3. On approval, `PackPullRunner` pulls the pending drink and `RecipesYmlMerger.merge()` writes a new section into `plugins/BreweryX/recipes.yml` **keyed by the submission id**, and `IaDrinksWriter` writes the item into the ItemsAdder pack `tfmc_drinks`. The plugin then triggers `/iareload` and, after `ia-reload-delay-seconds: 8`, `/iazip` (`plugins/DrinkBuilder/config.yml`). diff --git a/projects/ProvinceSystem/docs/wiki-research/d-identity-social.md b/projects/ProvinceSystem/docs/wiki-research/d-identity-social.md index d077680..003c41a 100644 --- a/projects/ProvinceSystem/docs/wiki-research/d-identity-social.md +++ b/projects/ProvinceSystem/docs/wiki-research/d-identity-social.md @@ -38,7 +38,7 @@ Every `.jar` in the plugins folder was enumerated and its `plugin.yml` `name:` f ## RPCharacters -`rpcharacters-1.1.6.jar` · author Drefvelin · `main: net.tfminecraft.RPCharacters.RPCharacters` +`rpcharacters-1.1.6.jar` · author Drefvelin · `main: net.tfminecraft.rpcharacters.RPCharacters` ### What it is @@ -182,7 +182,7 @@ RPCharacters is the roleplay-character backbone of the server: it makes each pla ### Cross-links -- **TLibs** (hard depend) — all item references use TLibs paths (`m.tools.*`, `m.currency.*`, `v.*`); `PvpCommand` imports `me.Plugins.TLibs.Armour.ArmorEquipEvent`. +- **TLibs** (hard depend) — all item references use TLibs paths (`m.tools.*`, `m.currency.*`, `v.*`); `PvpCommand` imports `net.tfminecraft.tlibs.armour.ArmorEquipEvent`. - **MMOCore** (hard depend) — character classes are MMOCore `PlayerClass` objects; RPCharacters hooks `/mmocore admin skill-points` and `attribute-points`. - **MMOItems** (hard depend) — `professions.yml` `types.*.mmoitem_types` lists MMOItems types (sword, spear, musket, shield...). - **MythicLib** (hard depend) — attribute/stat layer under MMOCore. @@ -404,7 +404,7 @@ Highest vanilla requirement WHEAT **0.90**; TORCHFLOWER / BEETROOTS 0.80; lowest - **DenarEconomy** (hard depend) — all banks, upkeep, loans, dividends and mercenary wages are denars. Vehicle maintenance is charged to the player **pouch**, not the bank. - **TLibs** (hard depend) — hex formatting and the item-reference syntax used throughout configs (`v.diamond`, `ia.namespace:id`, `m.type.id`, `iaf(...)`). -- **TFMCWeb / ProvinceSystem web map** (softdepend) — `api.GatewayClient` reflectively calls `net.tfminecraft.TFMCWeb.api.ProvinceSystemGateway`. Startup warns: *"enable-map is true but TFMCWeb is not loaded. Map upload, province lookup, and regen require TFMCWeb + api.base-url / api.plugin-key."* Backend at `http://127.0.0.1:8000`, realm `main`, matching `map-reference: main`. Exports land in `MapAPI/`. The war-declare code gate also calls ProvinceSystem. +- **TFMCWeb / ProvinceSystem web map** (softdepend) — `api.GatewayClient` reflectively calls `net.tfminecraft.tfmcweb.api.ProvinceSystemGateway`. Startup warns: *"enable-map is true but TFMCWeb is not loaded. Map upload, province lookup, and regen require TFMCWeb + api.base-url / api.plugin-key."* Backend at `http://127.0.0.1:8000`, realm `main`, matching `map-reference: main`. Exports land in `MapAPI/`. The war-declare code gate also calls ProvinceSystem. - **VehicleFramework + VFBuilders** (softdepends) — startup logs *"VehicleFramework vehicle integration enabled"* and *"VFBuilders vehicle integration enabled"*. The whole `vehicles/` package wraps VF vehicles. - **MMOCore / MythicLib / MMOItems** (softdepends) — `GuildModifier` exposes `MAX_HEALTH`, `MAX_MANA`, `MANA_REGEN`, which mercenary company upgrades apply; mana is an MMOCore stat. - **RPCharacters** (softdepend) — the per-member playtime prestige term "Needs RPCharacters; without it the term is 0." Also a mercenary-eligibility trait probe. @@ -739,7 +739,7 @@ Each page references another system: ## AACommandsFiller -`AACommandsFiller-2.0.jar` · author Justin · `main: tfmc.justin.AACommandsFiller` +`AACommandsFiller-2.0.jar` · author Justin · `main: net.tfminecraft.aacommandsfiller.AACommandsFiller` ### What it is diff --git a/projects/RPCharacters/docs/injuries-system/phase0-design.md b/projects/RPCharacters/docs/injuries-system/phase0-design.md index 336b4a9..85d1208 100644 --- a/projects/RPCharacters/docs/injuries-system/phase0-design.md +++ b/projects/RPCharacters/docs/injuries-system/phase0-design.md @@ -1,7 +1,7 @@ # Phase 0 — Injuries, Healing, Prosthetics Design Lock **Status:** Design spec -**Target:** RPCharacters (`net.tfminecraft.RPCharacters`) +**Target:** RPCharacters (`net.tfminecraft.rpcharacters`) **Context:** Replaces flat injury traits (`one_handed`, `one_legged`, etc.) with healing vs permanent injuries, remedies, prosthetic replacements, and optional fuel. --- diff --git a/projects/RPCharacters/docs/persona-system/phase0-design.md b/projects/RPCharacters/docs/persona-system/phase0-design.md index ecad53e..620c72b 100644 --- a/projects/RPCharacters/docs/persona-system/phase0-design.md +++ b/projects/RPCharacters/docs/persona-system/phase0-design.md @@ -1,7 +1,7 @@ # Phase 0 — RP Persona System Design Lock **Status:** Design spec (documentation only — no runtime changes in Phase 0) -**Target plugin:** RPCharacters (`net.tfminecraft.RPCharacters`) +**Target plugin:** RPCharacters (`net.tfminecraft.rpcharacters`) **Context:** New season greenfield — no data migration, no legacy placeholders, no backwards compatibility. --- @@ -142,7 +142,7 @@ LOOC/OOC/admin channels use `{player}` (account name), not `{display}` — masks ## 5. DisplayIdentityService -Package: `net.tfminecraft.RPCharacters.identity` +Package: `net.tfminecraft.rpcharacters.identity` ```java // Pseudocode — implementation spec for Phase 1+ @@ -595,7 +595,7 @@ Must pass on staging before production deploy. ## 15. Package structure ``` -net.tfminecraft.RPCharacters +net.tfminecraft.rpcharacters ├── identity/ DisplayIdentityService, NameColour, MaskService ├── placeholder/ RpCharactersExpansion ├── chat/ ChatManager, Channel, CharacterChatEvent diff --git a/projects/RPCharacters/docs/professions-system/phase0-design.md b/projects/RPCharacters/docs/professions-system/phase0-design.md index 17b3b32..4bf13a5 100644 --- a/projects/RPCharacters/docs/professions-system/phase0-design.md +++ b/projects/RPCharacters/docs/professions-system/phase0-design.md @@ -1,7 +1,7 @@ # Phase 0 — Professions System Design Lock **Status:** Design spec -**Target:** RPCharacters (`net.tfminecraft.RPCharacters.professions`) +**Target:** RPCharacters (`net.tfminecraft.rpcharacters.professions`) **Context:** Greenfield deploy — retire standalone `Professions.jar`, no auto-migration from `plugins/Professions/PlayerData/`. --- diff --git a/projects/SimpleFactions/overview.md b/projects/SimpleFactions/overview.md index b8ae559..bd0ec1a 100644 --- a/projects/SimpleFactions/overview.md +++ b/projects/SimpleFactions/overview.md @@ -20,12 +20,12 @@ This project also demonstrates cross-language integration through **ProvinceSyst ## Features - Faction objects that function as nations in-game - ([Faction.java](https://github.com/TF-Minecraft/SimpleFactions/blob/ad9b048ec42c1842b277f4657f490b25691f854d/src/main/java/me/Plugins/SimpleFactions/Objects/Faction.java)) + ([Faction.java](https://github.com/TF-Minecraft/SimpleFactions/blob/ad9b048ec42c1842b277f4657f490b25691f854d/src/main/java/net/tfminecraft/simplefactions/objects/Faction.java)) - Faction relationships - ([RelationManager.java](https://github.com/TF-Minecraft/SimpleFactions/blob/ad9b048ec42c1842b277f4657f490b25691f854d/src/main/java/me/Plugins/SimpleFactions/Managers/RelationManager.java)) + ([RelationManager.java](https://github.com/TF-Minecraft/SimpleFactions/blob/ad9b048ec42c1842b277f4657f490b25691f854d/src/main/java/net/tfminecraft/simplefactions/managers/RelationManager.java)) - Titles (Kingdom, Duchy, etc.) connected with the REST server and the TitleManager ([ProvinceSystem](https://github.com/TF-Minecraft/ProvinceSystem), - [TitleManager.java](https://github.com/TF-Minecraft/SimpleFactions/blob/ad9b048ec42c1842b277f4657f490b25691f854d/src/main/java/me/Plugins/SimpleFactions/Managers/TitleManager.java)) + [TitleManager.java](https://github.com/TF-Minecraft/SimpleFactions/blob/ad9b048ec42c1842b277f4657f490b25691f854d/src/main/java/net/tfminecraft/simplefactions/managers/TitleManager.java)) ## Technical Overview - Runtime target: TFMC Minecraft **1.21.10**; follow the [shared platform baseline](../../PLATFORM.md). @@ -34,16 +34,16 @@ This project also demonstrates cross-language integration through **ProvinceSyst ### Architecture - The main class initializes managers and overall plugin setup - ([SimpleFactions.java](https://github.com/TF-Minecraft/SimpleFactions/blob/ad9b048ec42c1842b277f4657f490b25691f854d/src/main/java/me/Plugins/SimpleFactions/SimpleFactions.java)) + ([SimpleFactions.java](https://github.com/TF-Minecraft/SimpleFactions/blob/ad9b048ec42c1842b277f4657f490b25691f854d/src/main/java/net/tfminecraft/simplefactions/SimpleFactions.java)) - Configuration files (and titles from JSON) are loaded and stored via the Loader classes - ([Loaders](https://github.com/TF-Minecraft/SimpleFactions/tree/ad9b048ec42c1842b277f4657f490b25691f854d/src/main/java/me/Plugins/SimpleFactions/Loaders)) + ([Loaders](https://github.com/TF-Minecraft/SimpleFactions/tree/ad9b048ec42c1842b277f4657f490b25691f854d/src/main/java/net/tfminecraft/simplefactions/loaders)) - `FactionManager` handles faction creation, lookups, member/leader queries, and database calls - ([FactionManager.java](https://github.com/TF-Minecraft/SimpleFactions/blob/ad9b048ec42c1842b277f4657f490b25691f854d/src/main/java/me/Plugins/SimpleFactions/Managers/FactionManager.java)) + ([FactionManager.java](https://github.com/TF-Minecraft/SimpleFactions/blob/ad9b048ec42c1842b277f4657f490b25691f854d/src/main/java/net/tfminecraft/simplefactions/managers/FactionManager.java)) - The `Inventory` package contains the extensive GUI classes players interact with - ([Inventory](https://github.com/TF-Minecraft/SimpleFactions/tree/ad9b048ec42c1842b277f4657f490b25691f854d/src/main/java/me/Plugins/SimpleFactions/Managers/Inventory)) + ([Inventory](https://github.com/TF-Minecraft/SimpleFactions/tree/ad9b048ec42c1842b277f4657f490b25691f854d/src/main/java/net/tfminecraft/simplefactions/managers/inventory)) - `MapSystem` is the primary interface for REST communication, while `RestServer` manages the actual requests and responses - ([MapSystem.java](https://github.com/TF-Minecraft/SimpleFactions/blob/ad9b048ec42c1842b277f4657f490b25691f854d/src/main/java/me/Plugins/SimpleFactions/Map/MapSystem.java),\ - [RestServer.java](https://github.com/TF-Minecraft/SimpleFactions/blob/ad9b048ec42c1842b277f4657f490b25691f854d/src/main/java/me/Plugins/SimpleFactions/REST/RestServer.java)) + ([MapSystem.java](https://github.com/TF-Minecraft/SimpleFactions/blob/ad9b048ec42c1842b277f4657f490b25691f854d/src/main/java/net/tfminecraft/simplefactions/map/MapSystem.java),\ + [RestServer.java](https://github.com/TF-Minecraft/SimpleFactions/blob/ad9b048ec42c1842b277f4657f490b25691f854d/src/main/java/net/tfminecraft/simplefactions/rest/RestServer.java)) ## Key Challenges Solved diff --git a/projects/Surgery/overview.md b/projects/Surgery/overview.md index 63a2229..05f556a 100644 --- a/projects/Surgery/overview.md +++ b/projects/Surgery/overview.md @@ -44,7 +44,7 @@ All per-patient state lives in `SurgeryStateManager` maps keyed by player UUID a One manager per concern, wired together by `SurgeryMenuManager`: ``` -src/main/java/tfmc/justin/ +src/main/java/net/tfminecraft/surgery/ ├── SurgeryPlugin.java # Entry point: wiring, lifecycle ├── commands/ │ └── SurgeryCommand.java # /surgery validation + menu open diff --git a/projects/TFMCWeb/README.md b/projects/TFMCWeb/README.md index 6fac718..ea61466 100644 --- a/projects/TFMCWeb/README.md +++ b/projects/TFMCWeb/README.md @@ -8,7 +8,7 @@ TFMC runs Minecraft **1.21.10**. See the [shared platform and build baseline](.. ## Runtime and ownership -The entrypoint is `net.tfminecraft.TFMCWeb.TFMCWeb`. TLibs is a required plugin; RPCharacters and Essentials are optional integrations declared in `src/main/resources/plugin.yml`. Without RPCharacters, the Discord Survival gate is disabled while linking and HTTP remain active. +The entrypoint is `net.tfminecraft.tfmcweb.TFMCWeb`. TLibs is a required plugin; RPCharacters and Essentials are optional integrations declared in `src/main/resources/plugin.yml`. Without RPCharacters, the Discord Survival gate is disabled while linking and HTTP remain active. `ProvinceSystemGateway` provides the shared web transport. The plugin loads `config.yml`, maintains a link cache, starts the notice poller, and registers `/linkdiscord`, `/unlinkdiscord`, `/web`, `/token` and `/warning`. Configure the API URL, plugin key and realm using the identity guide below; permission defaults and exact command syntax live in `plugin.yml`. diff --git a/projects/TLibs/README.md b/projects/TLibs/README.md index 871c0f4..66c5047 100644 --- a/projects/TLibs/README.md +++ b/projects/TLibs/README.md @@ -10,7 +10,7 @@ Published Java 21 replacement: [1.1.1](https://github.com/TF-Minecraft/TLibs/rel ## Runtime and integration -The entrypoint is `me.Plugins.TLibs.TLibs`. `TLibs.getItemAPI()` and `TLibs.getBlockAPI()` expose the shared APIs; `getApiInstance(APIType)` is deprecated. Item path handlers let integrations register and remove their own item prefixes. +The entrypoint is `net.tfminecraft.tlibs.TLibs`. `TLibs.getItemAPI()` and `TLibs.getBlockAPI()` expose the shared APIs; `getApiInstance(APIType)` is deprecated. Item path handlers let integrations register and remove their own item prefixes. Startup loads `config.yml`, initializes APIs, registers armour and furniture listeners, and attempts to register the MMOItems rebuild bridge. `/tlibs` is restricted by `tlibs.admin` (operator by default). The plugin descriptor declares optional integrations for MMOItems, MythicLib, ItemsAdder, MythicMobs, MMOCore and MCPets, and requests loading before RPCharacters. Optional runtime hooks still have compile-time dependency requirements in the POM. diff --git a/projects/VFBuilders/README.md b/projects/VFBuilders/README.md index 9b9097a..dd259ea 100644 --- a/projects/VFBuilders/README.md +++ b/projects/VFBuilders/README.md @@ -36,7 +36,7 @@ VehicleFramework build before deployment. The [plugin manifest](https://github.com/TF-Minecraft/VFBuilders/blob/main/src/main/resources/plugin.yml) requires TLibs and VehicleFramework. The -[entrypoint](https://github.com/TF-Minecraft/VFBuilders/blob/main/src/main/java/net/tfminecraft/VFBuilders/VFBuilders.java) +[entrypoint](https://github.com/TF-Minecraft/VFBuilders/blob/main/src/main/java/net/tfminecraft/vfbuilders/VFBuilders.java) loads `config.yml`, `stations.yml`, `categories.yml` and files under `plugins/VFBuilders/blueprints/`, then starts the station manager. It creates a `data/` directory under the plugin's data folder. diff --git a/projects/VehicleFramework/docs/trains.md b/projects/VehicleFramework/docs/trains.md index 5833d2b..c0359f4 100644 --- a/projects/VehicleFramework/docs/trains.md +++ b/projects/VehicleFramework/docs/trains.md @@ -50,7 +50,7 @@ Trailing cars rewind behind the parent using signed arc length. On loops, `stemL ### Spacing -Reuse `behaviour.train` front/back connector bones ([`Connector`](https://github.com/TF-Minecraft/VehicleFramework/blob/bfdb59ba651723200b364b132c0b6969244389ef/src/main/java/net/tfminecraft/VehicleFramework/Vehicles/Handlers/Train/Connector.java)). Spacing is bone distance along the spline. +Reuse `behaviour.train` front/back connector bones ([`Connector`](https://github.com/TF-Minecraft/VehicleFramework/blob/bfdb59ba651723200b364b132c0b6969244389ef/src/main/java/net/tfminecraft/vehicleframework/vehicles/handlers/train/Connector.java)). Spacing is bone distance along the spline. ## Visuals (phase 1) @@ -181,8 +181,8 @@ Do **not** require spawning the whole consist when one chunk loads. Accept tempo ## Code pointers -- Train YAML: `behaviour.train` in [`BehaviourHandler`](https://github.com/TF-Minecraft/VehicleFramework/blob/bfdb59ba651723200b364b132c0b6969244389ef/src/main/java/net/tfminecraft/VehicleFramework/Vehicles/Handlers/BehaviourHandler.java) -- Movement entry: [`VehicleMovementController`](https://github.com/TF-Minecraft/VehicleFramework/blob/bfdb59ba651723200b364b132c0b6969244389ef/src/main/java/net/tfminecraft/VehicleFramework/Vehicles/Controller/VehicleMovementController.java) `v.isTrain()` -> `splineTick` -- Vehicle persist: [`VehiclePersistence`](https://github.com/TF-Minecraft/VehicleFramework/blob/bfdb59ba651723200b364b132c0b6969244389ef/src/main/java/net/tfminecraft/VehicleFramework/Database/VehiclePersistence.java) (`saveLive`) -- Chunk spawn: [`SpawnManager`](https://github.com/TF-Minecraft/VehicleFramework/blob/bfdb59ba651723200b364b132c0b6969244389ef/src/main/java/net/tfminecraft/VehicleFramework/Managers/SpawnManager.java) -- Junctions: [`TrackJunction`](https://github.com/TF-Minecraft/VehicleFramework/blob/bfdb59ba651723200b364b132c0b6969244389ef/src/main/java/net/tfminecraft/VehicleFramework/Tracks/TrackJunction.java), [`TrackRegistry`](https://github.com/TF-Minecraft/VehicleFramework/blob/bfdb59ba651723200b364b132c0b6969244389ef/src/main/java/net/tfminecraft/VehicleFramework/Tracks/TrackRegistry.java), [`TrackJunctionTravel`](https://github.com/TF-Minecraft/VehicleFramework/blob/bfdb59ba651723200b364b132c0b6969244389ef/src/main/java/net/tfminecraft/VehicleFramework/Tracks/TrackJunctionTravel.java) +- Train YAML: `behaviour.train` in [`BehaviourHandler`](https://github.com/TF-Minecraft/VehicleFramework/blob/bfdb59ba651723200b364b132c0b6969244389ef/src/main/java/net/tfminecraft/vehicleframework/vehicles/handlers/BehaviourHandler.java) +- Movement entry: [`VehicleMovementController`](https://github.com/TF-Minecraft/VehicleFramework/blob/bfdb59ba651723200b364b132c0b6969244389ef/src/main/java/net/tfminecraft/vehicleframework/vehicles/controller/VehicleMovementController.java) `v.isTrain()` -> `splineTick` +- Vehicle persist: [`VehiclePersistence`](https://github.com/TF-Minecraft/VehicleFramework/blob/bfdb59ba651723200b364b132c0b6969244389ef/src/main/java/net/tfminecraft/vehicleframework/database/VehiclePersistence.java) (`saveLive`) +- Chunk spawn: [`SpawnManager`](https://github.com/TF-Minecraft/VehicleFramework/blob/bfdb59ba651723200b364b132c0b6969244389ef/src/main/java/net/tfminecraft/vehicleframework/managers/SpawnManager.java) +- Junctions: [`TrackJunction`](https://github.com/TF-Minecraft/VehicleFramework/blob/bfdb59ba651723200b364b132c0b6969244389ef/src/main/java/net/tfminecraft/vehicleframework/tracks/TrackJunction.java), [`TrackRegistry`](https://github.com/TF-Minecraft/VehicleFramework/blob/bfdb59ba651723200b364b132c0b6969244389ef/src/main/java/net/tfminecraft/vehicleframework/tracks/TrackRegistry.java), [`TrackJunctionTravel`](https://github.com/TF-Minecraft/VehicleFramework/blob/bfdb59ba651723200b364b132c0b6969244389ef/src/main/java/net/tfminecraft/vehicleframework/tracks/TrackJunctionTravel.java) diff --git a/projects/VehicleFramework/overview.md b/projects/VehicleFramework/overview.md index 7b2e93d..68d100e 100644 --- a/projects/VehicleFramework/overview.md +++ b/projects/VehicleFramework/overview.md @@ -12,9 +12,9 @@ This framework implements several systems that do not exist in the standard Spig To achieve this, I leveraged the external plugin **ModelEngine**, but used parts of its API in unconventional ways. For example, the control system is built using the plugin’s manual bone animation interface, which is normally meant for running animations — not for real-time input-driven rotation. Because ModelEngine uses **JOML** for its math, I integrated JOML into my calculations to ensure compatibility and seamless model manipulation. ## Features -- Highly customizable vehicles based on YAML configuration files (Controlled from [ActiveVehicle.java](https://github.com/TF-Minecraft/VehicleFramework/blob/bfdb59ba651723200b364b132c0b6969244389ef/src/main/java/net/tfminecraft/VehicleFramework/Vehicles/ActiveVehicle.java)) -- Advanced movement and rotation logic with Joml and ModelEngine ([BoneRotator.java](https://github.com/TF-Minecraft/VehicleFramework/blob/bfdb59ba651723200b364b132c0b6969244389ef/src/main/java/net/tfminecraft/VehicleFramework/Bones/BoneRotator.java)) -- SQLite instance store (`data/vehicles.db`) with chunk-based spawn ([VehiclePersistence.java](https://github.com/TF-Minecraft/VehicleFramework/blob/bfdb59ba651723200b364b132c0b6969244389ef/src/main/java/net/tfminecraft/VehicleFramework/Database/VehiclePersistence.java)) +- Highly customizable vehicles based on YAML configuration files (Controlled from [ActiveVehicle.java](https://github.com/TF-Minecraft/VehicleFramework/blob/bfdb59ba651723200b364b132c0b6969244389ef/src/main/java/net/tfminecraft/vehicleframework/vehicles/ActiveVehicle.java)) +- Advanced movement and rotation logic with Joml and ModelEngine ([BoneRotator.java](https://github.com/TF-Minecraft/VehicleFramework/blob/bfdb59ba651723200b364b132c0b6969244389ef/src/main/java/net/tfminecraft/vehicleframework/bones/BoneRotator.java)) +- SQLite instance store (`data/vehicles.db`) with chunk-based spawn ([VehiclePersistence.java](https://github.com/TF-Minecraft/VehicleFramework/blob/bfdb59ba651723200b364b132c0b6969244389ef/src/main/java/net/tfminecraft/vehicleframework/database/VehiclePersistence.java)) ## Technical Overview @@ -26,11 +26,11 @@ TFMC's runtime baseline is **Minecraft 1.21.10**; see the - Java 21 compiler/runtime target, with Spigot API 1.21.10 from Maven. The earlier Paper 1.21.10 build 130 lab used Java 25; see its dated report for the scope of that runtime evidence. - Built using Maven ### Architecture: -- Main class intializes managers and plugin setup ([VehicleFramework.java](https://github.com/TF-Minecraft/VehicleFramework/blob/bfdb59ba651723200b364b132c0b6969244389ef/src/main/java/net/tfminecraft/VehicleFramework/VehicleFramework.java)) -- Configuration files loaded and stored as templates on boot ([Loaders](https://github.com/TF-Minecraft/VehicleFramework/tree/bfdb59ba651723200b364b132c0b6969244389ef/src/main/java/net/tfminecraft/VehicleFramework/Loaders)) -- VehicleManager handles spawning, despawning, persistence and general input and packets ([VehicleManager.java](https://github.com/TF-Minecraft/VehicleFramework/blob/bfdb59ba651723200b364b132c0b6969244389ef/src/main/java/net/tfminecraft/VehicleFramework/Managers/VehicleManager.java)) -- ActiveVehicle is a very deep class with several Handler classes that handle various areas of operation ([Handlers](https://github.com/TF-Minecraft/VehicleFramework/tree/bfdb59ba651723200b364b132c0b6969244389ef/src/main/java/net/tfminecraft/VehicleFramework/Vehicles/Handlers)) -- Weapons can exist on vehicles (in the WeaponHandler), they are connected by seat ([Weapons](https://github.com/TF-Minecraft/VehicleFramework/tree/bfdb59ba651723200b364b132c0b6969244389ef/src/main/java/net/tfminecraft/VehicleFramework/Weapons) [WeaponHandler.java](https://github.com/TF-Minecraft/VehicleFramework/blob/bfdb59ba651723200b364b132c0b6969244389ef/src/main/java/net/tfminecraft/VehicleFramework/Vehicles/Handlers/WeaponHandler.java)) +- Main class intializes managers and plugin setup ([VehicleFramework.java](https://github.com/TF-Minecraft/VehicleFramework/blob/bfdb59ba651723200b364b132c0b6969244389ef/src/main/java/net/tfminecraft/vehicleframework/VehicleFramework.java)) +- Configuration files loaded and stored as templates on boot ([Loaders](https://github.com/TF-Minecraft/VehicleFramework/tree/bfdb59ba651723200b364b132c0b6969244389ef/src/main/java/net/tfminecraft/vehicleframework/loaders)) +- VehicleManager handles spawning, despawning, persistence and general input and packets ([VehicleManager.java](https://github.com/TF-Minecraft/VehicleFramework/blob/bfdb59ba651723200b364b132c0b6969244389ef/src/main/java/net/tfminecraft/vehicleframework/managers/VehicleManager.java)) +- ActiveVehicle is a very deep class with several Handler classes that handle various areas of operation ([Handlers](https://github.com/TF-Minecraft/VehicleFramework/tree/bfdb59ba651723200b364b132c0b6969244389ef/src/main/java/net/tfminecraft/vehicleframework/vehicles/handlers)) +- Weapons can exist on vehicles (in the WeaponHandler), they are connected by seat ([Weapons](https://github.com/TF-Minecraft/VehicleFramework/tree/bfdb59ba651723200b364b132c0b6969244389ef/src/main/java/net/tfminecraft/vehicleframework/weapons) [WeaponHandler.java](https://github.com/TF-Minecraft/VehicleFramework/blob/bfdb59ba651723200b364b132c0b6969244389ef/src/main/java/net/tfminecraft/vehicleframework/vehicles/handlers/WeaponHandler.java)) ## Key Challenges Solved From d1c2f8812dce5c117cdb374fa5d9106b293b5281 Mon Sep 17 00:00:00 2001 From: Ryan Barlow <7389646+ryanbarlow97@users.noreply.github.com> Date: Tue, 22 Sep 2026 20:16:19 +0000 Subject: [PATCH 2/2] docs: describe current Java packages and builds --- PIPELINES.md | 47 +++-- PLATFORM.md | 163 +++++++----------- projects/AdvancedCrafting/README.md | 2 +- projects/ArmourShop/README.md | 2 +- projects/BarterShops/README.md | 2 +- projects/BirdMessenger/README.md | 2 +- projects/Cooking/README.md | 2 +- projects/DrinkBuilder/README.md | 2 +- projects/GeigerCounters/README.md | 2 +- projects/GeigerCounters/overview.md | 2 +- projects/GunsAndGadgets/README.md | 2 +- projects/InteractibleFurniture/README.md | 2 +- projects/MarketBlock/README.md | 2 +- projects/Nutrition/README.md | 4 +- projects/PermCleaner/README.md | 2 +- projects/PointShop/README.md | 4 +- .../docs/wiki-research/d-identity-social.md | 2 +- projects/Surgery/overview.md | 2 +- projects/TFMCWeb/README.md | 2 +- projects/TLibs/README.md | 2 +- projects/VFBuilders/README.md | 2 +- projects/VehicleFramework/README.md | 2 +- projects/VehicleFramework/overview.md | 2 +- projects/Woodworking/README.md | 2 +- 24 files changed, 117 insertions(+), 141 deletions(-) diff --git a/PIPELINES.md b/PIPELINES.md index 99bc837..f3461da 100644 --- a/PIPELINES.md +++ b/PIPELINES.md @@ -14,14 +14,13 @@ Development builds use `DEV-YYYYMMDD-HHmm`, with the date and time in UTC. The r Tags with prerelease suffixes create prereleases. Snapshot versions are rejected. An existing release causes the run to fail; use a new version for corrections. The workflow does not deploy to a Minecraft server. -`build.json` records the source commit, repository, tag, workflow run, JAR name, and checksum. Only the publishing job has repository write permission; the build job has read access. For the coordinated Java 21 replacement builds, artifacts were verified locally from exact source-release commits; `run: null` and local build provenance distinguish them from workflow-produced releases. Their dependency hashes record the bootstrap inputs used for cyclic APIs. Draft download/hash inspection still precedes publication; existing release assets are not replaced. +`build.json` records the source commit, repository, tag, workflow run, JAR name, +checksum, and dependency inputs. Locally built releases record their build +method and use `run: null`. Verify draft assets before publication. Release +publication does not deploy a Minecraft server. -TFMC's source migration to **Java 21 / Minecraft 1.21.10** and matching -dependency-pin updates are merged; see the [shared platform baseline](PLATFORM.md). -The [replacement release status](PLATFORM.md#java-21-dependency-replacements) -lists the eight published Java 21 artifacts and their verification results. -Source merges and release publication do not deploy a Minecraft server or -establish gameplay compatibility. +All plugins target **Java 21 / Minecraft 1.21.10**; see the +[shared platform baseline](PLATFORM.md). ## Build dependencies @@ -29,15 +28,31 @@ Plugins with file dependencies use `.github/scripts/prepare-release.sh` to downl `DEPS_TOKEN` is an organisation Actions secret with Contents read access to ServerAssets. Grant the consuming repositories access to this one secret. A separate token for each repository is unnecessary. The workflow passes it only to dependency preparation steps. Fork pull requests do not receive Actions secrets and cannot run builds that require these private inputs. -Shared TFMC plugins use their native Maven coordinates with `provided` scope. Development and release workflows run the [shared plugin installer](https://github.com/TF-Minecraft/TLibs/blob/main/DEPENDENCIES.md) with `mode: latest`. It resolves each direct declared plugin dependency, verifies the JAR's SHA-256, installs its actual Maven version with a minimal POM, and updates the checkout's version properties after all inputs succeed. The action implementation remains pinned to a full commit SHA. Providers' build dependencies are not recursively installed or shaded; this handles existing source dependency cycles without requiring recursive builds. - -Stable plugins use GitHub's latest published release. Cooking and InteractibleFurniture explicitly permit their existing ALPHA/BETA release channels. Drafts and DEV artifacts are excluded. A missing release, asset, credential or checksum mismatch fails the build. Publishing a release promotes that API to future builds; it does not deploy anything to a Minecraft server. - -Shared plugin APIs resolve from public source-built releases. AdvancedCrafting 1.2.3 is the verified Java 21 replacement for 1.2.2; MusicalInstruments remains at 2.5. MusicalInstruments supplies the `InstrumentPlayEvent` API used by ActivityTF. Its former private JAR remains available for exact legacy rebuilds through the retained installer revision; current pinned and latest mode use the public release. Public release lookup uses the default GitHub token. Third-party licensed inputs continue to use the private preparation script and `DEPS_TOKEN`. - -Every migrated build records exact coordinates, checksums and sources in `.build/plugin-dependencies.json`, uploaded alongside its development JAR. Tagged releases include that list in `build.json`. Local builds use `python3 ../tlibs/tools/install-plugins.py --pom pom.xml`; add `--mode latest` to update local version properties, or use the default `--mode pinned` and versions from a successful build's metadata for reproducible API selection. The private inputs also require `TFMC_PRIVATE_TOKEN` or `--assets /path/to/server-assets`. - -Archaeo's initial API release `v1.0.1` was built from unchanged source and records its source commit and checksum. Its existing embedded plugin descriptor still says `1.0`; this is documented in the release metadata. It has no automated release workflow yet. +Shared TFMC plugins use their Maven coordinates with `provided` scope. +Development and release workflows run the +[shared plugin installer](https://github.com/TF-Minecraft/TLibs/blob/main/DEPENDENCIES.md) +with `mode: pinned`. It resolves each direct dependency at the version committed +in the POM, verifies the JAR checksum, and installs a minimal Maven POM. The action +is pinned to a reviewed commit SHA. Provider build dependencies are not installed +recursively or shaded into consumers. + +Shared APIs use public source-built releases. Cooking and InteractibleFurniture +permit their ALPHA/BETA channels; other managed plugins use stable releases. +Drafts and development artifacts are excluded. Missing releases, artifacts, +credentials, or matching checksums fail the build. Public release lookup uses +`github.token`; licensed third-party inputs use `DEPS_TOKEN`. + +Builds record coordinates, checksums, and sources in +`.build/plugin-dependencies.json`. Development artifacts preserve this file; +release metadata includes the same inputs in `build.json`. Local builds use: + +```sh +python3 ../tlibs/tools/install-plugins.py --pom pom.xml --mode pinned +``` + +To upgrade dependencies, run the installer locally with `--mode latest`, review +the POM changes, and commit the chosen versions. Build consumers against matching +provider packages before releasing the dependent set. ServerAssets' `manifest.json` is authoritative for filenames, hashes, embedded plugin versions, and sources. Keep licensed dependency JARs in that private repository and out of public release assets. diff --git a/PLATFORM.md b/PLATFORM.md index 3411be4..3e2f783 100644 --- a/PLATFORM.md +++ b/PLATFORM.md @@ -1,28 +1,17 @@ # Shared platform and build baseline -TFMC runs **Minecraft 1.21.10 on Java 21**. All maintained plugin builds target -Java 21 bytecode and the Minecraft **1.21.10** Paper or Spigot API. Plugin -`api-version` metadata is **1.21.10** throughout. +TFMC plugins target **Java 21 / Minecraft 1.21.10**, using the Paper or Spigot +1.21.10 API with `provided` scope. Plugin descriptors declare API 1.21.10. ## Runtime and toolchain | Component | Baseline | | --- | --- | -| Minecraft client/server | 1.21.10 | -| Server implementation | Paper; the recorded lab used build 130 (`8043efd`) | -| Plugin build JDK and server JVM | Java 21 | -| Build tool | Maven; use each repository's CI workflow and pinned dependencies | -| Web/backend | Follow [ProvinceSystem](projects/ProvinceSystem/docs/README.md); its Node/Python runtimes are independent | - -Paper's [Java version table](https://docs.papermc.io/paper/getting-started/#requirements) -recommends Java 21 for the 1.20–1.21.11 series. TFMC's plugin migration uses Java 21 -for both compilation and the runtime target. Old Java 25 TFMC jars must be -replaced together with their rebuilt dependencies; changing the server JVM alone -is insufficient. - -The earlier [vehicle lab](projects/ServerAssets/docs/LAB.md) used Java 25 and -records historical evidence. It is not a Java 21 runtime certification. Its -restored-vehicle failure remains unresolved by this build migration. +| Minecraft | 1.21.10 | +| Server | Paper 1.21.10 | +| Build JDK and server JVM | Java 21 | +| Plugin build tool | Maven | +| Web/backend | Follow [ProvinceSystem](projects/ProvinceSystem/docs/README.md) | ## Build conventions @@ -48,44 +37,29 @@ set together. CoreProtect integrations use this fork's ### Build inputs -Follow the shared [XML and Maven POM conventions](POM-CONVENTIONS.md) when -maintaining build files. - -Run commands from the **source repository**, not this Docs checkout: +Follow the [XML and Maven POM conventions](POM-CONVENTIONS.md). Run builds from +the plugin source repository with Java 21: ```sh java -version mvn -version +python3 ../tlibs/tools/install-plugins.py --pom pom.xml --mode pinned mvn clean verify ``` -Both version commands should identify JDK 21. The POM uses -`maven.compiler.release=21` to restrict emitted bytecode and Java platform APIs. -Paper/Spigot APIs resolve from their Maven repositories with `provided` scope; -they are not bundled into plugin jars or read from an ambiguously named local -`spigot-api.jar`. - -Supply the authorized private dependency jars using each repository's -`.github/scripts/prepare-release.sh` and verify its `.github/dependencies.sha256` -where present. These scripts require access to ServerAssets. Their `libs/` -directory is a source-build input, not this documentation repository. Use the -repository's pinned setup actions for released TFMC dependencies, or `mvn install` -in their source checkouts to install compatible local builds. - -Some TFMC plugins depend on each other in both directions. A full rebuild may -need an authentic existing dependency artifact to bootstrap the cycle, followed -by clean Java 21 builds against the rebuilt dependencies. Keep bootstrap jars -out of the final distribution. Publishing the new dependency artifacts is a -separate step; changing consumer CI to Java 21 does not update an old release -asset automatically. - -## Unified source build declarations - -The source migrations and Java 21 dependency-pin updates were merged on -**2026-09-22**. The 36 plugin projects below now declare these settings on their -default branches. The eight verified replacement releases are listed below. -Source merges and release publication do not deploy the rebuilt jars; this table -does not certify the live plugin set or Java 21 gameplay compatibility. +The compiler's `release=21` setting controls bytecode and available Java APIs. +Paper and Spigot dependencies resolve from their Maven repositories and are not +bundled into plugin jars. Prepare private third-party dependencies with the +repository's `.github/scripts/prepare-release.sh`; it verifies +`.github/dependencies.sha256` where present. + +Shared plugin dependencies use the exact versions declared in each consumer POM. +The [shared installer](PIPELINES.md#build-dependencies) verifies the public +artifacts and installs them into Maven. For source builds involving circular +plugin dependencies, provide the matching API artifacts before compiling the +consumer set. Source builds must pass clean verification before publication. + +## Plugin build targets | Project | Java release | API | API version | | --- | --- | --- | --- | @@ -126,62 +100,49 @@ does not certify the live plugin set or Java 21 gameplay compatibility. | [Woodworking](projects/Woodworking/README.md) | 21 | `spigot-api` | `1.21.10-R0.1-SNAPSHOT` | | [WorldBorder](projects/WorldBorder/README.md) | 21 | `spigot-api` | `1.21.10-R0.1-SNAPSHOT` | -ProvinceSystem is a web/backend project and ServerAssets is a private asset -snapshot. Neither produces a Minecraft plugin jar in this build set. -AdvancedCrafting is included because several plugins require it. - -## Java 21 dependency replacements - -As of **2026-09-22**, the following replacement artifacts passed local JDK 21 -verification and are **published**. The previous release versions remain -unchanged for rollback. - -| Project | Replacement | Unit tests | -| --- | --- | --- | -| [TLibs](projects/TLibs/README.md) | [1.1.1](https://github.com/TF-Minecraft/TLibs/releases/tag/v1.1.1) | 10 passed | -| [Cooking](projects/Cooking/README.md) | [0.1.6-ALPHA](https://github.com/TF-Minecraft/Cooking/releases/tag/v0.1.6-ALPHA) | 167 passed | -| [GunsAndGadgets](projects/GunsAndGadgets/README.md) | [1.0.7](https://github.com/TF-Minecraft/GunsAndGadgets/releases/tag/v1.0.7) | No tests in repository | -| [VehicleFramework](projects/VehicleFramework/README.md) | [1.1.13](https://github.com/TF-Minecraft/VehicleFramework/releases/tag/v1.1.13) | 369 passed | -| [AdvancedCrafting](projects/AdvancedCrafting/README.md) | [1.2.3](https://github.com/TF-Minecraft/AdvancedCrafting/releases/tag/v1.2.3) | No tests in repository | -| [InteractibleFurniture](projects/InteractibleFurniture/README.md) | [0.1.4-BETA](https://github.com/TF-Minecraft/InteractibleFurniture/releases/tag/v0.1.4-BETA) | No tests in repository | -| [VFBuilders](projects/VFBuilders/README.md) | [1.0.1](https://github.com/TF-Minecraft/VFBuilders/releases/tag/v1.0.1) | No tests in repository | -| [MarketBlock](projects/MarketBlock/README.md) | [0.0.3](https://github.com/TF-Minecraft/MarketBlock/releases/tag/v0.0.3) | No tests in repository | - -Each JAR declares API 1.21.10 and contains Java 21-compatible classes. Its -`SHA256SUMS` and `build.json` record the artifact hash, exact source commit and -shared dependency inputs. These are local source builds, so `run` is `null`; -bootstrap API inputs used to resolve dependency cycles are recorded separately -from the released artifacts. Licensed third-party dependency JARs remain private. -Cooking and InteractibleFurniture retain their ALPHA/BETA prerelease channels. - -Use the [shared installer](PIPELINES.md#build-dependencies) in latest mode to -select published replacements, or pin the exact versions and hashes from a -successful build for reproduction. The source migrations are merged; deployment -and runtime acceptance remain separate checks. +ProvinceSystem is a web/backend project. ServerAssets contains configurations, +models, resource packs, and private build inputs. Neither produces a plugin jar. -## Dependencies and validation +## Shared API versions -Build settings, packaged metadata and gameplay evidence are distinct. A jar -whose classes use Java 21 and whose descriptor declares 1.21.10 still needs its -matching dependency versions, configuration and assets on the server. See -Paper's [plugin.yml reference](https://docs.papermc.io/paper/dev/plugin-yml/#api-version) -for the loader metadata semantics. +These source versions provide the `net.tfminecraft.` Java APIs used by +the corresponding consumer dependency pins. Maven coordinates remain separate +from Java package names. + +| Project | Version | +| --- | --- | +| [AdvancedCrafting](https://github.com/TF-Minecraft/AdvancedCrafting) | `2.0.0` | +| [cooking](https://github.com/TF-Minecraft/Cooking) | `0.2.0-ALPHA` | +| [CoreProtect](https://github.com/TF-Minecraft/CoreProtect) | `25.0.0` | +| [denareconomy](https://github.com/TF-Minecraft/DenarEconomy) | `0.2.0` | +| [games](https://github.com/TF-Minecraft/Games) | `0.2.0` | +| [geiger-counters](https://github.com/TF-Minecraft/GeigerCounters) | `2.0.0` | +| [gunsandgadgets](https://github.com/TF-Minecraft/GunsAndGadgets) | `2.0.0` | +| [interactiblefurniture](https://github.com/TF-Minecraft/InteractibleFurniture) | `0.2.0-BETA` | +| [magic](https://github.com/TF-Minecraft/Magic) | `0.2.0` | +| [Marketblock](https://github.com/TF-Minecraft/MarketBlock) | `0.1.0` | +| [musical-instruments](https://github.com/TF-Minecraft/MusicalInstruments) | `3.0.0` | +| [rpcharacters](https://github.com/TF-Minecraft/RPCharacters) | `2.0.0` | +| [simplefactions](https://github.com/TF-Minecraft/SimpleFactions) | `3.0.0` | +| [tfmccore](https://github.com/TF-Minecraft/TFMCCore) | `2.0.0` | +| [tlibs](https://github.com/TF-Minecraft/TLibs) | `2.0.0` | +| [vehicleframework](https://github.com/TF-Minecraft/VehicleFramework) | `2.0.0` | +| [vfbuilders](https://github.com/TF-Minecraft/VFBuilders) | `2.0.0` | + +## Dependencies and validation -Record the source revision and patch, dependency checksums, JDK, Maven command, -unit-test results and artifact checksums with every build. For runtime checks, -record the exact Paper 1.21.10 build, plugin set, configuration/assets, exercised -commands/gameplay, and persistence/restart results. Keep passed, failed and -untested behavior explicit. +Record source commits, dependency checksums, the JDK, Maven commands, test +results, and artifact checksums for release builds. Check packaged entry points, +plugin versions, and API versions as well as source settings. -The [existing vehicle test report](projects/ServerAssets/docs/TEST-RESULTS.md) -covers fresh cars, trains and artillery with its original dependency set. It -records a restored-state failure and does not certify this Java 21 build set. -Offline authentication and localhost settings in that lab are specific to its -isolated test environment. +Compilation and unit tests do not exercise a live Minecraft server. Runtime +validation should record the Paper build, plugin set, configuration, exercised +commands, gameplay, and persistence across restarts. Publishing artifacts does +not deploy them to a server. ## Documentation conventions -Every [project index](README.md#projects) links here. Keep current setup guidance -aligned with Java 21 and Minecraft 1.21.10; preserve the original versions in -dated historical reports. Link to the source repository for code and use -relative links for other Docs guides. See [Maintaining the documentation](MAINTAINING.md). +Each [project index](README.md#projects) links here. Keep current setup guidance +aligned with the declared platform and dependency versions. Link to the source +repository for code and use relative links between Docs guides. See +[Maintaining the documentation](MAINTAINING.md). diff --git a/projects/AdvancedCrafting/README.md b/projects/AdvancedCrafting/README.md index dc39ec5..80541df 100644 --- a/projects/AdvancedCrafting/README.md +++ b/projects/AdvancedCrafting/README.md @@ -10,7 +10,7 @@ versions aligned without changing Java gameplay source. TFMC runs Minecraft **1.21.10**. See the [shared platform and build baseline](../../PLATFORM.md) for runtime, build and validation conventions. -Published Java 21 replacement: [1.2.3](https://github.com/TF-Minecraft/AdvancedCrafting/releases/tag/v1.2.3), verified locally. See the [replacement release status](../../PLATFORM.md#java-21-dependency-replacements) for provenance, verification and deployment status. +See the [shared API versions](../../PLATFORM.md#shared-api-versions) for the matching provider dependency set. - [Setup, builds and releases](setup.md) - [Configuration and commands](configuration.md) diff --git a/projects/ArmourShop/README.md b/projects/ArmourShop/README.md index cb63b79..d570265 100644 --- a/projects/ArmourShop/README.md +++ b/projects/ArmourShop/README.md @@ -10,7 +10,7 @@ TFMC runs Minecraft **1.21.10**. See the [shared platform and build baseline](.. Run Maven with **JDK 21** from the source checkout. The POM sets `maven.compiler.release=21` and resolves `org.spigotmc:spigot-api:1.21.10-R0.1-SNAPSHOT` with `provided` scope from Spigot snapshots. The plugin descriptor declares `api-version: 1.21.10`. -Install these matching Java 21 TFMC artifacts into local Maven before building: `me.plugins:tlibs:1.1.1`, `net.tfminecraft:gunsandgadgets:1.0.7`. Use the [shared installer](../TLibs/README.md) for published dependencies, or `mvn clean install` from matching source versions. CI uses the shared dependency setup actions. +Install these matching Java 21 TFMC artifacts into local Maven before building: `me.plugins:tlibs:2.0.0`, `net.tfminecraft:gunsandgadgets:2.0.0`. Use the [shared installer](../TLibs/README.md) for published dependencies, or `mvn clean install` from matching source versions. CI uses the shared dependency setup actions. Populate `libs/` with the exact files and hashes listed in `.github/dependencies.sha256`. `.github/scripts/prepare-release.sh` downloads those pinned private assets when supplied with the approved dependency token. diff --git a/projects/BarterShops/README.md b/projects/BarterShops/README.md index 0bccece..130aa57 100644 --- a/projects/BarterShops/README.md +++ b/projects/BarterShops/README.md @@ -10,7 +10,7 @@ TFMC runs Minecraft **1.21.10**. See the [shared platform and build baseline](.. Run Maven with **JDK 21** from the source checkout. The POM sets `maven.compiler.release=21` and resolves `org.spigotmc:spigot-api:1.21.10-R0.1-SNAPSHOT` with `provided` scope from Spigot snapshots. The plugin descriptor declares `api-version: 1.21.10`. -Install these matching Java 21 TFMC artifacts into local Maven before building: `net.tfminecraft:denareconomy:0.1.9`, `net.tfminecraft:simplefactions:2.8.7`. Their source repositories use `mvn clean install`; CI uses the pinned dependency setup actions. +Install these matching Java 21 TFMC artifacts into local Maven before building: `net.tfminecraft:denareconomy:0.2.0`, `net.tfminecraft:simplefactions:3.0.0`. Their source repositories use `mvn clean install`; CI uses the pinned dependency setup actions. Populate `libs/` with the exact files and hashes listed in `.github/dependencies.sha256`. `.github/scripts/prepare-release.sh` downloads those pinned private assets when supplied with the approved dependency token. diff --git a/projects/BirdMessenger/README.md b/projects/BirdMessenger/README.md index 7ad3852..1efcdbf 100644 --- a/projects/BirdMessenger/README.md +++ b/projects/BirdMessenger/README.md @@ -10,7 +10,7 @@ TFMC runs Minecraft **1.21.10**. See the [shared platform and build baseline](.. Run Maven with **JDK 21** from the source checkout. The POM sets `maven.compiler.release=21` and resolves `org.spigotmc:spigot-api:1.21.10-R0.1-SNAPSHOT` with `provided` scope from Spigot snapshots. The plugin descriptor declares `api-version: 1.21.10`. -Install these matching Java 21 TFMC artifacts into local Maven before building: `me.plugins:tlibs:1.1.1`, `net.tfminecraft:rpcharacters:1.1.7`. Use the [shared installer](../TLibs/README.md) for published dependencies, or `mvn clean install` from matching source versions. CI uses the shared dependency setup actions. +Install these matching Java 21 TFMC artifacts into local Maven before building: `me.plugins:tlibs:2.0.0`, `net.tfminecraft:rpcharacters:2.0.0`. Use the [shared installer](../TLibs/README.md) for published dependencies, or `mvn clean install` from matching source versions. CI uses the shared dependency setup actions. Populate `libs/` with the exact files and hashes listed in `.github/dependencies.sha256`. `.github/scripts/prepare-release.sh` downloads those pinned private assets when supplied with the approved dependency token. diff --git a/projects/Cooking/README.md b/projects/Cooking/README.md index d577d57..12a22e0 100644 --- a/projects/Cooking/README.md +++ b/projects/Cooking/README.md @@ -6,7 +6,7 @@ Food composition, cooking stations, crop quality and animal husbandry. TFMC runs Minecraft **1.21.10**. See the [shared platform and build baseline](../../PLATFORM.md) for runtime, build and validation conventions. -Published Java 21 replacement: [0.1.6-ALPHA](https://github.com/TF-Minecraft/Cooking/releases/tag/v0.1.6-ALPHA), verified locally. See the [replacement release status](../../PLATFORM.md#java-21-dependency-replacements) for provenance, verification and deployment status. +See the [shared API versions](../../PLATFORM.md#shared-api-versions) for the matching provider dependency set. ## Build and dependencies diff --git a/projects/DrinkBuilder/README.md b/projects/DrinkBuilder/README.md index aa36678..145a382 100644 --- a/projects/DrinkBuilder/README.md +++ b/projects/DrinkBuilder/README.md @@ -10,7 +10,7 @@ TFMC runs Minecraft **1.21.10**. See the [shared platform and build baseline](.. Run Maven with **JDK 21** from the source checkout. The POM sets `maven.compiler.release=21` and resolves `org.spigotmc:spigot-api:1.21.10-R0.1-SNAPSHOT` with `provided` scope from Spigot snapshots. The plugin descriptor declares `api-version: 1.21.10`. -Install these matching Java 21 TFMC artifacts into local Maven before building: `me.plugins:tlibs:1.1.1`. Use the [shared installer](../TLibs/README.md) for published dependencies, or `mvn clean install` from matching source versions. CI uses the shared dependency setup actions. +Install these matching Java 21 TFMC artifacts into local Maven before building: `me.plugins:tlibs:2.0.0`. Use the [shared installer](../TLibs/README.md) for published dependencies, or `mvn clean install` from matching source versions. CI uses the shared dependency setup actions. Populate `libs/` with the exact files and hashes listed in `.github/dependencies.sha256`. `.github/scripts/prepare-release.sh` downloads those pinned private assets when supplied with the approved dependency token. diff --git a/projects/GeigerCounters/README.md b/projects/GeigerCounters/README.md index d6c6083..65d8419 100644 --- a/projects/GeigerCounters/README.md +++ b/projects/GeigerCounters/README.md @@ -10,7 +10,7 @@ TFMC runs Minecraft **1.21.10**. See the [shared platform and build baseline](.. Run Maven from the source checkout. The current [POM](https://github.com/TF-Minecraft/geiger-counters/blob/main/pom.xml) declares Java **release 21** and **paper-api 1.21.10-R0.1-SNAPSHOT**; [plugin.yml](https://github.com/TF-Minecraft/geiger-counters/blob/main/src/main/resources/plugin.yml) declares `api-version: 1.21.10`. The build and loader metadata target the shared runtime. Gameplay validation remains separate from build verification. -Install the approved Maven artifact `me.plugins:tlibs:1.1.1` using the shared dependency workflow, then run `mvn clean verify` with JDK 21. Paper API, WorldGuard API and bStats resolve from Maven. Packaging writes the jar to `target/`. MMOItems is an optional runtime item source, not a direct build dependency. +Install the approved Maven artifact `me.plugins:tlibs:2.0.0` using the shared dependency workflow, then run `mvn clean verify` with JDK 21. Paper API, WorldGuard API and bStats resolve from Maven. Packaging writes the jar to `target/`. MMOItems is an optional runtime item source, not a direct build dependency. ## Guides diff --git a/projects/GeigerCounters/overview.md b/projects/GeigerCounters/overview.md index 50f76d8..7fcf580 100644 --- a/projects/GeigerCounters/overview.md +++ b/projects/GeigerCounters/overview.md @@ -314,7 +314,7 @@ python3 ../tlibs/tools/install-dependency.py --pom pom.xml mvn clean verify ``` -Use JDK 21, Maven and Python 3. The shared installer verifies the pinned release checksum; see [TLibs dependency setup](../TLibs/README.md). Install the matching `me.plugins:tlibs:1.1.1` artifact as described in the [shared baseline](../../PLATFORM.md), then run `mvn clean verify`. Paper API, WorldGuard API and bStats resolve from Maven; MMOItems is not a direct build dependency. The artifact is written to `target/`. +Use JDK 21, Maven and Python 3. The shared installer verifies the pinned release checksum; see [TLibs dependency setup](../TLibs/README.md). Install the matching `me.plugins:tlibs:2.0.0` artifact as described in the [shared baseline](../../PLATFORM.md), then run `mvn clean verify`. Paper API, WorldGuard API and bStats resolve from Maven; MMOItems is not a direct build dependency. The artifact is written to `target/`. ## Source build metadata diff --git a/projects/GunsAndGadgets/README.md b/projects/GunsAndGadgets/README.md index 611384e..f8fb9ff 100644 --- a/projects/GunsAndGadgets/README.md +++ b/projects/GunsAndGadgets/README.md @@ -6,7 +6,7 @@ Technical documentation is maintained here. Run commands from the source checkou TFMC runs Minecraft **1.21.10**. See the [shared platform and build baseline](../../PLATFORM.md) for runtime, build and validation conventions. -Published Java 21 replacement: [1.0.7](https://github.com/TF-Minecraft/GunsAndGadgets/releases/tag/v1.0.7), verified locally. See the [replacement release status](../../PLATFORM.md#java-21-dependency-replacements) for provenance, verification and deployment status. +See the [shared API versions](../../PLATFORM.md#shared-api-versions) for the matching provider dependency set. - [docs/REVISION_SYSTEM.md](docs/REVISION_SYSTEM.md) - [Historical build failure log (1.0.3)](mvn-package-out.md) diff --git a/projects/InteractibleFurniture/README.md b/projects/InteractibleFurniture/README.md index fca77fa..1a8adba 100644 --- a/projects/InteractibleFurniture/README.md +++ b/projects/InteractibleFurniture/README.md @@ -6,7 +6,7 @@ Configurable furniture interactions and persistence, with integrations used by M TFMC runs Minecraft **1.21.10**. See the [shared platform and build baseline](../../PLATFORM.md) for runtime, build and validation conventions. -Published Java 21 replacement: [0.1.4-BETA](https://github.com/TF-Minecraft/InteractibleFurniture/releases/tag/v0.1.4-BETA), verified locally. See the [replacement release status](../../PLATFORM.md#java-21-dependency-replacements) for provenance, verification and deployment status. +See the [shared API versions](../../PLATFORM.md#shared-api-versions) for the matching provider dependency set. ## Build and dependencies diff --git a/projects/MarketBlock/README.md b/projects/MarketBlock/README.md index 4751f80..9b254a4 100644 --- a/projects/MarketBlock/README.md +++ b/projects/MarketBlock/README.md @@ -6,7 +6,7 @@ Technical documentation is maintained here. Run commands from the source checkou TFMC runs Minecraft **1.21.10**. See the [shared platform and build baseline](../../PLATFORM.md) for runtime, build and validation conventions. -Published Java 21 replacement: [0.0.3](https://github.com/TF-Minecraft/MarketBlock/releases/tag/v0.0.3), verified locally. See the [replacement release status](../../PLATFORM.md#java-21-dependency-replacements) for provenance, verification and deployment status. +See the [shared API versions](../../PLATFORM.md#shared-api-versions) for the matching provider dependency set. - [Project overview](overview.md) diff --git a/projects/Nutrition/README.md b/projects/Nutrition/README.md index 74c5898..8041a5e 100644 --- a/projects/Nutrition/README.md +++ b/projects/Nutrition/README.md @@ -12,10 +12,10 @@ TFMC runs Minecraft **1.21.10**. See the [shared platform and build baseline](.. Run Maven with **JDK 21** from the source checkout. The POM sets `maven.compiler.release=21` and resolves `org.spigotmc:spigot-api:1.21.10-R0.1-SNAPSHOT` with `provided` scope from Spigot snapshots. The plugin descriptor declares `api-version: 1.21.10`. -Use the Java 21 replacement `me.plugins:tlibs:1.1.1`. The shared installer in +Use the Java 21 replacement `me.plugins:tlibs:2.0.0`. The shared installer in `--mode latest` selects the published replacement and updates the consumer version property; an explicitly pinned build must set `tlibs.version=1.1.1`. See the -[replacement release status](../../PLATFORM.md#java-21-dependency-replacements). +[shared API versions](../../PLATFORM.md#shared-api-versions). Populate `libs/` with the exact files and hashes listed in `.github/dependencies.sha256`. `.github/scripts/prepare-release.sh` downloads those pinned private assets when supplied with the approved dependency token. diff --git a/projects/PermCleaner/README.md b/projects/PermCleaner/README.md index ad9eb50..2f2a308 100644 --- a/projects/PermCleaner/README.md +++ b/projects/PermCleaner/README.md @@ -10,7 +10,7 @@ TFMC runs Minecraft **1.21.10**. See the [shared platform and build baseline](.. Run Maven with **JDK 21** from the source checkout. The POM sets `maven.compiler.release=21` and resolves `org.spigotmc:spigot-api:1.21.10-R0.1-SNAPSHOT` with `provided` scope from Spigot snapshots. The plugin descriptor declares `api-version: 1.21.10`. -Install these matching Java 21 TFMC artifacts into local Maven before building: `me.plugins:tlibs:1.1.1`. Use the [shared installer](../TLibs/README.md) for published dependencies, or `mvn clean install` from matching source versions. CI uses the shared dependency setup actions. +Install these matching Java 21 TFMC artifacts into local Maven before building: `me.plugins:tlibs:2.0.0`. Use the [shared installer](../TLibs/README.md) for published dependencies, or `mvn clean install` from matching source versions. CI uses the shared dependency setup actions. No private `libs/` JARs are required by this POM. diff --git a/projects/PointShop/README.md b/projects/PointShop/README.md index 2375c51..cbcaaf5 100644 --- a/projects/PointShop/README.md +++ b/projects/PointShop/README.md @@ -12,10 +12,10 @@ TFMC runs Minecraft **1.21.10**. See the [shared platform and build baseline](.. Run Maven with **JDK 21** from the source checkout. The POM sets `maven.compiler.release=21` and resolves `org.spigotmc:spigot-api:1.21.10-R0.1-SNAPSHOT` with `provided` scope from Spigot snapshots. The plugin descriptor declares `api-version: 1.21.10`. -Use the Java 21 replacement `me.plugins:tlibs:1.1.1`. The shared installer in +Use the Java 21 replacement `me.plugins:tlibs:2.0.0`. The shared installer in `--mode latest` selects the published replacement and updates the consumer version property; an explicitly pinned build must set `tlibs.version=1.1.1`. See the -[replacement release status](../../PLATFORM.md#java-21-dependency-replacements). +[shared API versions](../../PLATFORM.md#shared-api-versions). Populate `libs/` with the exact files and hashes listed in `.github/dependencies.sha256`. `.github/scripts/prepare-release.sh` downloads those pinned private assets when supplied with the approved dependency token. diff --git a/projects/ProvinceSystem/docs/wiki-research/d-identity-social.md b/projects/ProvinceSystem/docs/wiki-research/d-identity-social.md index 003c41a..5f1ce79 100644 --- a/projects/ProvinceSystem/docs/wiki-research/d-identity-social.md +++ b/projects/ProvinceSystem/docs/wiki-research/d-identity-social.md @@ -213,7 +213,7 @@ RPCharacters is the roleplay-character backbone of the server: it makes each pla --- ## SimpleFactions -`simplefactions-2.8.7.jar` · `net.tfminecraft:simplefactions:2.8.7` · author Drefvelin +`simplefactions-2.8.7.jar` · `net.tfminecraft:simplefactions:3.0.0` · author Drefvelin > **Source warning.** The public GitHub repo `drefvelin/simplefactions` is **stale** — HEAD is `ad9b048` (Feb 2026), 80 Java files, a `plugin.yml` declaring only the single `faction` command, and **no guild / vehicle / installation / mercenary / war-campaign code at all**. Everything below was read from the deployed 2.8.7 jar's bytecode and the live configs, not the repo. Consequences are listed under "Uncertain". diff --git a/projects/Surgery/overview.md b/projects/Surgery/overview.md index 05f556a..2b6e4ca 100644 --- a/projects/Surgery/overview.md +++ b/projects/Surgery/overview.md @@ -318,7 +318,7 @@ python3 ../tlibs/tools/install-dependency.py --pom pom.xml mvn package ``` -Use JDK 21, Maven and Python 3. The shared installer verifies the pinned release checksum; see [TLibs dependency setup](../TLibs/README.md). Install the matching `me.plugins:tlibs:1.1.1` artifact as described in the [shared baseline](../../PLATFORM.md), then run `mvn clean verify`. Paper API resolves from Maven. The artifact is written to `target/`. +Use JDK 21, Maven and Python 3. The shared installer verifies the pinned release checksum; see [TLibs dependency setup](../TLibs/README.md). Install the matching `me.plugins:tlibs:2.0.0` artifact as described in the [shared baseline](../../PLATFORM.md), then run `mvn clean verify`. Paper API resolves from Maven. The artifact is written to `target/`. ## Tech Stack diff --git a/projects/TFMCWeb/README.md b/projects/TFMCWeb/README.md index ea61466..860a2c5 100644 --- a/projects/TFMCWeb/README.md +++ b/projects/TFMCWeb/README.md @@ -16,7 +16,7 @@ The entrypoint is `net.tfminecraft.tfmcweb.TFMCWeb`. TLibs is a required plugin; Run Maven with **JDK 21** from the source checkout. The POM sets `maven.compiler.release=21` and resolves `org.spigotmc:spigot-api:1.21.10-R0.1-SNAPSHOT` with `provided` scope from Spigot snapshots. The plugin descriptor declares `api-version: 1.21.10`. -Install these matching Java 21 TFMC artifacts into local Maven before building: `me.plugins:tlibs:1.1.1`. Use the [shared installer](../TLibs/README.md) for published dependencies, or `mvn clean install` from matching source versions. CI uses the shared dependency setup actions. +Install these matching Java 21 TFMC artifacts into local Maven before building: `me.plugins:tlibs:2.0.0`. Use the [shared installer](../TLibs/README.md) for published dependencies, or `mvn clean install` from matching source versions. CI uses the shared dependency setup actions. Populate `libs/` with the exact files and hashes listed in `.github/dependencies.sha256`. `.github/scripts/prepare-release.sh` downloads those pinned private assets when supplied with the approved dependency token. diff --git a/projects/TLibs/README.md b/projects/TLibs/README.md index 66c5047..b167022 100644 --- a/projects/TLibs/README.md +++ b/projects/TLibs/README.md @@ -6,7 +6,7 @@ TLibs provides shared item and block APIs, MMOItems rebuild and socket handling, TFMC runs Minecraft **1.21.10**. See the [shared platform and build baseline](../../PLATFORM.md) for runtime, build and validation conventions. -Published Java 21 replacement: [1.1.1](https://github.com/TF-Minecraft/TLibs/releases/tag/v1.1.1), verified locally. See the [replacement release status](../../PLATFORM.md#java-21-dependency-replacements) for provenance, verification and deployment status. +See the [shared API versions](../../PLATFORM.md#shared-api-versions) for the matching provider dependency set. ## Runtime and integration diff --git a/projects/VFBuilders/README.md b/projects/VFBuilders/README.md index dd259ea..889cde5 100644 --- a/projects/VFBuilders/README.md +++ b/projects/VFBuilders/README.md @@ -4,7 +4,7 @@ TFMC runs Minecraft **1.21.10**. See the [shared platform and build baseline](../../PLATFORM.md) for runtime, build and validation conventions. -Published Java 21 replacement: [1.0.1](https://github.com/TF-Minecraft/VFBuilders/releases/tag/v1.0.1), verified locally. See the [replacement release status](../../PLATFORM.md#java-21-dependency-replacements) for provenance, verification and deployment status. +See the [shared API versions](../../PLATFORM.md#shared-api-versions) for the matching provider dependency set. VFBuilders adds configurable vehicle-building stations and blueprints to [VehicleFramework](../VehicleFramework/README.md). diff --git a/projects/VehicleFramework/README.md b/projects/VehicleFramework/README.md index d21f1a9..f5dbfde 100644 --- a/projects/VehicleFramework/README.md +++ b/projects/VehicleFramework/README.md @@ -4,7 +4,7 @@ TFMC runs Minecraft **1.21.10**. See the [shared platform and build baseline](../../PLATFORM.md) for runtime, build and validation conventions. -Published Java 21 replacement: [1.1.13](https://github.com/TF-Minecraft/VehicleFramework/releases/tag/v1.1.13), verified locally. See the [replacement release status](../../PLATFORM.md#java-21-dependency-replacements) for provenance, verification and deployment status. +See the [shared API versions](../../PLATFORM.md#shared-api-versions) for the matching provider dependency set. Technical documentation is maintained here. Run commands from the source checkout unless a guide says otherwise. diff --git a/projects/VehicleFramework/overview.md b/projects/VehicleFramework/overview.md index 68d100e..986f6b1 100644 --- a/projects/VehicleFramework/overview.md +++ b/projects/VehicleFramework/overview.md @@ -21,7 +21,7 @@ To achieve this, I leveraged the external plugin **ModelEngine**, but used parts TFMC's runtime baseline is **Minecraft 1.21.10**; see the [shared platform guide](../../PLATFORM.md) for build conventions and the -[current source declarations](../../PLATFORM.md#unified-source-build-declarations). +[current source declarations](../../PLATFORM.md#plugin-build-targets). - Java 21 compiler/runtime target, with Spigot API 1.21.10 from Maven. The earlier Paper 1.21.10 build 130 lab used Java 25; see its dated report for the scope of that runtime evidence. - Built using Maven diff --git a/projects/Woodworking/README.md b/projects/Woodworking/README.md index af3fbe6..35630d0 100644 --- a/projects/Woodworking/README.md +++ b/projects/Woodworking/README.md @@ -12,7 +12,7 @@ TFMC runs Minecraft **1.21.10**. See the [shared platform and build baseline](.. Run Maven with **JDK 21** from the source checkout. The POM sets `maven.compiler.release=21` and resolves `org.spigotmc:spigot-api:1.21.10-R0.1-SNAPSHOT` with `provided` scope from Spigot snapshots. The plugin descriptor declares `api-version: 1.21.10`. -Install these matching Java 21 TFMC artifacts into local Maven before building: `me.plugins:tlibs:1.1.1`. Use the [shared installer](../TLibs/README.md) for published dependencies, or `mvn clean install` from matching source versions. CI uses the shared dependency setup actions. +Install these matching Java 21 TFMC artifacts into local Maven before building: `me.plugins:tlibs:2.0.0`. Use the [shared installer](../TLibs/README.md) for published dependencies, or `mvn clean install` from matching source versions. CI uses the shared dependency setup actions. Populate `libs/` with the exact files and hashes listed in `.github/dependencies.sha256`. `.github/scripts/prepare-release.sh` downloads those pinned private assets when supplied with the approved dependency token.