Introduction
A powerful, modular placeholder translation system designed for dynamic text processing across multiple platforms.
โก Installation
The process is fairly simple:
- Download the latest
synapse-PLATFORM-*.*.jarfrom the Releases. - Place the JAR file in your server's
plugins/(ormods/if you're on hytale) directory. - Restart your server.
- Configure as needed.
โจ Features
Core Features
- ๐ High Performance: Optimized placeholder resolution with intelligent caching
- ๐ง Modular Architecture: Clean separation between core logic and platform implementations
- ๐ฏ Type Safety: Strongly typed generics ensure compile-time safety
- โก Async Processing: Non-blocking placeholder resolution with CompletableFuture support
- ๐๏ธ Extensible Design: Easy to add new platforms and custom neurons
- ๐ Rich API: Comprehensive API for both synchronous and asynchronous operations
- ๐ท๏ธ Namespace Management: Organized placeholder categorization and conflict prevention
- ๐ Context-Aware Resolution: Placeholders resolved based on user context and environment
Advanced Features
- ๐ Relational Placeholders: Placeholders that resolve values based on relationships between 2 Users
- ๐พ Intelligent Caching: Built-in caching mechanisms with expiration support
- ๐งช Comprehensive Testing: Extensive test suite ensuring reliability
- ๐ PAPI Backward-Compatibility: In Bukkit, you can simply call BukkitNeuron#hookToPAPI and we will do the rest
๐๏ธ Structure
Synapse is a collection of Neurons
A Neuron is what a plugin registers to add Placeholders
Every Neuron has it's own Namespace(s)
A namespace is what defines the name(s) of that Neuron!
The format of placeholders is ${namespace.placeholder:[args1]:[arg2]:etc..}
These arguments can be surrounded by double quotes ("), single quotes (') and back quotes (`)
So if a Neuron with the namespace player is registered, and we register a health placeholder inside of it, this will be the placeholder format:
${player.health}
๐ ๏ธ For Developers
Synapse is hosted on Maven Central.
For Gradle users: You need to add mavenCentral() to your repositories block.
For Maven users: Maven Central is already included by default, so no repository configuration is needed.
Hytale
>
}
>
โข First of all, we add it to our ``manifist.json``
```json
"OptionalDependencies": {
"studio.mevera:Synapse": ">=1.0.0"
}
```
โข And then to our build tool!
โข And of course the Neuron class will be HytaleNeuron
โข First of all, we add it to our plugin.yml
yaml name: "ExamplePlugin" version: 1.0.0 main: com.example.Plugin softdepend: - Synapse
โข And then to our build tool!
BukkitSynapse
โข And of course the Neuron class will be BukkitNeuron
<TabItem
value="bungee"
label={
<>
<img src="../../assets/bungeecord.png" alt="BungeeCord Logo" style={{ height: 20, marginRight: 6, position: "relative", top: 4 }} />
BungeeCord
</>
}
โข First of all, we add it to our plugin.yml/bungee.yml
yaml name: "ExamplePlugin" version: 1.0.0 main: com.example.Plugin softdepend: - Synapse
โข And then to our build tool!
BungeeSynapse
โข And of course the Neuron class will be BungeeNeuron
<TabItem
value="velocity"
label={
<>
<img src="../../assets/velocity_logo.svg" alt="Velocity Logo" style={{ height: 20, marginRight: 6, position: "relative", top: 2 }} />
Velocity
</>
}
โข First of all, we add it to our @Plugin dependencies
@Plugin(
id = "myfirstplugin",
name = "My Plugin",
version = "0.1.0",
dependencies = {
@Dependency(id = "synapse", optional = true)
}
)
โข And then to our build tool!
VelocitySynapse
โข And of course the Neuron class will be VelocityNeuron