🪧 Système de Logements
📂 Structure des Fichiers
Les logements sont gérés via plusieurs fichiers de configuration situés dans le dossier plugins/Horizons/:
houses.yml- Stocke les informations sur les maisonsconfig.yml- Contient les paramètres généraux du système, notamment les formats des panneaux
🏗️ Types de Logements
Types Disponibles
Le plugin supporte deux types de logements :
| Type | Description | Monnaie Utilisée |
|---|---|---|
PLAYER | Maisons appartenant à des joueurs individuels | Points personnels |
TEAM | Maisons appartenant à des équipes entières | Points d'équipe |
🛠️ Commandes
Le système de logements est géré par la commande principale /house ou son alias /housing.
Commandes Disponibles
| Commande | Description | Permission |
|---|---|---|
/house create <nom> <team|player> | Crée une nouvelle maison | horizons.house.create |
/house forsale <nom> <prix> | Met une maison en vente | horizons.house.forsale |
/house addmember <nom> <joueur> | Ajoute un membre à une maison | Propriétaire |
/house removemember <nom> <joueur> | Retire un membre d'une maison | Propriétaire |
/house list [page] | Liste toutes les maisons | horizons.house.list |
/house delete <nom> | Supprime une maison | horizons.house.delete |
/house setsign <nom> | Définit un panneau pour une maison | horizons.house.setsign |
/house restrictteam <nom> [équipe|none] | Restreint l'achat d'une maison à une équipe | horizons.house.restrictteam |
/house setmaxmembers <nom> <nombre> | Définit le nombre maximum de membres | horizons.house.setmaxmembers |
🔑 Créer une Maison
Pour créer une maison, vous devez d'abord sélectionner une zone avec WorldEdit, puis utiliser la commande /house create.
Étapes pour créer une maison :
- Obtenez l'outil de sélection WorldEdit avec
//wand - Sélectionnez deux points opposés pour définir la zone
- Exécutez
/house create <nom> <team|player>
💰 Vente et Achat de Maisons
Mettre une maison en vente
Utilisez la commande /house forsale <nom> <prix> pour mettre une maison en vente à un prix spécifique.
Acheter une maison
Les joueurs peuvent acheter une maison en cliquant sur un panneau de vente. Notez que:
- Pour les maisons de type
PLAYER, le coût est prélevé uniquement des points personnels du joueur - Pour les maisons de type
TEAM, le coût est prélevé des points de l'équipe du joueur
Restrictions d'achat par équipe
Vous pouvez restreindre l'achat d'une maison à une équipe spécifique :
- Pour restreindre :
/house restrictteam <nom> <équipe> - Pour supprimer la restriction :
/house restrictteam <nom> none - Pour vérifier la restriction actuelle :
/house restrictteam <nom>
🚪 Gestion des Membres
Maisons de joueurs
Les propriétaires peuvent ajouter/retirer des membres :
/house addmember <nom> <joueur>- Ajoute un membre à la maison/house removemember <nom> <joueur>- Retire un membre de la maison
Limite de membres
Chaque maison de type PLAYER possède une limite configurable de membres:
- La limite par défaut est de 3 membres
- Utilisez
/house setmaxmembers <nom> <nombre>pour modifier cette limite - Le propriétaire n'est pas compté dans cette limite car il a accès automatiquement
Maisons d'équipe
Pour les maisons d'équipe, tous les membres de l'équipe ont automatiquement accès à la maison.
🪧 Panneaux de Maisons
Les maisons demandent d'avoir des panneaux informatifs qui permettent de les acheter.
Configuration des Panneaux
Utilisez la commande /house setsign <nom> en visant un panneau pour l'associer à une maison.
Format des Panneaux
Les formats d'affichage des panneaux sont configurables dans config.yml :
Maisons à vendre
houses:
signs:
for-sale:
line1: "&9『 {type} 』"
line2: "&f⌂ &e{name}"
line3: "&a&l✦ À VENDRE ✦"
line4: "&e{price}"Maisons occupées
houses:
signs:
occupied:
line1: "&9『 {type} 』"
line2: "&f⌂ &e{name}"
line3: "&c&l❖ OCCUPÉE ❖"
line4: "&7Propriétaire: &f{owner}"Placeholders disponibles
| Placeholder | Description |
|---|---|
{type} | Type de maison (Équipe/Joueur) |
{name} | Nom de la maison |
{price} | Prix avec la devise |
{owner} | Nom du propriétaire |
{team} | Nom de l'équipe (pour les maisons d'équipe) |
{team_restriction} | Équipe ayant le droit d'acheter la maison |
{max_members} | Nombre maximum de membres autorisés |
{current_members} | Nombre actuel de membres |
{members_count} | Affichage "actuel/maximum" des membres |
🔄 Cycle de Vie d'une Maison
- Création : Un administrateur crée la maison avec WorldEdit et
/house create - Mise en vente : La maison est mise en vente avec
/house forsale - Achat : Un joueur achète la maison, devenant propriétaire
- Utilisation : Le propriétaire peut ajouter des membres (jusqu'à la limite configurée)
🏠 Configuration des Maisons
Chaque maison dans houses.yml possède plusieurs propriétés configurables :
houses:
MaMaison:
world: world
owner: df7d5ec6-eb81-4588-92e4-63b607481348
forSale: false
price: 1500
type: PLAYER
max-members: 3 # Limite de membres configurable
signs:
'0':
world: world
position: -22.0,-42.0,-62.0♻️ Rechargement du Système
Le système de maisons peut être rechargé via la commande /horizons reload housing. Cette commande:
- Recharge la configuration
- Met à jour toutes les maisons
- Actualise les panneaux
📋 Exemple Complet
Création et configuration d'une maison
# Sélectionner une zone avec WorldEdit
//wand
(sélectionner deux points)
# Créer une maison d'équipe
/house create VillaDeluxe team
# Mettre la maison en vente
/house forsale VillaDeluxe 10000
# Configurer un panneau
/house setsign VillaDeluxe
(viser un panneau)
# Restreindre l'achat à une équipe
/house restrictteam VillaDeluxe AventuriersGestion des membres d'une maison personnelle
# Définir la limite de membres pour une maison
/house setmaxmembers MaMaison 5
# Ajouter des membres à la maison
/house addmember MaMaison Joueur1
/house addmember MaMaison Joueur2
# Retirer un membre de la maison
/house removemember MaMaison Joueur1🛡️ Permissions
| Permission | Description |
|---|---|
| horizons.house.create | Permet de créer des maisons |
| horizons.house.forsale | Permet de mettre des maisons en vente |
| horizons.house.admin | Accès complet à toutes les fonctionnalités |
| horizons.house.delete | Permet de supprimer des maisons |
| horizons.house.setsign | Permet de configurer des panneaux |
| horizons.house.restrictteam | Permet de restreindre l'achat à une équipe |
| horizons.house.setmaxmembers | Permet de modifier la limite de membres |
| horizons.house.help | Permet d'afficher toutes les commandes d'aide |
🧠 Concepts Avancés
Interaction avec WorldGuard
Le système de logements utilise WorldGuard pour gérer les régions protégées. Chaque maison est associée à une région WorldGuard portant le préfixe "house_" suivi du nom de la maison.
Intégration avec le Système d'Équipes
- Les maisons d'équipe utilisent le système d'équipes du plugin
- Le coût des maisons d'équipe est prélevé des points d'équipe
- Tous les membres de l'équipe ont accès aux maisons d'équipe
Logique de Paiement
- Maisons personnelles (PLAYER) : Le coût est prélevé uniquement des points personnels du joueur
- Maisons d'équipe (TEAM) : Le coût est prélevé des points de l'équipe du joueur
Gestion des Membres
- Le propriétaire a toujours accès à sa maison et n'est pas compté dans la limite de membres
- Il est impossible d'ajouter le propriétaire comme membre car il a déjà accès
- Chaque maison a une limite configurable de membres (la valeur par défaut est 3)
Mise à jour des Panneaux
Les panneaux de maisons sont automatiquement mis à jour :
- Lors du chargement du plugin
- Lors de la mise en vente d'une maison
- Lors de l'achat d'une maison
- Lors de la modification des restrictions d'équipe
Protection des Panneaux
Les panneaux associés aux maisons sont protégés contre la destruction par les joueurs non-administrateurs.