Dit is een oude revisie van het document!


Ja. Dan zou ik dezelfde documentatiestijl en structuur aanhouden als TulpenCraftEssentials, maar volledig toegespitst op TulpenCraftRentals.

Ik zou daarbij heel bewust onderscheid maken tussen wat de plugin nu al technisch heeft en wat we nog gaan bouwen. Dus geen documentatie die doet alsof ChestShop, GUI, WorldGuard, reset enz. al klaar zijn.

Hier is de eerste versie in DokuWiki-formaat, direct kopieerbaar:

TulpenCraftRentals

Eigenschap Waarde
Plugin TulpenCraftRentals
Status ๐ŸŸก In ontwikkeling
Versie 0.1.0-SNAPSHOT
Buildsysteem Maven
Platform Paper 26.2
Java Java 25
Server(s) Survival
Onderdeel van netwerk Ja
Laatste controle datum
Server Actief
Velocity โŒ
Lobby โŒ
Survival โœ…
Events โŒ

TulpenCraftRentals beheert tijdelijke verhuur van vooraf gedefinieerde gebieden binnen TulpenCraft.

De plugin maakt het mogelijk om bijvoorbeeld:

  • ๐Ÿ  Huizen
  • ๐Ÿ›’ Winkels
  • ๐Ÿจ Hotelkamers

tijdelijk aan spelers te verhuren.

Een huurcontract koppelt een speler aan een vooraf geconfigureerde WorldGuard-regio. De plugin beheert vervolgens de administratieve en technische onderdelen van de huurperiode.

Hieronder vallen onder andere:

  • huurprijs;
  • huurperiode;
  • huurder;
  • medebewoners;
  • winkelmedewerkers;
  • ChestShop-limieten;
  • permissievereisten;
  • vervaldatum;
  • ontruimingsperiode;
  • huurverlenging;
  • beรซindiging;
  • reset van de ruimte;
  • audit logging;
  • notificaties.

WorldGuard blijft verantwoordelijk voor de daadwerkelijke gebiedsbeveiliging. TulpenCraftRentals beheert de huurstatus en bepaalt wie toegang tot een verhuurd gebied krijgt.


Een huis is een persoonlijke woonruimte die tijdelijk door een speler kan worden gehuurd.

Eigenschappen:

  • tijdelijke huurder;
  • optionele medebewoners;
  • configureerbaar maximum aantal bewoners;
  • WorldGuard-beveiliging;
  • optionele rank/permissie-eis;
  • vrije inrichting door de huurder;
  • preview voordat de huur wordt afgesloten;
  • reset na afloop van de huur.

Meerdere huizen kunnen tegelijkertijd worden gehuurd wanneer de speler hiervoor voldoende rechten heeft.

Een winkel is een verhuurbare ruimte waarin de huurder een ChestShop kan exploiteren.

Eigenschappen:

  • tijdelijke huurder;
  • medewerkers kunnen worden toegevoegd;
  • medewerkers kunnen de winkel beheren;
  • WorldGuard-beveiliging;
  • ChestShop-integratie;
  • configureerbaar maximum aantal ChestShops;
  • optionele rank/permissie-eis;
  • preview voordat de huur wordt afgesloten;
  • reset na afloop van de huur.

ChestShops mogen uitsluitend binnen het gekoppelde winkelgebied worden aangemaakt.

Een hotelkamer is een tijdelijke woonruimte met een relatief korte huurperiode.

Eigenschappen:

  • tijdelijke huurder;
  • configureerbaar aantal bewoners;
  • WorldGuard-beveiliging;
  • optionele rank/permissie-eis;
  • preview voordat de huur wordt afgesloten;
  • configureerbare huurperiode;
  • reset na afloop van de huur.

Hotelkamers ondersteunen geen ChestShop-functionaliteit.


Een rental doorloopt verschillende statussen:

DISABLED
    โ†“
AVAILABLE
    โ†“
RENTED
    โ†“
EXPIRED
    โ†“
RESETTING
    โ†“
AVAILABLE
Status Betekenis
DISABLED Rental is uitgeschakeld en kan niet worden gehuurd
AVAILABLE Rental is beschikbaar voor verhuur
RENTED Rental is actief verhuurd
EXPIRED Huurperiode is verlopen en de ontruimingsperiode is gestart
RESETTING Rental wordt teruggezet naar de oorspronkelijke staat

