🪧Système de Logements

Ce document présente comment configurer et utiliser le système de logements (houses) dans le plugin Horizons.

📂 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.