English Français
ModernJobs

ModernJobs

Un plugin métiers premium pour serveurs Minecraft avec interface complète, prestige, boosters, perks, classements et support PlaceholderAPI.

API-Version 1.21+ Compatible Folia PlaceholderAPI Économie Vault 11 Métiers inclus

Vue d'ensemble du système de perks

Les perks sont des bonus de gameplay spéciaux que les joueurs débloquent en atteignant certains niveaux dans un métier. Il en existe deux types :

Les joueurs peuvent aussi voir leurs perks en jeu en ouvrant le menu détail d'un métier et en cliquant sur le bouton ✨ Perks.

Référence des perks actives

Ces perks sont configurées dans config.yml sous perks.features. Chaque perk est accordée en donnant au joueur la permission associée via une récompense de niveau.

Perks du Mineur

CléPermissionEffetDésactivable ?
miner-stonesenseojobs.miner.stonesenseDétecte le filon de minerai le plus proche dans un rayon configurable lors du minage. Affiche son nom dans la barre d'action. Cooldown configurable.Oui
miner-fortuneojobs.miner.fortune25 % de chance d'obtenir un minerai supplémentaire fondu lors de la cassure d'un bloc de mineraiOui
miner-veinojobs.miner.veinLorsque vous cassez un minerai, tous les blocs de minerai connectés du même type (jusqu'à 24) se cassent automatiquementOui

Perks du Bûcheron

CléPermissionEffetDésactivable ?
woodcutter-treefellerojobs.woodcutter.treefellerCasser un tronc casse l'arbre entier connecté (jusqu'à 48 troncs)Oui
woodcutter-leafdecayojobs.woodcutter.leafdecayLes feuilles proches (rayon 3 blocs) tombent instantanément lorsque vous coupez un arbreOui

Perks du Fermier

CléPermissionEffetDésactivable ?
farmer-replantojobs.farmer.replantLes cultures mûres cassées sont automatiquement replantéesOui
farmer-autoplantojobs.farmer.autoplantIdentique à replant mais gère aussi la canne à sucre, le cactus et le bambouOui
farmer-growthboostojobs.farmer.growthboost30 % de chance que les cultures proches (rayon 2 blocs) avancent d'un stade de croissance lors de la récolteOui

Perks du Artisan

CléPermissionEffetDésactivable ?
crafter-massmakeojobs.crafter.massmakeAprès avoir crafté un objet, une copie bonus du résultat est ajoutée à votre inventaireOui

Perks du Pêcheur

CléPermissionEffetDésactivable ?
fisher-doublecastojobs.fisher.doublecastChaque prise fait apparaître une deuxième copie de l'objet pêché dans le mondeOui
fisher-luckoftheseaojobs.fisher.luckofthesea30 % de chance de recevoir aussi une Coquille de Nautile lors de la pêche de poissonsOui
fisher-treasuresenseojobs.fisher.treasuresenseAffiche un message dans la barre d'action lorsque vous pêchez un objet trésor (non-poisson)Oui

Perks du Chasseur

CléPermissionEffetNécessite
hunter-lootboostojobs.hunter.lootboostLe premier drop d'un kill est dupliqué et ajouté au butin—
hunter-swiftkillojobs.hunter.swiftkillLes coups critiques contre les mobs hostiles infligent des dégâts bonus (défaut +2,5). Un coup critique nécessite de tomber sans être au sol, en vol, en planeur ou en nage.—
hunter-trackingojobs.hunter.trackingVotre boussole pointe automatiquement vers le monstre le plus proche à 64 blocs. Clic droit avec une boussole pour déclencher manuellement.Boussole en main
hunter-mobsenseojobs.hunter.mobsenseLes monstres proches (rayon 20 blocs) reçoivent l'effet Incandescence chaque seconde — visibles à travers les mursBoussole + Accroupi

Perks du Forgeron

CléPermissionEffetNécessite
autosmeltojobs.blacksmith.autosmeltCasser des blocs de minerai vous donne automatiquement le résultat fondu (minerai de fer → lingot de fer, etc.) au lieu du minerai brut—
blacksmith-repairojobs.blacksmith.repairAccroupi + clic droit pour réparer l'outil en main principale de 50 points de durabilité, en consommant 1 lingot de ferAccroupi + Lingot de fer
blacksmith-netheriteojobs.blacksmith.netheriteClic droit sur une Table de Forge en tenant un outil/armure en diamant pour le mettre à niveau en Netherite, en consommant 1 Lingot de NetheriteLingot de Netherite

Perks du Constructeur