Een rental mag uitsluitend automatisch terugkeren naar AVAILABLE wanneer de reset succesvol is uitgevoerd.

Wanneer een reset mislukt, blijft de rental op RESETTING staan en wordt de fout aan staff gemeld.


Iedere rental heeft een configureerbare huurperiode.

De periode wordt opgeslagen als een exacte vervaldatum.

Voorbeelden:

  • 7 dagen;
  • 14 dagen;
  • 30 dagen;
  • 90 dagen.

De exacte periode wordt per rental bepaald.

De huurder ontvangt waarschuwingen voordat de huur afloopt.

Standaard:

Moment Melding
7 dagen voor einde Eerste waarschuwing
3 dagen voor einde Tweede waarschuwing
1 dag voor einde Laatste waarschuwing
Einde huurperiode Huur is verlopen

Na het verlopen van een huurcontract krijgt de huurder maximaal 72 uur om de ruimte leeg te maken.

Deze periode is geen verlenging van het huurcontract.

Tijdens deze periode:

  • is de huur officieel verlopen;
  • kan de huurder persoonlijke spullen verwijderen;
  • kan de huurder een verlenging uitvoeren;
  • mogen geen nieuwe ChestShops worden aangemaakt;
  • blijft de ruimte tijdelijk beschikbaar voor ontruiming.

Na het verstrijken van de 72 uur wordt de rental gereset.

De huurder is zelf verantwoordelijk voor het verwijderen of verplaatsen van alle eigendommen.

Achtergebleven items worden bij de reset verwijderd.


TulpenCraftRentals gebruikt Vault als abstractielaag voor het economy-systeem.

De plugin implementeert geen eigen economie.

Betalingen worden geregistreerd in de database.

Ondersteunde transactietypes:

  • RENT
  • RENEW
  • REFUND

Een betaling moet veilig worden verwerkt zodat een speler niet wordt belast wanneer de huur uiteindelijk niet kan worden toegekend.

Vroegtijdig beรซindigen van een huurcontract geeft geen recht op restitutie.


Bij huizen en hotelkamers kunnen spelers als bewoners worden toegevoegd.

Een bewoner krijgt toegang tot de gekoppelde WorldGuard-regio volgens de configuratie van de rental.

De eigenaar van de rental blijft verantwoordelijk voor het beheer van de bewoners.

Bij shops kunnen medewerkers worden toegevoegd.

Een medewerker kan, afhankelijk van de configuratie:

  • bouwen;
  • blokken plaatsen;
  • blokken verwijderen;
  • ChestShops plaatsen;
  • ChestShops verwijderen;
  • ChestShops beheren.

De technische database gebruikt hiervoor dezelfde member-structuur. Het onderscheid tussen bewoner en medewerker wordt bepaald door het rentaltype.


ChestShop-functionaliteit is uitsluitend beschikbaar voor rentals van het type SHOP.

De plugin integreert met:

ChestShop 3.12.2

Een ChestShop:

  • moet binnen de gekoppelde WorldGuard-regio staan;
  • mag uitsluitend door de huurder of geautoriseerde medewerker worden aangemaakt;
  • telt mee voor het maximale aantal ChestShops van de rental;
  • wordt geregistreerd in de TulpenCraftRentals-database.

Wanneer het maximale aantal ChestShops is bereikt, wordt een nieuwe shopaanmaak geweigerd.

Bij het verwijderen van een ChestShop wordt de registratie uit de database verwijderd.

Bij het beรซindigen/resetten van een rental worden de geregistreerde ChestShops verwerkt voordat de ruimte wordt gereset.


TulpenCraftRentals gebruikt Bukkit/Paper-permissions en LuckPerms voor toegangscontrole.

Ranknamen worden niet hardcoded in de plugin.

In plaats daarvan worden permissies gebruikt.

Permission Beschrijving
tulpencraft.rentals.admin Volledige administratieve toegang
tulpencraft.rentals.create Rentals aanmaken
tulpencraft.rentals.edit Rentals aanpassen
tulpencraft.rentals.reset Rentals resetten
tulpencraft.rentals.force Geforceerde acties uitvoeren
tulpencraft.rentals.members Bewoners/medewerkers beheren

