Jobs
Jobs verwandeln Minecraft-Aktionen (abbauen, töten, angeln, craften, brauen, verzaubern, züchten ...) in Einkommen: Geld, Job-XP und eine eigene Punkte-Währung. Spieler leveln, schalten Titel, Belohnungen, Tagesquests und einen Job-Shop frei. Aller Fortschritt bleibt über Neustarts erhalten.
Dateien: modules/jobs. (Hauptconfig) und modules/jobs/<jobId>. (eine Datei pro Job). Die 10 Standard-Jobs werden nur angelegt, wenn der Ordner modules/jobs/ leer ist; eigene Änderungen werden bei Updates nie überschrieben. Gelöschte Dateien und entfernte Aktionen, Titel oder Level-Belohnungen kommen nicht zurück. Wer die mitgelieferten Erweiterungen automatisch nachgezogen haben will, setzt jobs. (schreibt die Dateien ohne Kommentare neu).
Commands #
Alle /jobs-Unterbefehle brauchen jobs. (Default true) plus die genannte Permission (alle Default true).
| Command | Syntax | Permission | Beschreibung |
|---|---|---|---|
| Menü | /jobs oder /jobs menu | jobs. | Hub-GUI: meine Jobs, Browse, Quests, Shop |
| Durchsuchen | /jobs browse | jobs. | Paginierte Job-Liste mit Fortschritt, Klick = Beitritt |
| Info | /jobs info <job> | jobs. | Alle Aktionen, Ziele, Belohnungen, Titel eines Jobs |
| Beitreten | /jobs join <job> | jobs. + jobs. | Prüft Max-Jobs-Limit und Cooldown |
| Verlassen | /jobs leave <job> / leaveall | jobs. | Mit XP-Verlust, falls aktiviert; Level, Titel und Statistik bleiben |
| Statistik | /jobs stats | jobs. | Level/XP/Einnahmen je Job |
| Toplisten | /jobs top <job> / gtop | jobs. | Top 10 pro Job bzw. global |
| Limit | /jobs limit | jobs. | Verbleibendes Zeitraum-Kontingent |
| Punkte | /jobs points | jobs. | Job-Punkte-Stand |
| Quests | /jobs quests | jobs. | Tagesquest-GUI mit Fortschrittsbalken |
| Anzeige | /jobs toggle [actionbar| | jobs. | Einkommens-Anzeigemodus |
| Boosts | /jobs boosts | jobs. | Aktive Boosts und Gesamt-Multiplikator |
| Shop | /jobs shop | jobs. | Job-Shop (zahlt mit Punkten; passt die Lieferung nicht vollständig ins Inventar, wird nichts abgezogen) |
Tipp: jobs. wird pro Job automatisch mit Default true registriert. Einzelne Jobs sperrt man per LuckPerms mit jobs.; das Browse-Menü prüft dieselbe Permission.
Job verlassen: Beim Verlassen verlierst du den in der Config eingestellten Anteil deiner aktuellen Job-XP (xp-loss., Standard 30 %). Level, Titel und Gesamtstatistik bleiben erhalten und werden beim erneuten Beitritt wiederhergestellt. Beitritt und Verlassen über das GUI haben dieselbe Abklingzeit (command-cooldowns, Standard 3 s) und dieselben Rechte wie /jobs join und /jobs leave.
Admin-Commands (/jobsa) #
| Command | Syntax | Permission | Beschreibung |
|---|---|---|---|
| Reload | /jobsa reload | jobs. | Lädt Jobs, Quests, Boosts, Shop neu |
| Status | /jobsa status | jobs. | Status der Block-Historien-Provider (Diagnose) |
| Join/Leave | /jobsa join| | jobs. | Ohne Limit-Prüfung, ohne XP-Verlust |
| Feuern | /jobsa fire <spieler> <job> | jobs. | Mit garantiertem XP-Verlust |
| Level | /jobsa promote| | jobs. | Level rauf/runter, XP wird auf 0 gesetzt |
| XP | /jobsa grantxp| | jobs. | XP vergeben/entfernen |
| Boosts | /jobsa boost <job| | jobs. | Ohne Dauer permanent; boostremove, boostlist |
| Limits | /jobsa resetlimit <spieler> / resetlimitall | jobs. | Zeitraum-Zähler zurücksetzen |
| Punkte | /jobsa points <spieler> <set| | jobs. | Punktestand verwalten |
| Quest | /jobsa skipquest <spieler> <job> <index> | jobs. | Quest ohne Belohnung abschließen |
| Aufräumen | /jobsa purgejob <job> confirm | jobs. | Entfernt alle Spieler-Zuweisungen und Daten eines gelöschten oder nicht mehr ladbaren Jobs endgültig |
Weitere Permissions #
| Permission | Default | Beschreibung |
|---|---|---|
jobs. / jobs. | false | Mehr gleichzeitige Jobs (höchster Wert gilt; unlimited = 50) |
jobs. | false | Höheres Max-Level, wenn n über dem Config-Wert liegt |
jobs. | false | Automatischer Beitritt beim Server-Join |
jobs. | false | Permission-Boost, z. B. jobs. (höchster gilt) |
jobs. | false | Kein XP-Verlust beim Verlassen |
jobs. / cropcheck / spamkill / spawner / afk / limit / dynamicpay | false | Umgeht den jeweiligen Exploit-Schutz |
Die 10 Standard-Jobs #
| Job | Farbe | Haupt-Aktionen |
|---|---|---|
miner | gold | BREAK (Erze, Gestein, Obsidian, Amethyst, Sculk, Ancient Debris) |
woodcutter | dark_green | BREAK (alle Holz-Varianten), STRIP_LOG |
farmer | yellow | BREAK (Feldfrüchte), BREED, SHEAR, MILK |
hunter | red | KILL (30+ feindliche Mobs bis Enderdrache/Wither) |
fisherman | aqua | FISH (Fische und Schatzfunde) |
crafter | light_purple | CRAFT (Redstone, Ender-Kiste, Beacon, Shulker-Kiste ...) |
enchanter | dark_purple | ENCHANT (Werkzeuge, Rüstung, Bücher, Elytra) |
brewer | dark_aqua | BREW, CRAFT (Braustand, Kessel, Flaschen) |
weaponsmith | gray | CRAFT (Waffen/Rüstung), REPAIR, SMELT |
explorer | green | EXPLORE (distanzbasiert), TAME, KILL (nur Shulker) |
Jeder Job hat 6 Titel-Stufen (Level 1/10/25/50/75/100) und Level-Up-Belohnungen auf denselben Meilensteinen.
Aktionsarten #
| Aktionsart | Auslöser | Ziel | Schutz/Besonderheit |
|---|---|---|---|
BREAK | Block abbauen | Material | Placed-Block-Check, Crop-Age, AFK-Erkennung |
KILL | Kreatur töten | Kreatur | Spam-Kill-Schutz, Spawner-Reduktion, kein Selbstmord |
FISH | Angeln | gefangenes Material | Zahlt auch Schätze |
CRAFT | Craften | Ergebnis-Material | Shift-Klick zählt die echte Stückzahl |
SMELT | Ofen entnehmen | Material | Zählt die entnommene Menge |
BREW | Trank brauen | Trank-Material | Letzter Braustand-Nutzer = Brauer; bezahlt wird das Ergebnis des Brauschritts |
ENCHANT | Verzaubern | Material | - |
REPAIR | Amboss-Reparatur | Material | Beide Slots müssen belegt sein |
BREED / SHEAR / TAME | Züchten/Scheren/Zähmen | Kreatur | - |
MILK | Melken | Kreatur | Cooldown pro Tier |
EXPLORE | Laufen | ALL | Zahlt alle explore-distance Blöcke, Teleports zählen nicht |
STRIP_LOG | Holz entrinden | Original-Material | - |
ALL ist überall als Wildcard erlaubt. Nexo-/Carpentary-Ziele (nexo:<id>) haben Vorrang vor Vanilla-Materialien.
Leveling und Skalierung #
xpBenötigt(level) = base * level + multiplier * level^exponent
effektivesEinkommen = baseMoney * (1 + (level - 1) * level-multiplier)
effektiveXp = baseXp * (1 + (level - 1) * level-multiplier * 0.5)Die XP-Skalierung läuft bewusst mit halber Rate, damit hohe Level das Aufsteigen nicht exponentiell beschleunigen. Überschuss-XP geht bei Level-Ups nie verloren (Mehrfach-Aufstiege möglich); am Max-Level wird keine XP mehr gutgeschrieben.
Pro Job überschreibbar: Jede Job-Datei kann eine eigene leveling-Sektion haben; fehlende Werte (oder -1) nutzen die globale Formel. GUI, /jobs stats und Web-Interface rechnen automatisch mit der Formel des jeweiligen Jobs.
# in modules/jobs/woodcutter.yml: dieser Job levelt langsamer, verdient mehr
leveling:
xp-formula:
base: 15.0
multiplier: 6.0
exponent: 2.2
income-formula:
level-multiplier: 0.05
xp-level-multiplier: 0.02Max-Level-Reihenfolge: Job-eigenes max-level (0 = global) → global-max-level → Permission jobs. (nur wenn höher).
Auszahlung #
Jede Aktion wird für JEDEN aktiven Job abgerechnet, der sie bezahlt (Stacking gewollt): Level-Skalierung und Boosts wirken auf Geld und XP, danach kappen aktive Zeitraum-Limits. Punkte sind immer roh: keine Level-Skalierung, keine Boosts, kein Dynamic Pay, keine Limits. Die Anzeige wird gebündelt (batch-interval) als Actionbar oder Bossbar ausgegeben. Handwerk und Amboss-Reparaturen werden erst bezahlt, wenn der Vorgang tatsächlich stattgefunden hat (bei vollem Inventar oder verweigerter Entnahme gibt es nichts). Beim Brauen zählt das Ergebnis des Brauschritts (z. B. Wurftrank), nicht der Eingangstrank.
Quests: Pro Job und Tag werden quests-per-job Quests aus den echten Aktion/Ziel-Paaren des Jobs generiert. Belohnung = Basiswert × Menge × reward-multiplier (ohne Level-Skalierung), wird bei Abschluss sofort automatisch ausgezahlt. Reset täglich zur konfigurierten Uhrzeit. Quests gehören zum Tag, nicht zur Mitgliedschaft: Wer einen Job verlässt und wieder beitritt, bekommt bis zum täglichen Reset dieselben Quests mit unverändertem Fortschritt zurück.
Boosts: Drei Quellen (Admin per /jobsa boost, Scheduled nach Uhrzeit/Wochentag, Permission jobs., dort gewinnt der höchste). stacking-mode: multiply multipliziert alle, add addiert die Bonus-Anteile; Deckel ist max-multiplier. Admin-Boosts überleben Reload und Neustart.
Exploit-Schutz #
Selbst platzierte Blöcke zahlen nichts (Historien-Check über CoreProtect), unreife Feldfrüchte zahlen nichts, Spam-Kills am selben Mob stoppen die Zahlung, Spawner-Mobs zahlen nur den konfigurierten Bruchteil (erkannt am gespeicherten Spawn-Grund, auch nach Chunk-Entladen oder Neustart), Selbstmord zählt nicht, Shift-Klick-Crafting zählt die echte Menge, Melken hat einen Cooldown pro Tier und Teleports geben keine EXPLORE-Distanz. Bezahlte Abbauten werden optional als #jobs-<spieler> in CoreProtect geloggt. Im Kreativ- und Zuschauermodus gibt es kein Job-Einkommen, keine XP, keine Punkte und keinen Quest-Fortschritt (Admin-Schalter exploit-protection.).
crop-age-check prüft nur echte Nutzpflanzen (Weizen, Karotten, Kartoffeln, Rote Bete, Netherwarze, Kakao, Süßbeeren, Kannen- und Fackelliliensaat, Stängel). Zuckerrohr, Kaktus, Seetang, Bambus und Chorusblüten zahlen unabhängig vom Alter.
Achtung: Ohne CoreProtect deaktiviert sich das Jobs-Modul standardmäßig selbst (require-history-provider: true), sichtbar nur als Log-Warnung. Wer ohne Historien-Quelle spielt, setzt den Schalter bewusst auf false; dann entscheidet placed-block-failure (deny = sicher, allow = zahlt trotzdem). Die AFK-Erkennung greift nur bei BREAK.
Konfiguration (modules/jobs.yml) #
# Schaltet das Jobs-Modul ein oder aus.
enabled: true
jobs:
# Gleichzeitige Jobs pro Spieler. Höchste jobs.max.<n>-Permission
# gewinnt, jobs.max.unlimited = 50.
max-jobs: 3
# Spieler mit jobs.autojoin.<jobId> treten beim Join automatisch bei.
autojoin-enabled: false
# Level-Deckel für Jobs ohne eigenes max-level.
global-max-level: 100
# true = fehlende Aktionen, Titel und Belohnungen der mitgelieferten
# Standard-Jobs werden in modules/jobs/ nachgetragen (Dateien werden
# ohne Kommentare neu geschrieben). false = Dateien bleiben unberührt.
merge-default-definitions: false
command-cooldowns:
# Anti-Spam für /jobs join und leave, Sekunden.
join: 3
leave: 3
chat-title:
# Job-Titel vor dem Chat-Namen (nach dem Team-Prefix).
# highest = Job mit höchstem Level, first = alphabetisch erster.
enabled: false
mode: highest
format: "<job_color>[<job_title>] "
actions:
# Blöcke pro EXPLORE-Zahlung.
explore-distance: 100.0
# Sekunden zwischen bezahlten Melk-Aktionen pro Tier.
milk-cooldown: 5
xp-loss:
# XP-Verlust beim freiwilligen Verlassen. /jobsa fire wendet ihn
# immer an, jobs.bypass.xploss verhindert ihn.
enabled: true
percentage: 0.3
leveling:
xp-formula:
# Benötigte XP = base * level + multiplier * level^exponent.
base: 10.0
multiplier: 4.0
exponent: 2.0
income-formula:
# +3% Einkommen pro Level; XP skaliert mit halber Rate.
level-multiplier: 0.03
level-up:
chat-enabled: true
title-enabled: true
sound-enabled: true
sound: "entity.player.levelup"
sound-volume: 1.0
sound-pitch: 1.0
title-fade-in: 10
title-stay: 40
title-fade-out: 20
broadcast:
# Level-Ups ab min-level serverweit melden.
enabled: false
min-level: 10
limits:
# Rollierendes Zeitfenster mit Geld-/XP-Obergrenze pro Spieler.
enabled: false
max-earnings: 10000.0
max-xp: 50000.0
period-duration: 3600
income-display:
# Ticks zwischen gebündelten Anzeigen bzw. Bossbar-Dauer.
batch-interval: 40
bossbar-duration: 60
boosts:
# multiply = Boosts multiplizieren sich, add = Boni addieren sich.
stacking-mode: multiply
max-multiplier: 10.0
scheduled:
weekday-dawn:
job: farmer
category: all
multiplier: 1.25
start: "05:00"
end: "08:00"
days: [MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY]
quests:
enabled: true
quests-per-job: 4
min-amount: 12
max-amount: 160
reward-multiplier:
money: 2.2
xp: 2.1
points: 1.7
# Täglicher Reset (löscht alle Quest-Daten und generiert neu).
reset-hour: 0
reset-minute: 0
creative-style:
# Flavor-Namen mit <target>-Platzhalter, pro Job oder default.
enabled: true
templates:
default:
- "Guild contract: <target>"
- "Rush order: <target>"
miner:
- "Crystal vein: <target>"
dynamic-pay:
# Angebots-/Nachfrage-Anpassung nach Aktions-Häufigkeit.
enabled: false
sensitivity: 0.5
min-multiplier: 0.5
max-multiplier: 1.5
integrations:
coreprotect:
# Loggt bezahlte Abbauten als #jobs-<spieler>.
jobs-tracking: true
# Zeitfenster der Block-Historie für den Placed-Block-Check.
lookup-time-seconds: 2592000
nexo:
jobs-enabled: true
carpentary:
jobs-enabled: true
betterhud:
job-info:
enabled: true
popup-name: ""
popup-duration: 60
shop:
# Items kosten Job-Punkte; required-job/-level begrenzen den Kauf.
enabled: true
title: "<gold>Job Shop"
items:
miner_lantern_kit:
material: TORCH
amount: 64
display-name: "<gold>Miner Lantern Kit"
lore:
- "<gray>Cheap light for long tunnels."
cost: 35.0
required-job: miner
required-level: 3
exploit-protection:
placed-block-check: true
# true = ohne Historien-Quelle (CoreProtect) deaktiviert sich das
# Modul selbst.
require-history-provider: true
# auto, coreprotect, debug oder disabled.
placed-block-provider: auto
# Ohne eindeutige Antwort: deny = nicht zahlen (sicher), allow = zahlen.
placed-block-failure: deny
# Nur echte Nutzpflanzen (Weizen, Karotten, Netherwarze ...) zahlen erst
# ausgewachsen; Zuckerrohr, Kaktus, Bambus usw. zahlen immer.
crop-age-check: true
# true = auch Kreativ- und Zuschauermodus verdienen Geld, XP, Punkte
# und Quest-Fortschritt.
creative-mode-pay: false
spam-kill:
enabled: true
window: 30
max-kills: 5
# Gilt für Mobs aus Spawnern und aus Spawn-Eiern (auch aus Werfern),
# damit ein per Ei gefangenes Spawner-Mob nicht als voller Kill zählt.
spawner-mobs:
enabled: true
money-multiplier: 0.0
xp-multiplier: 0.0
afk-detection:
# Mehr als action-threshold Aktionen in radius Blöcken innerhalb
# von window Sekunden: Zahlung wird mit multiplier reduziert.
enabled: false
radius: 5
action-threshold: 50
window: 120
multiplier: 0.0Eigene Jobs (modules/jobs/<jobId>.yml) #
Lädt eine Jobdatei nicht (Tippfehler, gelöscht), bleiben die Zuweisungen der Spieler erhalten und werden im Log gemeldet; sobald die Datei wieder lädt, laufen Zahlungen weiter. Endgültig entfernen: /jobsa purgejob <job> confirm (Recht jobs.).
# name ist Pflicht, sonst wird die Datei verworfen. Ungültige Ziele oder
# negative Werte werden übersprungen und geloggt. Nach Änderungen:
# /jobsa reload. Limits: 500 Aktionen, 100 Titel, 200 Belohnungs-Stufen.
name: "Miner"
color: "gold"
short-name: "MIN"
icon: "IRON_PICKAXE"
description: "Mine ores and stones for profit"
# 0 = global-max-level nutzen.
max-level: 0
actions:
# BREAK/CRAFT/SMELT/STRIP_LOG/FISH/ENCHANT/REPAIR erwarten Materialien,
# KILL/BREED/SHEAR/TAME/MILK Kreaturen, ALL ist überall erlaubt.
BREAK:
DIAMOND_ORE:
money: 4.0
xp: 8.0
points: 0.4
ANCIENT_DEBRIS:
money: 10.0
xp: 20.0
points: 1.0
titles:
"1": "Apprentice Miner"
"25": "Expert Miner"
"100": "Mythic Deep Delver"
level-up-rewards:
# Konsolen-Befehle mit {player}, {job}, {jobname}. Befehle mit
# unerlaubten Zeichen werden verworfen und geloggt.
"25":
- "give {player} diamond 3"
"100":
- "give {player} netherite_upgrade_smithing_template 1"