====== TulpenCraft Rentals ======
~~NOTOC~~
===== π Status =====
^ Eigenschap ^ Waarde ^
| **Plugin** | TulpenCraft Rentals |
| **Status** | π‘ Ontwerp / ontwikkeling |
| **Versie** | 1.0.0 (gepland) |
| **Platform** | Paper 26.2 |
| **Server(s)** | Survival |
| **Onderdeel van netwerk** | Ja |
| **Database** | MariaDB |
| **Laatste controle** | 9 september 2026 |
^ Server ^ Actief ^
| **Velocity** | β Niet rechtstreeks |
| **Lobby** | β |
| **Survival** | π‘ Gepland |
| **Events** | β |
---
===== π― Doel =====
**TulpenCraft Rentals** is een eigen TulpenCraft-plugin voor het beheren van verhuurbare ruimtes binnen Minecraft.
De plugin maakt het mogelijk om verschillende soorten ruimtes aan spelers te verhuren, waaronder:
* π Woningen
* πͺ Winkels
* ποΈ Kamers
* π’ Kantoren
* π§± Bouwkavels
* π§ Werkplaatsen
* Andere verhuurbare ruimtes in de toekomst
De plugin koppelt een verhuurbaar object aan een bestaande **WorldGuard-region**.
WorldGuard blijft verantwoordelijk voor de daadwerkelijke bescherming van het gebied. TulpenCraft Rentals beheert daarbovenop het huurcontract, de huurder, huurperiode, betaling, toegangsrechten, eventuele medewerkers en het automatisch verlopen van de huur.
==== Voorbeeld ====
Een speler ziet een woning:
π Huis #001
Huurprijs:
β¬250 / 30 dagen
Status:
π’ Beschikbaar
[ HUREN ]
Na het huren:
π Huis #001
Huurder:
Speler
Verloopt:
09-10-2026
Status:
π΄ Verhuurd
Bij het verlopen van de huur kan de woning automatisch worden vrijgegeven en, indien ingesteld, worden teruggezet naar de oorspronkelijke staat.
---
===== π§© Ondersteunde verhuurtypes =====
De eerste versie ondersteunt:
^ Type ^ Beschrijving ^
| **HOUSE** | Woningen en huizen |
| **SHOP** | Winkels en bedrijfsruimtes |
| **HOTEL** | Hotelkamers of suites |
| **OFFICE** | Kantoorruimtes |
| **PLOT** | Verhuurbare bouwkavels |
| **WORKSHOP** | Werkplaatsen |
| **CUSTOM** | Overige verhuurbare ruimtes |
Nieuwe types kunnen later worden toegevoegd zonder het complete systeem opnieuw te ontwerpen.
---
===== π Woningen =====
Een woning kan tijdelijk aan een speler worden verhuurd.
Voorbeeld:
Huis #001
β¬250 / 30 dagen
π’ Beschikbaar
Na verhuur wordt de speler eigenaar van de gekoppelde WorldGuard-region.
De huurder kan binnen de region bouwen, breken en de woning gebruiken volgens de ingestelde WorldGuard-flags.
Bij het verlopen van de huur:
* De huurder verliest toegang.
* De WorldGuard-owner wordt verwijderd.
* Eventuele medewerkers worden verwijderd.
* De woning kan automatisch worden gereset.
* De woning wordt opnieuw beschikbaar.
---
===== πͺ Winkels =====
Een winkel werkt vergelijkbaar met een woning, maar ondersteunt daarnaast medewerkers.
Voorbeeld:
πͺ TulpenShop
Huur:
β¬500 / 30 dagen
Eigenaar:
Speler
Medewerkers:
2
De eigenaar kan medewerkers toevoegen en verwijderen.
/tc shop employee add winkel-001 Speler
/tc shop employee remove winkel-001 Speler
Medewerkers krijgen toegang tot de WorldGuard-region, maar zijn niet de huurder/eigenaar van het huurcontract.
---
===== ποΈ Kamers =====
Kamers kunnen bijvoorbeeld worden gebruikt voor een hotel.
Een kamer kan dezelfde verhuurfunctionaliteit gebruiken als een woning.
Daarnaast kan per kamer een **LuckPerms-permission** worden ingesteld.
Voorbeeld:
Kamer 201
β¬250 / 7 dagen
β VIP+ vereist
Een speler zonder de benodigde permission kan de kamer niet huren.
---
===== β LuckPerms / rangvereisten =====
Per verhuurobject kan een optionele LuckPerms-permission worden ingesteld.
Voorbeeld:
tulpencraft.rent.vip
Heeft een rental geen permission requirement, dan kan iedere speler de rental huren.
Voorbeeld:
^ Rental ^ Permission ^
| Huis #001 | Geen |
| Huis #002 | tulpencraft.rent.vip |
| Kamer 201 | tulpencraft.rent.vip |
| Suite 301 | tulpencraft.rent.premium |
| Staffruimte | tulpencraft.rent.staff |
De plugin controleert de permission server-side voordat een huurcontract kan worden afgesloten.
De daadwerkelijke rangnaam wordt **niet** in TulpenCraft Rentals opgeslagen.
De plugin gebruikt permissions, waardoor de rankstructuur volledig door LuckPerms wordt beheerd.
---
===== π¦ Installatie =====
**Jar-bestand:**
TulpenCraftRentals.jar
**Locatie:**
/srv/minecraft/survival/plugins/TulpenCraftRentals.jar
De plugin vereist toegang tot de volgende systemen:
* Paper API
* WorldGuard
* WorldEdit
* Vault
* MariaDB
* LuckPerms
* Discord webhook (optioneel)
---
===== βοΈ Configuratie =====
**Configuratiebestand:**
/srv/minecraft/survival/plugins/TulpenCraftRentals/config.yml
==== Belangrijke instellingen ====
^ Instelling ^ Waarde ^ Betekenis ^
| Database | MariaDB | Centrale opslag van huurcontracten |
| Economy | Vault | Betalingen voor huur |
| Protection | WorldGuard | Bescherming van verhuurde regions |
| Reset | WorldEdit | Optioneel herstellen van woningen/winkels |
| Permissions | LuckPerms | VIP/Premium/staff beperkingen |
| Discord | Webhook | Notificaties naar Discord |
| Expiration check | 60 seconden | Controle op verlopen huurcontracten |
==== TulpenCraft-configuratie ====
plugin:
name: "TulpenCraft Rentals"
database:
type: mariadb
host: "127.0.0.1"
port: 3306
database: "tulpencraft_rentals"
username: "tulpencraft"
password: "${TULPENCRAFT_RENTALS_DB_PASSWORD}"
economy:
enabled: true
provider: vault
rentals:
default-duration-days: 30
minimum-duration-days: 1
maximum-duration-days: 365
limits:
houses-per-player: 1
shops-per-player: 1
expiration:
check-interval-seconds: 60
reset:
enabled: true
delay-seconds: 5
notifications:
expiry-warning-days:
- 7
- 3
- 1
gui:
enabled: true
signs:
enabled: true
discord:
enabled: true
webhooks:
rentals:
url: "${TC_DISCORD_RENTALS_WEBHOOK}"
```
transactions:
url: "${TC_DISCORD_TRANSACTIONS_WEBHOOK}"
alerts:
url: "${TC_DISCORD_ALERTS_WEBHOOK}"
```
---
===== π Rechten =====
^ Permission ^ Rank ^ Beschrijving ^
| tulpenrental.use | Speler | Gebruik van het verhuursysteem |
| tulpenrental.rent | Speler | Rentals huren |
| tulpenrental.renew | Speler | Eigen huur verlengen |
| tulpenrental.shop | Huurder | Winkel-functionaliteit |
| tulpenrental.shop.employee | Huurder | Winkelmedewerkers beheren |
| tulpenrental.admin | Admin | Volledig beheer |
| tulpenrental.admin.create | Admin | Rentals aanmaken |
| tulpenrental.admin.delete | Admin | Rentals verwijderen |
| tulpenrental.admin.edit | Admin | Rentals wijzigen |
| tulpenrental.admin.reset | Admin | Rentals resetten |
| tulpenrental.admin.expire | Admin | Huurcontracten handmatig laten verlopen |
==== Rental access permissions ====
Deze permissions worden gebruikt om bepaalde rentals uitsluitend voor bepaalde spelers beschikbaar te maken.
^ Permission ^ Betekenis ^
| tulpencraft.rent.vip | VIP of hoger |
| tulpencraft.rent.premium | Premium of hoger |
| tulpencraft.rent.staff | Staff |
| tulpencraft.rent.special | Speciale toegang |
De exacte koppeling tussen ranks en permissions wordt door LuckPerms geregeld.
==== Rankverdeling ====
^ Rank ^ Rechten ^
| **Speler** | Algemene rentals huren indien toegestaan |
| **VIP** | Algemene rentals + VIP-rentals |
| **VIP+** | Algemene rentals + VIP/VIP+-rentals |
| **Helper** | Afhankelijk van staff-permissions |
| **Bouwer** | Afhankelijk van staff-permissions |
| **Moderator** | Beheer indien toegekend |
| **Developer** | Technisch beheer |
| **Admin** | Volledig rentalbeheer |
| **Owner** | Volledig beheer |
De plugin koppelt **geen functionaliteit rechtstreeks aan de naam van een rank**. LuckPerms permissions bepalen de toegang.
---
===== π¬ Commando's =====
==== Speler ====
^ Commando ^ Permission ^ Beschrijving ^
| /tc rentals | tulpenrental.use | Open verhuurmenu |
| /tc rental info | tulpenrental.use | Bekijk rentalinformatie |
| /tc rental rent | tulpenrental.rent | Rental huren |
| /tc rental renew | tulpenrental.renew | Huur verlengen |
| /tc rental cancel | Huurder | Eigen huur beΓ«indigen |
==== Winkel ====
^ Commando ^ Permission ^ Beschrijving ^
| /tc shop employees | tulpenrental.shop | Medewerkers bekijken |
| /tc shop employee add | tulpenrental.shop.employee | Medewerker toevoegen |
| /tc shop employee remove | tulpenrental.shop.employee | Medewerker verwijderen |
==== Beheer ====
^ Commando ^ Permission ^ Beschrijving ^
| /tc rental create | tulpenrental.admin.create | Rental aanmaken |
| /tc rental list | tulpenrental.admin | Rentals bekijken |
| /tc rental info | tulpenrental.admin | Rentalgegevens bekijken |
| /tc rental edit | tulpenrental.admin.edit | Rental wijzigen |
| /tc rental price | tulpenrental.admin.edit | Huurprijs wijzigen |
| /tc rental duration | tulpenrental.admin.edit | Huurperiode wijzigen |
| /tc rental enable | tulpenrental.admin.edit | Rental beschikbaar maken |
| /tc rental disable | tulpenrental.admin.edit | Rental uitschakelen |
| /tc rental reset | tulpenrental.admin.reset | Rental handmatig resetten |
| /tc rental expire | tulpenrental.admin.expire | Huur handmatig beΓ«indigen |
| /tc rental release | tulpenrental.admin.edit | Rental vrijgeven |
---
===== ποΈ Database =====
TulpenCraft Rentals gebruikt **MariaDB** als centrale database.
Database:
tulpencraft_rentals
Belangrijkste tabellen:
^ Tabel ^ Functie ^
| rentals | Verhuurbare objecten en huurcontracten |
| rental_members | Medewerkers van winkels/rentals |
| rental_transactions | Huur- en verlengingsbetalingen |
| rental_notifications | Verzonden verloopwaarschuwingen |
De database bevat UUID's in plaats van spelersnamen waar mogelijk.
Dit voorkomt problemen wanneer een speler zijn Minecraft-naam verandert.
---
===== π Huurproces =====
Wanneer een speler een rental huurt:
Speler
β
Rental selecteren
β
Status controleren
β
LuckPerms permission controleren
β
Aantal actieve rentals controleren
β
Prijs controleren
β
Vault / Economy
β
Betaling
β
WorldGuard ownership
β
MariaDB
β
Huur actief
De plugin moet bij fouten voorkomen dat een speler betaalt zonder daadwerkelijk toegang tot de rental te krijgen.
---
===== β° Huurverloop =====
De plugin controleert periodiek op verlopen huurcontracten.
Voorbeeld:
Huur gestart:
09-09-2026
Duur:
30 dagen
Verloopt:
09-10-2026
Voor het verlopen kunnen waarschuwingen worden verstuurd:
* 7 dagen vooraf
* 3 dagen vooraf
* 1 dag vooraf
Bij het verlopen:
1. Huurcontract wordt EXPIRED.
2. WorldGuard-toegang wordt verwijderd.
3. Winkelmedewerkers worden verwijderd.
4. Indien geconfigureerd wordt de region gereset.
5. Rental wordt opnieuw AVAILABLE.
6. Discord-notificatie wordt verstuurd.
---
===== β»οΈ Reset-systeem =====
Woningen en winkels kunnen optioneel automatisch worden hersteld met een WorldEdit-schematic.
Voorbeeld:
schematics/
βββ houses/
β βββ huis-001.schem
β βββ huis-002.schem
β
βββ shops/
βββ shop-001.schem
βββ shop-002.schem
Een rental kan bijvoorbeeld bevatten:
reset:
enabled: true
schematic: "houses/huis-001.schem"
Bij een reset wordt de rental tijdelijk op:
RESETTING
gezet.
Wanneer de reset mislukt blijft de rental in deze status staan en wordt deze **niet automatisch opnieuw verhuurbaar** gemaakt.
Dit voorkomt dat spelers een half geresette of beschadigde ruimte huren.
---
===== π Discord notificaties =====
TulpenCraft Rentals ondersteunt Discord-webhooks.
Discord wordt gebruikt voor beheer-, transactie- en foutmeldingen.
==== Rental verhuurd ====
Voorbeeld:
π RENTAL VERHUURD
Object: Huis #001
Type: Woning
Huurder: Speler
Prijs: β¬250
Duur: 30 dagen
Verloopt: 09-10-2026
Rental ID: huis-001
==== Huur verloopt ====
β οΈ HUUR VERLOOPT BINNENKORT
Object: Huis #001
Huurder: Speler
Verloopt over: 3 dagen
Huur: β¬250 / 30 dagen
==== Huur verlopen ====
π΄ RENTAL VERLOPEN
Object: Huis #001
Huurder: Speler
Status: EXPIRED
Reset: gestart
==== Reset succesvol ====
β
RENTAL RESET VOLTOOID
Object: Huis #001
Schematic: houses/huis-001.schem
Status: AVAILABLE
==== Reset mislukt ====
π¨ RENTAL RESET MISLUKT
Object: Huis #001
Schematic: houses/huis-001.schem
Status: RESETTING
β οΈ Rental is NIET opnieuw beschikbaar gemaakt.
Discord-notificaties worden via webhooks verstuurd. Webhook-URL's worden niet in Git opgeslagen en kunnen via environment variables worden aangeleverd.
---
===== π§± WorldGuard =====
TulpenCraft Rentals gebruikt WorldGuard voor de fysieke bescherming van rentals.
Een administrator maakt eerst een region:
/rg define tc_huis_001
Daarna wordt deze gekoppeld:
/tc rental create tc_huis_001 house
De plugin controleert of de region bestaat en voorkomt dat dezelfde WorldGuard-region meerdere keren aan rentals wordt gekoppeld.
WorldGuard blijft verantwoordelijk voor:
* Bouwrechten
* Breekrechten
* Toegang
* Region flags
* Owners
* Members
TulpenCraft Rentals beheert de eigenaar en medewerkers gedurende de huurperiode.
---
===== π° Economy =====
Betalingen verlopen via **Vault**.
De plugin heeft geen eigen economy.
Hierdoor blijft TulpenCraft Rentals onafhankelijk van de gebruikte economy-plugin.
Voorbeeld:
Saldo speler:
β¬1.200
Huur:
β¬250
Nieuw saldo:
β¬950
Alle transacties worden geregistreerd in MariaDB.
---
===== π Afhankelijkheden =====
* Paper
* WorldGuard
* WorldEdit
* Vault
* MariaDB
* LuckPerms
* Discord Webhook (optioneel)
---
===== π Netwerk / Proxy =====
**Proxy-plugin:** Nee
TulpenCraft Rentals draait op de backend-server waarop de WorldGuard-regions en verhuurbare gebieden aanwezig zijn.
^ Onderdeel ^ Waarde ^
| Proxy | Velocity |
| Backend | Survival |
| Database | MariaDB |
| Publieke host | Niet van toepassing |
Velocity hoeft geen TulpenCraft Rentals-plugin te draaien.
Wanneer TulpenCraft later meerdere backend-servers met rentals gebruikt, kan dezelfde MariaDB-database worden gebruikt met een unieke server-identificatie per rental.
---
===== π‘οΈ Beveiliging =====
TulpenCraft Rentals heeft toegang tot:
* WorldGuard regions
* WorldEdit
* Economy
* LuckPerms permissions
* MariaDB
* Discord webhook
Belangrijke beveiligingsmaatregelen:
* Databasewachtwoord niet in Git.
* Discord webhook URL niet in Git.
* Gebruik van UUID's in plaats van namen.
* Geldbedragen worden als exacte decimalen verwerkt.
* Databasewerk gebeurt niet op de Minecraft main thread.
* Spelers kunnen permissiechecks niet omzeilen via commands.
* Verlopen rentals worden niet opnieuw beschikbaar gemaakt voordat eventuele reset succesvol is afgerond.
* Fouten tijdens betalingen of WorldGuard-wijzigingen moeten veilig worden afgehandeld.
* Adminfuncties worden via permissions beschermd.
---
===== π Rental statussen =====
^ Status ^ Betekenis ^
| **AVAILABLE** | Beschikbaar voor verhuur |
| **RENTED** | Actief verhuurd |
| **EXPIRED** | Huurperiode verlopen |
| **RESETTING** | Bezig met herstellen |
| **DISABLED** | Tijdelijk niet verhuurbaar |
Normale lifecycle:
AVAILABLE
β
RENTED
β
EXPIRED
β
RESETTING
β
AVAILABLE
---
===== π₯οΈ Gebruikersinterface =====
Naast commands krijgt de plugin een GUI.
==== Hoofdmenu ====
π· TULPENCRAFT VERHUUR
π Woningen
πͺ Winkels
ποΈ Kamers
π Mijn huur
==== Rental overzicht ====
π Huis #001
β¬250 / 30 dagen
π’ Beschikbaar
π Huis #002
β¬350 / 30 dagen
β VIP
π Huis #003
β¬500 / 30 dagen
π΄ Verhuurd
==== Niet toegankelijke rental ====
Wanneer een speler niet over de vereiste LuckPerms-permission beschikt:
π¨ Kamer 201
β¬250 / 7 dagen
β VIP vereist
π Je hebt geen toegang.
De daadwerkelijke huuractie blijft ook server-side geblokkeerd.
---
===== πͺ§ Signs / fysieke verhuur =====
Rentals kunnen optioneel via fysieke borden worden weergegeven.
Voorbeeld:
βββββββββββββββββββ
β π HUIS #001 β
β β
β β¬250 / 30d β
β β
β π’ BESCHIKBAAR β
βββββββββββββββββββ
Klikken op het bord opent de rentalinformatie of huur-GUI.
Hetzelfde systeem kan worden gebruikt voor winkels en hotelkamers.
---
===== π Toekomstige uitbreidingen =====
De architectuur houdt rekening met toekomstige functionaliteit.
Mogelijke uitbreidingen:
* Webinterface
* TulpenCraft website-integratie
* REST API
* Rental-statistieken
* Borgsom
* Kortingen
* VIP-kortingen
* Verschillende huurperiodes
* Automatische prijsmodellen
* Meerdere medewerkers
* Hotelmodus
* Veilingen
* Permanente aankoop van objecten
* Meerdere Minecraft-servers
* Admin dashboard
* Discord-adminacties
De website kan later bijvoorbeeld beschikbare woningen en winkels rechtstreeks uit MariaDB/API-data tonen.
---
===== β οΈ Aandachtspunten =====
* MariaDB moet beschikbaar zijn voordat de plugin kan functioneren.
* WorldGuard-regions moeten correct worden aangemaakt.
* WorldEdit-schematics moeten zorgvuldig worden getest voordat automatische resets worden ingeschakeld.
* Discord-webhooks mogen niet publiek worden gedeeld.
* LuckPerms permissions moeten correct worden gekoppeld aan de gewenste ranks.
* Huurcontracten moeten altijd UUID-gebaseerd zijn.
* Een reset die mislukt mag nooit automatisch leiden tot status AVAILABLE.
* Economy-transacties moeten veilig worden afgehandeld.
* Databasebewerkingen mogen de Minecraft main thread niet blokkeren.
* De plugin moet duidelijk loggen wanneer een huurcontract wordt aangemaakt, verlengd, beΓ«indigd of gereset.
---
===== π§ͺ Troubleshooting =====
==== Probleem ====
Rental kan niet worden gehuurd.
==== Controle ====
/tc rental info huis-001
Controleer vervolgens:
* Status
* Prijs
* Huurperiode
* LuckPerms permission
* Economy
* WorldGuard-region
==== Oplossing ====
Controleer of de rental AVAILABLE is en of de speler over de vereiste permission beschikt.
---
==== Probleem ====
Speler krijgt geen toegang tot de woning.
==== Controle ====
/rg info tc_huis_001
Controleer de WorldGuard owner/member-configuratie.
==== Oplossing ====
Controleer of TulpenCraft Rentals de huurder correct als WorldGuard-owner heeft geregistreerd.
---
==== Probleem ====
Rental blijft op RESETTING staan.
==== Controle ====
/tc rental info huis-001
Controleer daarnaast de serverconsole.
==== Oplossing ====
Controleer of de gekoppelde schematic bestaat en geldig is.
De rental wordt bewust niet automatisch beschikbaar gemaakt totdat het resetprobleem is opgelost.
---
==== Probleem ====
Discord-notificaties komen niet aan.
==== Controle ====
Controleer de Discord webhook-configuratie en serverconsole.
grep -i "discord" /srv/minecraft/survival/logs/latest.log
==== Oplossing ====
Controleer:
* Webhook URL
* Environment variable
* Discord-kanaal
* Internetverbinding
* Pluginconfiguratie
---
===== π Onderhoud =====
**Laatste wijziging:** 09-09-2026
**Wijziging:** Eerste technisch/functioneel ontwerp opgesteld.
**Status:** β οΈ Ontwikkeling gepland
---
===== πΊοΈ Ontwikkelingsfasen =====
^ Fase ^ Onderdeel ^ Status ^
| 1 | Plugin foundation | π‘ Gepland |
| 2 | MariaDB | π‘ Gepland |
| 3 | Rental management | π‘ Gepland |
| 4 | WorldGuard-integratie | π‘ Gepland |
| 5 | Vault/economy | π‘ Gepland |
| 6 | LuckPerms | π‘ Gepland |
| 7 | Huren/verlenging | π‘ Gepland |
| 8 | Expiratie | π‘ Gepland |
| 9 | WorldEdit reset | π‘ Gepland |
| 10 | GUI | π‘ Gepland |
| 11 | Discord | π‘ Gepland |
| 12 | Website/API | βͺ Toekomstig |
---
===== π Externe links =====
* [[https://papermc.io/|Paper]]
* [[https://worldguard.enginehub.org/|WorldGuard]]
* [[https://worldedit.enginehub.org/|WorldEdit]]
* [[https://www.spigotmc.org/resources/vault.34315/|Vault]]
* [[https://luckperms.net/|LuckPerms]]
* [[https://mariadb.org/|MariaDB]]
* [[https://discord.com/developers/docs/resources/webhook|Discord Webhooks]]