Files
Documentation/content/gameplay-systems/reputation.fr.md
2026-01-20 20:33:59 +01:00

5.6 KiB

title, type, weight
title type weight
Reputation docs 7

Le systeme de reputation fournit des mecaniques de standing de faction qui affectent le comportement et les interactions des NPCs.

Package: com.hypixel.hytale.builtin.adventure.reputation

Architecture

ReputationPlugin
├── Assets
│   ├── ReputationGroup - Definitions de factions
│   └── ReputationRank - Definitions de niveaux de standing
├── Composants
│   └── ReputationGroupComponent - Assignation faction NPC
├── Stockage
│   ├── ReputationDataResource - Stockage niveau monde
│   └── PlayerConfigData - Stockage niveau joueur
├── Requirements
│   └── ReputationRequirement - Requirement de choix
├── Configuration
│   └── ReputationGameplayConfig
└── Commandes
    └── ReputationCommand (value, set, add, rank)

Groupes de Reputation

Les factions sont definies comme assets ReputationGroup:

public class ReputationGroup implements JsonAssetWithMap<String, DefaultAssetMap<String, ReputationGroup>> {
    protected String id;
    protected String[] npcGroups;           // Groupes NPC dans cette faction
    protected int initialReputationValue;    // Reputation de depart
}

Emplacement Asset: NPC/Reputation/Groups/

Configuration de Groupe

# NPC/Reputation/Groups/village_faction.json
{
  "Id": "village_faction",
  "NPCGroups": ["villagers", "guards"],
  "InitialReputationValue": 0
}

Rangs de Reputation

Niveaux de standing definis comme assets ReputationRank:

public class ReputationRank implements JsonAssetWithMap<String, DefaultAssetMap<String, ReputationRank>> {
    protected String id;
    protected int minValue;
    protected int maxValue;
    protected Attitude attitude;  // Attitude NPC a ce rang
}

Emplacement Asset: NPC/Reputation/Ranks/

Configuration de Rang

# NPC/Reputation/Ranks/friendly.json
{
  "Id": "friendly",
  "MinValue": 50,
  "MaxValue": 100,
  "Attitude": "friendly"
}

Modes de Stockage

La reputation peut etre stockee par-joueur ou par-monde:

public enum ReputationStorageType {
    PerPlayer,  // Chaque joueur a sa propre reputation
    PerWorld    // Reputation monde partagee
}

Stockage Par-Joueur

PlayerConfigData playerConfigData = player.getPlayerConfigData();
Object2IntMap<String> reputationData = playerConfigData.getReputationData();

Stockage Par-Monde

ReputationDataResource resource = world.getEntityStore().getStore()
    .getResource(ReputationPlugin.get().getReputationDataResourceType());
Object2IntMap<String> worldReputation = resource.getReputationStats();

Assignation Faction NPC

ReputationGroupComponent

Assigne les NPCs aux factions:

ComponentType<EntityStore, ReputationGroupComponent> type =
    ReputationPlugin.get().getReputationGroupComponentType();

ReputationGroupComponent comp = store.getComponent(npcRef, type);
String factionId = comp.getReputationGroupId();

Utilisation de l'API

Changer la Reputation

ReputationPlugin rep = ReputationPlugin.get();

// Changer reputation avec faction (retourne nouvelle valeur)
int newValue = rep.changeReputation(player, "village_faction", 10, componentAccessor);

// Changer reputation via reference NPC
int newValue = rep.changeReputation(player, npcRef, -5, componentAccessor);

// Changement reputation niveau monde
int newValue = rep.changeReputation(world, "village_faction", 15);

Obtenir la Reputation

// Obtenir valeur reputation
int value = rep.getReputationValue(store, playerRef, "village_faction");
int value = rep.getReputationValue(store, playerRef, npcRef);

// Obtenir rang reputation
ReputationRank rank = rep.getReputationRank(store, playerRef, "village_faction");
ReputationRank rank = rep.getReputationRankFromValue(value);

// Obtenir attitude NPC basee sur reputation
Attitude attitude = rep.getAttitude(store, playerRef, npcRef);

Requirements de Choix

Utiliser la reputation comme requirement pour les choix de dialogue:

ChoiceRequirement.CODEC.register(
    "Reputation",
    ReputationRequirement.class,
    ReputationRequirement.CODEC
);

Configuration de Choix

{
  "Type": "Reputation",
  "FactionId": "village_faction",
  "MinRank": "friendly"
}

Commandes

Commande Description
/reputation Commande reputation de base
/reputation value <faction> [joueur] Afficher valeur reputation
/reputation set <faction> <valeur> [joueur] Definir reputation
/reputation add <faction> <montant> [joueur] Ajouter reputation
/reputation rank <faction> [joueur] Afficher rang actuel

Configuration

Config Gameplay

public class ReputationGameplayConfig {
    ReputationStorageType reputationStorageType;

    public static ReputationGameplayConfig getOrDefault(GameplayConfig config);
}
# gameplay_config.json
{
  "Reputation": {
    "ReputationStorageType": "PerPlayer"
  }
}

Plugins Lies

ObjectiveReputationPlugin

Recompense reputation a la completion d'objectif:

public class ReputationCompletion implements ObjectiveCompletion {
    // Attribue reputation quand objectif complete
}

NPCReputationPlugin

Attitude NPC basee sur reputation:

public class ReputationAttitudeSystem {
    // Met a jour attitude NPC basee sur reputation joueur
}

ShopReputationPlugin

Items de boutique conditionnes par reputation.

Validation

Les rangs sont valides au demarrage du plugin:

// Avertit si ecarts entre plages de rangs
// Avertit si plages de rangs se chevauchent