Toon paginaOude revisiesReferentiesTerug naar boven Deze pagina is alleen-lezen. Je kan de broncode bekijken maar niet veranderen. Neem contact op met de beheerder als je denkt dat dit niet klopt. ====== 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: <code> π Huis #001 Huurprijs: β¬250 / 30 dagen Status: π’ Beschikbaar [ HUREN ] </code> Na het huren: <code> π Huis #001 Huurder: Speler Verloopt: 09-10-2026 Status: π΄ Verhuurd </code> 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: <code> Huis #001 β¬250 / 30 dagen π’ Beschikbaar </code> 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: <code> πͺ TulpenShop Huur: β¬500 / 30 dagen Eigenaar: Speler Medewerkers: 2 </code> De eigenaar kan medewerkers toevoegen en verwijderen. <code> /tc shop employee add winkel-001 Speler /tc shop employee remove winkel-001 Speler </code> 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: <code> Kamer 201 β¬250 / 7 dagen β VIP+ vereist </code> Een speler zonder de benodigde permission kan de kamer niet huren. --- ===== β LuckPerms / rangvereisten ===== Per verhuurobject kan een optionele LuckPerms-permission worden ingesteld. Voorbeeld: <code> tulpencraft.rent.vip </code> Heeft een rental geen permission requirement, dan kan iedere speler de rental huren. Voorbeeld: ^ Rental ^ Permission ^ | Huis #001 | Geen | | Huis #002 | <code>tulpencraft.rent.vip</code> | | Kamer 201 | <code>tulpencraft.rent.vip</code> | | Suite 301 | <code>tulpencraft.rent.premium</code> | | Staffruimte | <code>tulpencraft.rent.staff</code> | 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:** <code> TulpenCraftRentals.jar </code> **Locatie:** <code> /srv/minecraft/survival/plugins/TulpenCraftRentals.jar </code> De plugin vereist toegang tot de volgende systemen: * Paper API * WorldGuard * WorldEdit * Vault * MariaDB * LuckPerms * Discord webhook (optioneel) --- ===== βοΈ Configuratie ===== **Configuratiebestand:** <code> /srv/minecraft/survival/plugins/TulpenCraftRentals/config.yml </code> ==== 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 ==== <code yaml> 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}" ``` </code> --- ===== π Rechten ===== ^ Permission ^ Rank ^ Beschrijving ^ | <code>tulpenrental.use</code> | Speler | Gebruik van het verhuursysteem | | <code>tulpenrental.rent</code> | Speler | Rentals huren | | <code>tulpenrental.renew</code> | Speler | Eigen huur verlengen | | <code>tulpenrental.shop</code> | Huurder | Winkel-functionaliteit | | <code>tulpenrental.shop.employee</code> | Huurder | Winkelmedewerkers beheren | | <code>tulpenrental.admin</code> | Admin | Volledig beheer | | <code>tulpenrental.admin.create</code> | Admin | Rentals aanmaken | | <code>tulpenrental.admin.delete</code> | Admin | Rentals verwijderen | | <code>tulpenrental.admin.edit</code> | Admin | Rentals wijzigen | | <code>tulpenrental.admin.reset</code> | Admin | Rentals resetten | | <code>tulpenrental.admin.expire</code> | Admin | Huurcontracten handmatig laten verlopen | ==== Rental access permissions ==== Deze permissions worden gebruikt om bepaalde rentals uitsluitend voor bepaalde spelers beschikbaar te maken. ^ Permission ^ Betekenis ^ | <code>tulpencraft.rent.vip</code> | VIP of hoger | | <code>tulpencraft.rent.premium</code> | Premium of hoger | | <code>tulpencraft.rent.staff</code> | Staff | | <code>tulpencraft.rent.special</code> | 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 ^ | <code>/tc rentals</code> | <code>tulpenrental.use</code> | Open verhuurmenu | | <code>/tc rental info <id></code> | <code>tulpenrental.use</code> | Bekijk rentalinformatie | | <code>/tc rental rent <id></code> | <code>tulpenrental.rent</code> | Rental huren | | <code>/tc rental renew <id></code> | <code>tulpenrental.renew</code> | Huur verlengen | | <code>/tc rental cancel <id></code> | Huurder | Eigen huur beΓ«indigen | ==== Winkel ==== ^ Commando ^ Permission ^ Beschrijving ^ | <code>/tc shop employees <id></code> | <code>tulpenrental.shop</code> | Medewerkers bekijken | | <code>/tc shop employee add <id> <player></code> | <code>tulpenrental.shop.employee</code> | Medewerker toevoegen | | <code>/tc shop employee remove <id> <player></code> | <code>tulpenrental.shop.employee</code> | Medewerker verwijderen | ==== Beheer ==== ^ Commando ^ Permission ^ Beschrijving ^ | <code>/tc rental create <region> <type></code> | <code>tulpenrental.admin.create</code> | Rental aanmaken | | <code>/tc rental list</code> | <code>tulpenrental.admin</code> | Rentals bekijken | | <code>/tc rental info <id></code> | <code>tulpenrental.admin</code> | Rentalgegevens bekijken | | <code>/tc rental edit <id></code> | <code>tulpenrental.admin.edit</code> | Rental wijzigen | | <code>/tc rental price <id> <bedrag></code> | <code>tulpenrental.admin.edit</code> | Huurprijs wijzigen | | <code>/tc rental duration <id> <dagen></code> | <code>tulpenrental.admin.edit</code> | Huurperiode wijzigen | | <code>/tc rental enable <id></code> | <code>tulpenrental.admin.edit</code> | Rental beschikbaar maken | | <code>/tc rental disable <id></code> | <code>tulpenrental.admin.edit</code> | Rental uitschakelen | | <code>/tc rental reset <id></code> | <code>tulpenrental.admin.reset</code> | Rental handmatig resetten | | <code>/tc rental expire <id></code> | <code>tulpenrental.admin.expire</code> | Huur handmatig beΓ«indigen | | <code>/tc rental release <id></code> | <code>tulpenrental.admin.edit</code> | Rental vrijgeven | --- ===== ποΈ Database ===== TulpenCraft Rentals gebruikt **MariaDB** als centrale database. Database: <code> tulpencraft_rentals </code> Belangrijkste tabellen: ^ Tabel ^ Functie ^ | <code>rentals</code> | Verhuurbare objecten en huurcontracten | | <code>rental_members</code> | Medewerkers van winkels/rentals | | <code>rental_transactions</code> | Huur- en verlengingsbetalingen | | <code>rental_notifications</code> | 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: <code> Speler β Rental selecteren β Status controleren β LuckPerms permission controleren β Aantal actieve rentals controleren β Prijs controleren β Vault / Economy β Betaling β WorldGuard ownership β MariaDB β Huur actief </code> 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: <code> Huur gestart: 09-09-2026 Duur: 30 dagen Verloopt: 09-10-2026 </code> 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: <code> schematics/ βββ houses/ β βββ huis-001.schem β βββ huis-002.schem β βββ shops/ βββ shop-001.schem βββ shop-002.schem </code> Een rental kan bijvoorbeeld bevatten: <code yaml> reset: enabled: true schematic: "houses/huis-001.schem" </code> Bij een reset wordt de rental tijdelijk op: <code> RESETTING </code> 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: <code> π RENTAL VERHUURD Object: Huis #001 Type: Woning Huurder: Speler Prijs: β¬250 Duur: 30 dagen Verloopt: 09-10-2026 Rental ID: huis-001 </code> ==== Huur verloopt ==== <code> β οΈ HUUR VERLOOPT BINNENKORT Object: Huis #001 Huurder: Speler Verloopt over: 3 dagen Huur: β¬250 / 30 dagen </code> ==== Huur verlopen ==== <code> π΄ RENTAL VERLOPEN Object: Huis #001 Huurder: Speler Status: EXPIRED Reset: gestart </code> ==== Reset succesvol ==== <code> β RENTAL RESET VOLTOOID Object: Huis #001 Schematic: houses/huis-001.schem Status: AVAILABLE </code> ==== Reset mislukt ==== <code> π¨ RENTAL RESET MISLUKT Object: Huis #001 Schematic: houses/huis-001.schem Status: RESETTING β οΈ Rental is NIET opnieuw beschikbaar gemaakt. </code> 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: <code bash> /rg define tc_huis_001 </code> Daarna wordt deze gekoppeld: <code bash> /tc rental create tc_huis_001 house </code> 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: <code> Saldo speler: β¬1.200 Huur: β¬250 Nieuw saldo: β¬950 </code> 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: <code> AVAILABLE β RENTED β EXPIRED β RESETTING β AVAILABLE </code> --- ===== π₯οΈ Gebruikersinterface ===== Naast commands krijgt de plugin een GUI. ==== Hoofdmenu ==== <code> π· TULPENCRAFT VERHUUR π Woningen πͺ Winkels ποΈ Kamers π Mijn huur </code> ==== Rental overzicht ==== <code> π Huis #001 β¬250 / 30 dagen π’ Beschikbaar π Huis #002 β¬350 / 30 dagen β VIP π Huis #003 β¬500 / 30 dagen π΄ Verhuurd </code> ==== Niet toegankelijke rental ==== Wanneer een speler niet over de vereiste LuckPerms-permission beschikt: <code> π¨ Kamer 201 β¬250 / 7 dagen β VIP vereist π Je hebt geen toegang. </code> De daadwerkelijke huuractie blijft ook server-side geblokkeerd. --- ===== πͺ§ Signs / fysieke verhuur ===== Rentals kunnen optioneel via fysieke borden worden weergegeven. Voorbeeld: <code> βββββββββββββββββββ β π HUIS #001 β β β β β¬250 / 30d β β β β π’ BESCHIKBAAR β βββββββββββββββββββ </code> 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 ==== <code bash> /tc rental info huis-001 </code> 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 ==== <code bash> /rg info tc_huis_001 </code> 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 ==== <code bash> /tc rental info huis-001 </code> 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. <code bash> grep -i "discord" /srv/minecraft/survival/logs/latest.log </code> ==== 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]] plugins/tulpencraftrental.txt Laatst gewijzigd: 2026/09/09 17:43door rroethof