TulpenCraft Rentals

πŸ“Œ 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:

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:


πŸͺ 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:


βš™οΈ 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 <id>
tulpenrental.use
Bekijk rentalinformatie
/tc rental rent <id>
tulpenrental.rent
Rental huren
/tc rental renew <id>
tulpenrental.renew
Huur verlengen
/tc rental cancel <id>
Huurder Eigen huur beΓ«indigen

Winkel

Commando Permission Beschrijving
/tc shop employees <id>
tulpenrental.shop
Medewerkers bekijken
/tc shop employee add <id> <player>
tulpenrental.shop.employee
Medewerker toevoegen
/tc shop employee remove <id> <player>
tulpenrental.shop.employee
Medewerker verwijderen

Beheer

Commando Permission Beschrijving
/tc rental create <region> <type>
tulpenrental.admin.create
Rental aanmaken
/tc rental list
tulpenrental.admin
Rentals bekijken
/tc rental info <id>
tulpenrental.admin
Rentalgegevens bekijken
/tc rental edit <id>
tulpenrental.admin.edit
Rental wijzigen
/tc rental price <id> <bedrag>
tulpenrental.admin.edit
Huurprijs wijzigen
/tc rental duration <id> <dagen>
tulpenrental.admin.edit
Huurperiode wijzigen
/tc rental enable <id>
tulpenrental.admin.edit
Rental beschikbaar maken
/tc rental disable <id>
tulpenrental.admin.edit
Rental uitschakelen
/tc rental reset <id>
tulpenrental.admin.reset
Rental handmatig resetten
/tc rental expire <id>
tulpenrental.admin.expire
Huur handmatig beΓ«indigen
/tc rental release <id>
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:

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:

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


🌐 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:

Belangrijke beveiligingsmaatregelen:


πŸ“Š 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:

De website kan later bijvoorbeeld beschikbare woningen en winkels rechtstreeks uit MariaDB/API-data tonen.


⚠️ Aandachtspunten


πŸ§ͺ Troubleshooting

Probleem

Rental kan niet worden gehuurd.

Controle

/tc rental info huis-001

Controleer vervolgens:

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:


πŸ“ 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