CléPermissionEffetNécessite
builder-steadyhandsojobs.builder.steadyhands20 % de chance (configurable) de récupérer le bloc que vous venez de poser — il est automatiquement rendu à votre inventaire—
builder-scaffoldojobs.builder.scaffoldAccroupi + clic droit pour placer un bloc directement sous vous lorsque vous êtes en l'air. Consomme un bloc de votre inventaire.Accroupi + Bloc posable
builder-lineplaceojobs.builder.lineplaceAccroupi + clic droit sur une face de bloc pour étendre une ligne de blocs dans cette direction (3 blocs supplémentaires par défaut). Consomme des blocs de l'inventaire.Accroupi + Bloc posable
builder-areafillojobs.builder.areafillAccroupi + clic droit sur une surface pour remplir une zone 3×3 avec votre bloc en main (rayon configurable). Fonctionne sur les sols, murs et plafonds. Consomme des blocs de l'inventaire.Accroupi + Bloc posable

Perks du Fondeur

CléPermissionEffetNécessite
supersmeltojobs.smelter.supersmeltLorsque l'auto-fonte se déclenche, 2 objets fondus sont obtenus au lieu de 1Fonctionne avec autosmelt
smelter-autofuelojobs.smelter.autofuelUn clic droit sur un four vide ajoute automatiquement 1 charbon depuis votre inventaireCharbon dans l'inventaire
smelter-masssmeltojobs.smelter.masssmeltLorsque vous retirez un grand lot d'un four (≥16 objets par défaut), 35 % de chance de recevoir une production bonus proportionnelle à la taille du lot—

Perks de l'Explorateur

CléPermissionEffetNécessite
explorer-dimensionwarpojobs.explorer.dimensionwarpAccroupi + clic droit en tenant une Boussole pour se téléporter dans la dimension suivante (Surface → Nether → End → Surface)Boussole + Accroupi

Configuration des perks

Chaque perk définie dans config.yml sous perks.features supporte ces options universelles :

perks:
  features:
    miner-vein:
      enabled: true              # false = perk désactivée pour tout le monde
      toggleable: true           # true = les joueurs peuvent la désactiver avec /jobs perk <clé>
      permission: "ojobs.miner.vein"
      display-name: "Vein Miner"
      description:
        - "<gray>Casse les filons de minerai connectés."
      require-sneaking: false    # true = ne se déclenche que si le joueur est accroupi
      require-item: ""           # Nom du matériau — ne se déclenche que si cet objet est en main

Paramètres configurables par perk

Certaines perks ont des paramètres numériques supplémentaires réglables :

PerkParamètreDéfautContrôle
miner-stonesensesearch-radius4Rayon de détection des minerais (en blocs)
miner-stonesensecooldown-ticks40Ticks entre deux pulses stone-sense (20 ticks = 1 seconde)
hunter-swiftkillbonus-damage2.5Dégâts supplémentaires lors d'un coup critique
builder-steadyhandsrefund-chance0.20Probabilité (0.0–1.0) de récupérer un bloc posé
builder-lineplacelength3Nombre de blocs supplémentaires dans la ligne
builder-areafillradius1Rayon de la zone de remplissage (1 = 3×3, 2 = 5×5)
smelter-masssmeltmin-batch-size16Nombre minimum d'objets dans un lot pour déclencher le bonus
smelter-masssmelttrigger-chance0.35Probabilité (0.0–1.0) que le bonus se déclenche
smelter-masssmeltbonus-per-items16Objets bonus = taille du lot ÷ cette valeur
miner-veinblocks-per-tick4Blocs de filon cassés par tick (performance)
woodcutter-treefellerblocks-per-tick6Troncs cassés par tick (performance)

Effets passifs (effets de potion permanents)

Les effets passifs appliquent un effet de potion à un joueur tant qu'il possède la permission requise. Le système se rafraîchit chaque seconde pour éviter tout scintillement.

ℹ La perk Vision Nocturne du Mineur au niveau 15 utilise ce système — l'effet ne clignote jamais car il est rechargé avant expiration, avec un tampon de 400 ticks.
perks:
  passive-effects:
    enabled: true
    effects:
      miner-nightvision:           # Clé unique de votre choix
        enabled: true
        permanent: true            # true = tâche de rafraîchissement (sans scintillement)
        permission: "ojobs.miner.nightvision"
        type: "NIGHT_VISION"       # Nom PotionEffectType de Bukkit
        amplifier: 0              # 0 = niveau I, 1 = niveau II, etc.
        refresh-threshold: 100   # Réapplique quand les ticks restants passent sous ce seuil
        apply-duration: 500       # Ticks à appliquer à chaque rafraîchissement (doit être > refresh-threshold)
        ambient: true             # true = particules subtiles (ou aucune si particles: false)
        particles: false          # Afficher les particules de potion ?
        icon: true               # Afficher l'icône dans le HUD ?

