Documentation

# 🪧 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 maisons
  • config.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 :

  1. Obtenez l'outil de sélection WorldEdit avec //wand
  2. Sélectionnez deux points opposés pour définir la zone
  3. 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

  1. Création : Un administrateur crée la maison avec WorldEdit et /house create
  2. Mise en vente : La maison est mise en vente avec /house forsale
  3. Achat : Un joueur achète la maison, devenant propriétaire
  4. 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 Aventuriers

# Gestion 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.