Bank robbery icon

Bank robbery -----

french plugin about the bank robbery for rp server



HTML:
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>BanqueBraquage v2.0 — SpigotMC Plugin Page </title>
<link href="https://fonts.googleapis.com/css2?family=Bebas+Neue&family=Space+Grotesk:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;600&display=swap" rel="stylesheet">
<style>
  *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

  :root {
    --gold: #F5C518;
    --gold-dark: #C9961A;
    --red: #C0392B;
    --red-bright: #E74C3C;
    --dark: #0D0D0D;
    --dark2: #141414;
    --dark3: #1C1C1C;
    --dark4: #242424;
    --border: rgba(245,197,24,0.2);
    --text: #F0EDE6;
    --muted: #888;
    --green: #27AE60;
    --blue: #2980B9;
  }

  html { scroll-behavior: smooth; }

  body {
    background: var(--dark);
    color: var(--text);
    font-family: 'Space Grotesk', sans-serif;
    font-size: 16px;
    line-height: 1.7;
    min-width: 320px;
  }

  /* ── HERO ── */
  .hero {
    position: relative;
    background: var(--dark2);
    border-bottom: 1px solid var(--border);
    overflow: hidden;
    padding: 80px 40px 70px;
    text-align: center;
  }

  .hero::before {
    content: '';
    position: absolute;
    inset: 0;
    background:
      radial-gradient(ellipse 60% 50% at 50% 0%, rgba(245,197,24,0.08) 0%, transparent 70%),
      radial-gradient(ellipse 40% 60% at 80% 80%, rgba(192,57,43,0.07) 0%, transparent 60%);
    pointer-events: none;
  }

  .badge {
    display: inline-block;
    background: rgba(245,197,24,0.12);
    border: 1px solid rgba(245,197,24,0.35);
    color: var(--gold);
    font-family: 'JetBrains Mono', monospace;
    font-size: 11px;
    font-weight: 600;
    letter-spacing: 0.15em;
    text-transform: uppercase;
    padding: 5px 14px;
    border-radius: 3px;
    margin-bottom: 28px;
  }

  .hero-title {
    font-family: 'Bebas Neue', sans-serif;
    font-size: clamp(64px, 10vw, 120px);
    line-height: 0.9;
    letter-spacing: 0.03em;
    color: var(--text);
    margin-bottom: 8px;
  }

  .hero-title span {
    color: var(--gold);
    display: block;
  }

  .hero-subtitle {
    font-size: 18px;
    color: var(--muted);
    font-weight: 300;
    max-width: 560px;
    margin: 24px auto 40px;
    letter-spacing: 0.01em;
  }

  .hero-stats {
    display: flex;
    justify-content: center;
    gap: 40px;
    flex-wrap: wrap;
    margin-bottom: 44px;
  }

  .stat {
    text-align: center;
  }
  .stat-val {
    font-family: 'Bebas Neue', sans-serif;
    font-size: 42px;
    color: var(--gold);
    line-height: 1;
  }
  .stat-lbl {
    font-size: 12px;
    color: var(--muted);
    letter-spacing: 0.1em;
    text-transform: uppercase;
    margin-top: 4px;
  }

  .hero-buttons {
    display: flex;
    gap: 14px;
    justify-content: center;
    flex-wrap: wrap;
  }

  .btn {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 13px 28px;
    font-family: 'Space Grotesk', sans-serif;
    font-size: 14px;
    font-weight: 600;
    letter-spacing: 0.05em;
    text-transform: uppercase;
    text-decoration: none;
    border-radius: 3px;
    cursor: pointer;
    transition: all 0.15s;
  }

  .btn-primary {
    background: var(--gold);
    color: #000;
    border: none;
  }
  .btn-primary:hover { background: #fff; }

  .btn-secondary {
    background: transparent;
    color: var(--text);
    border: 1px solid rgba(255,255,255,0.2);
  }
  .btn-secondary:hover { border-color: var(--gold); color: var(--gold); }

  /* ── LAYOUT ── */
  .container {
    max-width: 900px;
    margin: 0 auto;
    padding: 0 32px;
  }

  section {
    padding: 64px 0;
    border-bottom: 1px solid rgba(255,255,255,0.05);
  }

  .section-label {
    font-family: 'JetBrains Mono', monospace;
    font-size: 11px;
    font-weight: 600;
    color: var(--gold);
    letter-spacing: 0.2em;
    text-transform: uppercase;
    margin-bottom: 12px;
  }

  .section-title {
    font-family: 'Bebas Neue', sans-serif;
    font-size: clamp(36px, 5vw, 52px);
    letter-spacing: 0.03em;
    line-height: 1;
    margin-bottom: 24px;
    color: var(--text);
  }

  .section-desc {
    color: var(--muted);
    font-size: 16px;
    max-width: 640px;
    margin-bottom: 40px;
    line-height: 1.8;
  }

  /* ── FEATURES GRID ── */
  .features-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
    gap: 20px;
  }

  .feature-card {
    background: var(--dark3);
    border: 1px solid rgba(255,255,255,0.06);
    border-radius: 6px;
    padding: 28px;
    position: relative;
    overflow: hidden;
    transition: border-color 0.2s;
  }
  .feature-card:hover { border-color: rgba(245,197,24,0.3); }

  .feature-card::before {
    content: '';
    position: absolute;
    top: 0; left: 0; right: 0;
    height: 2px;
    background: linear-gradient(90deg, var(--gold), transparent);
    opacity: 0;
    transition: opacity 0.2s;
  }
  .feature-card:hover::before { opacity: 1; }

  .feature-icon {
    font-size: 28px;
    margin-bottom: 16px;
    display: block;
  }

  .feature-title {
    font-weight: 600;
    font-size: 15px;
    color: var(--text);
    margin-bottom: 8px;
    letter-spacing: 0.02em;
  }

  .feature-desc {
    font-size: 14px;
    color: var(--muted);
    line-height: 1.7;
  }

  /* ── HOW IT WORKS ── */
  .timeline {
    display: flex;
    flex-direction: column;
    gap: 0;
  }

  .timeline-item {
    display: flex;
    gap: 28px;
    padding: 28px 0;
    border-bottom: 1px solid rgba(255,255,255,0.05);
  }
  .timeline-item:last-child { border-bottom: none; }

  .timeline-num {
    font-family: 'Bebas Neue', sans-serif;
    font-size: 48px;
    color: rgba(245,197,24,0.2);
    line-height: 1;
    min-width: 52px;
    padding-top: 4px;
  }

  .timeline-content {}
  .timeline-title {
    font-weight: 600;
    font-size: 16px;
    color: var(--text);
    margin-bottom: 6px;
  }
  .timeline-desc {
    font-size: 14px;
    color: var(--muted);
    line-height: 1.7;
  }

  /* ── COMMANDS TABLE ── */
  .cmd-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 14px;
    margin-top: 8px;
  }
  .cmd-table th {
    text-align: left;
    color: var(--gold);
    font-family: 'JetBrains Mono', monospace;
    font-size: 11px;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    padding: 10px 16px;
    border-bottom: 1px solid var(--border);
    background: rgba(245,197,24,0.04);
  }
  .cmd-table td {
    padding: 12px 16px;
    border-bottom: 1px solid rgba(255,255,255,0.04);
    vertical-align: top;
  }
  .cmd-table tr:last-child td { border-bottom: none; }
  .cmd-table tr:hover td { background: rgba(255,255,255,0.02); }

  .cmd-name {
    font-family: 'JetBrains Mono', monospace;
    font-size: 13px;
    color: var(--gold);
    white-space: nowrap;
  }
  .cmd-desc { color: var(--muted); line-height: 1.6; }
  .cmd-perm {
    font-family: 'JetBrains Mono', monospace;
    font-size: 11px;
    color: var(--red-bright);
    background: rgba(231,76,60,0.1);
    border: 1px solid rgba(231,76,60,0.2);
    padding: 2px 8px;
    border-radius: 3px;
    white-space: nowrap;
  }

  /* ── CONFIG ── */
  .config-block {
    background: var(--dark3);
    border: 1px solid rgba(255,255,255,0.08);
    border-radius: 6px;
    overflow: hidden;
  }
  .config-header {
    background: var(--dark4);
    padding: 10px 20px;
    font-family: 'JetBrains Mono', monospace;
    font-size: 12px;
    color: var(--muted);
    border-bottom: 1px solid rgba(255,255,255,0.06);
    display: flex;
    align-items: center;
    gap: 8px;
  }
  .config-dot { width: 10px; height: 10px; border-radius: 50%; }
  .d1 { background: #E74C3C; }
  .d2 { background: #F39C12; }
  .d3 { background: #27AE60; }
  .config-code {
    padding: 24px;
    font-family: 'JetBrains Mono', monospace;
    font-size: 13px;
    line-height: 1.9;
    color: #B0A899;
    overflow-x: auto;
  }
  .c-key { color: #7EC8E3; }
  .c-val { color: #F5C518; }
  .c-comment { color: #505050; font-style: italic; }

  /* ── SETUP STEPS ── */
  .steps {
    counter-reset: steps;
    display: flex;
    flex-direction: column;
    gap: 16px;
  }
  .step {
    background: var(--dark3);
    border: 1px solid rgba(255,255,255,0.06);
    border-radius: 6px;
    padding: 20px 24px;
    display: flex;
    gap: 20px;
    align-items: flex-start;
  }
  .step-num {
    font-family: 'Bebas Neue', sans-serif;
    font-size: 28px;
    color: var(--gold);
    line-height: 1;
    min-width: 28px;
    padding-top: 2px;
  }
  .step-text { font-size: 14px; line-height: 1.7; color: var(--muted); }
  .step-text strong { color: var(--text); }
  code {
    font-family: 'JetBrains Mono', monospace;
    font-size: 12px;
    background: rgba(245,197,24,0.1);
    color: var(--gold);
    padding: 2px 7px;
    border-radius: 3px;
  }

  /* ── COMPAT BADGES ── */
  .compat-grid {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    margin-top: 20px;
  }
  .compat-badge {
    padding: 8px 18px;
    border-radius: 4px;
    font-family: 'JetBrains Mono', monospace;
    font-size: 13px;
    font-weight: 600;
    display: flex;
    align-items: center;
    gap: 7px;
  }
  .compat-ok { background: rgba(39,174,96,0.12); border: 1px solid rgba(39,174,96,0.3); color: #2ECC71; }
  .compat-warn { background: rgba(243,156,18,0.1); border: 1px solid rgba(243,156,18,0.3); color: #F39C12; }
  .compat-no { background: rgba(231,76,60,0.1); border: 1px solid rgba(231,76,60,0.25); color: #E74C3C; }

  /* ── PERMISSIONS ── */
  .perm-block {
    background: var(--dark3);
    border: 1px solid rgba(255,255,255,0.06);
    border-radius: 6px;
    padding: 20px 24px;
    display: flex;
    align-items: flex-start;
    gap: 20px;
  }
  .perm-name {
    font-family: 'JetBrains Mono', monospace;
    font-size: 14px;
    color: var(--gold);
    min-width: 160px;
  }
  .perm-desc { font-size: 14px; color: var(--muted); line-height: 1.7; }

  /* ── DISCLAIMER / INFO BOX ── */
  .info-box {
    background: rgba(41,128,185,0.08);
    border: 1px solid rgba(41,128,185,0.25);
    border-left: 3px solid var(--blue);
    border-radius: 4px;
    padding: 16px 20px;
    font-size: 14px;
    color: #7FB8D8;
    line-height: 1.7;
    margin-top: 28px;
  }
  .info-box strong { color: #B0D4EA; }

  .warn-box {
    background: rgba(231,76,60,0.07);
    border: 1px solid rgba(231,76,60,0.2);
    border-left: 3px solid var(--red-bright);
    border-radius: 4px;
    padding: 16px 20px;
    font-size: 14px;
    color: #D98880;
    line-height: 1.7;
    margin-top: 16px;
  }

  /* ── FOOTER ── */
  .footer {
    text-align: center;
    padding: 48px 32px;
    font-size: 13px;
    color: #444;
  }
  .footer a { color: var(--gold); text-decoration: none; }

  /* ── NAV ── */
  .toc {
    background: var(--dark3);
    border: 1px solid var(--border);
    border-radius: 6px;
    padding: 24px;
    margin-bottom: 40px;
  }
  .toc-title {
    font-family: 'JetBrains Mono', monospace;
    font-size: 11px;
    color: var(--gold);
    letter-spacing: 0.15em;
    text-transform: uppercase;
    margin-bottom: 16px;
  }
  .toc-list {
    list-style: none;
    display: flex;
    flex-wrap: wrap;
    gap: 8px 24px;
  }
  .toc-list a {
    color: var(--muted);
    text-decoration: none;
    font-size: 14px;
    transition: color 0.15s;
  }
  .toc-list a:hover { color: var(--gold); }

  @media (max-width: 640px) {
    .hero { padding: 56px 24px 48px; }
    .hero-stats { gap: 24px; }
    .container { padding: 0 20px; }
    section { padding: 48px 0; }
    .perm-block { flex-direction: column; gap: 6px; }
    .perm-name { min-width: unset; }
    .timeline-item { gap: 16px; }
  }
</style>
</head>
<body>

<!-- ══ HERO ══ -->
<div class="hero">
  <div class="badge"> Roleplay Plugin · Spigot 1.20+ </div>
  <h1 class="hero-title">
    Banque
    <span>Braquage </span>
  </h1>
  <p class="hero-subtitle">
    Simulez le braquage d'une banque sur votre serveur roleplay. Alarmes, porte blindée, progression en temps réel, loot configurable — tout est là.
  </p>

  <div class="hero-stats">
    <div class="stat">
      <div class="stat-val">v2.0 </div>
      <div class="stat-lbl">Version </div>
    </div>
    <div class="stat">
      <div class="stat-val">1.20+ </div>
      <div class="stat-lbl">API Spigot </div>
    </div>
    <div class="stat">
      <div class="stat-val">0 </div>
      <div class="stat-lbl">Dépendances </div>
    </div>
    <div class="stat">
      <div class="stat-val">100% </div>
      <div class="stat-lbl">In-Game Config </div>
    </div>
  </div>

  <div class="hero-buttons">
    <a class="btn btn-primary" href="#">⬇ Télécharger </a>
    <a class="btn btn-secondary" href="#setup"> Documentation </a>
  </div>
</div>

<!-- ══ DOC PAGE ══ -->
<div class="container">

  <!-- TOC -->
  <section style="padding-bottom: 32px; border: none;">
    <div class="toc">
      <div class="toc-title">Navigation </div>
      <ul class="toc-list">
        <li><a href="#features">✦ Fonctionnalités </a></li>
        <li><a href="#gameplay">✦ Déroulement </a></li>
        <li><a href="#setup">✦ Installation </a></li>
        <li><a href="#commands">✦ Commandes </a></li>
        <li><a href="#config">✦ Configuration </a></li>
        <li><a href="#permissions">✦ Permissions </a></li>
        <li><a href="#compat">✦ Compatibilité </a></li>
      </ul>
    </div>
  </section>

  <!-- ══ FEATURES ══ -->
  <section id="features">
    <div class="section-label">Fonctionnalités </div>
    <h2 class="section-title">Tout ce qu'il vous faut <br>pour un braquage parfait </h2>
    <p class="section-desc">
      BanqueBraquage offre un système complet, configurable entièrement en jeu via des interfaces graphiques. Aucune modification de fichier YAML nécessaire au quotidien.
    </p>

    <div class="features-grid">
      <div class="feature-card">
        <span class="feature-icon"></span>
        <div class="feature-title">Système d'alarme </div>
        <div class="feature-desc">Dès qu'un braqueur commence à forcer la porte, une alarme se déclenche avec titre à l'écran, sons et message chat pour tous les joueurs dans le rayon configuré. </div>
      </div>
      <div class="feature-card">
        <span class="feature-icon"></span>
        <div class="feature-title">Barre de progression </div>
        <div class="feature-desc">Une BossBar en temps réel affiche l'avancement du forçage. Elle se met en pause si le braqueur s'éloigne ou cesse d'accroupir — obligeant à rester sur place. </div>
      </div>
      <div class="feature-card">
        <span class="feature-icon"></span>
        <div class="feature-title">Porte indestructible </div>
        <div class="feature-desc">Définissez n'importe quel ensemble de blocs comme "porte blindée". Ces blocs sont indestructibles pour les non-OP et se restaurent automatiquement après réinitialisation. </div>
      </div>
      <div class="feature-card">
        <span class="feature-icon"></span>
        <div class="feature-title">Présence policière requise </div>
        <div class="feature-desc">Un braquage ne peut démarrer que si au moins un policier de la liste est connecté — idéal pour les serveurs RP qui nécessitent une réponse des forces de l'ordre. </div>
      </div>
      <div class="feature-card">
        <span class="feature-icon"></span>
        <div class="feature-title">Loot configurable </div>
        <div class="feature-desc">Définissez jusqu'à 7 items de loot via une interface graphique intuitive. Le coffre cible se remplit automatiquement à chaque réinitialisation. </div>
      </div>
      <div class="feature-card">
        <span class="feature-icon"></span>
        <div class="feature-title">Item de braquage précis </div>
        <div class="feature-desc">L'item requis pour déclencher le braquage est vérifié à l'enchantement et aux métadonnées près — parfait pour des items custom nommés et enchantés. </div>
      </div>
      <div class="feature-card">
        <span class="feature-icon"></span>
        <div class="feature-title">Zone protégée </div>
        <div class="feature-desc">Délimitez une zone 3D autour de la banque où les joueurs non-OP ne peuvent pas casser de blocs, même en dehors des heures de braquage. </div>
      </div>
      <div class="feature-card">
        <span class="feature-icon"></span>
        <div class="feature-title">Menu d'admin complet </div>
        <div class="feature-desc">Un menu GUI en 54 slots centralise toute la configuration : statut en temps réel, réglages des durées, gestion des policiers, zone, loot — tout en un clic. </div>
      </div>
      <div class="feature-card">
        <span class="feature-icon"></span>
        <div class="feature-title">Réinitialisation automatique </div>
        <div class="feature-desc">Après le braquage, la porte se reconstitue, le coffre se remplit et un message global annonce la réouverture de la banque — sans aucune intervention admin. </div>
      </div>
    </div>
  </section>

  <!-- ══ GAMEPLAY ══ -->
  <section id="gameplay">
    <div class="section-label">Déroulement </div>
    <h2 class="section-title">Comment ça se passe ? </h2>
    <p class="section-desc">Un scénario clair et immersif, pensé pour les serveurs RP. </p>

    <div class="timeline">
      <div class="timeline-item">
        <div class="timeline-num">01 </div>
        <div class="timeline-content">
          <div class="timeline-title">Vérification des conditions </div>
          <div class="timeline-desc">Le joueur doit avoir l'item de braquage exact en main (vérifié à l'enchantement et au nom près). Au moins un policier de la liste doit être connecté. La porte ne doit pas être déjà enfoncée. </div>
        </div>
      </div>
      <div class="timeline-item">
        <div class="timeline-num">02 </div>
        <div class="timeline-content">
          <div class="timeline-title">Déclenchement de l'alarme </div>
          <div class="timeline-desc">Le joueur fait un <strong>clic droit accroupi </strong> sur un bloc de la porte. L'alarme retentit : titre rouge, son d'alerte, message chat — visible par tous les joueurs dans le rayon d'alarme configuré. </div>
        </div>
      </div>
      <div class="timeline-item">
        <div class="timeline-num">03 </div>
        <div class="timeline-content">
          <div class="timeline-title">Forçage en cours </div>
          <div class="timeline-desc">Le braqueur doit rester <strong>accroupi à moins de 5 blocs de la porte </strong> pendant toute la durée. La BossBar rouge progresse en temps réel. S'il s'éloigne ou se relève, la progression est en pause (mais pas annulée). </div>
        </div>
      </div>
      <div class="timeline-item">
        <div class="timeline-num">04 </div>
        <div class="timeline-content">
          <div class="timeline-title">Porte enfoncée </div>
          <div class="timeline-desc">Une fois la barre pleine, tous les blocs de porte disparaissent, un son d'explosion retentit et un message global est diffusé. Le coffre est maintenant accessible pour le braqueur. </div>
        </div>
      </div>
      <div class="timeline-item">
        <div class="timeline-num">05 </div>
        <div class="timeline-content">
          <div class="timeline-title">Réinitialisation automatique </div>
          <div class="timeline-desc">Après le délai configuré (défaut : 5 min), la porte se reconstitue bloc par bloc, le coffre est rechargé avec le loot défini, et un message annonce que la banque est de nouveau sécurisée. </div>
        </div>
      </div>
    </div>

    <div class="info-box">
      <strong> Tip RP : </strong> Combinez ce plugin avec un système d'argent (Vault/EssentialsX) pour que le coffre contienne des chèques ou des items représentant de l'argent. Utilisez des items custom nommés comme "Pince-monseigneur" (enchantée) pour l'item de braquage.
    </div>
  </section>

  <!-- ══ SETUP ══ -->
  <section id="setup">
    <div class="section-label">Installation & Configuration</div>
   <h2 class="section-title">En place en 5 minutes</h2>
   <p class="section-desc">Aucune dépendance externe. Tout se configure entièrement en jeu via des commandes et menus GUI.</p>

   <div class="steps">
     <div class="step">
       <div class="step-num">1</div>
       <div class="step-text">
         <strong>Déposez le .jar</strong> dans votre dossier <code>/plugins/</code> et redémarrez le serveur (ou utilisez <code>/reload confirm</code>).
       </div>
     </div>
     <div class="step">
       <div class="step-num">2</div>
       <div class="step-text">
         <strong>Définissez les blocs de porte</strong> avec <code>/portecoffre</code>. Vous recevrez une hache de diamant : clic droit pour ajouter un bloc, clic gauche pour en retirer. Tapez <code>/portecoffrevalide</code> pour sauvegarder.
       </div>
     </div>
     <div class="step">
       <div class="step-num">3</div>
       <div class="step-text">
         <strong>Définissez le coffre cible</strong> avec <code>/coffrecible</code>, puis faites un clic droit sur le coffre à cibler. C'est ce coffre qui sera verrouillé et re-rempli automatiquement.
       </div>
     </div>
     <div class="step">
       <div class="step-num">4</div>
       <div class="step-text">
         <strong>Configurez l'item de braquage</strong> avec <code>/banquekey</code>. Placez l'item exact (avec enchantements et nom custom si souhaité) dans le slot central de l'interface, puis fermez.
       </div>
     </div>
     <div class="step">
       <div class="step-num">5</div>
       <div class="step-text">
         <strong>Définissez le loot</strong> avec <code>/banqueitem</code>. Placez jusqu'à 7 items dans les slots du milieu, puis fermez pour sauvegarder. Le coffre sera rempli avec ces items à chaque reset.
       </div>
     </div>
     <div class="step">
       <div class="step-num">6</div>
       <div class="step-text">
         <strong>Ajoutez des policiers</strong> avec <code>/banquepolice [pseudo]</code>. La commande fonctionne en toggle : relancez-la pour retirer un joueur de la liste.
       </div>
     </div>
     <div class="step">
       <div class="step-num">7</div>
       <div class="step-text">
         <strong>(Optionnel)</strong> Définissez une zone protégée avec <code>/zonebanque</code> (hache dorée fournie), puis <code>/zonebanquevalide</code>. Ajustez durées et rayon d'alarme depuis <code>/menubanque</code>.
       </div>
     </div>
   </div>

   <div class="warn-box">
     ⚠ <strong>Important :</strong> Le coffre cible doit être un coffre vanilla (simple ou double). Les coffres de type ender-chest ou coffres de plugins tiers ne sont pas supportés.
   </div>
 </section>

 <!-- ══ COMMANDS ══ -->
 <section id="commands">
   <div class="section-label">Commandes</div>
   <h2 class="section-title">Toutes les commandes</h2>
   <p class="section-desc">Toutes les commandes requièrent la permission <code>banque.admin</code> (accordée aux OP par défaut).</p>

   <div class="config-block">
     <table class="cmd-table">
       <thead>
         <tr>
           <th>Commande</th>
           <th>Description</th>
         </tr>
       </thead>
       <tbody>
         <tr>
           <td><span class="cmd-name">/menubanque</span></td>
           <td class="cmd-desc">Ouvre le menu principal d'administration (54 slots). Centralise l'accès à toute la configuration : statut live, durées, policiers, zone, loot, coffre, porte.</td>
         </tr>
         <tr>
           <td><span class="cmd-name">/banquepolice [pseudo]</span></td>
           <td class="cmd-desc">Sans argument : affiche la liste des policiers avec leur statut en ligne. Avec un pseudo : ajoute ou retire ce joueur de la liste (toggle).</td>
         </tr>
         <tr>
           <td><span class="cmd-name">/banquekey</span></td>
           <td class="cmd-desc">Ouvre une interface GUI pour définir l'item de braquage. Placez l'item exact dans le slot central, fermez pour sauvegarder. Les enchantements et le nom custom sont pris en compte.</td>
         </tr>
         <tr>
           <td><span class="cmd-name">/banqueitem</span></td>
           <td class="cmd-desc">Ouvre une interface GUI pour définir jusqu'à 7 items de loot. Ces items rempliront le coffre cible à chaque réinitialisation.</td>
         </tr>
         <tr>
           <td><span class="cmd-name">/portecoffre</span></td>
           <td class="cmd-desc">Active le mode sélection de porte. Vous recevez une hache de diamant : clic droit = ajouter un bloc, clic gauche = retirer. Les blocs sélectionnés deviennent indestructibles.</td>
         </tr>
         <tr>
           <td><span class="cmd-name">/portecoffrevalide</span></td>
           <td class="cmd-desc">Valide et sauvegarde la sélection de blocs de porte effectuée via /portecoffre.</td>
         </tr>
         <tr>
           <td><span class="cmd-name">/coffrecible</span></td>
           <td class="cmd-desc">Active le mode sélection de coffre. Faites un clic droit sur le coffre à cibler pour le définir comme coffre de la banque.</td>
         </tr>
         <tr>
           <td><span class="cmd-name">/zonebanque</span></td>
           <td class="cmd-desc">Lance la sélection de zone protégée. Vous recevez une hache dorée : clic gauche = point A, clic droit = point B. Les joueurs non-OP ne peuvent pas casser de blocs dans cette zone.</td>
         </tr>
         <tr>
           <td><span class="cmd-name">/zonebanquevalide</span></td>
           <td class="cmd-desc">Valide la zone définie avec /zonebanque (utilise votre position comme point B si point A déjà défini).</td>
         </tr>
       </tbody>
     </table>
   </div>
 </section>

 <!-- ══ CONFIG ══ -->
 <section id="config">
   <div class="section-label">Configuration</div>
   <h2 class="section-title">config.yml expliqué</h2>
   <p class="section-desc">
     La majorité de la configuration se fait en jeu. Le fichier <code>config.yml</code> est mis à jour automatiquement à chaque action admin. Vous pouvez néanmoins l'éditer manuellement.
   </p>

   <div class="config-block">
     <div class="config-header">
       <div class="config-dot d1"></div>
       <div class="config-dot d2"></div>
       <div class="config-dot d3"></div>
       plugins/BanqueBraquage/config.yml
     </div>
     <div class="config-code">
<span class="c-comment"># ─── Police ───────────────────────────────────</span>
<span class="c-key">police-list</span>: [] <span class="c-comment">  # Pseudos des policiers (toggle via /banquepolice)</span>

<span class="c-comment"># ─── Timings ──────────────────────────────────</span>
<span class="c-key">heist-duration</span>: <span class="c-val">30</span> <span class="c-comment">    # Durée du forçage en secondes (10–300)</span>
<span class="c-key">reset-delay</span>: <span class="c-val">300</span> <span class="c-comment">       # Délai de reset après braquage (min 60s)</span>
<span class="c-key">alarm-radius</span>: <span class="c-val">50</span> <span class="c-comment">      # Rayon d'alarme en blocs (10–200)</span>

<span class="c-comment"># ─── Zone protégée ────────────────────────────</span>
<span class="c-key">protected-zone</span>:
 <span class="c-key">enabled</span>: <span class="c-val">false</span>
 <span class="c-key">world</span>: <span class="c-val">""</span>
 <span class="c-key">minX</span>: <span class="c-val">0</span>
 <span class="c-key">minY</span>: <span class="c-val">0</span>
 <span class="c-key">minZ</span>: <span class="c-val">0</span>
 <span class="c-key">maxX</span>: <span class="c-val">0</span>
 <span class="c-key">maxY</span>: <span class="c-val">0</span>
 <span class="c-key">maxZ</span>: <span class="c-val">0</span>

<span class="c-comment"># ─── Porte (auto-géré) ────────────────────────</span>
<span class="c-key">door-blocks</span>: [] <span class="c-comment">  # Format: "world,x,y,z,MATERIAL"</span>

<span class="c-comment"># ─── Items (sérialisés Base64) ────────────────</span>
<span class="c-key">key-item</span>: <span class="c-val">""</span>   <span class="c-comment">  # Défini via /banquekey</span>
<span class="c-key">chest-location</span>: <span class="c-val">""</span>  <span class="c-comment"> # Défini via /coffrecible</span>
<span class="c-key">loot-items</span>: [] <span class="c-comment">  # Défini via /banqueitem</span>
     </div>
   </div>

   <div class="info-box" style="margin-top: 20px;">
      <strong> Ajustements en jeu : </strong> La durée du forçage, le délai de reset et le rayon d'alarme peuvent être ajustés directement depuis le menu <code>/menubanque </code> par clics (±5s, ±30s, ±10 blocs) sans redémarrage.
    </div>
  </section>

  <!-- ══ PERMISSIONS ══ -->
  <section id="permissions">
    <div class="section-label">Permissions </div>
    <h2 class="section-title">Gestion des droits </h2>
    <p class="section-desc">Le plugin utilise un système de permission simple, compatible avec LuckPerms et tout gestionnaire de permissions standard. </p>

    <div style="display: flex; flex-direction: column; gap: 12px;">
      <div class="perm-block">
        <div class="perm-name">banque.admin </div>
        <div class="perm-desc">
          Accès à toutes les commandes d'administration du plugin ( <code>/menubanque </code>, <code>/banquepolice </code>, <code>/portecoffre </code>, etc.). <br>
          <strong>Accordé aux OP par défaut. </strong> Assignez cette permission à un grade admin/fondateur via LuckPerms ou votre gestionnaire habituel.
        </div>
      </div>
    </div>

    <div class="info-box" style="margin-top: 20px;">
      <strong>Exemple LuckPerms : </strong><br>
      <code>/lp group admin permission set banque.admin true </code>
    </div>
  </section>

  <!-- ══ COMPAT ══ -->
  <section id="compat">
    <div class="section-label">Compatibilité </div>
    <h2 class="section-title">Versions supportées </h2>

    <div class="compat-grid">
      <span class="compat-no">✗ 1.18 et inférieur </span>
      <span class="compat-no">✗ 1.19.x </span>
      <span class="compat-ok">✔ 1.20 </span>
      <span class="compat-ok">✔ 1.20.1 </span>
      <span class="compat-ok">✔ 1.20.2 </span>
      <span class="compat-ok">✔ 1.20.4 </span>
      <span class="compat-ok">✔ 1.20.6 </span>
      <span class="compat-ok">✔ 1.21.x </span>
      <span class="compat-warn">? 1.21.4+ (non testé) </span>
    </div>

    <div style="margin-top: 32px;">
      <div class="section-label" style="margin-bottom: 12px;">Dépendances </div>
      <div style="display: flex; gap: 12px; flex-wrap: wrap;">
        <div class="compat-badge compat-ok">✔ Aucune dépendance requise </div>
        <div class="compat-badge compat-ok">✔ Compatible Paper / Spigot </div>
        <div class="compat-badge compat-ok">✔ Compatible LuckPerms </div>
        <div class="compat-badge compat-ok">✔ Compatible EssentialsX </div>
      </div>
    </div>

    <div class="warn-box">
      ⚠ Ce plugin nécessite <strong>Java 17+ </strong> (records Java utilisés en interne). Vérifiez que votre JDK est bien en version 17 ou supérieure.
    </div>
  </section>

  <!-- ══ FAQ ══ -->
  <section>
    <div class="section-label">FAQ </div>
    <h2 class="section-title">Questions fréquentes </h2>

    <div style="display: flex; flex-direction: column; gap: 20px; margin-top: 8px;">
      <div class="feature-card">
        <div class="feature-title">Le braquage ne démarre pas quand je clique sur la porte </div>
        <div class="feature-desc">Vérifiez que : (1) vous êtes bien accroupi lors du clic droit, (2) vous tenez l'item de braquage exact en main, (3) au moins un policier de la liste est connecté, (4) la porte n'est pas déjà enfoncée. </div>
      </div>
      <div class="feature-card">
        <div class="feature-title">La progression s'arrête pendant le forçage </div>
        <div class="feature-desc">La progression se met en pause automatiquement si vous vous relevez (arrêtez de vous accroupir) ou si vous vous éloignez de plus de 5 blocs du centre de la porte. Elle reprend dès que vous revenez. </div>
      </div>
      <div class="feature-card">
        <div class="feature-title">Le coffre reste vide après la réinitialisation </div>
        <div class="feature-desc">Vérifiez que des items de loot ont bien été définis via <code>/banqueitem </code> et que le coffre cible a été correctement sélectionné via <code>/coffrecible </code>. Le bloc doit être un coffre vanilla accessible. </div>
      </div>
      <div class="feature-card">
        <div class="feature-title">Comment créer un item de braquage custom ? </div>
        <div class="feature-desc">Créez votre item en jeu (via commande ou plugin), renommez-le et encantez-le selon vos besoins, puis utilisez <code>/banquekey </code> pour l'enregistrer en le plaçant dans le slot central du GUI. </div>
      </div>
      <div class="feature-card">
        <div class="feature-title">Un joueur OP peut-il accéder au coffre sans braquer ? </div>
        <div class="feature-desc">Oui. Les joueurs OP ignorent toutes les protections du plugin (porte, zone, coffre). Si vous souhaitez les contraindre également, retirez-leur l'OP et gérez les permissions via LuckPerms. </div>
      </div>
    </div>
  </section>

</div>

<div class="footer">
  <p>BanqueBraquage v2.0.0 · Plugin Minecraft Roleplay · Spigot API 1.20+ </p>
  <p style="margin-top: 8px;">Développé avec ❤ · Page générée pour <a href="https://www.spigotmc.org" target="_blank">SpigotMC.org </a></p>
</div>

</body>
</html>
 
Resource Information
Author:
----------
Total Downloads: 5
First Release: Apr 17, 2026
Last Update: Apr 17, 2026
Category: ---------------
All-Time Rating:
0 ratings
Version -----
Released: --------------------
Downloads: ------
Version Rating:
----------------------
-- ratings