Ajouter votre propre effet permanent

Ajoutez une nouvelle entrée sous effects: et donnez la permission au joueur via une récompense de niveau :

# Dans config.yml :
hunter-speed:
  enabled: true
  permanent: true
  permission: "ojobs.hunter.speed"
  type: "SPEED"
  amplifier: 0
  refresh-threshold: 100
  apply-duration: 500
  ambient: true
  particles: false
  icon: true

# Puis dans les récompenses de hunter.yml, accorder la permission :
10:
  permissions:
    - "ojobs.hunter.speed"

Définir les perks dans les fichiers métier (pour l'affichage GUI)

Chaque fichier yml de métier peut avoir une section perks:. Elle est purement informative pour la GUI — elle permet aux joueurs de voir quelles perks ils débloquent et à quel niveau. Elle n'accorde pas les perks elle-même ; les permissions sont accordées via level-rewards.

perks:
  5:                               # Niveau auquel cette perk se débloque
    name: "Vein Miner"
    feature-key: miner-vein      # Lie à la perk fonctionnelle dans config.yml
    icon: DIAMOND_PICKAXE         # Matériau affiché dans la GUI quand déverrouillée
    description:
      - "Mine un filon entier d'un coup."
  10:
    name: "Fortune des Minerais"
    feature-key: miner-fortune
    icon: EMERALD
    description:
      - "Chance d'obtenir un minerai supplémentaire."

Dans la GUI, les perks déverrouillées brillent et affichent leur icône. Les perks verrouillées apparaissent comme un objet gris avec le niveau requis.

Créer des perks personnalisées

ModernJobs supporte quatre niveaux de perks personnalisées, du zéro code à une mécanique Java complète :

Type 1 — Perk déclencheur de commandes (config complète, aucun code)

L'option la plus puissante sans code. Définissez une perk dans config.yml sous perks.features avec un bloc trigger. Quand l'événement se produit et que le joueur a la permission, ModernJobs exécute vos commandes, affiche un message dans la barre d'action et joue un son — avec support de chance et de temps de recharge.

# config.yml
perks:
  features:
    lucky-miner:
      enabled: true
      toggleable: true
      permission: "ojobs.miner.lucky"
      trigger:
        event: "block-break"        # block-break · block-place · mob-kill · fish
                                       # craft · smelt · interact · damage
        chance: 0.20                 # 20% de chance par déclenchement
        cooldown: 10                 # secondes entre deux déclenchements par joueur
        commands:
          - "give %player% diamond 1"
        player-commands: []         # commandes exécutées EN TANT QUE le joueur
        action-bar: "<gold>Lucky Miner<gray>: <white>diamant bonus !"
        sound: "ENTITY_EXPERIENCE_ORB_PICKUP"
        sound-volume: 1.0
        sound-pitch: 1.2

Liez-la ensuite à la GUI dans le yml du métier et accordez-la via une récompense de niveau :

# jobs/miner.yml
perks:
  10:
    name: "<gold>🍀 Lucky Miner"
    icon: DIAMOND
    feature-key: "lucky-miner"
    description:
      - "<gray>20% de chance d'obtenir un diamant bonus"
      - "<gray>en cassant un bloc."

rewards:
  0:
    10:
      perks:
        - "lucky-miner"

Placeholders disponibles

PlaceholderValeurDisponible dans
%player%Nom du joueurTous les événements
%block%Matériau du bloc (ex. DIAMOND_ORE)block-break, block-place
%mob%Type d'entité (ex. ZOMBIE)mob-kill, damage
%item%Matériau de l'objet (ex. IRON_INGOT)craft, smelt
%catch%Matériau de la prisefish

Type 2 — Effet de potion passif (config, aucun code)

Tout effet de potion permanent ou temporaire conditionné par une permission. Configuré dans config.yml sous perks.passive-effects.effects.

Type 3 — Lier une perk à une mécanique intégrée

Ajoutez un feature-key correspondant à l'un des identifiants intégrés ci-dessous. La mécanique se déclenche pour tout joueur ayant la permission requise.

perks:
  15:
    name: "<aqua>⛏ Vein Miner"
    icon: DIAMOND_PICKAXE
    feature-key: "miner-vein"
    description:
      - "<gray>Sneak + casser pour miner tout le filon."

rewards:
  0:
    15:
      perks:
        - "miner-vein"

Type 4 — Mécanique entièrement personnalisée via l'API Java

Pour des mécaniques de jeu totalement nouvelles, implémentez CustomPerkHandler dans votre propre plugin et enregistrez-le auprès de ModernJobs au démarrage. Votre handler est appelé automatiquement par ModernJobs pour les événements que vous surchargez, uniquement quand le joueur possède la permission de la perk — les vérifications enabled/toggleable/require-sneaking de config.yml s'appliquent toujours.

// Dans le onEnable() de votre plugin :
OJobsProvider.get().ifPresent(api -> api.registerPerkHandler(new MaPerkPersonnalisee()));

// Désenregistrer au disable :
OJobsProvider.get().ifPresent(api -> api.unregisterPerkHandler("monplugin-maperk"));
public class MaPerkPersonnalisee implements CustomPerkHandler {

    @Override
    public String getKey() {
        return "monplugin-maperk";   // Doit correspondre au feature-key dans le yml du métier
    }

    @Override
    public void onBlockBreak(Player player, BlockBreakEvent event) {
        // Votre mécanique ici — ne se déclenche que si le joueur a la permission
        player.sendMessage("Perk personnalisée déclenchée !");
    }

    // Surchargez uniquement les événements dont vous avez besoin :
    // onBlockPlace, onInteract, onMobKill, onFish, onCraft, onFurnaceExtract, onDamage
}

Définissez ensuite la perk dans le yml du métier pour qu'elle s'affiche dans la GUI :

# Dans jobs/monmetier.yml
perks:
  20:
    name: "<red>🔥 Ma Perk Personnalisée"
    icon: BLAZE_ROD
    feature-key: "monplugin-maperk"
    description:
      - "<gray>Fait quelque chose d'incroyable."

rewards:
  0:
    20:
      perks:
        - "monplugin-maperk"

Optionnellement, ajoutez une section de configuration pour bénéficier gratuitement du support enabled/toggleable/require-sneaking :

# Dans config.yml
perks:
  features:
    monplugin-maperk:
      enabled: true
      permission: "monmetier.maperk"
      toggleable: true
      require-sneaking: false
ℹ L'interface CustomPerkHandler se trouve dans le package fr.oreo.modernjobs.api. Déclarez ModernJobs comme dépendance souple dans votre plugin.yml et ajoutez ModernJobs à votre classpath de compilation.

Tous les feature-key intégrés

Feature keyMécanique
miner-veinMine tout le filon (sneak + casser)
miner-fortuneDrops de minerais supplémentaires
miner-stonesenseDétection de minerais à proximité
autosmeltAuto-fusion des blocs minés
supersmeltDouble sortie de fusion
woodcutter-treefellerAbat tout l'arbre d'un coup
woodcutter-leafdecayDécomposition instantanée des feuilles
farmer-replantRe-plantation automatique des cultures
farmer-autoplantPlantation automatique depuis l'inventaire
farmer-growthboostBonus de farine d'os à la récolte
crafter-massmakeCraft d'une pile entière d'un coup
fisher-doublecastDouble récompenses de pêche
fisher-luckoftheseaBonus de trésors à la pêche
fisher-treasuresenseDétection de trésors proches
hunter-lootboostDrops de mobs supplémentaires
hunter-swiftkillBonus de dégâts en sneakant
hunter-trackingVoir les positions des mobs proches
hunter-mobsenseDétecter les mobs hostiles à proximité
blacksmith-repairRéparation des outils au craft
blacksmith-netheriteBonus d'amélioration en Nétherite
builder-steadyhandsPas de perte de durabilité en construisant
builder-scaffoldPose un pilier comme échafaudage en sneakant
builder-lineplacePose une ligne de blocs (sneak + clic droit)
builder-areafillRemplit une zone 3×3 (sneak + clic droit)
explorer-dimensionwarpTéléportation entre dimensions
smelter-autofuelInsertion automatique de combustible dans les fours
smelter-masssmeltFusion de plusieurs piles simultanément
ℹ Une perk sans feature-key (ou avec une clé non reconnue) est traitée comme une perk de permission pure — elle s'affiche dans la GUI et accorde la permission, mais ne déclenche aucune mécanique spéciale. C'est intentionnel et utile pour l'intégration avec d'autres plugins.

ModernJobs — Plugin Minecraft Métiers Premium

Documentation générée pour les administrateurs et les joueurs.