Een rental kan optioneel een permission vereisen.

Voorbeelden:

tulpencraft.rent.vip
tulpencraft.rent.premium

Hierdoor kan LuckPerms bepalen welke spelers toegang hebben tot bepaalde rentals.

Ook het maximale aantal gelijktijdige rentals kan via permissions worden geregeld.

Voorbeelden:

tulpencraft.rent.limit.house.2
tulpencraft.rent.limit.shop.2
tulpencraft.rent.limit.hotel.3

De plugin hoeft hierdoor geen specifieke ranknamen te kennen.


De primaire gebruikerscommand is:

/huur

/huren kan als alias worden gebruikt.

Commando Permission Beschrijving
/huur
โ€” Opent het huurmenu
/huur mijn
โ€” Toont actieve eigen rentals
/huur info <id>
โ€” Toont informatie over een rental
/huur huren <id>
โ€” Start het huurproces
/huur verlengen <id>
โ€” Verlengt een actieve huur
/huur opzeggen <id>
โ€” Beรซindigt een huurcontract
Commando Permission Beschrijving
/huur beheer
tulpencraft.rentals.admin Opent het beheermenu
/huur beheer lijst
tulpencraft.rentals.admin Toont alle rentals
/huur beheer info <id>
tulpencraft.rentals.admin Toont volledige rentalinformatie
/huur beheer aanmaken <region> <type>
tulpencraft.rentals.create Maakt een rental aan
/huur beheer naam <id> <naam>
tulpencraft.rentals.edit Wijzigt de naam
/huur beheer prijs <id> <bedrag>
tulpencraft.rentals.edit Wijzigt de huurprijs
/huur beheer duur <id> <dagen>
tulpencraft.rentals.edit Wijzigt de huurperiode
/huur beheer activeren <id>
tulpencraft.rentals.edit Activeert een rental
/huur beheer uitschakelen <id>
tulpencraft.rentals.edit Schakelt een rental uit
/huur beheer reset <id>
tulpencraft.rentals.reset Start een rental-reset
/huur beheer reset status <id>
tulpencraft.rentals.reset Toont resetstatus
/huur beheer geschiedenis <id>
tulpencraft.rentals.admin Toont de auditgeschiedenis

/huur opent het gebruikersmenu.

Het menu wordt opgebouwd rond de verschillende huurtypes.

Categorie Beschrijving
๐Ÿ  Huizen Beschikbare huurhuizen
๐Ÿ›’ Winkels Beschikbare winkelruimtes
๐Ÿจ Hotel Beschikbare hotelkamers
๐Ÿ“‹ Mijn huur Eigen actieve en verlopen rentals

Bij een rental worden onder andere getoond:

  • naam;
  • type;
  • prijs;
  • huurperiode;
  • vereiste permission;
  • beschikbare plaatsen;
  • aantal ChestShops;
  • aantal bewoners;
  • huidige status.

De speler kan vanuit het menu eerst een preview bekijken voordat de huur wordt afgesloten.


Een speler kan een rental bekijken voordat deze wordt gehuurd.

De preview geeft uitsluitend toegang om de ruimte te bekijken.

Een preview:

  • geeft geen huurrechten;
  • maakt de speler geen eigenaar;
  • geeft geen permanente WorldGuard-rechten;
  • start geen huurperiode;
  • brengt geen kosten met zich mee.

Pas na het bevestigen van de huur wordt de rental daadwerkelijk aan de speler toegewezen.


TulpenCraftRentals gebruikt WorldGuard voor fysieke gebiedsbeveiliging.

Iedere rental is gekoppeld aan een vooraf bestaande WorldGuard-regio.

TulpenCraftRentals beheert:

  • huurder;
  • bewoners;
  • medewerkers;
  • toegang tijdens de huurperiode.

WorldGuard blijft verantwoordelijk voor de daadwerkelijke bescherming van het gebied.

Een rental kan niet succesvol worden aangemaakt wanneer de gekoppelde WorldGuard-regio niet bestaat.


Na het einde van een huurperiode wordt de rental teruggezet naar de oorspronkelijke staat.

De reset gebruikt een WorldEdit-schematic.

Globale volgorde:

Rental verlopen
      โ†“
Ontruimingsperiode
      โ†“
ChestShops verwerken
      โ†“
