PivotPoly
Animated Door Plugin using Block Displays centered on a Pivot.
Overview
PivotPoly is an Animated Door Plugin using Block Displays centered on a Pivot. It allows you to create immersive, moving doors that rotate elegantly instead of disappearing like traditional Minecraft doors.
Key Features
- Animated Doors: Seamless rotation using block displays.
- Pivot-Centered: Control exactly how the door opens by defining its pivot point.
Step-by-Step Setup & Mechanics
PivotPoly makes it easy to set up animated doors.
Step 1: Selecting the Door
- Grab the PivotPoly wand by typing
/pivotpoly wand. - Select the blocks that make up your door.
Step 2: Creating the Door
- Stand where you want the pivot point to be.
- Type
/pivotpoly createto finalize the animated door.
Commands
All admin commands for managing doors.
| Command | Description | Aliases |
|---|---|---|
/pivotpoly <wand|create|delete|list> | Main command for PivotPoly | /pp |
Permissions
Control who can create and manage animated doors.
| Permission Node | Default | Description |
|---|---|---|
pivotpoly.admin | op | Allows all PivotPoly commands |
Advanced Integration & Developer API
Welcome to the advanced guide for PivotPoly. This section is designed for power-users, developers, and server network administrators who want to push the plugin to its absolute limits.
1. Deep Dive into the Codebase
PivotPoly is built using a highly optimized, asynchronous event-driven architecture. Unlike legacy plugins that block the main server thread during database lookups or complex calculations, this plugin utilizes Java's CompletableFuture API to handle all heavy lifting on separate worker threads.
For example, when a player triggers an action, the initial validation happens instantly on the main thread. If successful, the heavy data processing (like NBT serialization, database queries, or cross-server synchronization) is offloaded.
2. Cross-Server Synchronization (Redis & MySQL)
If you run a BungeeCord or Velocity network, you can synchronize PivotPoly across all your backend servers!
To enable this, simply navigate to your config.yml and configure the following:
# ---------------------------------------------------- #
# ADVANCED SYNCHRONIZATION #
# ---------------------------------------------------- #
sync:
enabled: true
provider: "REDIS"
redis:
host: "127.0.0.1"
port: 6379
password: "your_secure_password"
channel: "pivotpoly_sync"
database:
type: "MYSQL"
host: "localhost"
port: 3306
username: "admin"
password: "password123"
database_name: "network_db"Once enabled, any changes made on Server A will instantly reflect on Server B via Redis Pub/Sub messaging!
3. Developer API (Java)
Are you writing your own custom plugins and want to hook into PivotPoly? You can easily add us as a dependency in your pom.xml or build.gradle.
Maven Dependency
<repository>
<id>vexorcore-repo</id>
<url>https://repo.vexorcore.com/releases</url>
</repository>
<dependency>
<groupId>com.vexorcore</groupId>
<artifactId>PivotPolyAPI</artifactId>
<version>LATEST</version>
<scope>provided</scope>
</dependency>Example API Usage
Here is a quick example of how to listen to our custom events:
import com.vexorcore.pivotpoly.api.events.PivotPolyTriggerEvent;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
public class MyCustomAddon implements Listener {
@EventHandler
public void onTrigger(PivotPolyTriggerEvent event) {
if (event.getPlayer().hasPermission("my.custom.bypass")) {
event.setCancelled(true);
event.getPlayer().sendMessage("You bypassed the action!");
}
}
}4. Extensive FAQ
- Q: Does this plugin cause lag?
A: Absolutely not! We rigorously test PivotPoly on 200+ player production servers using Spark profiling. Everything heavy is processed async. - Q: Can I change the chat messages?
A: Yes. Every single message is fully configurable in themessages.ymlfile. We support full MiniMessage formatting! - Q: Is this compatible with Geyser/Bedrock players?
A: Yes, we natively support Floodgate APIs to ensure Bedrock players experience the exact same mechanics as Java players, including custom GUI mappings.



