Init
This commit is contained in:
291
content/world/entities/mounts.fr.md
Normal file
291
content/world/entities/mounts.fr.md
Normal file
@@ -0,0 +1,291 @@
|
||||
---
|
||||
title: Montures
|
||||
type: docs
|
||||
weight: 11
|
||||
---
|
||||
|
||||
Le systeme de montures permet aux entites de chevaucher d'autres entites ou s'asseoir sur des blocs.
|
||||
|
||||
**Package:** `com.hypixel.hytale.builtin.mounts`
|
||||
|
||||
## Apercu
|
||||
|
||||
Le systeme de montures supporte:
|
||||
- Chevaucher des entites NPC
|
||||
- S'asseoir sur des sieges bases sur blocs
|
||||
- Mecaniques de vehicules minecart
|
||||
- Controles de mouvement specifiques aux montures
|
||||
|
||||
## Architecture
|
||||
|
||||
```
|
||||
Systeme Montures
|
||||
├── Composants
|
||||
│ ├── NPCMountComponent - Config monture NPC
|
||||
│ ├── MountedComponent - "Je chevauche quelque chose"
|
||||
│ ├── MountedByComponent - "Quelque chose me chevauche"
|
||||
│ ├── BlockMountComponent - Siege bloc
|
||||
│ └── MinecartComponent - Vehicule minecart
|
||||
├── Systemes
|
||||
│ ├── MountSystems - Logique monture principale
|
||||
│ └── NPCMountSystems - Logique specifique NPC
|
||||
├── Interactions
|
||||
│ ├── MountInteraction - Monter NPC
|
||||
│ ├── SeatingInteraction - S'asseoir sur bloc
|
||||
│ └── SpawnMinecartInteraction - Creer minecart
|
||||
└── Commandes
|
||||
├── MountCommand - Forcer montage
|
||||
├── MountCheckCommand - Verifier statut
|
||||
└── DismountCommand - Forcer demontage
|
||||
```
|
||||
|
||||
## Composants
|
||||
|
||||
### NPCMountComponent
|
||||
|
||||
Attache aux NPCs qui peuvent etre montes:
|
||||
|
||||
```java
|
||||
public class NPCMountComponent implements Component<EntityStore> {
|
||||
// Joueur chevauchant actuellement (si present)
|
||||
private PlayerRef ownerPlayerRef;
|
||||
|
||||
// Role NPC original avant montage
|
||||
private int originalRoleIndex;
|
||||
|
||||
// Configuration monture
|
||||
// Vitesses mouvement, capacites, etc.
|
||||
}
|
||||
```
|
||||
|
||||
### MountedComponent
|
||||
|
||||
Attache aux entites qui chevauchent quelque chose:
|
||||
|
||||
```java
|
||||
public class MountedComponent implements Component<EntityStore> {
|
||||
// Reference vers ce qu'on chevauche
|
||||
private Ref<EntityStore> mountRef;
|
||||
}
|
||||
```
|
||||
|
||||
### MountedByComponent
|
||||
|
||||
Attache aux entites etant chevauchees:
|
||||
|
||||
```java
|
||||
public class MountedByComponent implements Component<EntityStore> {
|
||||
// Reference vers le cavalier
|
||||
private Ref<EntityStore> riderRef;
|
||||
}
|
||||
```
|
||||
|
||||
### BlockMountComponent
|
||||
|
||||
Composant chunk pour sieges bases sur blocs:
|
||||
|
||||
```java
|
||||
public class BlockMountComponent implements Component<ChunkStore> {
|
||||
// Position bloc et configuration
|
||||
// Joueur actuellement assis
|
||||
}
|
||||
```
|
||||
|
||||
### MinecartComponent
|
||||
|
||||
Composant vehicule pour minecarts:
|
||||
|
||||
```java
|
||||
public class MinecartComponent implements Component<EntityStore> {
|
||||
// Configuration mouvement rails
|
||||
// Vitesse, acceleration, etc.
|
||||
}
|
||||
```
|
||||
|
||||
## Monter des NPCs
|
||||
|
||||
### Interaction Monture
|
||||
|
||||
Les joueurs montent les NPCs via interaction:
|
||||
|
||||
```java
|
||||
// Enregistre comme type interaction "Mount"
|
||||
Interaction.CODEC.register("Mount",
|
||||
MountInteraction.class,
|
||||
MountInteraction.CODEC);
|
||||
```
|
||||
|
||||
### Processus de Montage
|
||||
|
||||
1. Joueur interagit avec NPC montable
|
||||
2. `NPCMountComponent` est ajoute/configure
|
||||
3. `MountedComponent` ajoute au joueur
|
||||
4. `MountedByComponent` ajoute au NPC
|
||||
5. Role NPC change vers comportement "monte"
|
||||
6. Parametres mouvement joueur mis a jour
|
||||
|
||||
### Demontage
|
||||
|
||||
Le demontage peut survenir:
|
||||
- Joueur demonte manuellement
|
||||
- Joueur se deconnecte
|
||||
- Monture ou joueur meurt
|
||||
- Commande force demontage
|
||||
|
||||
```java
|
||||
// Demonter NPC
|
||||
MountPlugin.dismountNpc(store, mountEntityId);
|
||||
|
||||
// Reinitialiser parametres mouvement joueur
|
||||
MountPlugin.resetOriginalPlayerMovementSettings(playerRef, store);
|
||||
```
|
||||
|
||||
## Sieges de Blocs
|
||||
|
||||
### Interaction Siege
|
||||
|
||||
Les joueurs s'assoient sur blocs via interaction:
|
||||
|
||||
```java
|
||||
// Enregistre comme type interaction "Seating"
|
||||
Interaction.CODEC.register("Seating",
|
||||
SeatingInteraction.class,
|
||||
SeatingInteraction.CODEC);
|
||||
```
|
||||
|
||||
### API Monture Bloc
|
||||
|
||||
```java
|
||||
BlockMountAPI api = BlockMountAPI.get();
|
||||
|
||||
// Verifier si bloc est un siege
|
||||
boolean isSeat = api.isSeat(world, blockPos);
|
||||
|
||||
// Obtenir joueur assis
|
||||
PlayerRef seated = api.getSeatedPlayer(world, blockPos);
|
||||
```
|
||||
|
||||
## Minecarts
|
||||
|
||||
### Interaction Spawn Minecart
|
||||
|
||||
Creer minecarts via interaction:
|
||||
|
||||
```java
|
||||
// Enregistre comme type interaction "SpawnMinecart"
|
||||
Interaction.CODEC.register("SpawnMinecart",
|
||||
SpawnMinecartInteraction.class,
|
||||
SpawnMinecartInteraction.CODEC);
|
||||
```
|
||||
|
||||
### Comportement Minecart
|
||||
|
||||
- Suit les rails
|
||||
- Vitesse et acceleration configurables
|
||||
- Peut transporter joueurs et items
|
||||
- Collision avec autres minecarts
|
||||
|
||||
## Composant Core NPC
|
||||
|
||||
Les NPCs peuvent utiliser actions de monture:
|
||||
|
||||
```java
|
||||
// Type composant core enregistre
|
||||
NPCPlugin.get().registerCoreComponentType("Mount", BuilderActionMount::new);
|
||||
```
|
||||
|
||||
```json
|
||||
{
|
||||
"Type": "Mount",
|
||||
"MountTarget": "player",
|
||||
"Duration": 10.0
|
||||
}
|
||||
```
|
||||
|
||||
## Commandes
|
||||
|
||||
### /mount
|
||||
|
||||
Forcer un joueur a monter un NPC:
|
||||
|
||||
```
|
||||
/mount <joueur> <selecteur_npc>
|
||||
```
|
||||
|
||||
### /mountcheck
|
||||
|
||||
Verifier statut monture:
|
||||
|
||||
```
|
||||
/mountcheck <joueur>
|
||||
```
|
||||
|
||||
### /dismount
|
||||
|
||||
Forcer demontage d'un joueur:
|
||||
|
||||
```
|
||||
/dismount <joueur>
|
||||
```
|
||||
|
||||
## Acces au Plugin
|
||||
|
||||
```java
|
||||
MountPlugin mounts = MountPlugin.getInstance();
|
||||
|
||||
// Types de composants
|
||||
ComponentType<EntityStore, NPCMountComponent> npcMountType =
|
||||
mounts.getMountComponentType();
|
||||
ComponentType<EntityStore, MountedComponent> mountedType =
|
||||
mounts.getMountedComponentType();
|
||||
ComponentType<EntityStore, MountedByComponent> mountedByType =
|
||||
mounts.getMountedByComponentType();
|
||||
ComponentType<EntityStore, MinecartComponent> minecartType =
|
||||
mounts.getMinecartComponentType();
|
||||
ComponentType<ChunkStore, BlockMountComponent> blockMountType =
|
||||
mounts.getBlockMountComponentType();
|
||||
```
|
||||
|
||||
## Systemes
|
||||
|
||||
### Suivi Monture
|
||||
|
||||
```java
|
||||
// Mettre a jour suivi position monture
|
||||
MountSystems.TrackerUpdate
|
||||
|
||||
// Supprimer suivi monture a suppression entite
|
||||
MountSystems.TrackerRemove
|
||||
```
|
||||
|
||||
### Gestion Mort
|
||||
|
||||
```java
|
||||
// Demonter joueur quand il meurt
|
||||
NPCMountSystems.DismountOnPlayerDeath
|
||||
|
||||
// Demonter quand monture meurt
|
||||
NPCMountSystems.DismountOnMountDeath
|
||||
```
|
||||
|
||||
### Mouvement
|
||||
|
||||
```java
|
||||
// Gerer input joueur sur monture
|
||||
MountSystems.HandleMountInput
|
||||
|
||||
// Teleporter entite montee avec monture
|
||||
MountSystems.TeleportMountedEntity
|
||||
```
|
||||
|
||||
## Evenements
|
||||
|
||||
### Deconnexion Joueur
|
||||
|
||||
Quand joueur se deconnecte en montant:
|
||||
|
||||
```java
|
||||
// Demonter automatiquement a deconnexion
|
||||
getEventRegistry().register(PlayerDisconnectEvent.class,
|
||||
MountPlugin::onPlayerDisconnect);
|
||||
```
|
||||
Reference in New Issue
Block a user