====== TulpenCraftVote ======
~~NOTOC~~
===== 📌 Status =====
^ Eigenschap ^ Waarde ^
| **Plugin** | TulpenCraftVote |
| **Status** | In ontwikkeling / testfase |
| **Versie** | 1.5.0 (pluginmetadata) |
| **Platform** | Paper/Folia, doelversie Minecraft 26.2+ |
| **Server(s)** | Nog te bepalen |
| **Onderdeel van netwerk** | Ja |
| **Laatste controle** | 2026-09-12 |
^ Server ^ Actief ^
| **Velocity** | ❓ Niet gecontroleerd |
| **Lobby** | ❓ Niet gecontroleerd |
| **Survival** | ❓ Niet gecontroleerd |
| **Events** | ❓ Niet gecontroleerd |
----
===== 🎯 Doel =====
TulpenCraftVote verwerkt stemmen binnen het TulpenCraft-netwerk. De plugin beheert stemstatistieken, VoteParty-voortgang, stem-beloningen, VoteParty-beloningen en offline beloningen.
Voor een netwerk met meerdere Paper-servers kan gedeelde opslag via MySQL/MariaDB of p-core worden gebruikt. De huidige code bevat nog geen VotifierPlus-eventlistener; stemmen moeten momenteel via de beschikbare commandostructuur worden aangeleverd.
----
===== 📦 Installatie =====
**Jar-bestand:**
TulpenCraftVote-1.0.0.jar
De artifactversie komt momenteel uit `build.gradle` en is `1.0.0`; de pluginmetadata gebruikt versie `1.5.0`. Deze versies moeten vóór productie gelijkgetrokken worden.
**Locatie:**
/srv/minecraft/{{SERVER}}/plugins/TulpenCraftVote-1.0.0.jar
----
===== ⚙️ Configuratie =====
**Configuratiebestand:**
/srv/minecraft/{{SERVER}}/plugins/TulpenCraftVote/config.yml
==== Belangrijke instellingen ====
^ Instelling ^ Waarde ^ Betekenis ^
| `server-name` | `survival` | Unieke naam van deze Paper-server binnen het netwerk. |
| `master` | `false` | Bepaalt of deze server de gedeelde VoteParty-configuratie publiceert. |
| `sync.interval-seconds` | `5` | Interval voor synchronisatie en pending beloningen. |
| `storage.type` | `mysql` | Opslagbackend: `yml`, `mysql`, `pcore` of `auto`. |
| `vote.goal` | `50` | Aantal stemmen dat nodig is voor een VoteParty. |
==== TulpenCraft-configuratie ====
server-name: survival
master: false
sync:
interval-seconds: 5
storage:
type: mysql
mysql:
host: 172.16.0.30
port: 3306
database: tulpen_craft_vote
username: user
password: ""
ssl: false
vote:
goal: 50
rewards:
- "eco give {player} 100"
party-global-rewards:
- "broadcast &6De VoteParty is voltooid!"
==== Opslagstructuur ====
De SQL-backends gebruiken de volgende tabellen:
* `tulpen_vote_profiles`
* `tulpen_vote_state`
* `tulpen_vote_pending`
* `tulpen_vote_online`
* `tulpen_vote_milestones`
* `tulpen_vote_stats`
De YAML-backend gebruikt `votes.yml` met onder andere de paden `profiles`, `pending`, `online`, `milestones`, `shared-config` en `party-progress`.
----
===== 🔐 Rechten =====
^ Permission ^ Rank ^ Beschrijving ^
| `tulpen-craft-vote.vote.admin` | Admin / OP | Stemmen toevoegen, VoteParty starten, configuratie herladen en mijlpalen beheren. |
==== Rankverdeling ====
^ Rank ^ Rechten ^
| **Speler** | `/tulpenvote` gebruiken voor persoonlijke steminformatie. |
| **VIP** | Geen extra TulpenCraftVote-rechten standaard. |
| **VIP+** | Geen extra TulpenCraftVote-rechten standaard. |
| **Helper** | Geen extra TulpenCraftVote-rechten standaard. |
| **Bouwer** | Geen extra TulpenCraftVote-rechten standaard. |
| **Moderator** | Alleen wanneer de permission afzonderlijk wordt toegekend. |
| **Developer** | Alleen wanneer de permission afzonderlijk wordt toegekend. |
| **Admin** | `tulpen-craft-vote.vote.admin` |
| **Owner** | `tulpen-craft-vote.vote.admin` |
----
===== 💬 Commando's =====
^ Commando ^ Permission ^ Beschrijving ^
| /tulpenvote | Geen voor persoonlijke informatie | Toont de eigen stemmen en VoteParty-voortgang. |
| /tulpenvote reload | `tulpen-craft-vote.vote.admin` | Herlaadt de configuratie. |
| /tulpenvote add vote <aantal> <speler> | `tulpen-craft-vote.vote.admin` | Voegt stemmen toe en verwerkt stem-beloningen. |
| /tulpenvote party | `tulpen-craft-vote.vote.admin` | Start VoteParty-beloningen direct. |
| /tulpenvote setmijlpaal <speler> <mijlpaal> <true|false> | `tulpen-craft-vote.vote.admin` | Stelt een mijlpaalstatus in. |
| /tulpenvote reset mijlpaal <speler|all> <mijlpaal|all> | `tulpen-craft-vote.vote.admin` | Reset één of meerdere mijlpalen. |
| /tulpenvote reset vote <total|days|hebdo|mois> <speler|all> | `tulpen-craft-vote.vote.admin` | Reset stemstatistieken. |
Legacy aliases `/vp`, `/voteparty`, `setpallier` en `reset pallier` zijn voorlopig behouden voor compatibiliteit.
----
===== 🔗 Afhankelijkheden =====
* Paper of Folia
* PlaceholderAPI (optioneel)
* p-core (optioneel, voor managed opslag)
* MySQL/MariaDB-server wanneer `storage.type: mysql` wordt gebruikt
* VotifierPlus op Velocity is gewenst voor de toekomstige vote-receiver, maar nog niet in deze codebase geïntegreerd
----
===== 🌐 Netwerk / Proxy =====
**Proxy-plugin:** Ja, netwerkontwerp voor Velocity; VotifierPlus-koppeling nog niet geïmplementeerd.
^ Onderdeel ^ Waarde ^
| Proxy | Velocity |
| Backend | Nog te bepalen |
| Poort | Nog te bepalen |
| Publieke host | Nog te bepalen |
Alle Paper-servers moeten bij gedeelde opslag dezelfde database gebruiken en een unieke `server-name` hebben.
----
===== 🛡️ Beveiliging =====
Databasewachtwoorden horen alleen in de serverconfiguratie te staan en mogen niet in Git of deze wiki worden opgeslagen. Gebruik voor productie een beperkte databasegebruiker, TLS wanneer beschikbaar en een aparte database voor TulpenCraftVote.
De rewardconfiguratie voert servercommando's uit als console. Controleer daarom alle rewardcommando's voordat de configuratie wordt uitgerold.
----
===== ⚠️ Aandachtspunten =====
* De VotifierPlus-eventlistener ontbreekt nog.
* De build-artifactversie (`1.0.0`) en pluginversie (`1.5.0`) lopen uiteen.
* De huidige Paper-metadata gebruikt nog `api-version: 1.21.8`; Paper 26.2 moet nog als build- en runtime-doel worden gevalideerd.
* VoteParty- en pending-rewardverwerking moeten vóór productie met meerdere gelijktijdige servers worden getest.
* Controleer de databaseback-up voordat storage- of schemawijzigingen worden uitgerold.
----
===== 🧪 Troubleshooting =====
==== Probleem ====
De plugin start niet of Gradle kan de Java-toolchain niet vinden.
==== Controle ====
./gradlew --version
./gradlew clean build
==== Oplossing ====
Gebruik een compatibele Gradle-versie en zorg dat Java 21 beschikbaar is of via de Foojay-toolchainresolver kan worden gedownload. Controleer bij Paper-problemen ook `paper-plugin.yml`, de bootstrapper en de loader.
==== Probleem ====
Stemdata of pending beloningen zijn niet zichtbaar op een andere server.
==== Controle ====
storage.type: mysql
server-name: unieke-servernaam
==== Oplossing ====
Controleer of alle servers dezelfde database gebruiken, de database bereikbaar is en iedere server een unieke `server-name` heeft.
----
===== 📝 Onderhoud =====
**Laatste wijziging:** 2026-09-12
**Wijziging:** TulpenCraftVote-hernoeming, nieuwe package-structuur, Nederlandse documentatie en opgeschoonde storage-namen.
**Status:** ⚠️ Aandacht nodig vóór productie
----
===== 🔗 Externe links =====
* [[https://tulpencraft.nl|TulpenCraft]]
* [[https://papermc.io/|PaperMC-documentatie]]
* [[https://github.com/placeholderapi/PlaceholderAPI|PlaceholderAPI]]
* [[https://github.com/gradle/disco-toolchains|Foojay/Gradle toolchain-documentatie]]