====== 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]]