Members verwijderen
      โ†“
Achtergebleven items verwijderen
      โ†“
WorldEdit schematic plaatsen
      โ†“
Controle
      โ†“
AVAILABLE

Wanneer een reset mislukt:

RESETTING
```

De rental wordt in dat geval **niet automatisch beschikbaar gemaakt**.

Staff moet het probleem eerst oplossen.

---

===== ๐Ÿ—„๏ธ Database =====

TulpenCraftRentals gebruikt **MariaDB**.

De database bevat onder andere:

^ Tabel ^ Functie ^
| `rentals` | Hoofdgegevens en status van rentals |
| `rental_members` | Bewoners en medewerkers |
| `rental_chestshops` | Geregistreerde ChestShops |
| `rental_transactions` | Betalingen en transacties |
| `rental_notifications` | Verzonden huurwaarschuwingen |
| `rental_audit_log` | Audit- en beheergeschiedenis |

Databaseverbindingen worden beheerd via HikariCP.

Database-I/O wordt asynchroon uitgevoerd om de Minecraft-serverthread niet onnodig te blokkeren.

---

===== ๐Ÿ”” Notificaties =====

Belangrijke gebeurtenissen kunnen via Discord worden gemeld.

Voorbeelden:

* nieuwe huur;
* huurverlenging;
* verlopen huur;
* reset gestart;
* reset succesvol afgerond;
* reset mislukt;
* medewerker toegevoegd;
* medewerker verwijderd.

De plugin gebruikt hiervoor een afzonderlijke notification-laag zodat de Discord-integratie niet direct aan de rental-logica gekoppeld is.

---

===== ๐Ÿ“Š Audit logging =====

Belangrijke acties worden geregistreerd.

Voorbeelden:

<code>
RENTED
RENEWED
EXPIRED
CANCELLED
MEMBER_ADDED
MEMBER_REMOVED
CHESTSHOP_CREATED
CHESTSHOP_REMOVED
RESET_STARTED
RESET_COMPLETED
RESET_FAILED

Hierdoor kan achteraf worden nagegaan wat er met een rental is gebeurd.


Jar-bestand:

TulpenCraftRentals-0.1.0-SNAPSHOT.jar

Locatie:

/srv/minecraft/survival/plugins/TulpenCraftRentals-0.1.0-SNAPSHOT.jar

Builden:

Het project gebruikt Maven.

mvn clean package

De gebouwde JAR wordt aangemaakt in:

target/TulpenCraftRentals-0.1.0-SNAPSHOT.jar

Configuratiebestand:

/srv/minecraft/survival/plugins/TulpenCraftRentals/config.yml

De plugin gebruikt een MariaDB-database.

Voorbeeld:

database:
  host: 172.16.0.30
  port: 3306
  name: tulpencraft_rentals
  username: rentals
  password: ""
  use-environment-password: true
  environment-password-variable: TULPENCRAFT_RENTALS_DB_PASSWORD
  pool-size: 10
  connection-timeout-ms: 5000

Het databasewachtwoord wordt bij voorkeur via een environment variable beschikbaar gesteld en niet rechtstreeks in config.yml opgeslagen.

rental:
  evacuation-hours: 72
  warnings:
    - 168
    - 72
    - 24

De standaard ontruimingsperiode bedraagt 72 uur.

De waarschuwingen worden standaard 168, 72 en 24 uur voor het einde van de huurperiode verstuurd.

limits:
  default:
    house: 1
    shop: 1
    hotel: 1

Deze waarden kunnen later worden uitgebreid met permission-gebaseerde limieten.


  • Paper 26.2
  • Java 25
  • WorldGuard
  • WorldEdit
  • Vault
  • LuckPerms
  • ChestShop 3.12.2
  • MariaDB
  • MariaDB Java Client
  • HikariCP

TulpenCraftRentals verwerkt onder andere:

  • Minecraft UUID's;
  • huurcontracten;
  • toegangsrechten;
  • transacties;
  • auditinformatie.

De database moet daarom uitsluitend vanaf geautoriseerde systemen bereikbaar zijn.

De Minecraft-server maakt verbinding met MariaDB via een afzonderlijke databasegebruiker.

Aanbevolen configuratie:

  • aparte database voor TulpenCraftRentals;
  • aparte MariaDB-user;
  • alleen benodigde databaseprivileges;
  • verbinding vanaf uitsluitend geautoriseerde Minecraft-servers;
  • databasewachtwoord niet in Git opslaan.

De plugin gebruikt geen ranknamen in de Java-code. Toegangscontrole gebeurt via permissions en LuckPerms.


  • Een rental is altijd gekoppeld aan een WorldGuard-regio.
  • Een verlopen huurcontract is geen automatische verlenging.
  • De maximale ontruimingsperiode bedraagt 72 uur.
  • De huurder is verantwoordelijk voor het verwijderen van eigendommen.
  • Achtergebleven items worden tijdens de reset verwijderd.
  • Vroegtijdig opzeggen geeft geen recht op restitutie.
  • ChestShops zijn uitsluitend toegestaan binnen SHOP-rentals.
  • Het maximale aantal ChestShops wordt per rental bewaakt.
  • Een mislukte reset maakt een rental niet automatisch beschikbaar.
  • Database-I/O mag niet blokkerend op de Minecraft-serverthread worden uitgevoerd.

Controleer eerst:

/plugins

Controleer vervolgens:

grep -i "TulpenCraftRentals" logs/latest.log

Controleer de Java-versie:

java -version

TulpenCraftRentals vereist Java 25.

Controleer:

  • MariaDB-host;
  • MariaDB-poort;
  • databasenaam;
  • username;
  • wachtwoord;
  • MariaDB grants;
  • firewall;
  • netwerkverbinding.

Test vanaf de Minecraft-server:

mariadb -h 172.16.0.30 -P 3306 -u rentals -p tulpencraft_rentals

De MariaDB-user moet verbinding mogen maken vanaf het IP-adres van de Minecraft-server.

Controleer of TulpenCraftRentals geladen is:

/plugins

Controleer daarnaast plugin.yml en de serverlog.

De primaire command is:

/huur

Alias:

/huren

Controleer:

  • of de WorldGuard-regio bestaat;
  • of de rental-ID uniek is;
  • of het opgegeven rentaltype geldig is;
  • of de uitvoerende speler voldoende rechten heeft.

Controleer:

  • of de rental van het type SHOP is;
  • of de speler huurder of geautoriseerde medewerker is;
  • of de ChestShop binnen de gekoppelde regio staat;
  • of het maximum aantal ChestShops nog niet is bereikt.

Dit betekent dat de reset niet succesvol is afgerond.

Controleer de serverlog en resetstatus:

/huur beheer reset status &lt;id&gt;

Een rental mag pas opnieuw beschikbaar worden gemaakt nadat de oorzaak van de resetfout is opgelost.


De plugin wordt gefaseerd ontwikkeld.

Onderdeel Status
Basis plugin ๐ŸŸข
Maven build ๐ŸŸข
Java 25 ๐ŸŸข
Paper 26.2 ๐ŸŸข
MariaDB verbinding ๐ŸŸข
Database-schema ๐ŸŸข
Rental model ๐ŸŸข
/huur command ๐ŸŸก
Rental CRUD ๐ŸŸก
WorldGuard-integratie ๐ŸŸก
Vault economy ๐Ÿ”ด
LuckPerms-integratie ๐Ÿ”ด
Rental GUI ๐Ÿ”ด
Preview ๐Ÿ”ด
House members ๐Ÿ”ด
Shop employees ๐Ÿ”ด
ChestShop-integratie ๐Ÿ”ด
Hotelkamers ๐Ÿ”ด
Expiration scheduler ๐Ÿ”ด
72 uur ontruiming ๐Ÿ”ด
WorldEdit reset ๐Ÿ”ด
Discord notificaties ๐Ÿ”ด
Audit logging ๐ŸŸก

Legenda:

  • ๐ŸŸข = geรฏmplementeerd
  • ๐ŸŸก = gedeeltelijk / in ontwikkeling
  • ๐Ÿ”ด = nog niet geรฏmplementeerd

Laatste wijziging: datum

Wijziging: Documentatie aangemaakt voor TulpenCraftRentals.

Status: ๐ŸŸก In ontwikkeling


  • plugins/tulpencraftrentals.1789036198.txt.gz
  • Laatst gewijzigd: 2026/09/10 12:29
  • door rroethof